On Sun, Apr 26, 2020 at 11:35:57AM -0700, Jonathan Bakker wrote:
> Add support for following devices:
>   - touchkeys connected over i2c-gpio
>   - s6e63m0 panel connected over spi-gpio
>   - fsa9480 microusb switch over i2c-gpio
>   - wm8994 over i2c-gpio (no machine driver yet)
>   - all common i2c-gpio devices

Please split it per functionality, e.g.:
1. Add sound,
2. Add panel,
3. Add touchkeys (unless part of panel),
4. The remaining i2c-gpio devices without bindings could go as one.

> 
> Signed-off-by: Jonathan Bakker <xc-rac...@live.ca>
> Signed-off-by: Paweł Chmiel <pawel.mikolaj.chm...@gmail.com>
> ---
>  arch/arm/boot/dts/s5pv210-aries.dtsi      | 282 ++++++++++++++++++++--
>  arch/arm/boot/dts/s5pv210-fascinate4g.dts |   6 +
>  2 files changed, 270 insertions(+), 18 deletions(-)
> 
> diff --git a/arch/arm/boot/dts/s5pv210-aries.dtsi 
> b/arch/arm/boot/dts/s5pv210-aries.dtsi
> index f83df426f2b6..ef966d13d83d 100644
> --- a/arch/arm/boot/dts/s5pv210-aries.dtsi
> +++ b/arch/arm/boot/dts/s5pv210-aries.dtsi
> @@ -12,8 +12,14 @@
>       compatible = "samsung,aries", "samsung,s5pv210";
>  
>       aliases {
> +             i2c4 = &i2c_sound;
> +             i2c5 = &i2c_accel;
>               i2c6 = &i2c_pmic;
> +             i2c7 = &i2c_musb;
>               i2c9 = &i2c_fuel;
> +             i2c10 = &i2c_touchkey;
> +             i2c11 = &i2c_prox;
> +             i2c12 = &i2c_magnetometer;
>       };
>  
>       memory@30000000 {
> @@ -48,6 +54,18 @@
>               gpio = <&gpj1 1 GPIO_ACTIVE_HIGH>;
>       };
>  
> +     touchkey_vdd: regulator-fixed-1 {
> +             compatible = "regulator-fixed";
> +             regulator-name = "VTOUCH_3.3V";
> +             regulator-min-microvolt = <3300000>;
> +             regulator-max-microvolt = <3300000>;
> +             enable-active-high;
> +             gpio = <&gpj3 2 GPIO_ACTIVE_HIGH>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&touchkey_vdd_ena>;
> +     };
> +
>       wifi_pwrseq: wifi-pwrseq {
>               compatible = "mmc-pwrseq-simple";
>               reset-gpios = <&gpg1 2 GPIO_ACTIVE_LOW>;
> @@ -57,7 +75,69 @@
>               power-off-delay-us = <500>;
>       };
>  
> -     i2c_pmic: i2c-gpio-0 {
> +     i2c_sound: i2c-gpio-0 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&mp05 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&mp05 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&sound_i2c_pins>;
> +
> +             wm8994: wm8994@1a {
> +                     compatible = "wlf,wm8994";
> +                     reg = <0x1a>;
> +
> +                     #sound-dai-cells = <0>;
> +
> +                     gpio-controller;
> +                     #gpio-cells = <2>;
> +
> +                     clocks = <&clocks MOUT_CLKOUT>;
> +                     clock-names = "MCLK1";
> +
> +                     AVDD2-supply = <&buck3_reg>;
> +                     DBVDD-supply = <&buck3_reg>;

No such supply, check the bindings.

> +                     CPVDD-supply = <&buck3_reg>;
> +                     SPKVDD1-supply = <&buck3_reg>;
> +                     SPKVDD2-supply = <&buck3_reg>;
> +
> +                     wlf,gpio-cfg = <0xa101 0x8100 0x0100 0x0100 0x8100
> +                                     0xa101 0x0100 0x8100 0x0100 0x0100
> +                                     0x0100>;
> +
> +                     wlf,ldo1ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> +                     wlf,ldo2ena = <&gpf3 4 GPIO_ACTIVE_HIGH>;
> +
> +                     wlf,lineout1-se;
> +                     wlf,lineout2-se;
> +
> +                     assigned-clocks = <&clocks MOUT_CLKOUT>;
> +                     assigned-clock-rates = <0>;
> +                     assigned-clock-parents = <&xusbxti>;
> +
> +                     pinctrl-names = "default";
> +                     pinctrl-0 = <&codec_ldo>;
> +             };
> +     };
> +
> +     i2c_accel: i2c-gpio-1 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&gpj3 6 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&gpj3 7 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&accel_i2c_pins>;
> +
> +             /* bma023 accelerometer, no mainline binding */

