Setup GPIO_OUT register before GPIO_OUT_FUNCx and GPIO_IN_ENx in low level GPIO init
authorPiotr Dymacz <pepe2k@gmail.com>
Fri, 3 Jun 2016 10:30:41 +0000 (12:30 +0200)
committerPiotr Dymacz <pepe2k@gmail.com>
Fri, 3 Jun 2016 10:30:41 +0000 (12:30 +0200)
u-boot/cpu/mips/ar7240/qca_gpio_init.S

index 41af0060653894f718d1aab9b02ed736d8b894cb..55727126ff5dc0d067c1485bad38d1bc46e2e40d 100644 (file)
@@ -142,13 +142,6 @@ lowlevel_gpio_init:
                #endif
        #endif
 
-       /* Setup GPIO number for LSUART RX in GPIO IN MUX */
-       li  t8, QCA_GPIO_IN_EN0_REG
-       lw  t9, 0(t8)
-       and t9, t9, ~(QCA_GPIO_IN_EN0_LSUART_RXD_MASK)
-       or  t9, t9, (CONFIG_QCA_GPIO_LSUART_RX << QCA_GPIO_IN_EN0_LSUART_RXD_SHIFT)
-       sw  t9, 0(t8)
-
        /*
         * Target regular GPIO and LSUART TX line configuration
         *
@@ -173,6 +166,33 @@ lowlevel_gpio_init:
        #endif
        sw  t9, 0(t8)
 
+       /*
+        * Setup GPIO type (out/in) in GPIO_OE
+        * register for all configured regular
+        * GPIOs and LSUART TX/RX lines
+        */
+       li  t8, QCA_GPIO_OE_REG
+       lw  t9, 0(t8)
+               #ifdef CONFIG_QCA_GPIO_MASK_OUTPUTS
+       and t9, t9, ~(CONFIG_QCA_GPIO_MASK_OUTPUTS | \
+                                 CONFIG_QCA_GPIO_MASK_LSUART_TX)
+               #else
+       and t9, t9, ~(CONFIG_QCA_GPIO_MASK_LSUART_TX)
+               #endif
+               #ifdef CONFIG_QCA_GPIO_MASK_INPUTS
+       or  t9, t9, (CONFIG_QCA_GPIO_MASK_INPUTS | CONFIG_QCA_GPIO_MASK_LSUART_RX)
+               #else
+       or  t9, t9, CONFIG_QCA_GPIO_MASK_LSUART_RX
+               #endif
+       sw  t9, 0(t8)
+
+       /* Setup GPIO number for LSUART RX in GPIO IN MUX */
+       li  t8, QCA_GPIO_IN_EN0_REG
+       lw  t9, 0(t8)
+       and t9, t9, ~(QCA_GPIO_IN_EN0_LSUART_RXD_MASK)
+       or  t9, t9, (CONFIG_QCA_GPIO_LSUART_RX << QCA_GPIO_IN_EN0_LSUART_RXD_SHIFT)
+       sw  t9, 0(t8)
+
        /*
         * TODO: what with default LSUART TX line?
         *
@@ -383,26 +403,6 @@ lowlevel_gpio_init:
        sw  t9, 0(t8)
                #endif
 
-       /*
-        * And finally, setup GPIO type (out/in)
-        * in GPIO_OE register for all configured
-        * regular GPIOs and LSUART TX/RX lines
-        */
-       li  t8, QCA_GPIO_OE_REG
-       lw  t9, 0(t8)
-               #ifdef CONFIG_QCA_GPIO_MASK_OUTPUTS
-       and t9, t9, ~(CONFIG_QCA_GPIO_MASK_OUTPUTS | \
-                                 CONFIG_QCA_GPIO_MASK_LSUART_TX)
-               #else
-       and t9, t9, ~(CONFIG_QCA_GPIO_MASK_LSUART_TX)
-               #endif
-               #ifdef CONFIG_QCA_GPIO_MASK_INPUTS
-       or  t9, t9, (CONFIG_QCA_GPIO_MASK_INPUTS | CONFIG_QCA_GPIO_MASK_LSUART_RX)
-               #else
-       or  t9, t9, CONFIG_QCA_GPIO_MASK_LSUART_RX
-               #endif
-       sw  t9, 0(t8)
-
        #endif /* CONFIG_QCA_GPIO_MASK_OUTPUTS || CONFIG_QCA_GPIO_MASK_INPUTS || CONFIG_QCA_GPIO_MASK_LSUART_TX */
 
 #endif /* (SOC_TYPE & QCA_AR934X_SOC) || (SOC_TYPE & QCA_QCA953X_SOC) || (SOC_TYPE & QCA_QCA955X_SOC) */