[PATCH v9 04/10] spmi: Implement spmi_subdevice_alloc_and_add() and devm variant
AngeloGioacchino Del Regno
angelogioacchino.delregno at collabora.com
Mon Jun 8 04:27:35 PDT 2026
On 6/8/26 12:43, sashiko-bot at kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Low] dev_set_name() uses the '%d' format specifier for a variable of type 'unsigned int', which will cause a -Wformat compiler warning.
> --
>
> commit 35ac69140b9b2d8a3b0e2aa01fe5f5ac3ffe4d02
> Author: AngeloGioacchino Del Regno <angelogioacchino.delregno at collabora.com>
>
> spmi: Implement spmi_subdevice_alloc_and_add() and devm variant
>
> This commit introduces functions for managing sub-devices of an SPMI
> device, including spmi_subdevice_alloc_and_add() and its devm
> variant. These allow complex PMICs with multiple sub-devices to be
> properly modeled and managed via the SPMI bus.
>
>> diff --git a/drivers/spmi/spmi.c b/drivers/spmi/spmi.c
>> index 91a40ea8031ad..7945cacf6d655 100644
>> --- a/drivers/spmi/spmi.c
>> +++ b/drivers/spmi/spmi.c
>
> [ ... ]
>
>> @@ -428,6 +454,58 @@ struct spmi_device *spmi_device_alloc(struct spmi_controller *ctrl)
>> }
>> EXPORT_SYMBOL_GPL(spmi_device_alloc);
>>
>> +/**
>> + * spmi_subdevice_alloc_and_add(): Allocate and add a new SPMI sub-device
>> + * @sparent: SPMI parent device with previously registered SPMI controller
>> + *
>> + * Returns:
>> + * Pointer to newly allocated SPMI sub-device for success or error pointer.
>> + */
>> +struct spmi_subdevice *spmi_subdevice_alloc_and_add(struct spmi_device *sparent)
>> +{
>> + struct spmi_subdevice *sub_sdev;
>> + struct spmi_device *sdev;
>> + int ret;
>> +
>> + sub_sdev = kzalloc(sizeof(*sub_sdev), GFP_KERNEL);
>> + if (!sub_sdev)
>> + return ERR_PTR(-ENOMEM);
>> +
>> + sdev = &sub_sdev->sdev;
>> + sdev->ctrl = sparent->ctrl;
>> + sdev->usid = sparent->usid;
>> +
>> + ret = ida_alloc(&spmi_subdevice_ida, GFP_KERNEL);
>> + if (ret < 0) {
>> + kfree(sub_sdev);
>> + return ERR_PTR(ret);
>> + }
>> + sub_sdev->devid = ret;
>> +
>> + device_initialize(&sdev->dev);
>> + sdev->dev.parent = &sparent->dev;
>> + sdev->dev.bus = &spmi_bus_type;
>> + sdev->dev.type = &spmi_subdev_type;
>> +
>> + ret = dev_set_name(&sdev->dev, "%u-%02x.%d.auto",
>> + sdev->ctrl->nr, sdev->usid, sub_sdev->devid);
>
> [Severity: Low]
> This isn't a bug, but should this use %u instead of %d for the format
> specifier? The devid field in struct spmi_subdevice is defined as an
> unsigned int, which can cause a -Wformat compiler warning here.
>
I wonder if this can be fixed while applying please?
Thanks,
Angelo
More information about the linux-phy
mailing list