diff --git a/dts/bindings/mfd/ite,it8801-mfd.yaml b/dts/bindings/mfd/ite,it8801-mfd.yaml index 99d7c45e0735..e16c1474f82f 100644 --- a/dts/bindings/mfd/ite,it8801-mfd.yaml +++ b/dts/bindings/mfd/ite,it8801-mfd.yaml @@ -5,15 +5,9 @@ description: | ITE IT8801 ioexpander multi-function device drivers. This ioexpander provides a GPIO/PWM/Keyboard function via I2C bus. - An example configuration: + An example configuration using the it8801-common-cfg.dtsi template: &i2c4 { - status = "okay"; - clock-frequency = ; - pinctrl-0 = <&i2c4_clk_gpe0_default - &i2c4_data_gpe7_default>; - pinctrl-names = "default"; - it8801_mfd: it8801@38 { compatible = "ite,it8801-mfd"; /* @@ -23,74 +17,27 @@ description: | */ reg = <0x38>; irq-gpios = <&gpioa 1 0>; /* SMB_INT# */ - #address-cells = <1>; - #size-cells = <1>; - - ioex_it8801_port0: it8801_port@0 { - compatible = "ite,it8801-gpio"; - reg = <0x00 1 /* GPIPSR */ - 0x05 1 /* GPSOVR */ - 0x0a 8 /* GPCR */ - 0x32 1 /* GPISR */ - 0x37 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <8>; - pin-mask = <0xdb>; - }; - - ioex_it8801_port1: it8801_port@1 { - compatible = "ite,it8801-gpio"; - reg = <0x01 1 /* GPIPSR */ - 0x06 1 /* GPSOVR */ - 0x12 8 /* GPCR */ - 0x33 1 /* GPISR */ - 0x38 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <8>; - pin-mask = <0x3f>; - }; - - ioex_it8801_port2: it8801_port@2 { - compatible = "ite,it8801-gpio"; - reg = <0x02 1 /* GPIPSR */ - 0x07 1 /* GPSOVR */ - 0x1a 8 /* GPCR */ - 0x34 1 /* GPISR */ - 0x39 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <8>; - pin-mask = <0x0f>; - }; - - ioex_it8801_kbd: it8801_kbd@40 { - compatible = "ite,it8801-kbd"; - reg = <0x40 1 /* KSOMCR */ - 0x41 1 /* KSIDR */ - 0x42 1 /* KSIEER */ - 0x43 1>; /* KSIIER */ - kso-mapping = <0 1 20 3 4 5 6 - 17 18 16 15 11 12>; - mfdctrl = <&kso18_gp01_default - &kso20_gp23_default>; - row-size = <8>; - col-size = <13>; - - kscan_input: kscan-input { - compatible = "zephyr,kscan-input"; - }; - }; + } + + #include + + /* sub-devices available at nodelabels: + * - ioex_it8801_port0 + * - ioex_it8801_port1 + * - ioex_it8801_port2 + * - ioex_it8801_kbd + * - ioex_it8801_pwm + */ + + &ioex_it8801_kbd { + kso-mapping = <0 1 20 3 4 5 6 17 18 16 15 11 12>; + mfdctrl = <&kso18_gp01_default &kso20_gp23_default>; + row-size = <8>; + col-size = <13>; + }; - ioex_it8801_pwm: it8801_pwm@90 { - compatible = "ite,it8801-pwm"; - mfdctrl = <&pwm7_gp20_default>; - reg = <0x90 1 /* PWMMCR */ - 0x94 1>; /* PWMDCR */ - channel = <7>; - #pwm-cells = <3>; - }; + &ioex_it8801_pwm { + status = "okay"; }; }; diff --git a/dts/riscv/ite/it8801-common-cfg.dtsi b/dts/riscv/ite/it8801-common-cfg.dtsi index 19fbd48837de..714727185584 100644 --- a/dts/riscv/ite/it8801-common-cfg.dtsi +++ b/dts/riscv/ite/it8801-common-cfg.dtsi @@ -6,149 +6,145 @@ #include -&it8801_i2c { - it8801_mfd: it8801@38 { - compatible = "ite,it8801-mfd"; - reg = <0x38>; - #address-cells = <1>; - #size-cells = <1>; +&it8801_mfd { + #address-cells = <1>; + #size-cells = <1>; - /* GPIO */ - ioex_it8801_port0: it8801_port@0 { - compatible = "ite,it8801-gpio"; - reg = <0x00 1 /* GPIPSR */ - 0x05 1 /* GPSOVR */ - 0x0a 8 /* GPCR */ - 0x32 1 /* GPISR */ - 0x37 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <8>; - pin-mask = <0xdb>; - }; + /* GPIO */ + ioex_it8801_port0: it8801_port@0 { + compatible = "ite,it8801-gpio"; + reg = <0x00 1 /* GPIPSR */ + 0x05 1 /* GPSOVR */ + 0x0a 8 /* GPCR */ + 0x32 1 /* GPISR */ + 0x37 1>; /* GPIER */ + gpio-controller; + #gpio-cells = <2>; + ngpios = <8>; + pin-mask = <0xdb>; + }; - ioex_it8801_port1: it8801_port@1 { - compatible = "ite,it8801-gpio"; - reg = <0x01 1 /* GPIPSR */ - 0x06 1 /* GPSOVR */ - 0x12 6 /* GPCR */ - 0x33 1 /* GPISR */ - 0x38 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <6>; - pin-mask = <0x3f>; - }; + ioex_it8801_port1: it8801_port@1 { + compatible = "ite,it8801-gpio"; + reg = <0x01 1 /* GPIPSR */ + 0x06 1 /* GPSOVR */ + 0x12 6 /* GPCR */ + 0x33 1 /* GPISR */ + 0x38 1>; /* GPIER */ + gpio-controller; + #gpio-cells = <2>; + ngpios = <6>; + pin-mask = <0x3f>; + }; - ioex_it8801_port2: it8801_port@2 { - compatible = "ite,it8801-gpio"; - reg = <0x02 1 /* GPIPSR */ - 0x07 1 /* GPSOVR */ - 0x1a 4 /* GPCR */ - 0x34 1 /* GPISR */ - 0x39 1>; /* GPIER */ - gpio-controller; - #gpio-cells = <2>; - ngpios = <4>; - pin-mask = <0x0f>; - }; + ioex_it8801_port2: it8801_port@2 { + compatible = "ite,it8801-gpio"; + reg = <0x02 1 /* GPIPSR */ + 0x07 1 /* GPSOVR */ + 0x1a 4 /* GPCR */ + 0x34 1 /* GPISR */ + 0x39 1>; /* GPIER */ + gpio-controller; + #gpio-cells = <2>; + ngpios = <4>; + pin-mask = <0x0f>; + }; - /* KBD */ - ioex_it8801_kbd: it8801_kbd@40 { - compatible = "ite,it8801-kbd"; - status = "disabled"; - reg = <0x40 1 - 0x41 1 - 0x42 1 - 0x43 1>; - row-size = <8>; - col-size = <13>; - }; + /* KBD */ + ioex_it8801_kbd: it8801_kbd@40 { + compatible = "ite,it8801-kbd"; + status = "disabled"; + reg = <0x40 1 + 0x41 1 + 0x42 1 + 0x43 1>; + row-size = <8>; + col-size = <13>; + }; - /* PWM */ - ioex_it8801_pwm1: it8801_pwm@60 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x60 1 /* PWMMCR */ - 0x64 1 /* PWMDCR */ - 0x66 1 /* PWMPRSL */ - 0x67 1>; /* PWMPRSM */ - mfdctrl = <&pwm1_gp12_default>; - channel = <1>; - #pwm-cells = <3>; - }; + /* PWM */ + ioex_it8801_pwm1: it8801_pwm@60 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x60 1 /* PWMMCR */ + 0x64 1 /* PWMDCR */ + 0x66 1 /* PWMPRSL */ + 0x67 1>; /* PWMPRSM */ + mfdctrl = <&pwm1_gp12_default>; + channel = <1>; + #pwm-cells = <3>; + }; - ioex_it8801_pwm2: it8801_pwm@68 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x68 1 /* PWMMCR */ - 0x6c 1 /* PWMDCR */ - 0x6e 1 /* PWMPRSL */ - 0x6f 1>; /* PWMPRSM */ - mfdctrl = <&pwm2_gp13_default>; - channel = <2>; - #pwm-cells = <3>; - }; + ioex_it8801_pwm2: it8801_pwm@68 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x68 1 /* PWMMCR */ + 0x6c 1 /* PWMDCR */ + 0x6e 1 /* PWMPRSL */ + 0x6f 1>; /* PWMPRSM */ + mfdctrl = <&pwm2_gp13_default>; + channel = <2>; + #pwm-cells = <3>; + }; - ioex_it8801_pwm3: it8801_pwm@70 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x70 1 /* PWMMCR */ - 0x74 1 /* PWMDCR */ - 0x76 1 /* PWMPRSL */ - 0x77 1>; /* PWMPRSM */ - mfdctrl = <&pwm3_gp14_default>; - channel = <3>; - #pwm-cells = <3>; - }; + ioex_it8801_pwm3: it8801_pwm@70 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x70 1 /* PWMMCR */ + 0x74 1 /* PWMDCR */ + 0x76 1 /* PWMPRSL */ + 0x77 1>; /* PWMPRSM */ + mfdctrl = <&pwm3_gp14_default>; + channel = <3>; + #pwm-cells = <3>; + }; - ioex_it8801_pwm4: it8801_pwm@78 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x78 1 /* PWMMCR */ - 0x7c 1 /* PWMDCR */ - 0x7e 1 /* PWMPRSL */ - 0x7f 1>; /* PWMPRSM */ - mfdctrl = <&pwm4_gp15_default>; - channel = <4>; - #pwm-cells = <3>; - }; + ioex_it8801_pwm4: it8801_pwm@78 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x78 1 /* PWMMCR */ + 0x7c 1 /* PWMDCR */ + 0x7e 1 /* PWMPRSL */ + 0x7f 1>; /* PWMPRSM */ + mfdctrl = <&pwm4_gp15_default>; + channel = <4>; + #pwm-cells = <3>; + }; - ioex_it8801_pwm7: it8801_pwm@90 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x90 1 /* PWMMCR */ - 0x94 1 /* PWMDCR */ - 0x96 1 /* PWMPRSL */ - 0x97 1>; /* PWMPRSM */ - mfdctrl = <&pwm7_gp20_default>; - channel = <7>; - #pwm-cells = <3>; + ioex_it8801_pwm7: it8801_pwm@90 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x90 1 /* PWMMCR */ + 0x94 1 /* PWMDCR */ + 0x96 1 /* PWMPRSL */ + 0x97 1>; /* PWMPRSM */ + mfdctrl = <&pwm7_gp20_default>; + channel = <7>; + #pwm-cells = <3>; - }; + }; - ioex_it8801_pwm8: it8801_pwm@98 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0x98 1 /* PWMMCR */ - 0x9c 1 /* PWMDCR */ - 0x9e 1 /* PWMPRSL */ - 0x9f 1>; /* PWMPRSM */ - mfdctrl = <&pwm8_gp23_default>; - channel = <8>; - #pwm-cells = <3>; - }; + ioex_it8801_pwm8: it8801_pwm@98 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0x98 1 /* PWMMCR */ + 0x9c 1 /* PWMDCR */ + 0x9e 1 /* PWMPRSL */ + 0x9f 1>; /* PWMPRSM */ + mfdctrl = <&pwm8_gp23_default>; + channel = <8>; + #pwm-cells = <3>; + }; - ioex_it8801_pwm9: it8801_pwm@a0 { - compatible = "ite,it8801-pwm"; - status = "disabled"; - reg = <0xa0 1 /* PWMMCR */ - 0xa4 1 /* PWMDCR */ - 0xa6 1 /* PWMPRSL */ - 0xa7 1>; /* PWMPRSM */ - mfdctrl = <&pwm9_gp22_default>; - channel = <9>; - #pwm-cells = <3>; - }; + ioex_it8801_pwm9: it8801_pwm@a0 { + compatible = "ite,it8801-pwm"; + status = "disabled"; + reg = <0xa0 1 /* PWMMCR */ + 0xa4 1 /* PWMDCR */ + 0xa6 1 /* PWMPRSL */ + 0xa7 1>; /* PWMPRSM */ + mfdctrl = <&pwm9_gp22_default>; + channel = <9>; + #pwm-cells = <3>; }; }; diff --git a/tests/drivers/build_all/gpio/it82xx2_evb.overlay b/tests/drivers/build_all/gpio/it82xx2_evb.overlay index d29637109f40..813c5617311c 100644 --- a/tests/drivers/build_all/gpio/it82xx2_evb.overlay +++ b/tests/drivers/build_all/gpio/it82xx2_evb.overlay @@ -4,12 +4,14 @@ * SPDX-License-Identifier: Apache-2.0 */ -it8801_i2c: &i2c4 { +&i2c4 { status = "okay"; + + it8801_mfd: it8801@38 { + compatible = "ite,it8801-mfd"; + reg = <0x38>; + irq-gpios = <&gpioa 1 0>; + }; }; #include - -&it8801_mfd { - irq-gpios = <&gpioa 1 0>; -}; diff --git a/tests/drivers/build_all/input/it82xx2_evb.overlay b/tests/drivers/build_all/input/it82xx2_evb.overlay index 44ced947eb0d..511f86a4df6f 100644 --- a/tests/drivers/build_all/input/it82xx2_evb.overlay +++ b/tests/drivers/build_all/input/it82xx2_evb.overlay @@ -6,25 +6,27 @@ /delete-node/ &kbd; -it8801_i2c: &i2c4 { +&i2c4 { status = "okay"; + + it8801_mfd: it8801@38 { + compatible = "ite,it8801-mfd"; + reg = <0x38>; + irq-gpios = <&gpioa 1 0>; + }; }; #include -&it8801_mfd { - irq-gpios = <&gpioa 1 0>; - - ioex_it8801_kbd: it8801_kbd@40 { - status = "okay"; - /* GP00, GP01, GP21, GP22, GP23 can be configured as alternate KSO pins */ - mfdctrl = <&kso18_gp01_default &kso20_gp23_default>; - kso-mapping = <0 1 20 3 4 5 6 17 18 16 15 11 12>; - row-size = <8>; - col-size = <13>; +&ioex_it8801_kbd { + status = "okay"; + /* GP00, GP01, GP21, GP22, GP23 can be configured as alternate KSO pins */ + mfdctrl = <&kso18_gp01_default &kso20_gp23_default>; + kso-mapping = <0 1 20 3 4 5 6 17 18 16 15 11 12>; + row-size = <8>; + col-size = <13>; - kscan_input: kscan-input { - compatible = "zephyr,kscan-input"; - }; + kscan_input: kscan-input { + compatible = "zephyr,kscan-input"; }; }; diff --git a/tests/drivers/build_all/pwm/boards/it82xx2_evb.overlay b/tests/drivers/build_all/pwm/boards/it82xx2_evb.overlay index c437ee904620..3b7c282d54c5 100644 --- a/tests/drivers/build_all/pwm/boards/it82xx2_evb.overlay +++ b/tests/drivers/build_all/pwm/boards/it82xx2_evb.overlay @@ -10,16 +10,18 @@ }; }; -it8801_i2c: &i2c4 { +&i2c4 { status = "okay"; + + it8801_mfd: it8801@38 { + compatible = "ite,it8801-mfd"; + reg = <0x38>; + irq-gpios = <&gpioa 1 0>; + }; }; #include -&it8801_mfd { - irq-gpios = <&gpioa 1 0>; - - ioex_it8801_pwm7: it8801_pwm@90 { - status = "okay"; - }; +&ioex_it8801_pwm7 { + status = "okay"; };