On Wed, Apr 28, 2021 at 12:28:19PM +0200, Marco Felsch wrote: > --- > Hi, > > this is just a proposal to change the current linker array approach to > an initcall approach. Why? Because now we can simply register a > board-driver without having to list each compatible. > > I used the pure_initcall without adding a new one, since the > documentation says that pure_initcalls are used to init variables. In > our case we init boards_list. > > Regards, > Marco > > > -extern struct deep_probe_entry __barebox_deep_probe_start; > -extern struct deep_probe_entry __barebox_deep_probe_end; > +#define deep_probe_enable_board_driver(drv) \ > + _deep_probe_enable_driver(__UNIQUE_ID(deepprobe),drv) > > -#define __BAREBOX_DEEP_PROBE_ENABLE(_entry,_compatible) \ > - static const struct deep_probe_entry _entry \ > - __attribute__ ((used,section (".barebox_deep_probe_" __stringify(_entry)))) = { \ > - .compatible = _compatible, \ > - } > +#define _deep_probe_enable_compatible(id,compatible) \ > + static int __init id(void) \ > + { \ > + return deep_probe_enable_board(NULL,compatible);\ > + } \ > + pure_initcall(id) > > -#define BAREBOX_DEEP_PROBE_ENABLE(_compatible) \ > - __BAREBOX_DEEP_PROBE_ENABLE(__UNIQUE_ID(deepprobe),_compatible) I like the version with the linker array as we don't add a whole bunch of new initcalls. Why not simply replace the _compatible argument with a pointer to a of_device_id array? Sascha -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox