From 171440b029288693271d36f9bcd36612886e9530 Mon Sep 17 00:00:00 2001 From: Gerson Fernando Budke Date: Sun, 13 Mar 2022 13:17:01 -0300 Subject: [PATCH] drivers: adc: Add sam0 support to pinctrl This add support to pinctrl at Atmel sam0 adc driver. Signed-off-by: Gerson Fernando Budke --- drivers/adc/adc_sam0.c | 10 ++++++++++ dts/bindings/adc/atmel,sam0-adc.yaml | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/adc/adc_sam0.c b/drivers/adc/adc_sam0.c index 14b68aa9ab2..600c485d114 100644 --- a/drivers/adc/adc_sam0.c +++ b/drivers/adc/adc_sam0.c @@ -8,6 +8,7 @@ #include #include +#include #include LOG_MODULE_REGISTER(adc_sam0, CONFIG_ADC_LOG_LEVEL); @@ -43,6 +44,7 @@ struct adc_sam0_data { struct adc_sam0_cfg { Adc *regs; + const struct pinctrl_dev_config *pcfg; #ifdef MCLK uint32_t mclk_mask; @@ -435,6 +437,7 @@ static int adc_sam0_init(const struct device *dev) const struct adc_sam0_cfg *const cfg = dev->config; struct adc_sam0_data *data = dev->data; Adc *const adc = cfg->regs; + int retval; #ifdef MCLK GCLK->PCHCTRL[cfg->gclk_id].reg = cfg->gclk_mask | GCLK_PCHCTRL_CHEN; @@ -446,6 +449,11 @@ static int adc_sam0_init(const struct device *dev) GCLK->CLKCTRL.reg = cfg->gclk | GCLK_CLKCTRL_CLKEN; #endif + retval = pinctrl_apply_state(cfg->pcfg, PINCTRL_STATE_DEFAULT); + if (retval < 0) { + return retval; + } + ADC_PRESCALER(adc) = cfg->prescaler; wait_synchronization(adc); @@ -541,6 +549,7 @@ do { \ #endif #define ADC_SAM0_DEVICE(n) \ + PINCTRL_DT_INST_DEFINE(n); \ static void adc_sam0_config_##n(const struct device *dev); \ static const struct adc_sam0_cfg adc_sam_cfg_##n = { \ .regs = (Adc *)DT_INST_REG_ADDR(n), \ @@ -550,6 +559,7 @@ do { \ _FREQ_HZ) / \ DT_INST_PROP(n, prescaler), \ .config_func = &adc_sam0_config_##n, \ + .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(n), \ }; \ static struct adc_sam0_data adc_sam_data_##n = { \ ADC_CONTEXT_INIT_TIMER(adc_sam_data_##n, ctx), \ diff --git a/dts/bindings/adc/atmel,sam0-adc.yaml b/dts/bindings/adc/atmel,sam0-adc.yaml index 48acee8b7b9..7e6d68145cd 100644 --- a/dts/bindings/adc/atmel,sam0-adc.yaml +++ b/dts/bindings/adc/atmel,sam0-adc.yaml @@ -5,7 +5,9 @@ description: Atmel SAM0 family ADC compatible: "atmel,sam0-adc" -include: adc-controller.yaml +include: + - name: adc-controller.yaml + - name: pinctrl-device.yaml properties: reg: