diff options
Diffstat (limited to 'arch/powerpc/platforms/iseries/setup.c')
-rw-r--r-- | arch/powerpc/platforms/iseries/setup.c | 48 |
1 files changed, 15 insertions, 33 deletions
diff --git a/arch/powerpc/platforms/iseries/setup.c b/arch/powerpc/platforms/iseries/setup.c index 6f73469fd3b0..bdf2afbb60c1 100644 --- a/arch/powerpc/platforms/iseries/setup.c +++ b/arch/powerpc/platforms/iseries/setup.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/smp.h> | 21 | #include <linux/smp.h> |
22 | #include <linux/param.h> | 22 | #include <linux/param.h> |
23 | #include <linux/string.h> | 23 | #include <linux/string.h> |
24 | #include <linux/initrd.h> | ||
25 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
26 | #include <linux/kdev_t.h> | 25 | #include <linux/kdev_t.h> |
27 | #include <linux/major.h> | 26 | #include <linux/major.h> |
@@ -80,8 +79,6 @@ extern void iSeries_pci_final_fixup(void); | |||
80 | static void iSeries_pci_final_fixup(void) { } | 79 | static void iSeries_pci_final_fixup(void) { } |
81 | #endif | 80 | #endif |
82 | 81 | ||
83 | extern int rd_size; /* Defined in drivers/block/rd.c */ | ||
84 | |||
85 | extern unsigned long iSeries_recal_tb; | 82 | extern unsigned long iSeries_recal_tb; |
86 | extern unsigned long iSeries_recal_titan; | 83 | extern unsigned long iSeries_recal_titan; |
87 | 84 | ||
@@ -295,24 +292,6 @@ static void __init iSeries_init_early(void) | |||
295 | { | 292 | { |
296 | DBG(" -> iSeries_init_early()\n"); | 293 | DBG(" -> iSeries_init_early()\n"); |
297 | 294 | ||
298 | #if defined(CONFIG_BLK_DEV_INITRD) | ||
299 | /* | ||
300 | * If the init RAM disk has been configured and there is | ||
301 | * a non-zero starting address for it, set it up | ||
302 | */ | ||
303 | if (naca.xRamDisk) { | ||
304 | initrd_start = (unsigned long)__va(naca.xRamDisk); | ||
305 | initrd_end = initrd_start + naca.xRamDiskSize * HW_PAGE_SIZE; | ||
306 | initrd_below_start_ok = 1; // ramdisk in kernel space | ||
307 | ROOT_DEV = Root_RAM0; | ||
308 | if (((rd_size * 1024) / HW_PAGE_SIZE) < naca.xRamDiskSize) | ||
309 | rd_size = (naca.xRamDiskSize * HW_PAGE_SIZE) / 1024; | ||
310 | } else | ||
311 | #endif /* CONFIG_BLK_DEV_INITRD */ | ||
312 | { | ||
313 | /* ROOT_DEV = MKDEV(VIODASD_MAJOR, 1); */ | ||
314 | } | ||
315 | |||
316 | iSeries_recal_tb = get_tb(); | 295 | iSeries_recal_tb = get_tb(); |
317 | iSeries_recal_titan = HvCallXm_loadTod(); | 296 | iSeries_recal_titan = HvCallXm_loadTod(); |
318 | 297 | ||
@@ -331,17 +310,6 @@ static void __init iSeries_init_early(void) | |||
331 | 310 | ||
332 | mf_init(); | 311 | mf_init(); |
333 | 312 | ||
334 | /* If we were passed an initrd, set the ROOT_DEV properly if the values | ||
335 | * look sensible. If not, clear initrd reference. | ||
336 | */ | ||
337 | #ifdef CONFIG_BLK_DEV_INITRD | ||
338 | if (initrd_start >= KERNELBASE && initrd_end >= KERNELBASE && | ||
339 | initrd_end > initrd_start) | ||
340 | ROOT_DEV = Root_RAM0; | ||
341 | else | ||
342 | initrd_start = initrd_end = 0; | ||
343 | #endif /* CONFIG_BLK_DEV_INITRD */ | ||
344 | |||
345 | DBG(" <- iSeries_init_early()\n"); | 313 | DBG(" <- iSeries_init_early()\n"); |
346 | } | 314 | } |
347 | 315 | ||
@@ -649,6 +617,16 @@ static void iseries_dedicated_idle(void) | |||
649 | void __init iSeries_init_IRQ(void) { } | 617 | void __init iSeries_init_IRQ(void) { } |
650 | #endif | 618 | #endif |
651 | 619 | ||
620 | static void __iomem *iseries_ioremap(phys_addr_t address, unsigned long size, | ||
621 | unsigned long flags) | ||
622 | { | ||
623 | return (void __iomem *)address; | ||
624 | } | ||
625 | |||
626 | static void iseries_iounmap(volatile void __iomem *token) | ||
627 | { | ||
628 | } | ||
629 | |||
652 | /* | 630 | /* |
653 | * iSeries has no legacy IO, anything calling this function has to | 631 | * iSeries has no legacy IO, anything calling this function has to |
654 | * fail or bad things will happen | 632 | * fail or bad things will happen |
@@ -665,6 +643,8 @@ static int __init iseries_probe(void) | |||
665 | return 0; | 643 | return 0; |
666 | 644 | ||
667 | hpte_init_iSeries(); | 645 | hpte_init_iSeries(); |
646 | /* iSeries does not support 16M pages */ | ||
647 | cur_cpu_spec->cpu_features &= ~CPU_FTR_16M_PAGE; | ||
668 | 648 | ||
669 | return 1; | 649 | return 1; |
670 | } | 650 | } |
@@ -687,6 +667,8 @@ define_machine(iseries) { | |||
687 | .progress = iSeries_progress, | 667 | .progress = iSeries_progress, |
688 | .probe = iseries_probe, | 668 | .probe = iseries_probe, |
689 | .check_legacy_ioport = iseries_check_legacy_ioport, | 669 | .check_legacy_ioport = iseries_check_legacy_ioport, |
670 | .ioremap = iseries_ioremap, | ||
671 | .iounmap = iseries_iounmap, | ||
690 | /* XXX Implement enable_pmcs for iSeries */ | 672 | /* XXX Implement enable_pmcs for iSeries */ |
691 | }; | 673 | }; |
692 | 674 | ||
@@ -697,7 +679,7 @@ void * __init iSeries_early_setup(void) | |||
697 | /* Identify CPU type. This is done again by the common code later | 679 | /* Identify CPU type. This is done again by the common code later |
698 | * on but calling this function multiple times is fine. | 680 | * on but calling this function multiple times is fine. |
699 | */ | 681 | */ |
700 | identify_cpu(0); | 682 | identify_cpu(0, mfspr(SPRN_PVR)); |
701 | 683 | ||
702 | powerpc_firmware_features |= FW_FEATURE_ISERIES; | 684 | powerpc_firmware_features |= FW_FEATURE_ISERIES; |
703 | powerpc_firmware_features |= FW_FEATURE_LPAR; | 685 | powerpc_firmware_features |= FW_FEATURE_LPAR; |