diff mbox series

board: gateworks: venice: fix dt adjustment for gw73xx baseboard for imx8mp

Message ID 20240417200153.3748943-1-tharvey@gateworks.com
State Accepted
Commit 8d22015d23662a886e4f79c347e5e9cd717fe067
Delegated to: Fabio Estevam
Headers show
Series board: gateworks: venice: fix dt adjustment for gw73xx baseboard for imx8mp | expand

Commit Message

Tim Harvey April 17, 2024, 8:01 p.m. UTC
The GW73xx baseboard needs a PCI dt adjustment for revC/D based on a
change of the PCIe switch. Make sure we are only doing this for a pci
based ethernet to avoid causing a boot hang when the ethernet1 alias
points to eqos or fec. To know this is a pcie device ensure the alias
begins with the pcie controller.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
---
 board/gateworks/venice/venice.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Fabio Estevam April 20, 2024, 6:36 p.m. UTC | #1
On Wed, Apr 17, 2024 at 5:01 PM Tim Harvey <tharvey@gateworks.com> wrote:
>
> The GW73xx baseboard needs a PCI dt adjustment for revC/D based on a
> change of the PCIe switch. Make sure we are only doing this for a pci
> based ethernet to avoid causing a boot hang when the ethernet1 alias
> points to eqos or fec. To know this is a pcie device ensure the alias
> begins with the pcie controller.
>
> Signed-off-by: Tim Harvey <tharvey@gateworks.com>

Applied, thanks.
diff mbox series

Patch

diff --git a/board/gateworks/venice/venice.c b/board/gateworks/venice/venice.c
index f54f1186b686..5b105d7659e4 100644
--- a/board/gateworks/venice/venice.c
+++ b/board/gateworks/venice/venice.c
@@ -230,6 +230,7 @@  uint mmc_get_env_part(struct mmc *mmc)
 int ft_board_setup(void *fdt, struct bd_info *bd)
 {
 	const char *base_model = eeprom_get_baseboard_model();
+	const char *path;
 	char pcbrev;
 	int off;
 
@@ -238,10 +239,10 @@  int ft_board_setup(void *fdt, struct bd_info *bd)
 
 	if (!strncmp(base_model, "GW73", 4)) {
 		pcbrev = get_pcb_rev(base_model);
+		path = fdt_get_alias(fdt, "ethernet1");
 
-		if (pcbrev > 'B' && pcbrev < 'E') {
-			printf("adjusting dt for %s\n", base_model);
-
+		if (pcbrev > 'B' && pcbrev < 'E' && path && !strncmp(path, "/soc@0/pcie@", 12)) {
+			printf("adjusting %s pcie\n", base_model);
 			/*
 			 * revC/D/E has PCIe 4-port switch which changes
 			 * ethernet1 PCIe GbE: