Devicetree
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Enable DW9714V camera focus coil on SHIFT 6MQ
@ 2026-08-03  9:50 David Heidelberg via B4 Relay
  2026-08-03  9:50 ` [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant David Heidelberg via B4 Relay
  2026-08-03  9:50 ` [PATCH v3 2/2] arm64: dts: qcom: sdm845-shift-axolotl: Add actuator for main rear camera David Heidelberg via B4 Relay
  0 siblings, 2 replies; 5+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-03  9:50 UTC (permalink / raw)
  To: Alexander Martinz, Bjorn Andersson, Conor Dooley, Konrad Dybcio,
	Krzysztof Kozlowski, Mauro Carvalho Chehab, Rob Herring,
	Sakari Ailus
  Cc: Krzysztof Kozlowski, devicetree, linux-arm-msm, linux-kernel,
	linux-media, phone-devel, David Heidelberg, Krzysztof Kozlowski

Implements wiring for:
 - SGM2036 linear regulator used to turn on the focus coil [1]
 - Dongwoon 9714V focus coil used by IMX519 camera sensor [2]

[1] https://www.sg-micro.com/rect/assets/efa85993-263c-41aa-9274-b488f59f85d5/SGM2036.pdf
[2] https://datasheet4u.com/pdf/1247146/DW9714V.pdf

Open question for future work: modeling the I2C bus supply.

Like many similar chips, the DW9714 has a single VDD supply, but its I2C
lines go through a level shifter to a 1.8V rail, and there is currently no
place in DT to describe that rail so it gets enabled during I2C access to
the device. As a stopgap, this series models it as an always-on, see the
comment in the vreg_lvs1a_1p8 node).

Direction agreed with Rob Herring and Mark Brown on IRC:

 - Modeling the level shifter itself is overkill as long as it is just a
   supply; modeling the connector would come first if needed.
 - Since each side of the shifter has its own supply, the proper solution
   is a generic 'bus-supply' property valid in both the I2C controller and
   device nodes.
 - Defining it per-device-schema would ideally use an I2C equivalent of
   spi-peripheral-props.yaml, which does not exist yet. The pragmatic
   interim is to define bus-supply in i2c-controller.yaml for both places
   and add 'bus-supply: true' to schemas that need it now (dw9714),
   deferring the peripheral-props question until more shared device
   properties accumulate.

Once bus-supply exists, the regulator-always-on workaround in this DTS can
be dropped.

Signed-off-by: David Heidelberg <david@ixit.cz>
---
Changes in v3:
- Multiline compatible. (Konrad)
- Dropped output-low from avdd_cam pinctrl. (Konrad)
- Then dropped whole sleep pinctrl state, as it's same as default.
- Reworded the TODO. (Konrad)
- Dropped camss node. (claude)
- Moved before cdsp_pas (sort)
- Dropped unused regulator label.
- Switched the i2c bus shifter with the regulator VDD, as previously it
  was incorrectly wired and keep always-on on the i2c bus shifter.
- Link to v2: https://patch.msgid.link/20260730-dw9714v-v2-0-d5da19e6c60b@ixit.cz

Changes in v2:
- Address Sashiko findings.
- Link to v1: https://patch.msgid.link/20260729-dw9714v-v1-0-3c479b3cf8c0@ixit.cz

---
David Heidelberg (2):
      dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant
      arm64: dts: qcom: sdm845-shift-axolotl: Add actuator for main rear camera

 .../bindings/media/i2c/dongwoon,dw9714.yaml        | 14 +++++--
 arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts  | 48 ++++++++++++++++++++++
 2 files changed, 59 insertions(+), 3 deletions(-)
---
base-commit: 95d6a9ccef99117115e41e9adb271243bd5e985b
change-id: 20260416-dw9714v-4566465ebe7d

Best regards,
--  
David Heidelberg <david@ixit.cz>



