From 74321f11d6ffd8a94ebd8b57d819acad391562bb Mon Sep 17 00:00:00 2001 From: Tim Lin Date: Thu, 24 Mar 2022 16:27:30 +0800 Subject: [PATCH] ITE: drivers/adc: Use pinctrl instead of pinmux driver Use pinctrl instead of pinmux driver. Signed-off-by: Tim Lin --- boards/riscv/it8xxx2_evb/it8xxx2_evb.dts | 2 ++ drivers/adc/adc_ite_it8xxx2.c | 31 ++++++++++--------- dts/bindings/adc/ite,it8xxx2-adc.yaml | 6 ++-- dts/riscv/it8xxx2-alts-map.dtsi | 38 ------------------------ dts/riscv/it8xxx2.dtsi | 12 -------- dts/riscv/ite/it8xxx2-pinctrl-map.dtsi | 38 ++++++++++++++++++++++++ 6 files changed, 61 insertions(+), 66 deletions(-) diff --git a/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts b/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts index e51220d3269..a94318986a9 100644 --- a/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts +++ b/boards/riscv/it8xxx2_evb/it8xxx2_evb.dts @@ -47,6 +47,8 @@ }; &adc0 { status = "okay"; + pinctrl-0 = <&adc0_ch3_gpi3_default>; + pinctrl-names = "default"; }; /* voltage comparator for test */ &vcmp0 { diff --git a/drivers/adc/adc_ite_it8xxx2.c b/drivers/adc/adc_ite_it8xxx2.c index 535e26b9eaf..36027423168 100644 --- a/drivers/adc/adc_ite_it8xxx2.c +++ b/drivers/adc/adc_ite_it8xxx2.c @@ -11,7 +11,7 @@ LOG_MODULE_REGISTER(adc_ite_it8xxx2); #include -#include +#include #include #include #include @@ -68,12 +68,8 @@ struct adc_it8xxx2_data { * this config will be used at initial time */ struct adc_it8xxx2_cfg { - /* Pinmux control group */ - const struct device *pinctrls; - /* GPIO pin */ - uint8_t pin; - /* Alternate function */ - uint8_t alt_fun; + /* ADC alternate configuration */ + const struct pinctrl_dev_config *pcfg; }; #define ADC_IT8XXX2_REG_BASE \ @@ -82,7 +78,6 @@ struct adc_it8xxx2_cfg { static int adc_it8xxx2_channel_setup(const struct device *dev, const struct adc_channel_cfg *channel_cfg) { - const struct adc_it8xxx2_cfg *config = dev->config; uint8_t channel_id = channel_cfg->channel_id; if (channel_cfg->acquisition_time != ADC_ACQ_TIME_DEFAULT) { @@ -112,10 +107,6 @@ static int adc_it8xxx2_channel_setup(const struct device *dev, return -EINVAL; } - /* The channel is set to ADC alternate function */ - pinmux_pin_set(config[channel_id].pinctrls, - config[channel_id].pin, - config[channel_id].alt_fun); LOG_DBG("Channel setup succeeded!"); return 0; } @@ -410,12 +401,21 @@ static void adc_accuracy_initialization(void) static int adc_it8xxx2_init(const struct device *dev) { + const struct adc_it8xxx2_cfg *config = dev->config; struct adc_it8xxx2_data *data = dev->data; struct adc_it8xxx2_regs *const adc_regs = ADC_IT8XXX2_REG_BASE; + int status; /* ADC analog accuracy initialization */ adc_accuracy_initialization(); + /* Set the pin to ADC alternate function. */ + status = pinctrl_apply_state(config->pcfg, PINCTRL_STATE_DEFAULT); + if (status < 0) { + LOG_ERR("Failed to configure ADC pins"); + return status; + } + /* * The ADC channel conversion time is 30.8*(SCLKDIV+1) us. * (Current setting is 61.6us) @@ -451,8 +451,11 @@ static struct adc_it8xxx2_data adc_it8xxx2_data_0 = { ADC_CONTEXT_INIT_SYNC(adc_it8xxx2_data_0, ctx), }; -static const struct adc_it8xxx2_cfg adc_it8xxx2_cfg_0[CHIP_ADC_COUNT] = - IT8XXX2_DT_ALT_ITEMS_LIST(0); +PINCTRL_DT_INST_DEFINE(0); + +static const struct adc_it8xxx2_cfg adc_it8xxx2_cfg_0 = { + .pcfg = PINCTRL_DT_INST_DEV_CONFIG_GET(0), +}; DEVICE_DT_INST_DEFINE(0, adc_it8xxx2_init, NULL, diff --git a/dts/bindings/adc/ite,it8xxx2-adc.yaml b/dts/bindings/adc/ite,it8xxx2-adc.yaml index c18072433ea..709b60d0419 100644 --- a/dts/bindings/adc/ite,it8xxx2-adc.yaml +++ b/dts/bindings/adc/ite,it8xxx2-adc.yaml @@ -5,14 +5,16 @@ description: ITE it8xxx2 ADC compatible: "ite,it8xxx2-adc" -include: adc-controller.yaml +include: [adc-controller.yaml, pinctrl-device.yaml] properties: interrupts: required: true pinctrl-0: - type: phandles + required: true + + pinctrl-names: required: true io-channel-cells: diff --git a/dts/riscv/it8xxx2-alts-map.dtsi b/dts/riscv/it8xxx2-alts-map.dtsi index 4611fdb2c2b..9a0d793a5c3 100644 --- a/dts/riscv/it8xxx2-alts-map.dtsi +++ b/dts/riscv/it8xxx2-alts-map.dtsi @@ -10,44 +10,6 @@ it8xxx2_alts_map { compatible = "ite,it8xxx2-pinctrl-conf"; - /* ADC alternate function */ - pinctrl_adc0: adc0 { - pinctrls = <&pinmuxi 0 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc1: adc1 { - pinctrls = <&pinmuxi 1 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc2: adc2 { - pinctrls = <&pinmuxi 2 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc3: adc3 { - pinctrls = <&pinmuxi 3 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc4: adc4 { - pinctrls = <&pinmuxi 4 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc5: adc5 { - pinctrls = <&pinmuxi 5 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc6: adc6 { - pinctrls = <&pinmuxi 6 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc7: adc7 { - pinctrls = <&pinmuxi 7 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc13: adc13 { - pinctrls = <&pinmuxl 0 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc14: adc14 { - pinctrls = <&pinmuxl 1 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc15: adc15 { - pinctrls = <&pinmuxl 2 IT8XXX2_PINMUX_FUNC_1>; - }; - pinctrl_adc16: adc16 { - pinctrls = <&pinmuxl 3 IT8XXX2_PINMUX_FUNC_1>; - }; - /* PWM alternate function */ pinctrl_pwm0: pwm0 { pinctrls = <&pinmuxa 0 IT8XXX2_PINMUX_FUNC_1>; diff --git a/dts/riscv/it8xxx2.dtsi b/dts/riscv/it8xxx2.dtsi index 7a417387e18..7c24571ec26 100644 --- a/dts/riscv/it8xxx2.dtsi +++ b/dts/riscv/it8xxx2.dtsi @@ -1074,18 +1074,6 @@ status = "disabled"; label = "ADC_0"; #io-channel-cells = <1>; - pinctrl-0 = <&pinctrl_adc0 /* ADC0*/ - &pinctrl_adc1 /* ADC1*/ - &pinctrl_adc2 /* ADC2*/ - &pinctrl_adc3 /* ADC3*/ - &pinctrl_adc4 /* ADC4*/ - &pinctrl_adc5 /* ADC5*/ - &pinctrl_adc6 /* ADC6*/ - &pinctrl_adc7 /* ADC7*/ - &pinctrl_adc13 /* ADC13*/ - &pinctrl_adc14 /* ADC14*/ - &pinctrl_adc15 /* ADC15*/ - &pinctrl_adc16>;/* ADC16*/ }; vcmp0: vcmp@f01946 { compatible = "ite,it8xxx2-vcmp"; diff --git a/dts/riscv/ite/it8xxx2-pinctrl-map.dtsi b/dts/riscv/ite/it8xxx2-pinctrl-map.dtsi index 906807a3a0a..50f29483a77 100644 --- a/dts/riscv/ite/it8xxx2-pinctrl-map.dtsi +++ b/dts/riscv/ite/it8xxx2-pinctrl-map.dtsi @@ -7,6 +7,44 @@ #include &pinctrl { + /* ADC alternate function */ + adc0_ch0_gpi0_default: adc0_ch0_gpi0_default { + pinmuxs = <&pinctrli 0 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch1_gpi1_default: adc0_ch1_gpi1_default { + pinmuxs = <&pinctrli 1 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch2_gpi2_default: adc0_ch2_gpi2_default { + pinmuxs = <&pinctrli 2 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch3_gpi3_default: adc0_ch3_gpi3_default { + pinmuxs = <&pinctrli 3 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch4_gpi4_default: adc0_ch4_gpi4_default { + pinmuxs = <&pinctrli 4 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch5_gpi5_default: adc0_ch5_gpi5_default { + pinmuxs = <&pinctrli 5 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch6_gpi6_default: adc0_ch6_gpi6_default { + pinmuxs = <&pinctrli 6 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch7_gpi7_default: adc0_ch7_gpi7_default { + pinmuxs = <&pinctrli 7 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch13_gpl0_default: adc0_ch13_gpl0_default { + pinmuxs = <&pinctrll 0 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch14_gpl1_default: adc0_ch14_gpl1_default { + pinmuxs = <&pinctrll 1 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch15_gpl2_default: adc0_ch15_gpl2_default { + pinmuxs = <&pinctrll 2 IT8XXX2_ALT_FUNC_1>; + }; + adc0_ch16_gpl3_default: adc0_ch16_gpl3_default { + pinmuxs = <&pinctrll 3 IT8XXX2_ALT_FUNC_1>; + }; + /* UART alternate function */ uart1_rx_gpb0_default: uart1_rx_gpb0_default { pinmuxs = <&pinctrlb 0 IT8XXX2_ALT_FUNC_3>;