From: Gerlando Falauto <gerlando.fala...@keymile.com>

KMSUGP1 is from a u-boot perspective (almost) identical to KMNUSA.
The only difference is that the PCIe reset is connected to Kirkwood pin
MPP7_PEX_RST_OUTn, we use a dedicated config flag KM_PCIE_RESET_MPP7.
Such pin should theoretically be handled by the PCIe subsystem
automatically, but this turned out not to be the case.
So simply configure this PIN as a GPIO and issue a pulse manually.

Signed-off-by: Gerlando Falauto <gerlando.fala...@keymile.com>
Cc: Karlheinz Jerg <karlheinz.j...@keymile.com>
Cc: Valentin Longchamp <valenting.longch...@keymile.com>
Cc: Holger Brunck <holger.bru...@keymile.com>
---
 board/keymile/km_arm/fpga_config.c | 26 ++++++++++++++++++++++++++
 board/keymile/km_arm/km_arm.c      |  4 ++++
 boards.cfg                         |  1 +
 include/configs/km_kirkwood.h      | 12 ++++++++++--
 4 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/board/keymile/km_arm/fpga_config.c 
b/board/keymile/km_arm/fpga_config.c
index cbfc7d2..51a3cfe 100644
--- a/board/keymile/km_arm/fpga_config.c
+++ b/board/keymile/km_arm/fpga_config.c
@@ -189,6 +189,31 @@ int wait_for_fpga_config(void)
        return 0;
 }
 
+#if defined(KM_PCIE_RESET_MPP7)
+
+#define KM_PEX_RST_GPIO_PIN    7
+int fpga_reset(void)
+{
+       if (!check_boco2()) {
+               /* we do not have BOCO2, this is not really used */
+               return 0;
+       }
+
+       printf("PCIe reset through GPIO7: ");
+       /* apply PCIe reset via GPIO */
+       kw_gpio_set_valid(KM_PEX_RST_GPIO_PIN, 1);
+       kw_gpio_direction_output(KM_PEX_RST_GPIO_PIN, 1);
+       kw_gpio_set_value(KM_PEX_RST_GPIO_PIN, 0);
+       udelay(1000*10);
+       kw_gpio_set_value(KM_PEX_RST_GPIO_PIN, 1);
+
+       printf(" done\n");
+
+       return 0;
+}
+
+#else
+
 #define PRST1          0x4
 #define PCIE_RST       0x10
 #define TRAFFIC_RST    0x04
@@ -219,6 +244,7 @@ int fpga_reset(void)
 
        return 0;
 }
+#endif
 
 /* the FPGA was configured, we configure the BOCO2 so that the EEPROM
  * is available from the Bobcat SPI bus */
diff --git a/board/keymile/km_arm/km_arm.c b/board/keymile/km_arm/km_arm.c
index 5f32e70..35402c8 100644
--- a/board/keymile/km_arm/km_arm.c
+++ b/board/keymile/km_arm/km_arm.c
@@ -46,7 +46,11 @@ static const u32 kwmpp_config[] = {
        MPP4_NF_IO6,
        MPP5_NF_IO7,
        MPP6_SYSRST_OUTn,
+#if defined(KM_PCIE_RESET_MPP7)
+       MPP7_GPO,
+#else
        MPP7_PEX_RST_OUTn,
+#endif
 #if defined(CONFIG_SYS_I2C_SOFT)
        MPP8_GPIO,              /* SDA */
        MPP9_GPIO,              /* SCL */
diff --git a/boards.cfg b/boards.cfg
index a8336cc..5300423 100644
--- a/boards.cfg
+++ b/boards.cfg
@@ -172,6 +172,7 @@ Active  arm         arm926ejs      kirkwood    keymile      
   km_arm
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    km_kirkwood_128m16                   km_kirkwood:KM_KIRKWOOD_128M16         
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    kmcoge5un                            km_kirkwood:KM_COGE5UN                 
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    kmnusa                               km_kirkwood:KM_NUSA                    
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
+Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    kmsugp1                              km_kirkwood:KM_SUGP1                   
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    kmsuv31                              km_kirkwood:KM_SUV31                   
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    mgcoge3un                            km_kirkwood:KM_MGCOGE3UN               
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
 Active  arm         arm926ejs      kirkwood    keymile         km_arm          
    portl2                               km_kirkwood:KM_PORTL2                  
                                                                                
           Valentin Longchamp <valentin.longch...@keymile.com>
diff --git a/include/configs/km_kirkwood.h b/include/configs/km_kirkwood.h
index 2bd89b1..2cde177 100644
--- a/include/configs/km_kirkwood.h
+++ b/include/configs/km_kirkwood.h
@@ -45,11 +45,19 @@
 #define CONFIG_KM_DISABLE_PCIE
 #define CONFIG_KM_IVM_BUS              1       /* I2C2 (Mux-Port 1)*/
 
-/* KM_NUSA */
-#elif defined(CONFIG_KM_NUSA)
+/* KM_NUSA / KM_SUGP1 */
+#elif defined(CONFIG_KM_NUSA) || defined(CONFIG_KM_SUGP1)
 #define CONFIG_KM_IVM_BUS              1       /* I2C2 (Mux-Port 1)*/
+
+# if defined(CONFIG_KM_NUSA)
 #define CONFIG_IDENT_STRING            "\nKeymile NUSA"
 #define CONFIG_HOSTNAME                        kmnusa
+# elif defined(CONFIG_KM_SUGP1)
+#define CONFIG_IDENT_STRING            "\nKeymile SUGP1"
+#define CONFIG_HOSTNAME                        kmsugp1
+#define KM_PCIE_RESET_MPP7
+#endif
+
 #undef CONFIG_SYS_KWD_CONFIG
 #define CONFIG_SYS_KWD_CONFIG \
                $(SRCTREE)/$(CONFIG_BOARDDIR)/kwbimage_128M16_1.cfg
-- 
1.8.0.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to