Skip to contentSkip to conversation

ppc4xx: Canyonlands: Disable PCIe0/SATA in dev-tree depending on selection

PATCH Superseded Stefan Roese 2 participants 2 messages May 16, 2008 – May 18, 2008

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 ppc4xx: Canyonlands: Disable PCIe0/SATA in dev-tree depending on selection

When SATA is selected (via jumper J6) we need to disable the first PCIe node in the device tree, so that Linux doesn't initialize it. Otherwise the Linux SATA driver will fail to detect the devices.

The same goes the other way around too. So if PCIe is selected we need to disable the SATA node in the device tree.

This is because PCIe port 0 and SATA on 460EX share the same pins (multiplexed) and we have to configure in U-Boot which peripheral is enabled.

---
 board/amcc/canyonlands/canyonlands.c |   26 ++++++++++++++++++++++++++
 1 files changed, 26 insertions(+), 0 deletions(-)
board/amcc/canyonlands/canyonlands.c +26 -0
index 9986e9a..9c458b9 100644
@@ -479,5 +479,31 @@ void ft_board_setup(void *blob, bd_t *bd)
 	if (rc)
 		printf("Unable to update property NOR mapping, err=%s\n",
 		       fdt_strerror(rc));
+
+	if (gd->board_type == BOARD_CANYONLANDS_SATA) {
+		/*
+		 * When SATA is selected we need to disable the first PCIe
+		 * node in the device tree, so that Linux doesn't initialize
+		 * it.
+		 */
+		rc = fdt_find_and_setprop(blob, "/plb/pciex at d00000000", "status",
+					  "disabled", sizeof("disabled"), 1);
+		if (rc)
+			printf("Unable to update property status in PCIe node, err=%s\n",
+			       fdt_strerror(rc));
+	}
+
+	if (gd->board_type == BOARD_CANYONLANDS_PCIE) {
+		/*
+		 * When PCIe is selected we need to disable the SATA
+		 * node in the device tree, so that Linux doesn't initialize
+		 * it.
+		 */
+		rc = fdt_find_and_setprop(blob, "/plb/sata at bffd1000", "status",
+					  "disabled", sizeof("disabled"), 1);
+		if (rc)
+			printf("Unable to update property status in PCIe node, err=%s\n",
+			       fdt_strerror(rc));
+	}
 }
 #endif /* defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP) */
Signature · 1 line
1.5.5.1
#1 lore raw

PATCH v2 1/1 ppc4xx: Canyonlands: Disable PCIe0/SATA in dev-tree depending on selection

board/amcc/canyonlands/canyonlands.c void ft_board_setup(void *blob, bd_t *bd) · line 493

Quoted 4 lines · In message <[email protected]> you wrote:
board/amcc/canyonlands/canyonlands.c +3 -0
+		if (rc)
+			printf("Unable to update property status in PCIe node, err=%s\n",
+			       fdt_strerror(rc));

This "if" needs curly braces.

Best regards,

Wolfgang Denk

Signature · 5 lines
DENX Software Engineering GmbH,     MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
You're dead, Jim.
	-- McCoy, "The Tholian Web", stardate unknown