diff options
-rw-r--r-- | Documentation/powerpc/booting-without-of.txt | 38 | ||||
-rw-r--r-- | arch/powerpc/boot/cuboot-pq2.c | 29 |
2 files changed, 46 insertions, 21 deletions
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt index a599f1a8a145..c36dcd2fbdc4 100644 --- a/Documentation/powerpc/booting-without-of.txt +++ b/Documentation/powerpc/booting-without-of.txt | |||
@@ -2017,6 +2017,44 @@ platforms are moved over to use the flattened-device-tree model. | |||
2017 | fsl,cpm-command = <2e600000>; | 2017 | fsl,cpm-command = <2e600000>; |
2018 | }; | 2018 | }; |
2019 | 2019 | ||
2020 | m) Chipselect/Local Bus | ||
2021 | |||
2022 | Properties: | ||
2023 | - name : Should be localbus | ||
2024 | - #address-cells : Should be either two or three. The first cell is the | ||
2025 | chipselect number, and the remaining cells are the | ||
2026 | offset into the chipselect. | ||
2027 | - #size-cells : Either one or two, depending on how large each chipselect | ||
2028 | can be. | ||
2029 | - ranges : Each range corresponds to a single chipselect, and cover | ||
2030 | the entire access window as configured. | ||
2031 | |||
2032 | Example: | ||
2033 | localbus@f0010100 { | ||
2034 | compatible = "fsl,mpc8272ads-localbus", | ||
2035 | "fsl,mpc8272-localbus", | ||
2036 | "fsl,pq2-localbus"; | ||
2037 | #address-cells = <2>; | ||
2038 | #size-cells = <1>; | ||
2039 | reg = <f0010100 40>; | ||
2040 | |||
2041 | ranges = <0 0 fe000000 02000000 | ||
2042 | 1 0 f4500000 00008000>; | ||
2043 | |||
2044 | flash@0,0 { | ||
2045 | compatible = "jedec-flash"; | ||
2046 | reg = <0 0 2000000>; | ||
2047 | bank-width = <4>; | ||
2048 | device-width = <1>; | ||
2049 | }; | ||
2050 | |||
2051 | board-control@1,0 { | ||
2052 | reg = <1 0 20>; | ||
2053 | compatible = "fsl,mpc8272ads-bcsr"; | ||
2054 | }; | ||
2055 | }; | ||
2056 | |||
2057 | |||
2020 | More devices will be defined as this spec matures. | 2058 | More devices will be defined as this spec matures. |
2021 | 2059 | ||
2022 | VII - Specifying interrupt information for devices | 2060 | VII - Specifying interrupt information for devices |
diff --git a/arch/powerpc/boot/cuboot-pq2.c b/arch/powerpc/boot/cuboot-pq2.c index 470ffacb8373..61574f3272dd 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 | */ |
51 | static void update_cs_ranges(void) | 51 | static 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 | ||
125 | err: | 112 | err: |
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 |