prom.c (353816f43d1fb340ff2d9a911dd5d0799c09f6a5) prom.c (63277161312dd42af7dd3968077b272d192dd6ba)
1/*
2 * Procedures for creating, accessing and interpreting the device tree.
3 *
4 * Paul Mackerras August 1996.
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Adapted for 64bit PowerPC by Dave Engebretsen and Peter Bergner.
8 * {engebret|bergner}@us.ibm.com

--- 810 unchanged lines hidden (view full) ---

819 if (lprop)
820 tce_alloc_start = *lprop;
821 lprop = of_get_flat_dt_prop(node, "linux,tce-alloc-end", NULL);
822 if (lprop)
823 tce_alloc_end = *lprop;
824#endif
825
826#ifdef CONFIG_KEXEC
1/*
2 * Procedures for creating, accessing and interpreting the device tree.
3 *
4 * Paul Mackerras August 1996.
5 * Copyright (C) 1996-2005 Paul Mackerras.
6 *
7 * Adapted for 64bit PowerPC by Dave Engebretsen and Peter Bergner.
8 * {engebret|bergner}@us.ibm.com

--- 810 unchanged lines hidden (view full) ---

819 if (lprop)
820 tce_alloc_start = *lprop;
821 lprop = of_get_flat_dt_prop(node, "linux,tce-alloc-end", NULL);
822 if (lprop)
823 tce_alloc_end = *lprop;
824#endif
825
826#ifdef CONFIG_KEXEC
827 lprop = (u64*)of_get_flat_dt_prop(node, "linux,crashkernel-base", NULL);
827 lprop = of_get_flat_dt_prop(node, "linux,crashkernel-base", NULL);
828 if (lprop)
829 crashk_res.start = *lprop;
830
828 if (lprop)
829 crashk_res.start = *lprop;
830
831 lprop = (u64*)of_get_flat_dt_prop(node, "linux,crashkernel-size", NULL);
831 lprop = of_get_flat_dt_prop(node, "linux,crashkernel-size", NULL);
832 if (lprop)
833 crashk_res.end = crashk_res.start + *lprop - 1;
834#endif
835
836 early_init_dt_check_for_initrd(node);
837
838 /* Retreive command line */
839 p = of_get_flat_dt_prop(node, "bootargs", &l);

--- 48 unchanged lines hidden (view full) ---

888 */
889static int __init early_init_dt_scan_drconf_memory(unsigned long node)
890{
891 cell_t *dm, *ls, *usm;
892 unsigned long l, n, flags;
893 u64 base, size, lmb_size;
894 unsigned int is_kexec_kdump = 0, rngs;
895
832 if (lprop)
833 crashk_res.end = crashk_res.start + *lprop - 1;
834#endif
835
836 early_init_dt_check_for_initrd(node);
837
838 /* Retreive command line */
839 p = of_get_flat_dt_prop(node, "bootargs", &l);

--- 48 unchanged lines hidden (view full) ---

888 */
889static int __init early_init_dt_scan_drconf_memory(unsigned long node)
890{
891 cell_t *dm, *ls, *usm;
892 unsigned long l, n, flags;
893 u64 base, size, lmb_size;
894 unsigned int is_kexec_kdump = 0, rngs;
895
896 ls = (cell_t *)of_get_flat_dt_prop(node, "ibm,lmb-size", &l);
896 ls = of_get_flat_dt_prop(node, "ibm,lmb-size", &l);
897 if (ls == NULL || l < dt_root_size_cells * sizeof(cell_t))
898 return 0;
899 lmb_size = dt_mem_next_cell(dt_root_size_cells, &ls);
900
897 if (ls == NULL || l < dt_root_size_cells * sizeof(cell_t))
898 return 0;
899 lmb_size = dt_mem_next_cell(dt_root_size_cells, &ls);
900
901 dm = (cell_t *)of_get_flat_dt_prop(node, "ibm,dynamic-memory", &l);
901 dm = of_get_flat_dt_prop(node, "ibm,dynamic-memory", &l);
902 if (dm == NULL || l < sizeof(cell_t))
903 return 0;
904
905 n = *dm++; /* number of entries */
906 if (l < (n * (dt_root_addr_cells + 4) + 1) * sizeof(cell_t))
907 return 0;
908
909 /* check if this is a kexec/kdump kernel. */
902 if (dm == NULL || l < sizeof(cell_t))
903 return 0;
904
905 n = *dm++; /* number of entries */
906 if (l < (n * (dt_root_addr_cells + 4) + 1) * sizeof(cell_t))
907 return 0;
908
909 /* check if this is a kexec/kdump kernel. */
910 usm = (cell_t *)of_get_flat_dt_prop(node, "linux,drconf-usable-memory",
910 usm = of_get_flat_dt_prop(node, "linux,drconf-usable-memory",
911 &l);
912 if (usm != NULL)
913 is_kexec_kdump = 1;
914
915 for (; n != 0; --n) {
916 base = dt_mem_next_cell(dt_root_addr_cells, &dm);
917 flags = dm[3];
918 /* skip DRC index, pad, assoc. list index, flags */

--- 57 unchanged lines hidden (view full) ---

976 * The longtrail doesn't have a device_type on the
977 * /memory node, so look for the node called /memory@0.
978 */
979 if (depth != 1 || strcmp(uname, "memory@0") != 0)
980 return 0;
981 } else if (strcmp(type, "memory") != 0)
982 return 0;
983
911 &l);
912 if (usm != NULL)
913 is_kexec_kdump = 1;
914
915 for (; n != 0; --n) {
916 base = dt_mem_next_cell(dt_root_addr_cells, &dm);
917 flags = dm[3];
918 /* skip DRC index, pad, assoc. list index, flags */

--- 57 unchanged lines hidden (view full) ---

976 * The longtrail doesn't have a device_type on the
977 * /memory node, so look for the node called /memory@0.
978 */
979 if (depth != 1 || strcmp(uname, "memory@0") != 0)
980 return 0;
981 } else if (strcmp(type, "memory") != 0)
982 return 0;
983
984 reg = (cell_t *)of_get_flat_dt_prop(node, "linux,usable-memory", &l);
984 reg = of_get_flat_dt_prop(node, "linux,usable-memory", &l);
985 if (reg == NULL)
985 if (reg == NULL)
986 reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
986 reg = of_get_flat_dt_prop(node, "reg", &l);
987 if (reg == NULL)
988 return 0;
989
990 endp = reg + (l / sizeof(cell_t));
991
992 DBG("memory scan node %s, reg size %ld, data: %x %x %x %x,\n",
993 uname, l, reg[0], reg[1], reg[2], reg[3]);
994

--- 727 unchanged lines hidden ---
987 if (reg == NULL)
988 return 0;
989
990 endp = reg + (l / sizeof(cell_t));
991
992 DBG("memory scan node %s, reg size %ld, data: %x %x %x %x,\n",
993 uname, l, reg[0], reg[1], reg[2], reg[3]);
994

--- 727 unchanged lines hidden ---