Messages in this thread | | | From | Andy Shevchenko <> | Date | Fri, 2 Sep 2022 12:18:38 +0300 | Subject | Re: [PATCH v2 5/5] bus: hisi_lpc: Use platform_device_register_full() |
| |
On Fri, Sep 2, 2022 at 11:10 AM John Garry <john.garry@huawei.com> wrote: > > The code to create the child platform device is essentially the same as > what platform_device_register_full() does, so change over to use > that same function to reduce duplication.
Now statistics plays for you and not against. Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
> Signed-off-by: John Garry <john.garry@huawei.com> > Suggested-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> > --- > drivers/bus/hisi_lpc.c | 64 ++++++++++++++++++++---------------------- > 1 file changed, 30 insertions(+), 34 deletions(-) > > diff --git a/drivers/bus/hisi_lpc.c b/drivers/bus/hisi_lpc.c > index 74f4448bff9d..3555a6857214 100644 > --- a/drivers/bus/hisi_lpc.c > +++ b/drivers/bus/hisi_lpc.c > @@ -472,9 +472,7 @@ static int hisi_lpc_acpi_clear_enumerated(struct acpi_device *adev, void *not_us > > struct hisi_lpc_acpi_cell { > const char *hid; > - const char *name; > - void *pdata; > - size_t pdata_size; > + const struct platform_device_info *pdevinfo; > }; > > static void hisi_lpc_acpi_remove(struct device *hostdev) > @@ -505,28 +503,45 @@ static int hisi_lpc_acpi_add_child(struct acpi_device *child, void *data) > /* ipmi */ > { > .hid = "IPI0001", > - .name = "hisi-lpc-ipmi", > + .pdevinfo = (struct platform_device_info []) { > + { > + .parent = hostdev, > + .fwnode = acpi_fwnode_handle(child), > + .name = "hisi-lpc-ipmi", > + .id = PLATFORM_DEVID_AUTO, > + .res = res, > + .num_res = num_res, > + }, > + }, > }, > /* 8250-compatible uart */ > { > .hid = "HISI1031", > - .name = "serial8250", > - .pdata = (struct plat_serial8250_port []) { > + .pdevinfo = (struct platform_device_info []) { > { > - .iobase = res->start, > - .uartclk = 1843200, > - .iotype = UPIO_PORT, > - .flags = UPF_BOOT_AUTOCONF, > + .parent = hostdev, > + .fwnode = acpi_fwnode_handle(child), > + .name = "serial8250", > + .id = PLATFORM_DEVID_AUTO, > + .res = res, > + .num_res = num_res, > + .data = (struct plat_serial8250_port []) { > + { > + .iobase = res->start, > + .uartclk = 1843200, > + .iotype = UPIO_PORT, > + .flags = UPF_BOOT_AUTOCONF, > + }, > + {} > + }, > + .size_data = 2 * sizeof(struct plat_serial8250_port), > }, > - {} > }, > - .pdata_size = 2 * > - sizeof(struct plat_serial8250_port), > }, > {} > }; > > - for (; cell && cell->name; cell++) { > + for (; cell && cell->hid; cell++) { > if (!strcmp(cell->hid, hid)) { > found = true; > break; > @@ -540,31 +555,12 @@ static int hisi_lpc_acpi_add_child(struct acpi_device *child, void *data) > return 0; > } > > - pdev = platform_device_alloc(cell->name, PLATFORM_DEVID_AUTO); > + pdev = platform_device_register_full(cell->pdevinfo); > if (!pdev) > return -ENOMEM; > > - pdev->dev.parent = hostdev; > - ACPI_COMPANION_SET(&pdev->dev, child); > - > - ret = platform_device_add_resources(pdev, res, num_res); > - if (ret) > - goto fail; > - > - ret = platform_device_add_data(pdev, cell->pdata, cell->pdata_size); > - if (ret) > - goto fail; > - > - ret = platform_device_add(pdev); > - if (ret) > - goto fail; > - > acpi_device_set_enumerated(child); > return 0; > - > -fail: > - platform_device_put(pdev); > - return ret; > } > > /* > -- > 2.35.3 >
-- With Best Regards, Andy Shevchenko
| |