[PATCH v9 3/6] mfd: khadas-mcu: Add support for VIM4 MCU variant

Lee Jones lee at kernel.org
Wed Aug 12 05:00:07 PDT 2026


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.

> --
> 
> --- 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

-- 
Lee Jones



More information about the linux-amlogic mailing list