[PATCH v9 3/6] mfd: khadas-mcu: Add support for VIM4 MCU variant
Ronald Claveau
linux-kernel-dev at aliel.fr
Wed Aug 19 00:29:12 PDT 2026
On 8/12/26 2:00 PM, Lee Jones wrote:
> On Wed, 05 Aug 2026, sashiko-bot at kernel.org wrote:
>
>> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
>> - [High] The driver unconditionally fails to probe on generic Khadas MCU boards (VIM1/VIM2/VIM3) due to a NULL pointer check on valid match data.
>
> Please review, explain or fix the Sashiko review(s).
>
> If this is a set, this request includes the other patches too.
>
Yes I will check all those reviews.
>> --
>>
>> --- Patch [3]: [PATCH v9 3/6] mfd: khadas-mcu: Add support for VIM4 MCU variant ---
>> commit eab418dac1b5e94bd297b0a14e92e87b2063dc9b
>> Author: Ronald Claveau <linux-kernel-dev at aliel.fr>
>>
>> mfd: khadas-mcu: Add support for VIM4 MCU variant
>>
>> This patch refactors the probe function to use per-variant values instead of
>> hardcoded globals. It adds dedicated regmap configuration, fan control register,
>> and duty-cycle levels for the VIM4 MCU variant. A new compatible string
>> "khadas,vim4-mcu" is introduced for this new device.
>>
>>> diff --git a/drivers/mfd/khadas-mcu.c b/drivers/mfd/khadas-mcu.c
>>> index 0e74efe14f367..4cb305ac915e1 100644
>>> --- a/drivers/mfd/khadas-mcu.c
>>> +++ b/drivers/mfd/khadas-mcu.c
>> [ ... ]
>>> @@ -75,47 +75,138 @@ static const struct regmap_config khadas_mcu_regmap_config = {
>> [ ... ]
>>> static int khadas_mcu_probe(struct i2c_client *client)
>>> {
>>> + const struct mfd_cell *cells, *fan_cells;
>>> + const struct regmap_config *regmap_cfg;
>>> struct device *dev = &client->dev;
>>> + int ncells, nfan_cells, ret;
>>> struct khadas_mcu *ddata;
>>> - int ret;
>>> + const void *match;
>>>
>>> ddata = devm_kzalloc(dev, sizeof(*ddata), GFP_KERNEL);
>>> if (!ddata)
>>> return -ENOMEM;
>>>
>>> + match = i2c_get_match_data(client);
>>> + if (!match)
>>> + return -ENODEV;
>>
>> [Severity: High]
>> Does this code inadvertently break the probe for generic Khadas MCU boards
>> (VIM1/VIM2/VIM3)?
>>
>> Because KHADAS_MCU_GENERIC evaluates to 0 in its enum, i2c_get_match_data() will
>> return a NULL pointer when matching "khadas,mcu" in khadas_mcu_probe() in
>> drivers/mfd/khadas-mcu.c. This will cause the check here to evaluate to true and
>> unconditionally abort the probe with -ENODEV.
>>
>> [ ... ]
>>> @@ -123,7 +214,8 @@ static int khadas_mcu_probe(struct i2c_client *client)
>>>
>>> #ifdef CONFIG_OF
>>> static const struct of_device_id khadas_mcu_of_match[] = {
>>> - { .compatible = "khadas,mcu", },
>>> + { .compatible = "khadas,mcu", .data = (void *)KHADAS_MCU_GENERIC },
>>> + { .compatible = "khadas,vim4-mcu", .data = (void *)KHADAS_MCU_VIM4 },
>>> {},
>>> };
>>> MODULE_DEVICE_TABLE(of, khadas_mcu_of_match);
>>
>> --
>> Sashiko AI review · https://sashiko.dev/#/patchset/20260805-add-mcu-fan-khadas-vim4-v9-0-75df78710b9e@aliel.fr?part=3
>
--
Best regards,
Ronald
More information about the linux-amlogic
mailing list