RE: [PATCH v6 1/2] platform/x86: int3472: Add TPS68470 board data for Intel nvl
From: T, Arun
Date: Wed Apr 01 2026 - 02:51:54 EST
HI Sakari,
We are seeing below errors when launching the camera with auto focus enabled for DW9714.
The regulators VIO, AUX1, and AUX2 are not required incase if DW9714 is disabled in the BIOS settings or kernel configuration.
I believe we should not remove the unused regulator, as it is required when using autofocus for the sensor.
Please let me know your opinion on this.
Camera pipeline error:
[04-01 05:07:41.452] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.513] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.546] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.571] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.604] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.637] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.671] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.704] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
[04-01 05:07:41.738] CamHAL[ERR] V4l2_device_cc: SetControl: Device node /dev/v4l-subdev7 SetControl(int, int) error: Input/output error
Kernel Error:
[ 70.953426] dw9714 i2c-OVTI13B1:01-VCM: I2C write fail
[ 70.958675] dw9714 i2c-OVTI13B1:01-VCM: dw9714_vcm_resume I2C failure: -5
[ 70.967467] dw9714 i2c-OVTI13B1:01-VCM: I2C write fail
[ 97.330226] dw9714 i2c-OVTI13B1:01-VCM: I2C write fail
[ 97.335456] dw9714 i2c-OVTI13B1:01-VCM: dw9714_vcm_resume I2C failure: -5
[ 97.344461] dw9714 i2c-OVTI13B1:01-VCM: I2C write fail
-
Regards,
Arun T
-----Original Message-----
From: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx>
Sent: 31 March 2026 04:56 PM
To: T, Arun <arun.t@xxxxxxxxx>
Cc: johannes.goede@xxxxxxxxxxxxxxxx; Kao, Arec <arec.kao@xxxxxxxxx>; ilpo.jarvinen@xxxxxxxxxxxxxxx; dan.scally@xxxxxxxxxxxxxxxx; platform-driver-x86@xxxxxxxxxxxxxxx; linux-media@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Djait, Mehdi <mehdi.djait@xxxxxxxxx>
Subject: Re: [PATCH v6 1/2] platform/x86: int3472: Add TPS68470 board data for Intel nvl
Hi Arun,
On Fri, Mar 27, 2026 at 11:49:57PM +0530, Arun T wrote:
> The Intel NVL platform uses IPU8 is powered by a TPS68470
> PMIC,requiring board data to configure the GPIOs and regulators for proper camera sensor operation.
Please run scripts/checkpatch.pl on this.
Could you rebase these on Antti's patches adding support for an MSI laptop?
They're here
<URL:https://git.linuxtv.org/sailus/media_tree.git/log/?h=int3472>.
>
> Signed-off-by: Arun T <arun.t@xxxxxxxxx>
> Reviewed-by: Daniel Scally <dan.scally@xxxxxxxxxxxxxxxx>
> ---
> .../x86/intel/int3472/tps68470_board_data.c | 121 ++++++++++++++++++
> 1 file changed, 121 insertions(+)
>
> diff --git a/drivers/platform/x86/intel/int3472/tps68470_board_data.c
> b/drivers/platform/x86/intel/int3472/tps68470_board_data.c
> index 71357a036292..f0309fd1e515 100644
> --- a/drivers/platform/x86/intel/int3472/tps68470_board_data.c
> +++ b/drivers/platform/x86/intel/int3472/tps68470_board_data.c
> @@ -143,6 +143,20 @@ static struct regulator_consumer_supply int3479_aux2_consumer_supplies[] = {
> REGULATOR_SUPPLY("dovdd", "i2c-INT3479:00"), };
>
> +/* Settings for Intel NVL platform */
> +
> +static struct regulator_consumer_supply ovti13b1_core_consumer_supplies[] = {
> + REGULATOR_SUPPLY("dvdd", "i2c-OVTI13B1:01"), };
> +
> +static struct regulator_consumer_supply ovti13b1_ana_consumer_supplies[] = {
> + REGULATOR_SUPPLY("avdd", "i2c-OVTI13B1:01"), };
> +
> +static struct regulator_consumer_supply ovti13b1_vsio_consumer_supplies[] = {
> + REGULATOR_SUPPLY("dovdd", "i2c-OVTI13B1:01"), };
> +
> static const struct regulator_init_data dell_7212_tps68470_core_reg_init_data = {
> .constraints = {
> .min_uV = 1200000,
> @@ -220,6 +234,77 @@ static const struct regulator_init_data dell_7212_tps68470_aux2_reg_init_data =
> .consumer_supplies = int3479_aux2_consumer_supplies, };
>
> +static const struct regulator_init_data intel_nvl_tps68470_core_reg_init_data = {
> + .constraints = {
> + .min_uV = 1200000,
> + .max_uV = 1200000,
> + .apply_uV = true,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> + .num_consumer_supplies = ARRAY_SIZE(ovti13b1_core_consumer_supplies),
> + .consumer_supplies = ovti13b1_core_consumer_supplies, };
> +
> +static const struct regulator_init_data intel_nvl_tps68470_ana_reg_init_data = {
> + .constraints = {
> + .min_uV = 2815200,
> + .max_uV = 2815200,
> + .apply_uV = true,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> + .num_consumer_supplies = ARRAY_SIZE(ovti13b1_ana_consumer_supplies),
> + .consumer_supplies = ovti13b1_ana_consumer_supplies, };
> +
> +static const struct regulator_init_data intel_nvl_tps68470_vcm_reg_init_data = {
> + .constraints = {
> + .min_uV = 2815200,
> + .max_uV = 2815200,
> + .apply_uV = true,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> +
> +};
> +
> +/* Ensure the always-on VIO regulator has the same voltage as VSIO */
> +static const struct regulator_init_data intel_nvl_tps68470_vio_reg_init_data = {
> + .constraints = {
> + .min_uV = 1800600,
> + .max_uV = 1800600,
> + .apply_uV = true,
> + .always_on = true,
> + },
> +};
> +
> +static const struct regulator_init_data intel_nvl_tps68470_vsio_reg_init_data = {
> + .constraints = {
> + .min_uV = 1800600,
> + .max_uV = 1800600,
> + .apply_uV = true,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> + .num_consumer_supplies = ARRAY_SIZE(ovti13b1_vsio_consumer_supplies),
> + .consumer_supplies = ovti13b1_vsio_consumer_supplies, };
> +
> +static const struct regulator_init_data intel_nvl_tps68470_aux1_reg_init_data = {
> + .constraints = {
> + .min_uV = 2815200,
> + .max_uV = 2815200,
> + .apply_uV = 1,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> +};
> +
> +static const struct regulator_init_data intel_nvl_tps68470_aux2_reg_init_data = {
> + .constraints = {
> + .min_uV = 1800600,
> + .max_uV = 1800600,
> + .apply_uV = 1,
> + .valid_ops_mask = REGULATOR_CHANGE_STATUS,
> + },
> +};
> +
> static const struct tps68470_regulator_platform_data dell_7212_tps68470_pdata = {
> .reg_init_data = {
> [TPS68470_CORE] = &dell_7212_tps68470_core_reg_init_data,
> @@ -232,6 +317,18 @@ static const struct tps68470_regulator_platform_data dell_7212_tps68470_pdata =
> },
> };
>
> +static const struct tps68470_regulator_platform_data intel_nvl_tps68470_pdata = {
> + .reg_init_data = {
> + [TPS68470_CORE] = &intel_nvl_tps68470_core_reg_init_data,
> + [TPS68470_ANA] = &intel_nvl_tps68470_ana_reg_init_data,
> + [TPS68470_VCM] = &intel_nvl_tps68470_vcm_reg_init_data,
> + [TPS68470_VIO] = &intel_nvl_tps68470_vio_reg_init_data,
> + [TPS68470_VSIO] = &intel_nvl_tps68470_vsio_reg_init_data,
> + [TPS68470_AUX1] = &intel_nvl_tps68470_aux1_reg_init_data,
> + [TPS68470_AUX2] = &intel_nvl_tps68470_aux2_reg_init_data,
Vcm, aux1 and aux2 appear to be unused. Is there a need to configure them?
> + },
> +};
> +
> static struct gpiod_lookup_table surface_go_int347a_gpios = {
> .dev_id = "i2c-INT347A:00",
> .table = {
> @@ -258,6 +355,14 @@ static struct gpiod_lookup_table dell_7212_int3479_gpios = {
> }
> };
>
> +static struct gpiod_lookup_table intel_nvl_ovti13b1_gpios = {
> + .dev_id = "i2c-OVTI13B1:01",
> + .table = {
> + GPIO_LOOKUP("tps68470-gpio", 9, "reset", GPIO_ACTIVE_LOW),
> + { }
> + }
> +};
> +
> static const struct int3472_tps68470_board_data surface_go_tps68470_board_data = {
> .dev_name = "i2c-INT3472:05",
> .tps68470_regulator_pdata = &surface_go_tps68470_pdata, @@ -287,6
> +392,15 @@ static const struct int3472_tps68470_board_data dell_7212_tps68470_board_data =
> },
> };
>
> +static const struct int3472_tps68470_board_data intel_nvl_tps68470_board_data = {
> + .dev_name = "i2c-INT3472:04",
> + .tps68470_regulator_pdata = &intel_nvl_tps68470_pdata,
> + .n_gpiod_lookups = 1,
> + .tps68470_gpio_lookup_tables = {
> + &intel_nvl_ovti13b1_gpios,
> + },
> +};
> +
> static const struct dmi_system_id int3472_tps68470_board_data_table[] = {
> {
> .matches = {
> @@ -316,6 +430,13 @@ static const struct dmi_system_id int3472_tps68470_board_data_table[] = {
> },
> .driver_data = (void *)&dell_7212_tps68470_board_data,
> },
> + {
> + .matches = {
> + DMI_EXACT_MATCH(DMI_SYS_VENDOR, "Intel Corporation"),
> + DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Nova Lake Client Platform"),
> + },
> + .driver_data = (void *)&intel_nvl_tps68470_board_data,
> + },
> { }
> };
>
--
Regards,
Sakari Ailus