[PATCH v2 03/13] board: siemens: iot2050: Control pcie power for all variants

Jan Kiszka jan.kiszka at siemens.com
Tue Oct 22 08:04:20 CEST 2024


From: Baocheng Su <baocheng.su at siemens.com>

The power control pin of pcie interface not only works for M.2 interface
but also for miniPCIE, so promote this logic to all variants to
workaround the module hang issue.

Signed-off-by: Baocheng Su <baocheng.su at siemens.com>
Signed-off-by: Jan Kiszka <jan.kiszka at siemens.com>
---
 board/siemens/iot2050/board.c | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/board/siemens/iot2050/board.c b/board/siemens/iot2050/board.c
index e5c7ce58b06..85cb999f17f 100644
--- a/board/siemens/iot2050/board.c
+++ b/board/siemens/iot2050/board.c
@@ -185,6 +185,12 @@ static void remove_mmc1_target(void)
 	free(boot_targets);
 }
 
+static void enable_pcie_connector_power(void)
+{
+	set_pinvalue("gpio at 601000_17", "P3V3_PCIE_CON_EN", 1);
+	udelay(4 * 100);
+}
+
 void set_board_info_env(void)
 {
 	struct iot2050_info *info = IOT2050_INFO_DATA;
@@ -288,10 +294,6 @@ static void m2_connector_setup(void)
 	struct m2_config_pins config_pins;
 	unsigned int n;
 
-	/* enable M.2 connector power */
-	set_pinvalue("gpio at 601000_17", "P3V3_M2_EN", 1);
-	udelay(4 * 100);
-
 	if (m2_manual_config < CONNECTOR_MODE_INVALID) {
 		mode_info = " [manual mode]";
 		connector_mode = m2_manual_config;
@@ -429,6 +431,8 @@ int board_late_init(void)
 	/* change CTRL_MMR register to let serdes0 not output USB3.0 signals. */
 	writel(0x3, SERDES0_LANE_SELECT);
 
+	enable_pcie_connector_power();
+
 	if (board_is_m2())
 		m2_connector_setup();
 
-- 
2.43.0



More information about the U-Boot mailing list