LGTM. Reviewed-by: Yeoreum Yun <[email protected]>
> Pass a parent device into ffa_device_register() and use the synthetic > arm-ffa platform device as the parent for each registered FF-A device. > > This keeps the enumerated FF-A partition devices anchored below the FF-A > core device in the driver model, matching the platform-driver conversion > of the core transport. > > Suggested-by: Yeoreum Yun <[email protected]> > Signed-off-by: Sudeep Holla <[email protected]> > --- > drivers/firmware/arm_ffa/bus.c | 3 ++- > drivers/firmware/arm_ffa/driver.c | 5 +++-- > include/linux/arm_ffa.h | 4 ++-- > 3 files changed, 7 insertions(+), 5 deletions(-) > > diff --git a/drivers/firmware/arm_ffa/bus.c b/drivers/firmware/arm_ffa/bus.c > index 9576862d89c4..e05fe0b6049c 100644 > --- a/drivers/firmware/arm_ffa/bus.c > +++ b/drivers/firmware/arm_ffa/bus.c > @@ -190,7 +190,7 @@ bool ffa_device_is_valid(struct ffa_device *ffa_dev) > > struct ffa_device * > ffa_device_register(const struct ffa_partition_info *part_info, > - const struct ffa_ops *ops) > + const struct ffa_ops *ops, struct device *parent) > { > int id, ret; > struct device *dev; > @@ -210,6 +210,7 @@ ffa_device_register(const struct ffa_partition_info > *part_info, > } > > dev = &ffa_dev->dev; > + dev->parent = parent; > dev->bus = &ffa_bus_type; > dev->release = ffa_release_device; > dev->dma_mask = &dev->coherent_dma_mask; > diff --git a/drivers/firmware/arm_ffa/driver.c > b/drivers/firmware/arm_ffa/driver.c > index 97ecdb5dac09..e9d7dc71c06d 100644 > --- a/drivers/firmware/arm_ffa/driver.c > +++ b/drivers/firmware/arm_ffa/driver.c > @@ -1688,7 +1688,7 @@ static int ffa_setup_host_partition(int vm_id) > int ret; > > buf.id = vm_id; > - ffa_dev = ffa_device_register(&buf, &ffa_drv_ops); > + ffa_dev = ffa_device_register(&buf, &ffa_drv_ops, &ffa_pdev->dev); > if (!ffa_dev) { > pr_err("%s: failed to register host partition ID 0x%x\n", > __func__, vm_id); > @@ -1758,7 +1758,8 @@ static int ffa_setup_partitions(void) > * provides UUID here for each partition as part of the > * discovery API and the same is passed. > */ > - ffa_dev = ffa_device_register(tpbuf, &ffa_drv_ops); > + ffa_dev = ffa_device_register(tpbuf, &ffa_drv_ops, > + &ffa_pdev->dev); > if (!ffa_dev) { > pr_err("%s: failed to register partition ID 0x%x\n", > __func__, tpbuf->id); > diff --git a/include/linux/arm_ffa.h b/include/linux/arm_ffa.h > index 81e603839c4a..17eca3dfc59e 100644 > --- a/include/linux/arm_ffa.h > +++ b/include/linux/arm_ffa.h > @@ -173,7 +173,7 @@ struct ffa_partition_info; > #if IS_REACHABLE(CONFIG_ARM_FFA_TRANSPORT) > struct ffa_device * > ffa_device_register(const struct ffa_partition_info *part_info, > - const struct ffa_ops *ops); > + const struct ffa_ops *ops, struct device *parent); > void ffa_device_unregister(struct ffa_device *ffa_dev); > int ffa_driver_register(struct ffa_driver *driver, struct module *owner, > const char *mod_name); > @@ -184,7 +184,7 @@ bool ffa_device_is_valid(struct ffa_device *ffa_dev); > #else > static inline struct ffa_device * > ffa_device_register(const struct ffa_partition_info *part_info, > - const struct ffa_ops *ops) > + const struct ffa_ops *ops, struct device *parent) > { > return NULL; > } > > -- > 2.43.0 > -- Sincerely, Yeoreum Yun

