On Mon, Oct 25, 2021 at 12:42 PM Hans de Goede <hdegoede@xxxxxxxxxx> wrote: > > The discrete.c code is not the only code which needs to lookup the > acpi_device and device-name for the sensor for which the INT3472 > ACPI-device is a GPIO/clk/regulator provider. > > The tps68470.c code also needs this functionality, so factor this > out into a new get_sensor_adev_and_name() helper. ... > +int skl_int3472_get_sensor_adev_and_name(struct device *dev, > + struct acpi_device **sensor_adev_ret, > + const char **name_ret) > +{ > + struct acpi_device *adev = ACPI_COMPANION(dev); > + struct acpi_device *sensor; > + int ret = 0; > + > + sensor = acpi_dev_get_first_consumer_dev(adev); > + if (!sensor) { > + dev_err(dev, "INT3472 seems to have no dependents.\n"); > + return -ENODEV; > + } > + > + *name_ret = devm_kasprintf(dev, GFP_KERNEL, I2C_DEV_NAME_FORMAT, > + acpi_dev_name(sensor)); > + if (!*name_ret) > + ret = -ENOMEM; > + > + if (ret == 0 && sensor_adev_ret) > + *sensor_adev_ret = sensor; > + else > + acpi_dev_put(sensor); > + > + return ret; The error path is twisted a bit including far staying ret=0 assignment. Can it be int ret; ... *name_ret = devm_kasprintf(dev, GFP_KERNEL, I2C_DEV_NAME_FORMAT, acpi_dev_name(sensor)); if (!*name_ret) { acpi_dev_put(sensor); return -ENOMEM; } if (sensor_adev_ret) *sensor_adev_ret = sensor; return 0; ? > +} -- With Best Regards, Andy Shevchenko