]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
ARM: dts: meson: consistently disable pin bias
authorJerome Brunet <jbrunet@baylibre.com>
Fri, 9 Nov 2018 14:04:45 +0000 (15:04 +0100)
committerKevin Hilman <khilman@baylibre.com>
Thu, 29 Nov 2018 00:41:11 +0000 (16:41 -0800)
On Amlogic chipsets, the bias set through pinconf applies to the pad
itself, not only the GPIO function. This means that even when we change
the function of the pad from GPIO to anything else, the bias previously
set still applies.

As we have seen with the eMMC, depending on the bias type and the function,
it may trigger problems.

The underlying issue is that we inherit whatever was left by previous user
of the pad (pinconf, u-boot or the ROM code). As a consequence, the actual
setup we will get is undefined.

There is nothing mentioned in the documentation about pad bias and pinmux
function, however leaving it undefined is not an option.

This change consistently disable the pad bias for every pinmux functions.
It seems to work well, we can only assume that the necessary bias (if any)
is already provided by the pin function itself.

Signed-off-by: Jerome Brunet <jbrunet@baylibre.com>
Acked-by: Martin Blumenstingl<martin.blumenstingl@googlemail.com>
Signed-off-by: Kevin Hilman <khilman@baylibre.com>
arch/arm/boot/dts/meson8.dtsi
arch/arm/boot/dts/meson8b.dtsi
arch/arm/boot/dts/meson8m2.dtsi

index 7162e0ca05b0a5d477fd1369f127e8bef67e8413..08c54cf5420ad2b73a8167fabe13ad70d80bcc7e 100644 (file)
@@ -163,6 +163,7 @@ uart_ao_a_pins: uart_ao_a {
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
+                               bias-disable;
                        };
                };
 
@@ -170,6 +171,7 @@ i2c_ao_pins: i2c_mst_ao {
                        mux {
                                groups = "i2c_mst_sck_ao", "i2c_mst_sda_ao";
                                function = "i2c_mst_ao";
+                               bias-disable;
                        };
                };
 
@@ -177,6 +179,7 @@ ir_recv_pins: remote {
                        mux {
                                groups = "remote_input";
                                function = "remote";
+                               bias-disable;
                        };
                };
 
@@ -184,6 +187,7 @@ pwm_f_ao_pins: pwm-f-ao {
                        mux {
                                groups = "pwm_f_ao";
                                function = "pwm_f_ao";
+                               bias-disable;
                        };
                };
        };
@@ -238,6 +242,7 @@ mux {
                                groups = "sd_d0_a", "sd_d1_a", "sd_d2_a",
                                        "sd_d3_a", "sd_clk_a", "sd_cmd_a";
                                function = "sd_a";
+                               bias-disable;
                        };
                };
 
@@ -246,6 +251,7 @@ mux {
                                groups = "sd_d0_b", "sd_d1_b", "sd_d2_b",
                                        "sd_d3_b", "sd_clk_b", "sd_cmd_b";
                                function = "sd_b";
+                               bias-disable;
                        };
                };
 
@@ -254,6 +260,7 @@ mux {
                                groups = "sd_d0_c", "sd_d1_c", "sd_d2_c",
                                        "sd_d3_c", "sd_clk_c", "sd_cmd_c";
                                function = "sd_c";
+                               bias-disable;
                        };
                };
 
@@ -261,6 +268,7 @@ spi_nor_pins: nor {
                        mux {
                                groups = "nor_d", "nor_q", "nor_c", "nor_cs";
                                function = "nor";
+                               bias-disable;
                        };
                };
 
@@ -272,6 +280,7 @@ mux {
                                         "eth_rxd1", "eth_rxd0", "eth_mdio",
                                         "eth_mdc";
                                function = "ethernet";
+                               bias-disable;
                        };
                };
 
@@ -279,6 +288,7 @@ pwm_e_pins: pwm-e {
                        mux {
                                groups = "pwm_e";
                                function = "pwm_e";
+                               bias-disable;
                        };
                };
 
@@ -287,6 +297,7 @@ mux {
                                groups = "uart_tx_a1",
                                       "uart_rx_a1";
                                function = "uart_a";
+                               bias-disable;
                        };
                };
 
@@ -295,6 +306,7 @@ mux {
                                groups = "uart_cts_a1",
                                       "uart_rts_a1";
                                function = "uart_a";
+                               bias-disable;
                        };
                };
        };
index cd1ca9dda126bb8467107e715f9ff6402f4a181e..46b3564a6536bc4ee0444cabf58afcb2b19de0cb 100644 (file)
@@ -146,6 +146,7 @@ uart_ao_a_pins: uart_ao_a {
                        mux {
                                groups = "uart_tx_ao_a", "uart_rx_ao_a";
                                function = "uart_ao";
+                               bias-disable;
                        };
                };
 
@@ -153,6 +154,7 @@ ir_recv_pins: remote {
                        mux {
                                groups = "remote_input";
                                function = "remote";
+                               bias-disable;
                        };
                };
        };
@@ -220,6 +222,7 @@ mux {
                                         "eth_txd2",
                                         "eth_txd3";
                                function = "ethernet";
+                               bias-disable;
                        };
                };
 
@@ -235,6 +238,7 @@ mux {
                                         "eth_mdio_en",
                                         "eth_mdc";
                                function = "ethernet";
+                               bias-disable;
                        };
                };
 
@@ -242,6 +246,7 @@ i2c_a_pins: i2c-a {
                        mux {
                                groups = "i2c_sda_a", "i2c_sck_a";
                                function = "i2c_a";
+                               bias-disable;
                        };
                };
 
@@ -250,6 +255,7 @@ mux {
                                groups = "sd_d0_b", "sd_d1_b", "sd_d2_b",
                                        "sd_d3_b", "sd_clk_b", "sd_cmd_b";
                                function = "sd_b";
+                               bias-disable;
                        };
                };
 
@@ -257,6 +263,7 @@ pwm_c1_pins: pwm-c1 {
                        mux {
                                groups = "pwm_c1";
                                function = "pwm_c";
+                               bias-disable;
                        };
                };
 
@@ -265,6 +272,7 @@ mux {
                                groups = "uart_tx_b0",
                                       "uart_rx_b0";
                                function = "uart_b";
+                               bias-disable;
                        };
                };
 
@@ -273,6 +281,7 @@ mux {
                                groups = "uart_cts_b0",
                                       "uart_rts_b0";
                                function = "uart_b";
+                               bias-disable;
                        };
                };
        };
index 3e1f92273d7be49a0e1e826a6f94a96667dac06c..d1a28c2adac5c0941a6140dbfff960ebc31f5deb 100644 (file)
@@ -45,6 +45,7 @@ mux {
                                 "eth_rxd1", "eth_rxd0",
                                 "eth_mdio", "eth_mdc";
                        function = "ethernet";
+                       bias-disable;
                };
        };
 };