status disabled ... unless you need it for user-space I2C tools?

> +     };
> +
> +     i2c_pmic: i2c-gpio-2 {
>               compatible = "i2c-gpio";
>               sda-gpios = <&gpj4 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>               scl-gpios = <&gpj4 3 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> @@ -137,8 +217,6 @@
>                                       regulator-name = "VLCD_1.8V";
>                                       regulator-min-microvolt = <1800000>;
>                                       regulator-max-microvolt = <1800000>;
> -                                     /* Till we get panel driver */
> -                                     regulator-always-on;
>  
>                                       regulator-state-mem {
>                                               regulator-off-in-suspend;
> @@ -237,8 +315,6 @@
>                                       regulator-name = "VCC_3.0V_LCD";
>                                       regulator-min-microvolt = <3000000>;
>                                       regulator-max-microvolt = <3000000>;
> -                                     /* Till we get panel driver */
> -                                     regulator-always-on;
>  
>                                       regulator-state-mem {
>                                               regulator-off-in-suspend;
> @@ -309,7 +385,26 @@
>               };
>       };
>  
> -     i2c_fuel: i2c-gpio-1 {
> +     i2c_musb: i2c-gpio-3 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&gpj3 4 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&gpj3 5 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&musb_i2c_pins>;
> +
> +             fsa9480: musb@25 {
> +                     compatible = "fcs,fsa9480";
> +                     reg = <0x25>;
> +                     interrupt-parent = <&gph2>;
> +                     interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
> +             };
> +     };
> +
> +     i2c_fuel: i2c-gpio-4 {
>               compatible = "i2c-gpio";
>               sda-gpios = <&mp05 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
>               scl-gpios = <&mp05 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> @@ -328,6 +423,60 @@
>               };
>       };
>  
> +     i2c_touchkey: i2c-gpio-5 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&gpj3 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&gpj3 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&touchkey_i2c_pins>;
> +
> +             touchkey@20 {
> +                     compatible = "cypress,aries-touchkey";
> +                     reg = <0x20>;
> +                     vdd-supply = <&touchkey_vdd>;
> +                     vcc-supply = <&buck3_reg>;
> +                     linux,keycodes = <KEY_MENU KEY_BACK
> +                                       KEY_HOMEPAGE KEY_SEARCH>;
> +                     interrupt-parent = <&gpj4>;
> +                     interrupts = <1 IRQ_TYPE_LEVEL_LOW>;
> +
> +                     pinctrl-names = "default";
> +                     pinctrl-0 = <&touchkey_irq>;
> +             };
> +     };
> +
> +     i2c_prox: i2c-gpio-6 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&gpg2 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&gpg0 2 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&prox_i2c_pins>;
> +
> +             /* Sharp gp2a prox/light sensor, incomplete mainline binding */

The same - disable, unless you access it from user-space.

