Hi Takahiro, On Sun, 10 Oct 2021 at 21:15, AKASHI Takahiro <takahiro.aka...@linaro.org> wrote: > > Hi Simon, > > On Sun, Oct 10, 2021 at 08:14:23AM -0600, Simon Glass wrote: > > Hi Takahiro, > > > > On Thu, 30 Sept 2021 at 23:04, AKASHI Takahiro > > <takahiro.aka...@linaro.org> wrote: > > > > > > Adding this callback function, efi_disk_create() in block devices's > > > post_probe hook will allows for automatically creating efi_disk objects > > > per block device. > > > > > > This will end up not only eliminating efi_disk_register() called in UEFI > > > initialization, but also enabling detections of new block devices even > > > after the initialization. > > > > > > Signed-off-by: AKASHI Takahiro <takahiro.aka...@linaro.org> > > > --- > > > drivers/block/blk-uclass.c | 10 ++++++++++ > > > 1 file changed, 10 insertions(+) > > > > This is where events come in. We need a way to notify things when > > devices go through different stages, etc. > > I favor your idea of event notification to decouple subsystems from > the core block layer. > > > I am thinking of: > > > > enum dm_event_t { > > DMEVT_PROBE, > > DMEVT_POST_PROBE, > > ... > > }; > > > > struct dm_event { > > enum dm_event_t type; > > union { > > // add data for different event types in here > > } data; > > } > > > > int (*dm_handler_t)(void *ctx, struct dm_event *event); > > > > int dm_register(enum dm_event_t evtype, dm_handler_t func, void *ctx) > > > > int dm_notify(struct udevice *dev, enum dm_event_t type, void *data); > > > > Then the code below becomes: > > > > dm_notify(struct udevice *dev, DMEVT_POST_PROBE, NULL); > > > > the implementation of which will call the handler. > > > > If you like I could create an impl of the above as a separate patch > > for discussion. > > Yes, please. > I'm willing to rebase my code on top of your patch.
OK I will give it a crack, hopefully around the end of the week. Regards, Simon