aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/kernel/prom.c47
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
720static 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
744static inline void early_init_dt_check_for_initrd(unsigned long node)
745{
746}
747#endif /* CONFIG_BLK_DEV_INITRD */
748
719static int __init early_init_dt_scan_chosen(unsigned long node, 749static 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);