dm: add manual relocation for devices
Some architectures as m68k still need to use CONFIG_NEEDS_MANUAL_RELOC, and are not still using the device tree. Signed-off-by: Angelo Dureghello <angelo@sysam.it> Acked-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
9ab165d8b0
commit
5aeedebc33
@ -122,6 +122,20 @@ void fix_uclass(void)
|
|||||||
entry->ops += gd->reloc_off;
|
entry->ops += gd->reloc_off;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fix_devices(void)
|
||||||
|
{
|
||||||
|
struct driver_info *dev =
|
||||||
|
ll_entry_start(struct driver_info, driver_info);
|
||||||
|
const int n_ents = ll_entry_count(struct driver_info, driver_info);
|
||||||
|
struct driver_info *entry;
|
||||||
|
|
||||||
|
for (entry = dev; entry != dev + n_ents; entry++) {
|
||||||
|
if (entry->platdata)
|
||||||
|
entry->platdata += gd->reloc_off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int dm_init(void)
|
int dm_init(void)
|
||||||
@ -137,6 +151,7 @@ int dm_init(void)
|
|||||||
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
|
#if defined(CONFIG_NEEDS_MANUAL_RELOC)
|
||||||
fix_drivers();
|
fix_drivers();
|
||||||
fix_uclass();
|
fix_uclass();
|
||||||
|
fix_devices();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ret = device_bind_by_name(NULL, false, &root_info, &DM_ROOT_NON_CONST);
|
ret = device_bind_by_name(NULL, false, &root_info, &DM_ROOT_NON_CONST);
|
||||||
|
Loading…
Reference in New Issue
Block a user