> +     };
> +
> +     i2c_magnetometer: i2c-gpio-7 {
> +             compatible = "i2c-gpio";
> +             sda-gpios = <&gpj0 1 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             scl-gpios = <&gpj0 0 (GPIO_ACTIVE_HIGH | GPIO_OPEN_DRAIN)>;
> +             i2c-gpio,delay-us = <2>;
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&magnetometer_i2c_pins>;
> +
> +             /* Yamaha yas529 magnetometer, no mainline binding */

The same - disable, unless you access it from user-space.

> +     };
> +
>       vibrator: pwm-vibrator {
>               compatible = "pwm-vibrator";
>               pwms = <&pwm 1 44642 0>;
> @@ -343,6 +492,39 @@
>               offset = <0x681c>; /* PS_HOLD_CONTROL */
>               value = <0x5200>;
>       };
> +
> +     spi_lcd: spi-gpio-0 {
> +             compatible = "spi-gpio";
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +
> +             sck-gpios = <&mp04 1 GPIO_ACTIVE_HIGH>;
> +             mosi-gpios = <&mp04 3 GPIO_ACTIVE_HIGH>;
> +             cs-gpios = <&mp01 1 GPIO_ACTIVE_HIGH>;
> +             num-chipselects = <1>;
> +
> +             pinctrl-names = "default";
> +             pinctrl-0 = <&lcd_spi_pins>;
> +
> +             panel@0 {
> +                     compatible = "samsung,s6e63m0";
> +                     reg = <0>;
> +                     reset-gpios = <&mp05 5 GPIO_ACTIVE_LOW>;
> +                     vdd3-supply = <&ldo7_reg>;
> +                     vci-supply = <&ldo17_reg>;
> +                     spi-cs-high;
> +                     spi-max-frequency = <1200000>;
> +
> +                     pinctrl-names = "default";
> +                     pinctrl-0 = <&panel_rst>;
> +
> +                     port {
> +                             lcd_ep: endpoint {
> +                                     remote-endpoint = <&fimd_ep>;
> +                             };
> +                     };
> +             };
> +     };
>  };
>  
>  &fimd {
> @@ -353,18 +535,13 @@
>       samsung,invert-vden;
>       samsung,invert-vclk;
>  
> -     display-timings {
> -             timing-0 {
> -                     /* 480x800@60Hz */
> -                     clock-frequency = <25628040>;
> -                     hactive = <480>;
> -                     vactive = <800>;
> -                     hfront-porch = <16>;
> -                     hback-porch = <16>;
> -                     hsync-len = <2>;
> -                     vfront-porch = <28>;
> -                     vback-porch = <1>;
> -                     vsync-len = <2>;
> +     #address-cells = <1>;
> +     #size-cells = <0>;
> +
> +     port@3 {
> +             reg = <3>;
> +             fimd_ep: endpoint {
> +                     remote-endpoint = <&lcd_ep>;
>               };
>       };
>  };
> @@ -405,6 +582,19 @@
>               samsung,pin-val = <1>;
>       };
>  
> +     codec_ldo: codec-ldo {
> +             samsung,pins = "gpf3-4";
> +             samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +     };
> +
> +     prox_i2c_pins: gp2a-i2c-pins {
> +             samsung,pins = "gpg0-2", "gpg2-2";
> +             samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
>       wlan_gpio_rst: wlan-gpio-rst {
>               samsung,pins = "gpg1-2";
>               samsung,pin-function = <EXYNOS_PIN_FUNC_OUTPUT>;
> @@ -438,6 +628,13 @@
>               samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>       };
>  
> +     magnetometer_i2c_pins: yas529-i2c-pins {
> +             samsung,pins = "gpj0-0", "gpj0-1";
> +             samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
>       ts_irq: ts-irq {
>               samsung,pins = "gpj0-5";
>               samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> @@ -445,17 +642,66 @@
>               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>       };
>  
> +     touchkey_i2c_pins: touchkey-i2c-pins {
> +             samsung,pins = "gpj3-0", "gpj3-1";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
> +     touchkey_vdd_ena: touchkey-vdd-ena {
> +             samsung,pins = "gpj3-2";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
> +     musb_i2c_pins: musb-i2c-pins {
> +             samsung,pins = "gpj3-4", "gpj3-5";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
> +     accel_i2c_pins: accel-i2c-pins {
> +             samsung,pins = "gpj3-6", "gpj3-7";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
>       pmic_i2c_pins: pmic-i2c-pins {
>               samsung,pins = "gpj4-0", "gpj4-3";
>               samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>       };
>  
> +     touchkey_irq: touchkey-irq {
> +             samsung,pins = "gpj4-1";
> +             samsung,pin-function = <EXYNOS_PIN_FUNC_INPUT>;
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_UP>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
> +     lcd_spi_pins: spi-lcd-pins {
> +             samsung,pins = "mp01-1", "mp04-1", "mp04-3";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
>       fg_i2c_pins: fg-i2c-pins {
>               samsung,pins = "mp05-0", "mp05-1";
>               samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
>               samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
>       };
> +
> +     sound_i2c_pins: sound-i2c-pins {
> +             samsung,pins = "mp05-2", "mp05-3";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
> +
> +     panel_rst: panel-rst {
> +             samsung,pins = "mp05-5";
> +             samsung,pin-pud = <S3C64XX_PIN_PULL_NONE>;
> +             samsung,pin-drv = <EXYNOS4_PIN_DRV_LV1>;
> +     };
>  };
>  
>  &pwm {
> diff --git a/arch/arm/boot/dts/s5pv210-fascinate4g.dts 
> b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> index 94dcb9b64b9a..42e6e2de197d 100644
> --- a/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> +++ b/arch/arm/boot/dts/s5pv210-fascinate4g.dts
> @@ -278,3 +278,9 @@
>               PIN_SLP(mp07-7, INPUT, DOWN);
>       };
>  };
> +
> +&wm8994 {
> +     /* GPIO3 (BCLK2) and GPIO4 (LRCLK2) as outputs */
> +     wlf,gpio-cfg = <0xa101 0x8100 0x8100 0x8100 0x8100 0xa101
> +             0x0100 0x8100 0x0100 0x0100 0x0100>;

Indent the line till opening <.

Best regards,
Krzysztof

Reply via email to