OSDN Git Service

ARM: dts: ux500: Fix BT+WLAN on Janice
authorLinus Walleij <linus.walleij@linaro.org>
Sat, 20 Mar 2021 01:10:35 +0000 (02:10 +0100)
committerLinus Walleij <linus.walleij@linaro.org>
Fri, 26 Mar 2021 09:41:51 +0000 (10:41 +0100)
GPIO215 has a rail named WLAN_RST_N but it is actually connected
to the pin WLAN_REG_ON on the BCM4330 chip, so this should be
the WLAN regulator GPIO rather than GPIO222. The misunderstanding
comes from the erroneous naming of the rail on the schematic.

GPIO222 is indeed connected to the rail BT_VREG_EN and the pin
BT_REG_ON, and can be handled by the driver as usual.

This corrects misunderstandings and makes Janice's WLAN and BT
setup look like that of Golden and Skomer.

Add explicit BCM4330 compatible to the WLAN chip.

Cc: Stephan Gerhold <stephan@gerhold.net>
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Reviewed-by: Stephan Gerhold <stephan@gerhold.net>
arch/arm/boot/dts/ste-ux500-samsung-janice.dts

index 7411bfe..f243698 100644 (file)
 
        /*
         * This regulator is a GPIO line that drives the Broadcom WLAN
-        * line BT_VREG_EN high and enables the internal regulators
-        * inside the chip.
+        * line WL_REG_ON high and enables the internal regulators
+        * inside the chip. Unfortunatley it is erroneously named
+        * WLAN_RST_N on the schematic but it is not a reset line.
         *
         * The voltage specified here is only used to determine the OCR mask,
         * the for the SDIO connector, the chip is actually connected
         * directly to VBAT.
         */
-       wl_bt_reg: regulator-gpio-wlan {
+       wl_reg: regulator-gpio-wlan {
                compatible = "regulator-fixed";
-               regulator-name = "BT_VREG_EN";
+               regulator-name = "WL_REG_ON";
                regulator-min-microvolt = <3000000>;
                regulator-max-microvolt = <3000000>;
                startup-delay-us = <100000>;
-               /* GPIO222 (BT_VREG_EN) */
-               gpio = <&gpio6 30 GPIO_ACTIVE_HIGH>;
+               /* GPIO215 (WLAN_RST_N to WL_REG_ON) */
+               gpio = <&gpio6 23 GPIO_ACTIVE_HIGH>;
                enable-active-high;
                pinctrl-names = "default";
                pinctrl-0 = <&wlan_ldo_en_default>;
                        pinctrl-1 = <&mc1_a_2_sleep>;
                        /*
                         * GPIO-controlled voltage enablement: this drives
-                        * the BT_VREG_EN line high when we use this device.
-                        * Represented as regulator to fill OCR mask and to
-                        * be usable in parallel with the Bluetooth chip.
+                        * the WL_REG_ON line high when we use this device.
+                        * Represented as regulator to fill OCR mask.
                         */
-                       vmmc-supply = <&wl_bt_reg>;
+                       vmmc-supply = <&wl_reg>;
 
                        #address-cells = <1>;
                        #size-cells = <0>;
                                interrupt-parent = <&gpio6>;
                                interrupts = <24 IRQ_TYPE_EDGE_FALLING>;
                                interrupt-names = "host-wake";
-                               /* GPIO215  WLAN_RST_N */
-                               /* FIXME: kernel does not use this assert/deassert */
-                               reset-gpios = <&gpio6 23 GPIO_ACTIVE_LOW>;
                                pinctrl-names = "default";
                                pinctrl-0 = <&wlan_default_mode>;
                        };
 
                        bluetooth {
                                compatible = "brcm,bcm4330-bt";
-                               /*
-                                * We actually have shutdown-gpios, BT_VREG_EN on GPIO222,
-                                * but since this GPIO is shared with the WLAN chip, we need
-                                * to reference the regulator instead. The regulator
-                                * framework will reference count the GPIO usage and
-                                * make sure we can use the same GPIO for several supplies.
-                                */
-                               // shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
-                               vbat-supply = <&wl_bt_reg>;
+                               /* GPIO222 rail BT_VREG_EN to BT_REG_ON */
+                               shutdown-gpios = <&gpio6 30 GPIO_ACTIVE_HIGH>;
                                /* BT_WAKE on GPIO199 */
                                device-wakeup-gpios = <&gpio6 7 GPIO_ACTIVE_HIGH>;
                                /* BT_HOST_WAKE on GPIO97 */
        /* GPIO that enables the WLAN internal LDO regulators */
        wlan-ldo {
                wlan_ldo_en_default: wlan_ldo_default {
-                       /* GPIO222 BT_VREG_ON */
+                       /* GPIO215 named WLAN_RST_N */
                        janice_cfg1 {
-                               pins = "GPIO222_AJ9";
+                               pins = "GPIO215_AH13";
                                ste,config = <&gpio_out_lo>;
                        };
                };
        };
        wlan {
                wlan_default_mode: wlan_default {
-                       /* GPIO215 used for RESET_N */
-                       janice_cfg1 {
-                               pins = "GPIO215_AH13";
-                               ste,config = <&gpio_out_lo>;
-                       };
                        /* GPIO216 for WL_HOST_WAKE */
                        janice_cfg2 {
                                pins = "GPIO216_AG12";
        };
        bluetooth {
                bluetooth_default_mode: bluetooth_default {
+                       /* GPIO199 BT_WAKE and GPIO222 BT_VREG_ON */
                        janice_cfg1 {
-                               pins = "GPIO199_AH23";
+                               pins = "GPIO199_AH23", "GPIO222_AJ9";
                                ste,config = <&gpio_out_lo>;
                        };
+                       /* GPIO97 BT_HOST_WAKE */
                        janice_cfg2 {
                                pins = "GPIO97_D9";
                                ste,config = <&gpio_in_nopull>;
                        };
+                       /* GPIO209 BT_RST_N */
                        janice_cfg3 {
                                pins = "GPIO209_AG15";
                                ste,config = <&gpio_out_hi>;