Browse Source

dm: core: Add missing entries for manual relocation

Patches:
"dm: core: Add a post_bind method for parents"
(sha1: 0118ce79577f9b0881f99a6e4f8a79cd5014cb87)
"dm: core: Add a uclass pre_probe() method for devices"
(sha1: 02c07b3741f1b825934b1a6eb8f23530532dc426)
"dm: core: Allow the uclass to set up a device's child after binding"
(sha1: 081f2fcbd9a95ba10677065359791f8fea3f8c58)
"dm: core: Allow uclass to set up a device's child before it is probed"
(sha1: 83c7e434c9dd3ca81f8b763e23c1881b973bcf2f)

Adds new entries to struct driver and struct uclass_driver without
extending code for manual relocation. This patch fixes it for all
architectures which requires MANUAL_RELOC.

Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Acked-by: Simon Glass <sjg@chromium.org>
Michal Simek 9 years ago
parent
commit
31e1029a8e
1 changed files with 8 additions and 0 deletions
  1. 8 0
      drivers/core/root.c

+ 8 - 0
drivers/core/root.c

@@ -59,6 +59,8 @@ void fix_drivers(void)
 			entry->unbind += gd->reloc_off;
 			entry->unbind += gd->reloc_off;
 		if (entry->ofdata_to_platdata)
 		if (entry->ofdata_to_platdata)
 			entry->ofdata_to_platdata += gd->reloc_off;
 			entry->ofdata_to_platdata += gd->reloc_off;
+		if (entry->child_post_bind)
+			entry->child_post_bind += gd->reloc_off;
 		if (entry->child_pre_probe)
 		if (entry->child_pre_probe)
 			entry->child_pre_probe += gd->reloc_off;
 			entry->child_pre_probe += gd->reloc_off;
 		if (entry->child_post_remove)
 		if (entry->child_post_remove)
@@ -81,10 +83,16 @@ void fix_uclass(void)
 			entry->post_bind += gd->reloc_off;
 			entry->post_bind += gd->reloc_off;
 		if (entry->pre_unbind)
 		if (entry->pre_unbind)
 			entry->pre_unbind += gd->reloc_off;
 			entry->pre_unbind += gd->reloc_off;
+		if (entry->pre_probe)
+			entry->pre_probe += gd->reloc_off;
 		if (entry->post_probe)
 		if (entry->post_probe)
 			entry->post_probe += gd->reloc_off;
 			entry->post_probe += gd->reloc_off;
 		if (entry->pre_remove)
 		if (entry->pre_remove)
 			entry->pre_remove += gd->reloc_off;
 			entry->pre_remove += gd->reloc_off;
+		if (entry->child_post_bind)
+			entry->child_post_bind += gd->reloc_off;
+		if (entry->child_pre_probe)
+			entry->child_pre_probe += gd->reloc_off;
 		if (entry->init)
 		if (entry->init)
 			entry->init += gd->reloc_off;
 			entry->init += gd->reloc_off;
 		if (entry->destroy)
 		if (entry->destroy)