diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2005-09-23 00:59:04 -0400 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2005-09-23 00:59:04 -0400 |
commit | 4762713a93fa8706c31b0897c1340e7dc282d8fb (patch) | |
tree | 12c28b1b91fa691c17e9d33dcc7a391e7445a473 /arch/ppc64/kernel/iSeries_setup.c | |
parent | c0a59491daca7db11d49edad1a1cefaaa7120a9e (diff) |
ppc64 iSeries: Call early_setup() on iSeries
Misc steps to incorporate the flat device tree on iSeries.
- define iseries_probe()
- call build_iSeries_Memory_Map() earlier
- return __pa() of the flat device tree from iSeries_early_setup()
- actually call early_setup() for iSeries
- add iseries_md to machdep_calls
- build prom.o for iSeries
- enable /proc/device-tree for iSeries
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
Diffstat (limited to 'arch/ppc64/kernel/iSeries_setup.c')
-rw-r--r-- | arch/ppc64/kernel/iSeries_setup.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/arch/ppc64/kernel/iSeries_setup.c b/arch/ppc64/kernel/iSeries_setup.c index 99e4307affd6..27faf4f0967a 100644 --- a/arch/ppc64/kernel/iSeries_setup.c +++ b/arch/ppc64/kernel/iSeries_setup.c | |||
@@ -359,12 +359,6 @@ static void __init iSeries_init_early(void) | |||
359 | */ | 359 | */ |
360 | iommu_init_early_iSeries(); | 360 | iommu_init_early_iSeries(); |
361 | 361 | ||
362 | /* | ||
363 | * Initialize the table which translate Linux physical addresses to | ||
364 | * AS/400 absolute addresses | ||
365 | */ | ||
366 | build_iSeries_Memory_Map(); | ||
367 | |||
368 | iSeries_get_cmdline(); | 362 | iSeries_get_cmdline(); |
369 | 363 | ||
370 | /* Save unparsed command line copy for /proc/cmdline */ | 364 | /* Save unparsed command line copy for /proc/cmdline */ |
@@ -894,6 +888,11 @@ static int iseries_dedicated_idle(void) | |||
894 | void __init iSeries_init_IRQ(void) { } | 888 | void __init iSeries_init_IRQ(void) { } |
895 | #endif | 889 | #endif |
896 | 890 | ||
891 | static int __init iseries_probe(int platform) | ||
892 | { | ||
893 | return PLATFORM_ISERIES_LPAR == platform; | ||
894 | } | ||
895 | |||
897 | struct machdep_calls __initdata iseries_md = { | 896 | struct machdep_calls __initdata iseries_md = { |
898 | .setup_arch = iSeries_setup_arch, | 897 | .setup_arch = iSeries_setup_arch, |
899 | .get_cpuinfo = iSeries_get_cpuinfo, | 898 | .get_cpuinfo = iSeries_get_cpuinfo, |
@@ -909,6 +908,7 @@ struct machdep_calls __initdata iseries_md = { | |||
909 | .get_rtc_time = iSeries_get_rtc_time, | 908 | .get_rtc_time = iSeries_get_rtc_time, |
910 | .calibrate_decr = iSeries_calibrate_decr, | 909 | .calibrate_decr = iSeries_calibrate_decr, |
911 | .progress = iSeries_progress, | 910 | .progress = iSeries_progress, |
911 | .probe = iseries_probe, | ||
912 | /* XXX Implement enable_pmcs for iSeries */ | 912 | /* XXX Implement enable_pmcs for iSeries */ |
913 | }; | 913 | }; |
914 | 914 | ||
@@ -1047,9 +1047,17 @@ void build_flat_dt(struct iseries_flat_dt *dt) | |||
1047 | dt_push_u32(dt, OF_DT_END); | 1047 | dt_push_u32(dt, OF_DT_END); |
1048 | } | 1048 | } |
1049 | 1049 | ||
1050 | void __init iSeries_early_setup(void) | 1050 | void * __init iSeries_early_setup(void) |
1051 | { | 1051 | { |
1052 | iSeries_fixup_klimit(); | 1052 | iSeries_fixup_klimit(); |
1053 | 1053 | ||
1054 | /* | ||
1055 | * Initialize the table which translate Linux physical addresses to | ||
1056 | * AS/400 absolute addresses | ||
1057 | */ | ||
1058 | build_iSeries_Memory_Map(); | ||
1059 | |||
1054 | build_flat_dt(&iseries_dt); | 1060 | build_flat_dt(&iseries_dt); |
1061 | |||
1062 | return (void *) __pa(&iseries_dt); | ||
1055 | } | 1063 | } |