mirror of
https://github.com/Fishwaldo/build.git
synced 2025-07-23 13:29:33 +00:00
Add pcie reset to u-boot dev
This commit is contained in:
parent
32940dfe3b
commit
ebbc0bffc7
2 changed files with 98 additions and 0 deletions
|
@ -0,0 +1,49 @@
|
|||
diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
|
||||
index f644547..f6e8ad5 100644
|
||||
--- a/board/solidrun/clearfog/clearfog.c
|
||||
+++ b/board/solidrun/clearfog/clearfog.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/soc.h>
|
||||
+#include <asm-generic/gpio.h>
|
||||
|
||||
#include "../drivers/ddr/marvell/a38x/ddr3_init.h"
|
||||
#include <../serdes/a38x/high_speed_env_spec.h>
|
||||
@@ -120,6 +121,36 @@ int board_init(void)
|
||||
setbits_le32(MVEBU_GPIO0_BASE + 0x0, BIT(19));
|
||||
mdelay(10);
|
||||
|
||||
+#ifdef CONFIG_DM_GPIO
|
||||
+ struct gpio_desc pcie0_reset,
|
||||
+ pcie1_reset;
|
||||
+ int res;
|
||||
+
|
||||
+ /* Toogle PERST# on miniPCIe1 (CON2) and miniPCIe0 (CON3) */
|
||||
+ res = dm_gpio_lookup_name("gpio@20_1", &pcie0_reset);
|
||||
+ if (!res) {
|
||||
+ res = dm_gpio_request(&pcie0_reset, "pcie0-reset");
|
||||
+ if (!res)
|
||||
+ dm_gpio_set_dir_flags(&pcie0_reset,GPIOD_IS_OUT |
|
||||
+ GPIOD_ACTIVE_LOW);
|
||||
+ }
|
||||
+
|
||||
+ res = dm_gpio_lookup_name("gpio@20_2", &pcie1_reset);
|
||||
+ if (!res) {
|
||||
+ res = dm_gpio_request(&pcie1_reset, "pcie1-reset");
|
||||
+ if (!res)
|
||||
+ dm_gpio_set_dir_flags(&pcie1_reset,GPIOD_IS_OUT |
|
||||
+ GPIOD_ACTIVE_LOW);
|
||||
+ }
|
||||
+
|
||||
+ dm_gpio_set_value(&pcie0_reset, 1);
|
||||
+ dm_gpio_set_value(&pcie1_reset, 1);
|
||||
+ mdelay(100);
|
||||
+ dm_gpio_set_value(&pcie0_reset, 0);
|
||||
+ dm_gpio_set_value(&pcie1_reset, 0);
|
||||
+ mdelay(100);
|
||||
+#endif
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,49 @@
|
|||
diff --git a/board/solidrun/clearfog/clearfog.c b/board/solidrun/clearfog/clearfog.c
|
||||
index f644547..f6e8ad5 100644
|
||||
--- a/board/solidrun/clearfog/clearfog.c
|
||||
+++ b/board/solidrun/clearfog/clearfog.c
|
||||
@@ -10,6 +10,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/cpu.h>
|
||||
#include <asm/arch/soc.h>
|
||||
+#include <asm-generic/gpio.h>
|
||||
|
||||
#include "../drivers/ddr/marvell/a38x/ddr3_init.h"
|
||||
#include <../serdes/a38x/high_speed_env_spec.h>
|
||||
@@ -120,6 +121,36 @@ int board_init(void)
|
||||
setbits_le32(MVEBU_GPIO0_BASE + 0x0, BIT(19));
|
||||
mdelay(10);
|
||||
|
||||
+#ifdef CONFIG_DM_GPIO
|
||||
+ struct gpio_desc pcie0_reset,
|
||||
+ pcie1_reset;
|
||||
+ int res;
|
||||
+
|
||||
+ /* Toogle PERST# on miniPCIe1 (CON2) and miniPCIe0 (CON3) */
|
||||
+ res = dm_gpio_lookup_name("gpio@20_1", &pcie0_reset);
|
||||
+ if (!res) {
|
||||
+ res = dm_gpio_request(&pcie0_reset, "pcie0-reset");
|
||||
+ if (!res)
|
||||
+ dm_gpio_set_dir_flags(&pcie0_reset,GPIOD_IS_OUT |
|
||||
+ GPIOD_ACTIVE_LOW);
|
||||
+ }
|
||||
+
|
||||
+ res = dm_gpio_lookup_name("gpio@20_2", &pcie1_reset);
|
||||
+ if (!res) {
|
||||
+ res = dm_gpio_request(&pcie1_reset, "pcie1-reset");
|
||||
+ if (!res)
|
||||
+ dm_gpio_set_dir_flags(&pcie1_reset,GPIOD_IS_OUT |
|
||||
+ GPIOD_ACTIVE_LOW);
|
||||
+ }
|
||||
+
|
||||
+ dm_gpio_set_value(&pcie0_reset, 1);
|
||||
+ dm_gpio_set_value(&pcie1_reset, 1);
|
||||
+ mdelay(100);
|
||||
+ dm_gpio_set_value(&pcie0_reset, 0);
|
||||
+ dm_gpio_set_value(&pcie1_reset, 0);
|
||||
+ mdelay(100);
|
||||
+#endif
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue