aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/boot/cuboot-pq2.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/powerpc/boot/cuboot-pq2.c')
-rw-r--r--arch/powerpc/boot/cuboot-pq2.c29
1 files changed, 8 insertions, 21 deletions
diff --git a/arch/powerpc/boot/cuboot-pq2.c b/arch/powerpc/boot/cuboot-pq2.c
index 470ffacb837..61574f3272d 100644
--- a/arch/powerpc/boot/cuboot-pq2.c
+++ b/arch/powerpc/boot/cuboot-pq2.c
@@ -44,22 +44,21 @@ struct pci_range pci_ranges_buf[MAX_PROP_LEN / sizeof(struct pci_range)];
44 * some don't set up the PCI PIC at all, so we assume the device tree is 44 * some don't set up the PCI PIC at all, so we assume the device tree is
45 * sane and update the BRx registers appropriately. 45 * sane and update the BRx registers appropriately.
46 * 46 *
47 * For any node defined as compatible with fsl,pq2-chipselect, 47 * For any node defined as compatible with fsl,pq2-localbus,
48 * #address/#size must be 2/1 for chipselect bus, 1/1 for parent bus, 48 * #address/#size must be 2/1 for the localbus, and 1/1 for the parent bus.
49 * and ranges must be for whole chip selects. 49 * Ranges must be for whole chip selects.
50 */ 50 */
51static void update_cs_ranges(void) 51static void update_cs_ranges(void)
52{ 52{
53 u32 ctrl_ph; 53 void *bus_node, *parent_node;
54 void *ctrl_node, *bus_node, *parent_node;
55 u32 *ctrl_addr; 54 u32 *ctrl_addr;
56 unsigned long ctrl_size; 55 unsigned long ctrl_size;
57 u32 naddr, nsize; 56 u32 naddr, nsize;
58 int len; 57 int len;
59 int i; 58 int i;
60 59
61 bus_node = finddevice("/chipselect"); 60 bus_node = finddevice("/localbus");
62 if (!bus_node || !dt_is_compatible(bus_node, "fsl,pq2-chipselect")) 61 if (!bus_node || !dt_is_compatible(bus_node, "fsl,pq2-localbus"))
63 return; 62 return;
64 63
65 dt_get_reg_format(bus_node, &naddr, &nsize); 64 dt_get_reg_format(bus_node, &naddr, &nsize);
@@ -74,19 +73,7 @@ static void update_cs_ranges(void)
74 if (naddr != 1 || nsize != 1) 73 if (naddr != 1 || nsize != 1)
75 goto err; 74 goto err;
76 75
77 len = getprop(bus_node, "fsl,ctrl", &ctrl_ph, 4); 76 if (!dt_xlate_reg(bus_node, 0, (unsigned long *)&ctrl_addr,
78 if (len != 4)
79 goto err;
80
81 ctrl_node = find_node_by_prop_value(NULL, "linux,phandle",
82 (char *)&ctrl_ph, 4);
83 if (!ctrl_node)
84 goto err;
85
86 if (!dt_is_compatible(ctrl_node, "fsl,pq2-chipselect-ctrl"))
87 goto err;
88
89 if (!dt_xlate_reg(ctrl_node, 0, (unsigned long *)&ctrl_addr,
90 &ctrl_size)) 77 &ctrl_size))
91 goto err; 78 goto err;
92 79
@@ -123,7 +110,7 @@ static void update_cs_ranges(void)
123 return; 110 return;
124 111
125err: 112err:
126 printf("Bad /chipselect or fsl,pq2-chipselect-ctrl node\r\n"); 113 printf("Bad /localbus node\r\n");
127} 114}
128 115
129/* Older u-boots don't set PCI up properly. Update the hardware to match 116/* Older u-boots don't set PCI up properly. Update the hardware to match