^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant
  2026-08-03  9:50 [PATCH v3 0/2] Enable DW9714V camera focus coil on SHIFT 6MQ David Heidelberg via B4 Relay
@ 2026-08-03  9:50 ` David Heidelberg via B4 Relay
  2026-08-10  9:38   ` Sakari Ailus
  2026-08-03  9:50 ` [PATCH v3 2/2] arm64: dts: qcom: sdm845-shift-axolotl: Add actuator for main rear camera David Heidelberg via B4 Relay
  1 sibling, 1 reply; 5+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-03  9:50 UTC (permalink / raw)
  To: Alexander Martinz, Bjorn Andersson, Conor Dooley, Konrad Dybcio,
	Krzysztof Kozlowski, Mauro Carvalho Chehab, Rob Herring,
	Sakari Ailus
  Cc: Krzysztof Kozlowski, devicetree, linux-arm-msm, linux-kernel,
	linux-media, phone-devel, David Heidelberg, Krzysztof Kozlowski

From: David Heidelberg <david@ixit.cz>

DW9714A is successor of DW9714 and DW9714V is successor of the DW9714A.

All actuators are backward compatible, but they do introduce new features,
such as Smart Actuator Control (SAC) mode which can minimize the
mechanical vibration and achieve very fast mechanical settling time.
Support for SAC can be implemented in the future.

Nit: fix typo in description by removing duplicate information.

Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
Signed-off-by: David Heidelberg <david@ixit.cz>
---
 .../devicetree/bindings/media/i2c/dongwoon,dw9714.yaml     | 14 +++++++++++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
index 66229a3dc05d6..7c2769e6c4880 100644
--- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
+++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
@@ -5,22 +5,30 @@ $id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9714.yaml#
 $schema: http://devicetree.org/meta-schemas/core.yaml#
 
 title: Dongwoon Anatech DW9714 camera voice coil lens driver
 
 maintainers:
   - Krzysztof Kozlowski <krzk@kernel.org>
 
 description:
-  DW9174 is a 10-bit DAC with current sink capability. It is intended for
-  driving voice coil lenses in camera modules.
+  10-bit DAC with current sink capability. It is intended for driving
+  voice coil lenses in camera modules.
 
 properties:
   compatible:
-    const: dongwoon,dw9714
+    oneOf:
+      - items:
+          - const: dongwoon,dw9714v
+          - const: dongwoon,dw9714a
+          - const: dongwoon,dw9714
+      - items:
+          - const: dongwoon,dw9714a
+          - const: dongwoon,dw9714
+      - const: dongwoon,dw9714
 
   reg:
     maxItems: 1
 
   powerdown-gpios:
     description:
       XSD pin for shutdown (active low)
 

-- 
2.55.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH v3 2/2] arm64: dts: qcom: sdm845-shift-axolotl: Add actuator for main rear camera
  2026-08-03  9:50 [PATCH v3 0/2] Enable DW9714V camera focus coil on SHIFT 6MQ David Heidelberg via B4 Relay
  2026-08-03  9:50 ` [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant David Heidelberg via B4 Relay
@ 2026-08-03  9:50 ` David Heidelberg via B4 Relay
  1 sibling, 0 replies; 5+ messages in thread
From: David Heidelberg via B4 Relay @ 2026-08-03  9:50 UTC (permalink / raw)
  To: Alexander Martinz, Bjorn Andersson, Conor Dooley, Konrad Dybcio,
	Krzysztof Kozlowski, Mauro Carvalho Chehab, Rob Herring,
	Sakari Ailus
  Cc: Krzysztof Kozlowski, devicetree, linux-arm-msm, linux-kernel,
	linux-media, phone-devel, David Heidelberg

From: David Heidelberg <david@ixit.cz>

Main rear camera uses Dongwoon DW9714V actuator. Add regulator and
actuator node.

Since the actuator sits on the CCI I2C bus, whose 1.8V side is fed by
vreg_lvs1a_1p8 and there is no place to describe that, keep it always-on
for now, until bus-supply exists.

Signed-off-by: David Heidelberg <david@ixit.cz>
---
 arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts | 48 +++++++++++++++++++++++
 1 file changed, 48 insertions(+)

diff --git a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
index e31c784eff3de..358ce1930d4e1 100644
--- a/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
+++ b/arch/arm64/boot/dts/qcom/sdm845-shift-axolotl.dts
@@ -81,16 +81,34 @@ ramoops: ramoops@b0000000 {
 	battery: battery {
 		compatible = "simple-battery";
 
 		charge-full-design-microamp-hours = <3850000>;
 		voltage-min-design-microvolt = <3600000>;
 		voltage-max-design-microvolt = <4400000>;
 	};
 
+	/* SGM2036-2.8YUDH4G/TR */
+	cam_main_af_2p8: regulator-cam-main-af-2p8 {
+		compatible = "regulator-fixed";
+
+		regulator-name = "cam_main_af_2p8";
+		regulator-min-microvolt = <2800000>;
+		regulator-max-microvolt = <2800000>;
+		regulator-enable-ramp-delay = <100>;
+
+		gpio = <&tlmm 8 GPIO_ACTIVE_HIGH>;
+		enable-active-high;
+
+		pinctrl-0 = <&cam_main_af_default_state>;
+		pinctrl-names = "default";
+
+		vin-supply = <&vreg_bob>;
+	};
+
 	vph_pwr: vph-pwr-regulator {
 		compatible = "regulator-fixed";
 		regulator-name = "vph_pwr";
 		regulator-min-microvolt = <3700000>;
 		regulator-max-microvolt = <3700000>;
 	};
 
 	vreg_s4a_1p8: pm8998-smps4 {
@@ -403,16 +421,23 @@ vreg_l28a_3p0: ldo28 {
 			regulator-min-microvolt = <2856000>;
 			regulator-max-microvolt = <3008000>;
 			regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
 		};
 
 		vreg_lvs1a_1p8: lvs1 {
 			regulator-min-microvolt = <1800000>;
 			regulator-max-microvolt = <1800000>;
+
+			/*
+			 * Supplies the 1.8V side of the CCI I2C level
+			 * shifter; keep enabled until a generic
+			 * bus-supply property exists.
+			 */
+			regulator-always-on;
 		};
 
 		vreg_lvs2a_1p8: lvs2 {
 			regulator-min-microvolt = <1800000>;
 			regulator-max-microvolt = <1800000>;
 		};
 	};
 
@@ -441,16 +466,32 @@ regulators-2 {
 
 		vreg_s3c_0p6: smps3 {
 			regulator-min-microvolt = <600000>;
 			regulator-max-microvolt = <600000>;
 		};
 	};
 };
 
+&cci {
+	status = "okay";
+};
+
+&cci_i2c0 {
+	/* main camera actuator */
+	camera-lens@c {
+		compatible = "dongwoon,dw9714v",
+			     "dongwoon,dw9714a",
+			     "dongwoon,dw9714";
+		reg = <0x0c>;
+
+		vcc-supply = <&cam_main_af_2p8>;
+	};
+};
+
 &cdsp_pas {
 	firmware-name = "qcom/sdm845/SHIFT/axolotl/cdsp.mbn";
 
 	status = "okay";
 };
 
 &gcc {
 	protected-clocks = <GCC_QSPI_CORE_CLK>,
@@ -699,16 +740,23 @@ &slpi_pas {
 	firmware-name = "qcom/sdm845/SHIFT/axolotl/slpi.mbn";
 
 	status = "okay";
 };
 
 &tlmm {
 	gpio-reserved-ranges = <0 4>, <81 4>;
 
+	cam_main_af_default_state: cam-main-af-default-state {
+		pins = "gpio8";
+		function = "gpio";
+		drive-strength = <2>;
+		bias-disable;
+	};
+
 	sdc2_default_state: sdc2-default-state {
 		clk-pins {
 			pins = "sdc2_clk";
 			drive-strength = <16>;
 			bias-disable;
 		};
 
 		cmd-pins {

-- 
2.55.0



^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant
  2026-08-03  9:50 ` [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant David Heidelberg via B4 Relay
@ 2026-08-10  9:38   ` Sakari Ailus
  2026-08-10 10:24     ` David Heidelberg
  0 siblings, 1 reply; 5+ messages in thread
From: Sakari Ailus @ 2026-08-10  9:38 UTC (permalink / raw)
  To: david
  Cc: Alexander Martinz, Bjorn Andersson, Conor Dooley, Konrad Dybcio,
	Krzysztof Kozlowski, Mauro Carvalho Chehab, Rob Herring,
	Krzysztof Kozlowski, devicetree, linux-arm-msm, linux-kernel,
	linux-media, phone-devel, Krzysztof Kozlowski

Hi David,

On Mon, Aug 03, 2026 at 11:50:25AM +0200, David Heidelberg via B4 Relay wrote:
> From: David Heidelberg <david@ixit.cz>
> 
> DW9714A is successor of DW9714 and DW9714V is successor of the DW9714A.
> 
> All actuators are backward compatible, but they do introduce new features,
> such as Smart Actuator Control (SAC) mode which can minimize the
> mechanical vibration and achieve very fast mechanical settling time.
> Support for SAC can be implemented in the future.

What kind of configuration does SAC require? Such things generally aren't
configured from the userspace, compare e.g. with the dw9719 bindings
discussion.

> 
> Nit: fix typo in description by removing duplicate information.
> 
> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
> Signed-off-by: David Heidelberg <david@ixit.cz>
> ---
>  .../devicetree/bindings/media/i2c/dongwoon,dw9714.yaml     | 14 +++++++++++---
>  1 file changed, 11 insertions(+), 3 deletions(-)
> 
> diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
> index 66229a3dc05d6..7c2769e6c4880 100644
> --- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
> +++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
> @@ -5,22 +5,30 @@ $id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9714.yaml#
>  $schema: http://devicetree.org/meta-schemas/core.yaml#
>  
>  title: Dongwoon Anatech DW9714 camera voice coil lens driver
>  
>  maintainers:
>    - Krzysztof Kozlowski <krzk@kernel.org>
>  
>  description:
> -  DW9174 is a 10-bit DAC with current sink capability. It is intended for
> -  driving voice coil lenses in camera modules.
> +  10-bit DAC with current sink capability. It is intended for driving
> +  voice coil lenses in camera modules.
>  
>  properties:
>    compatible:
> -    const: dongwoon,dw9714
> +    oneOf:
> +      - items:
> +          - const: dongwoon,dw9714v
> +          - const: dongwoon,dw9714a
> +          - const: dongwoon,dw9714
> +      - items:
> +          - const: dongwoon,dw9714a
> +          - const: dongwoon,dw9714
> +      - const: dongwoon,dw9714
>  
>    reg:
>      maxItems: 1
>  
>    powerdown-gpios:
>      description:
>        XSD pin for shutdown (active low)
>  
> 

-- 
Regards,

Sakari Ailus

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant
  2026-08-10  9:38   ` Sakari Ailus
@ 2026-08-10 10:24     ` David Heidelberg
  0 siblings, 0 replies; 5+ messages in thread
From: David Heidelberg @ 2026-08-10 10:24 UTC (permalink / raw)
  To: Sakari Ailus
  Cc: Alexander Martinz, Bjorn Andersson, Conor Dooley, Konrad Dybcio,
	Krzysztof Kozlowski, Mauro Carvalho Chehab, Rob Herring,
	Krzysztof Kozlowski, devicetree, linux-arm-msm, linux-kernel,
	linux-media, phone-devel, Krzysztof Kozlowski

On 10/08/2026 11:38, Sakari Ailus wrote:
> Hi David,
> 
> On Mon, Aug 03, 2026 at 11:50:25AM +0200, David Heidelberg via B4 Relay wrote:
>> From: David Heidelberg <david@ixit.cz>
>>
>> DW9714A is successor of DW9714 and DW9714V is successor of the DW9714A.
>>
>> All actuators are backward compatible, but they do introduce new features,
>> such as Smart Actuator Control (SAC) mode which can minimize the
>> mechanical vibration and achieve very fast mechanical settling time.
>> Support for SAC can be implemented in the future.
> 
> What kind of configuration does SAC require? Such things generally aren't
> configured from the userspace, compare e.g. with the dw9719 bindings
> discussion.

I don't have extra deep insight (except basic how the sensor works).

By default all dw9714* sensors starts in the default "legacy" mode.

The clanker after looking at datasheets and kernel struct produced, if it make 
sense:

the mode and the vibration period (SAC_CFG/PRESC/SACT) have to match
the mechanical tVIB of the actuator and lens assembly of the given camera
module, the same way dongwoon,aac-mode/aac-timing/clock-presc do for
dongwoon,dw9768 and dongwoon,sac-mode/vcm-prescale for dongwoon,dw9719.
Those properties are left out until there is driver support and measured
values; note the DW9714V mode set differs from DW9719's, so its enum cannot
be reused as is.

David

> 
>>
>> Nit: fix typo in description by removing duplicate information.
>>
>> Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@oss.qualcomm.com>
>> Signed-off-by: David Heidelberg <david@ixit.cz>
>> ---
>>   .../devicetree/bindings/media/i2c/dongwoon,dw9714.yaml     | 14 +++++++++++---
>>   1 file changed, 11 insertions(+), 3 deletions(-)
>>
>> diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
>> index 66229a3dc05d6..7c2769e6c4880 100644
>> --- a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
>> +++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9714.yaml
>> @@ -5,22 +5,30 @@ $id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9714.yaml#
>>   $schema: http://devicetree.org/meta-schemas/core.yaml#
>>   
>>   title: Dongwoon Anatech DW9714 camera voice coil lens driver
>>   
>>   maintainers:
>>     - Krzysztof Kozlowski <krzk@kernel.org>
>>   
>>   description:
>> -  DW9174 is a 10-bit DAC with current sink capability. It is intended for
>> -  driving voice coil lenses in camera modules.
>> +  10-bit DAC with current sink capability. It is intended for driving
>> +  voice coil lenses in camera modules.
>>   
>>   properties:
>>     compatible:
>> -    const: dongwoon,dw9714
>> +    oneOf:
>> +      - items:
>> +          - const: dongwoon,dw9714v
>> +          - const: dongwoon,dw9714a
>> +          - const: dongwoon,dw9714
>> +      - items:
>> +          - const: dongwoon,dw9714a
>> +          - const: dongwoon,dw9714
>> +      - const: dongwoon,dw9714
>>   
>>     reg:
>>       maxItems: 1
>>   
>>     powerdown-gpios:
>>       description:
>>         XSD pin for shutdown (active low)
>>   
>>
> 

-- 
David Heidelberg


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-08-10 10:25 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-08-03  9:50 [PATCH v3 0/2] Enable DW9714V camera focus coil on SHIFT 6MQ David Heidelberg via B4 Relay
2026-08-03  9:50 ` [PATCH v3 1/2] dt-bindings: media: i2c: dongwoon,dw9714: Document DW9714A and V variant David Heidelberg via B4 Relay
2026-08-10  9:38   ` Sakari Ailus
2026-08-10 10:24     ` David Heidelberg
2026-08-03  9:50 ` [PATCH v3 2/2] arm64: dts: qcom: sdm845-shift-axolotl: Add actuator for main rear camera David Heidelberg via B4 Relay

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox