From 5423ba4dfbc580e99940bc99606b22fc2f907f2e Mon Sep 17 00:00:00 2001 From: Dirk Brandewie Date: Thu, 11 Jun 2015 08:13:09 -0700 Subject: [PATCH] init.h: Add the ability to set driver_data at build time Allow the delevoper to specify the address of the driver instance data object at build time. Change-Id: I6b311cfc4d38b3425f6283d87d2da65aceb42faa Signed-off-by: Dirk Brandewie --- include/init.h | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/include/init.h b/include/init.h index 04e9a8c925d..e52522f33a7 100644 --- a/include/init.h +++ b/include/init.h @@ -49,20 +49,22 @@ * @param id The init level id where the init object will be placed * in the image. * + * @param driver_data The pointer to the driver data for the driver instance. * @sa DECLARE_DEVICE_INIT_CONFIG() */ -#define __define_initconfig(cfg_name, id) \ +#define __define_initconfig(cfg_name, id, data) \ static struct device (__initconfig_##cfg_name##id) __used \ __attribute__((__section__(".initconfig" #id ".init"))) = { \ - .config = &(config_##cfg_name)}; + .config = &(config_##cfg_name),\ + .driver_data = data}; -#define pure_init(cfg) __define_initconfig(cfg, 0) -#define nano_early_init(cfg) __define_initconfig(cfg, 1) -#define nano_late_init(cfg) __define_initconfig(cfg, 2) -#define micro_early_init(cfg) __define_initconfig(cfg, 3) -#define micro_late_init(cfg) __define_initconfig(cfg, 4) -#define pre_app_init(cfg) __define_initconfig(cfg, 5) -#define late_initconfig(cfg) __define_initconfig(cfg, 6) +#define pure_init(cfg, data) __define_initconfig(cfg, 0, data) +#define nano_early_init(cfg, data) __define_initconfig(cfg, 1, data) +#define nano_late_init(cfg, data) __define_initconfig(cfg, 2, data) +#define micro_early_init(cfg, data) __define_initconfig(cfg, 3, data) +#define micro_late_init(cfg, data) __define_initconfig(cfg, 4, data) +#define pre_app_init(cfg, data) __define_initconfig(cfg, 5, data) +#define late_initconfig(cfg, data) __define_initconfig(cfg, 6, data) #endif /* _INIT_H_ */