diff options
-rw-r--r-- | arch/powerpc/kernel/prom.c | 47 |
1 files changed, 31 insertions, 16 deletions
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index caef555f2dc0..c065b5550368 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -716,11 +716,40 @@ static int __init early_init_dt_scan_cpus(unsigned long node, | |||
716 | return 0; | 716 | return 0; |
717 | } | 717 | } |
718 | 718 | ||
719 | #ifdef CONFIG_BLK_DEV_INITRD | ||
720 | static void __init early_init_dt_check_for_initrd(unsigned long node) | ||
721 | { | ||
722 | unsigned long l; | ||
723 | u32 *prop; | ||
724 | |||
725 | DBG("Looking for initrd properties... "); | ||
726 | |||
727 | prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l); | ||
728 | if (prop) { | ||
729 | initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4)); | ||
730 | |||
731 | prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l); | ||
732 | if (prop) { | ||
733 | initrd_end = (unsigned long) | ||
734 | __va(of_read_ulong(prop, l/4)); | ||
735 | initrd_below_start_ok = 1; | ||
736 | } else { | ||
737 | initrd_start = 0; | ||
738 | } | ||
739 | } | ||
740 | |||
741 | DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end); | ||
742 | } | ||
743 | #else | ||
744 | static inline void early_init_dt_check_for_initrd(unsigned long node) | ||
745 | { | ||
746 | } | ||
747 | #endif /* CONFIG_BLK_DEV_INITRD */ | ||
748 | |||
719 | static int __init early_init_dt_scan_chosen(unsigned long node, | 749 | static int __init early_init_dt_scan_chosen(unsigned long node, |
720 | const char *uname, int depth, void *data) | 750 | const char *uname, int depth, void *data) |
721 | { | 751 | { |
722 | unsigned long *lprop; | 752 | unsigned long *lprop; |
723 | u32 *prop; | ||
724 | unsigned long l; | 753 | unsigned long l; |
725 | char *p; | 754 | char *p; |
726 | 755 | ||
@@ -762,21 +791,7 @@ static int __init early_init_dt_scan_chosen(unsigned long node, | |||
762 | crashk_res.end = crashk_res.start + *lprop - 1; | 791 | crashk_res.end = crashk_res.start + *lprop - 1; |
763 | #endif | 792 | #endif |
764 | 793 | ||
765 | #ifdef CONFIG_BLK_DEV_INITRD | 794 | early_init_dt_check_for_initrd(node); |
766 | DBG("Looking for initrd properties... "); | ||
767 | prop = of_get_flat_dt_prop(node, "linux,initrd-start", &l); | ||
768 | if (prop) { | ||
769 | initrd_start = (unsigned long)__va(of_read_ulong(prop, l/4)); | ||
770 | prop = of_get_flat_dt_prop(node, "linux,initrd-end", &l); | ||
771 | if (prop) { | ||
772 | initrd_end = (unsigned long)__va(of_read_ulong(prop, l/4)); | ||
773 | initrd_below_start_ok = 1; | ||
774 | } else { | ||
775 | initrd_start = 0; | ||
776 | } | ||
777 | } | ||
778 | DBG("initrd_start=0x%lx initrd_end=0x%lx\n", initrd_start, initrd_end); | ||
779 | #endif /* CONFIG_BLK_DEV_INITRD */ | ||
780 | 795 | ||
781 | /* Retreive command line */ | 796 | /* Retreive command line */ |
782 | p = of_get_flat_dt_prop(node, "bootargs", &l); | 797 | p = of_get_flat_dt_prop(node, "bootargs", &l); |