aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev
diff options
context:
space:
mode:
authorAnton Vorontsov <avorontsov@ru.mvista.com>2008-01-24 10:39:59 -0500
committerKumar Gala <galak@kernel.crashing.org>2008-01-28 09:32:55 -0500
commita2dd70a11d4c9cb8a4e4bb41f53a9b430e08559b (patch)
tree0ecb6b3f6ed79c06db25299450a7ea1ef216ed5a /arch/powerpc/sysdev
parentf67be814ff8e862422739cb424ce8c4e6c142c28 (diff)
[POWERPC] QE: get rid of most device_types and model
Now we're searching for "fsl,qe", "fsl,qe-muram", "fsl,qe-muram-data" and "fsl,qe-ic". Unfortunately it's still impossible to remove device_type = "qe" from the existing device trees because older u-boots are looking for it. Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r--arch/powerpc/sysdev/fsl_soc.c5
-rw-r--r--arch/powerpc/sysdev/qe_lib/qe.c63
2 files changed, 48 insertions, 20 deletions
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c
index f2c0988a03b8..26f7d83c4be5 100644
--- a/arch/powerpc/sysdev/fsl_soc.c
+++ b/arch/powerpc/sysdev/fsl_soc.c
@@ -1276,7 +1276,10 @@ int __init fsl_spi_init(struct spi_board_info *board_infos,
1276 const u32 *sysclk; 1276 const u32 *sysclk;
1277 1277
1278 /* SPI controller is either clocked from QE or SoC clock */ 1278 /* SPI controller is either clocked from QE or SoC clock */
1279 np = of_find_node_by_type(NULL, "qe"); 1279 np = of_find_compatible_node(NULL, NULL, "fsl,qe");
1280 if (!np)
1281 np = of_find_node_by_type(NULL, "qe");
1282
1280 if (!np) 1283 if (!np)
1281 np = of_find_node_by_type(NULL, "soc"); 1284 np = of_find_node_by_type(NULL, "soc");
1282 1285
diff --git a/arch/powerpc/sysdev/qe_lib/qe.c b/arch/powerpc/sysdev/qe_lib/qe.c
index 3925eae9b0f5..5ef844da9355 100644
--- a/arch/powerpc/sysdev/qe_lib/qe.c
+++ b/arch/powerpc/sysdev/qe_lib/qe.c
@@ -65,17 +65,22 @@ static phys_addr_t qebase = -1;
65phys_addr_t get_qe_base(void) 65phys_addr_t get_qe_base(void)
66{ 66{
67 struct device_node *qe; 67 struct device_node *qe;
68 unsigned int size;
69 const void *prop;
68 70
69 if (qebase != -1) 71 if (qebase != -1)
70 return qebase; 72 return qebase;
71 73
72 qe = of_find_node_by_type(NULL, "qe"); 74 qe = of_find_compatible_node(NULL, NULL, "fsl,qe");
73 if (qe) { 75 if (!qe) {
74 unsigned int size; 76 qe = of_find_node_by_type(NULL, "qe");
75 const void *prop = of_get_property(qe, "reg", &size); 77 if (!qe)
76 qebase = of_translate_address(qe, prop); 78 return qebase;
77 of_node_put(qe); 79 }
78 }; 80
81 prop = of_get_property(qe, "reg", &size);
82 qebase = of_translate_address(qe, prop);
83 of_node_put(qe);
79 84
80 return qebase; 85 return qebase;
81} 86}
@@ -153,16 +158,26 @@ static unsigned int brg_clk = 0;
153unsigned int get_brg_clk(void) 158unsigned int get_brg_clk(void)
154{ 159{
155 struct device_node *qe; 160 struct device_node *qe;
161 unsigned int size;
162 const u32 *prop;
163
156 if (brg_clk) 164 if (brg_clk)
157 return brg_clk; 165 return brg_clk;
158 166
159 qe = of_find_node_by_type(NULL, "qe"); 167 qe = of_find_compatible_node(NULL, NULL, "fsl,qe");
160 if (qe) { 168 if (!qe) {
161 unsigned int size; 169 qe = of_find_node_by_type(NULL, "qe");
162 const u32 *prop = of_get_property(qe, "brg-frequency", &size); 170 if (!qe)
163 brg_clk = *prop; 171 return brg_clk;
164 of_node_put(qe); 172 }
165 }; 173
174 prop = of_get_property(qe, "brg-frequency", &size);
175 if (!prop || size != sizeof(*prop))
176 return brg_clk;
177
178 brg_clk = *prop;
179 of_node_put(qe);
180
166 return brg_clk; 181 return brg_clk;
167} 182}
168 183
@@ -322,7 +337,7 @@ static rh_info_t qe_muram_info;
322static void qe_muram_init(void) 337static void qe_muram_init(void)
323{ 338{
324 struct device_node *np; 339 struct device_node *np;
325 u32 address; 340 const u32 *address;
326 u64 size; 341 u64 size;
327 unsigned int flags; 342 unsigned int flags;
328 343
@@ -335,11 +350,21 @@ static void qe_muram_init(void)
335 /* XXX: This is a subset of the available muram. It 350 /* XXX: This is a subset of the available muram. It
336 * varies with the processor and the microcode patches activated. 351 * varies with the processor and the microcode patches activated.
337 */ 352 */
338 if ((np = of_find_node_by_name(NULL, "data-only")) != NULL) { 353 np = of_find_compatible_node(NULL, NULL, "fsl,qe-muram-data");
339 address = *of_get_address(np, 0, &size, &flags); 354 if (!np) {
340 of_node_put(np); 355 np = of_find_node_by_name(NULL, "data-only");
341 rh_attach_region(&qe_muram_info, address, (int) size); 356 if (!np) {
357 WARN_ON(1);
358 return;
359 }
342 } 360 }
361
362 address = of_get_address(np, 0, &size, &flags);
363 WARN_ON(!address);
364
365 of_node_put(np);
366 if (address)
367 rh_attach_region(&qe_muram_info, *address, (int)size);
343} 368}
344 369
345/* This function returns an index into the MURAM area. 370/* This function returns an index into the MURAM area.