From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7ABA617BB21; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; cv=none; b=Z+GOq+n87LYBafweH8KFNk3sKw0ZBVypU5JUHTuT10/wZNOWFqNlNAGjCS8mH601NkSYUwhiGcEauMrC6FMYqGA1WWkqsN957r33e5B89pzd1QNPWHDbYqbRuXl8kl0JsMkWYfA2HFS3ZPPsZhkMHoslN120ApuZHdUlHYu8ydY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; c=relaxed/simple; bh=COo3AY6pdjE+8kF28sRx10wI/ohSiKeJKJJYJqxHSfY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uaRIwXPX4824W5OAf+E4kvxun9r0Tm4lUk4sLNPag3Pq+VkhyFwEPYgJA3P7buM9wqqzgWjzfcd/Z7eLmNE5MUxEFJVv5Ps1o2zOwxJtHQlPMdoNqiKMx8+2pFSqJRWJ6vvtuwg2L5q+9gmLM85CRDoBVjG40OI38nL79KrAefA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=VKdNdwg0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="VKdNdwg0" Received: by smtp.kernel.org (Postfix) with ESMTPS id 41FF1C4CEF1; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=COo3AY6pdjE+8kF28sRx10wI/ohSiKeJKJJYJqxHSfY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=VKdNdwg0kYwJZ4jEc8SctlFKMfZWAXkkEbZ/C5pZPZFxQ2j97EczWXN65735TOUdx BbaCCSGa2Odp98m3n0VKQ9AFMgnfu3kY34lvtB+ULnMJlOEu8Y+kksXa9YDbT1hIhR mE3FSsVVgdCP0aEPwXgrS6zeZ5DRZPxPJxfsnRPo3OVPHMfH8XZhceinvg2AuFFKGt oNs24LfGyG6CSUOPwRh9IN4T6G7fInRVn7onGtIiT0aX5IsIRM9IrvhXcQ68lpwr5T URyvQ97QvMes7rAvYVxf2DljppHYyuEK1lJjuAmfHleENRskU0e9yREXGRVl2u79hi cXADonDDxEwVw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2BC5DCA0EDC; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:20 +0200 Subject: [PATCH 1/7] dt-bindings: media: i2c: Add DW9718S, DW9719 and DW9761 VCM Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-1-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=3802; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=uotT9zX/NyzbQ5ZP2dvOeAvtz2yUFcyTvMlfBKstnHQ=; b=H/CLKgAntzvZCcxKzMvVNrEb2+3T4O+GFwO6Oe/DcDOL1te1R7KMaafFTugwXS5sdH2NjG5mL 3iBwVze/E3UAYwYb5wqfOz7K4eQSS6u7bUW3uz0ZajR3UV+IfI86xdJ X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch Document Dongwoon DW9718S, DW9719 and DW9761 VCM devicetree bindings. Signed-off-by: Andr=C3=A9 Apitzsch -- The possible values for sac-mode and vcm-prescale of DW9719 and DW9761 are missing because there is no documentation available. --- .../bindings/media/i2c/dongwoon,dw9719.yaml | 115 +++++++++++++++++= ++++ 1 file changed, 115 insertions(+) diff --git a/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9719.ya= ml b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9719.yaml new file mode 100644 index 0000000000000000000000000000000000000000..80fd3fd42327fcafe3ff209d1cd= 6bbe17b8a211b --- /dev/null +++ b/Documentation/devicetree/bindings/media/i2c/dongwoon,dw9719.yaml @@ -0,0 +1,115 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/media/i2c/dongwoon,dw9719.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Dongwoon Anatech DW9719 Voice Coil Motor (VCM) Controller + +maintainers: + - devicetree@vger.kernel.org + +description: + The Dongwoon DW9718S/9719/9761 is a single 10-bit digital-to-analog conv= erter + with 100 mA output current sink capability, designed for linear control = of + voice coil motors (VCM) in camera lenses. This chip provides a Smart Act= uator + Control (SAC) mode intended for driving voice coil lenses in camera modu= les. + +properties: + compatible: + enum: + - dongwoon,dw9718s + - dongwoon,dw9719 + - dongwoon,dw9761 + + reg: + maxItems: 1 + + vdd-supply: + description: VDD power supply + + dongwoon,sac-mode: + description: | + Slew Rate Control mode to use: direct, LSC (Linear Slope Control) or + SAC1-SAC6 (Smart Actuator Control). + $ref: /schemas/types.yaml#/definitions/uint32 + enum: + - 0 # Direct mode + - 1 # LSC mode + - 2 # SAC1 mode (operation time# 0.32 x Tvib) + - 3 # SAC2 mode (operation time# 0.48 x Tvib) + - 4 # SAC3 mode (operation time# 0.72 x Tvib) + - 5 # SAC4 mode (operation time# 1.20 x Tvib) + - 6 # SAC5 mode (operation time# 1.64 x Tvib) + - 7 # SAC6 mode (operation time# 1.88 x Tvib) + default: 4 + + dongwoon,vcm-prescale: + description: + Indication of VCM switching frequency dividing rate select. + $ref: /schemas/types.yaml#/definitions/uint32 + +required: + - compatible + - reg + - vdd-supply + +allOf: + - if: + properties: + compatible: + contains: + const: dongwoon,dw9718s + then: + properties: + dongwoon,sac-mode: + default: 4 + dongwoon,vcm-prescale: + description: + The final frequency is 10 MHz divided by (value + 2). + minimum: 0 + maximum: 15 + default: 0 + + - if: + properties: + compatible: + contains: + const: dongwoon,dw9719 + then: + properties: + dongwoon,sac-mode: + default: 4 + dongwoon,vcm-prescale: + default: 96 + + - if: + properties: + compatible: + contains: + const: dongwoon,dw9761 + then: + properties: + dongwoon,sac-mode: + default: 6 + dongwoon,vcm-prescale: + default: 62 + +additionalProperties: false + +examples: + - | + i2c { + #address-cells =3D <1>; + #size-cells =3D <0>; + + actuator@c { + compatible =3D "dongwoon,dw9718s"; + reg =3D <0x0c>; + + vdd-supply =3D <&pm8937_l17>; + + dongwoon,sac-mode =3D <4>; + dongwoon,vcm-prescale =3D <0>; + }; + }; --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B8FF32FF67F; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; cv=none; b=arLGZT92EKDhRDXNttaFPgq8nR07Ff/QDPGAtHbImMZRv+OejCN1zsaoMJ4S5YMDO7cV774cliWZaJ2I5ORJY+kmoTQ+ue+HBs3cuR9dRbgYHlHix9F8BhxJ3aPikIYOY0y4J8zHYK5+s303IWCAKigErvJgdjye34s98ajQhU4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; c=relaxed/simple; bh=oF8OGHEdUasnDtScM1QpSp5OdLbaIVAuuSJGWGodoQs=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=rUsBZ4jOw5Xsrb0T+K3CUZB4jnq1HC3HthYhZGUFcP642VC9jlgmP2aiYz3eU8iX27zBILMTVCBwXjro6xUrJHLqkqq6TXgGbMN3KpcOzKU726vnUx1LBYHwY9xz5ZaUqAfgqjOxqJ9ga+ZaESjURee+YFLFzZP1OouLOQ4yoi4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=iChUsccl; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="iChUsccl" Received: by smtp.kernel.org (Postfix) with ESMTPS id 4D1BAC4CEF4; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=oF8OGHEdUasnDtScM1QpSp5OdLbaIVAuuSJGWGodoQs=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=iChUscclweMx6MWlo8R7vrbyv8xxAYHD8P4h/b28Xrtv92vdpLDo/M+Ro5AoPd2qP 3KHeqDlFHO5QK5wG659vrzeUPqS5rUDfREINaqPEgYHzuormS5rUAh6RhE4xVVpMy+ b14+o0c5ffHberpvz1noNX4gTereO2ycLZPtv41d3dBkhLMJsy7uxH5amvrE6jILT/ doRzSbGCbPcKwnWIZ9ghF5KcCkT48kujc+jPIh9NLgHBbaXBiLOkCHpUJJbbey42E7 j17XbEIPJEyNVE423nam0+A1S7iD6gu4xptmPxNMDr3U+g9/8Uzo3bnGZznnNNETc8 zemLbzQFk8q2Q== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 39F38CA0EEB; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:21 +0200 Subject: [PATCH 2/7] media: i2c: dw9719: Deprecate dongwoon,vcm-freq Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-2-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=1393; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=CNimidG5dpwY71WsspuUUXuvPQWxHyQ+3/Fs96sevrE=; b=7mNobBa1+SXToZWZB7gk88AEgE+cOrgzJGmBazKbPW2H+dcQ4/MlyWas8Fj0jpKnHZVfykCRn QQUA9Zx27CoDWWMZgQgefplhl96JCH2xgYf70zaZObQCEmyzdfZNfc3 X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Andr=C3=A9 Apitzsch The name of property "dongwoon,vcm-freq" doesn't match its purpose. Change the name of the property to "dongwoon,vcm-prescale" to better describe its purpose and deprecate the old one. Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 032fbcb981f20f4e93202415e62f67379897a048..5ed0042fce18acd9e6ce9f6cf6c= 6982e36fed275 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -82,6 +82,7 @@ static int dw9719_power_up(struct dw9719_device *dw9719, = bool detect) { u64 val; int ret; + int err; =20 ret =3D regulator_enable(dw9719->regulator); if (ret) @@ -123,7 +124,13 @@ static int dw9719_power_up(struct dw9719_device *dw971= 9, bool detect) &dw9719->sac_mode); =20 /* Optional indication of VCM frequency */ - device_property_read_u32(dw9719->dev, "dongwoon,vcm-freq", + err =3D device_property_read_u32(dw9719->dev, "dongwoon,vcm-freq", + &dw9719->vcm_freq); + if (err =3D=3D 0) + dev_warn(dw9719->dev, "dongwoon,vcm-freq property is deprecated, please= use dongwoon,vcm-prescale\n"); + + /* Optional indication of VCM prescale */ + device_property_read_u32(dw9719->dev, "dongwoon,vcm-prescale", &dw9719->vcm_freq); } =20 --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A7D02226CFD; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; cv=none; b=lNI/QZZRMQY5l00+SqwS1JkZp94vgg27scxrqNXINdjVCd0pCYRq0ue0XN6fqCTixT1SrLuke4Cb1HABkUY2/BlvQ4tX6+oC/fF52WuD2w9UAlFw9CiAIDL7rAuSIl+O6n7yD7w0VNEgOLn65sF3cr+fr/ojMyyrkSL3gPHwkWk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; c=relaxed/simple; bh=4LuuhLHsRhrBJ/GnPqoKZrQZx8lQwVvdyJhdSbli8Zw=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=fyUraIbxBB40GHrcpqm55kQtRoDVD4QB0gD+cB7+PjZMClTfIJ/S7fdwkgjtByP90vV5x11fqaq3avFYh/cREb3z6pBo7IG9JukOT9MMG9GbrXL1kXM2owhtfClr2NHfBsJ5egCxFXQ703fJYbC/OO4SJEoaqgqs5GFtvhtjRJc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=q/6uSGtm; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="q/6uSGtm" Received: by smtp.kernel.org (Postfix) with ESMTPS id 53ADDC116B1; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=4LuuhLHsRhrBJ/GnPqoKZrQZx8lQwVvdyJhdSbli8Zw=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=q/6uSGtmcUQT5Wc4tKli5+Qw442WSOwwwijmCwG/z5h9u6DTXb5DFjacVV0wwB1z/ mfpmNCGWpqDKrGWCwJgZhlHmbAKi5xkOjV99lyq3yzHnC4g1iD6EM/kDqj9CweD/TO aP3rVZcUdAN0lpV3u2mTEFqqpJ1oif3283/bk2/hjGVmTAjU0rMB+KZi3CW709fzL2 Afi94sFwrlDttfQ2jiWMV5vJ9g1YzCCNzxN4oTuI5TF6JgmoRAvnDXbnCbkx33x+OI lOQlujdus2bij7Z3IqETkdzdkAJ7bXwwyuYxeClTNzCfLHv+7GhCgRg2yITI8swCGC lUEo5RznHCASA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 46FBECA0EE4; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:22 +0200 Subject: [PATCH 3/7] media: i2c: dw9719: Add driver_data matching Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-3-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=1180; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=iVV78e2o0cl1oQIUHJFlr0HWutsEjrkxRyvh4oGLg+w=; b=Vq8uSC/Usq1sMo7iBL6uiHmbF35KllU4IuzziKWMtUwzUAJmbkJL5IUhqMXxsE8ygma6DNmjF 6jQeRNoh3LpBPUUKQvviiwbAS7/mViR7NWE2VtMJUez0GEo16EZJw6o X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Val Packett In preparation for adding models with different register sets, start assigning the model based on the i2c match data. Signed-off-by: Val Packett Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 5ed0042fce18acd9e6ce9f6cf6c6982e36fed275..7ce66eaede5a2a1ba9c4c30c0ef= c5fafcca339a0 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -282,6 +282,8 @@ static int dw9719_probe(struct i2c_client *client) if (!dw9719) return -ENOMEM; =20 + dw9719->model =3D (enum dw9719_model)i2c_get_match_data(client); + dw9719->regmap =3D devm_cci_regmap_init_i2c(client, 8); if (IS_ERR(dw9719->regmap)) return PTR_ERR(dw9719->regmap); @@ -361,8 +363,8 @@ static void dw9719_remove(struct i2c_client *client) } =20 static const struct i2c_device_id dw9719_id_table[] =3D { - { "dw9719" }, - { "dw9761" }, + { "dw9719", .driver_data =3D DW9719 }, + { "dw9761", .driver_data =3D DW9761 }, { } }; MODULE_DEVICE_TABLE(i2c, dw9719_id_table); --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BBD182FFDD5; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; cv=none; b=Jn6an1pLqOFNTqrZh7o7wMEzQEr2LeFc8Vm9EfjWDE7/B/bMzo0JbYhA1KC4DdAlL5yXYjTOlJdAkz0tzxc+9681mKNoQt2HDPRO3A9AtaR6Ha2o0lk9fVGj0K33ucm5A87blhxZo50Qfdi59aUPl4qlYoX14tAdlIT2zR1I5H0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450584; c=relaxed/simple; bh=QH1lLHa0Qn4oD7Q4DnkxZWzudMCKYCpdrR+3O5VFHn0=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=aNJsxY5ZPVPiNXjKuL3Z+vIhtxDNcN7RACNdHv6mBPdGhbU7df1iLInfJ6zICAkHEZPiMwY/lZKFEMRGDDwoD8ouhE0yXWOFV6+M1h8iENcNFP2k96RD/GArTtNNky6xqgcXQh7d04XJBzDuZ1j+rYZIuJgI3ozqB3W9qy34Sds= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=F/igG5wD; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="F/igG5wD" Received: by smtp.kernel.org (Postfix) with ESMTPS id 616CDC16AAE; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=QH1lLHa0Qn4oD7Q4DnkxZWzudMCKYCpdrR+3O5VFHn0=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=F/igG5wD79uC1tgC/Ms1DxCZujiZAysT3G41kZZUyxt6BcPwyfoG19xslTjqMnZYK U74QphhddRpngwmWXV0myyp0N6QlMHx/n1qH6nzi8LUCDR5hDH4FfzpcvlUkcpgq5c KgzaCT1pUbAfbglDgEDY9pH1lkjrB9BC9FzKX8aXC1HCUcPa08e/tiWZYXrhUhq7sL +EIbEYGwWErBm4jhziAt91Sp5mT4OMVWFpj5h55LsNOmNiwtGUrnhUd5d5A7DnX3L8 RzvpvH7jyWoFaPo8qQYUucAnDsrgwA6zrkP9SlCLBAGGKQPplD4yZUt9fZY7Y4HYuS rbjFhBMF+aWjw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 53E3ACA0EED; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:23 +0200 Subject: [PATCH 4/7] media: i2c: dw9719: Add DW9718S support Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-4-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=5188; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=8uwvY0cyVGXLUCsLbJPIIy5Sce02KuOJAaciNhQUmcY=; b=6x2LjyDVp7HcaW33RAPJ3ZbJgGww9mYh3aLgEGM8+RSHN7jIvVimiBXBpxejzFd6NmOW1Ow33 iIsuoCOeJEyCxtC37G4Ex16jfd98vLTjfwvgeJ8zlzidkON2IU0dQ2y X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Val Packett The DW9718S is a similar part that uses a different register set but follows the same method of operation otherwise. Add support for it to the existing dw9719 driver. Tested on the Moto E5 (motorola-nora) smartphone. Signed-off-by: Val Packett Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 67 +++++++++++++++++++++++++++++++++++++++---= ---- 1 file changed, 58 insertions(+), 9 deletions(-) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 7ce66eaede5a2a1ba9c4c30c0efc5fafcca339a0..61758a9450aee20c9226e879a15= eccfced9a3e96 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -23,6 +23,25 @@ #define DW9719_CTRL_STEPS 16 #define DW9719_CTRL_DELAY_US 1000 =20 +#define DW9718S_PD CCI_REG8(0) + +#define DW9718S_CONTROL CCI_REG8(1) +#define DW9718S_CONTROL_SW_LINEAR BIT(0) +#define DW9718S_CONTROL_SAC_SHIFT 1 +#define DW9718S_CONTROL_SAC_MASK 0x7 +#define DW9718S_CONTROL_OCP_DISABLE BIT(4) +#define DW9718S_CONTROL_UVLO_DISABLE BIT(5) +#define DW9718S_DEFAULT_SAC 4 + +#define DW9718S_VCM_CURRENT CCI_REG16(2) + +#define DW9718S_SW CCI_REG8(4) +#define DW9718S_SW_VCM_FREQ_MASK 0xF +#define DW9718S_DEFAULT_VCM_FREQ 0 + +#define DW9718S_SACT CCI_REG8(5) +#define DW9718S_SACT_PERIOD_8_8MS 0x19 + #define DW9719_INFO CCI_REG8(0) #define DW9719_ID 0xF1 #define DW9761_ID 0xF4 @@ -53,6 +72,7 @@ #define to_dw9719_device(x) container_of(x, struct dw9719_device, sd) =20 enum dw9719_model { + DW9718S, DW9719, DW9761, }; @@ -80,6 +100,7 @@ static int dw9719_power_down(struct dw9719_device *dw971= 9) =20 static int dw9719_power_up(struct dw9719_device *dw9719, bool detect) { + u32 reg_pwr; u64 val; int ret; int err; @@ -89,13 +110,21 @@ static int dw9719_power_up(struct dw9719_device *dw971= 9, bool detect) return ret; =20 /* Jiggle SCL pin to wake up device */ - cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_SHUTDOWN, &ret); + reg_pwr =3D (dw9719->model =3D=3D DW9718S) ? DW9718S_PD : DW9719_CONTROL; + cci_write(dw9719->regmap, reg_pwr, DW9719_SHUTDOWN, &ret); fsleep(100); - cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_STANDBY, &ret); + cci_write(dw9719->regmap, reg_pwr, DW9719_STANDBY, &ret); /* Need 100us to transit from SHUTDOWN to STANDBY */ fsleep(100); =20 if (detect) { + /* This model does not have an INFO register */ + if (dw9719->model =3D=3D DW9718S) { + dw9719->sac_mode =3D DW9718S_DEFAULT_SAC; + dw9719->vcm_freq =3D DW9718S_DEFAULT_VCM_FREQ; + goto props; + } + ret =3D cci_read(dw9719->regmap, DW9719_INFO, &val, NULL); if (ret < 0) return ret; @@ -119,6 +148,7 @@ static int dw9719_power_up(struct dw9719_device *dw9719= , bool detect) return -ENXIO; } =20 +props: /* Optional indication of SAC mode select */ device_property_read_u32(dw9719->dev, "dongwoon,sac-mode", &dw9719->sac_mode); @@ -134,14 +164,30 @@ static int dw9719_power_up(struct dw9719_device *dw97= 19, bool detect) &dw9719->vcm_freq); } =20 - cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_ENABLE_RINGING, &ret); - cci_write(dw9719->regmap, DW9719_MODE, dw9719->mode_low_bits | - (dw9719->sac_mode << DW9719_MODE_SAC_SHIFT), &ret); - cci_write(dw9719->regmap, DW9719_VCM_FREQ, dw9719->vcm_freq, &ret); - - if (dw9719->model =3D=3D DW9761) + switch (dw9719->model) { + case DW9718S: + /* Datasheet says [OCP/UVLO] should be disabled below 2.5V */ + dw9719->sac_mode &=3D DW9718S_CONTROL_SAC_MASK; + cci_write(dw9719->regmap, DW9718S_CONTROL, + DW9718S_CONTROL_SW_LINEAR | + (dw9719->sac_mode << DW9718S_CONTROL_SAC_SHIFT) | + DW9718S_CONTROL_OCP_DISABLE | + DW9718S_CONTROL_UVLO_DISABLE, &ret); + cci_write(dw9719->regmap, DW9718S_SACT, + DW9718S_SACT_PERIOD_8_8MS, &ret); + cci_write(dw9719->regmap, DW9718S_SW, + dw9719->vcm_freq & DW9718S_SW_VCM_FREQ_MASK, &ret); + break; + case DW9761: cci_write(dw9719->regmap, DW9761_VCM_PRELOAD, DW9761_DEFAULT_VCM_PRELOAD, &ret); + fallthrough; + case DW9719: + cci_write(dw9719->regmap, DW9719_CONTROL, DW9719_ENABLE_RINGING, &ret); + cci_write(dw9719->regmap, DW9719_MODE, dw9719->mode_low_bits | + (dw9719->sac_mode << DW9719_MODE_SAC_SHIFT), &ret); + cci_write(dw9719->regmap, DW9719_VCM_FREQ, dw9719->vcm_freq, &ret); + } =20 if (ret) dw9719_power_down(dw9719); @@ -151,7 +197,9 @@ static int dw9719_power_up(struct dw9719_device *dw9719= , bool detect) =20 static int dw9719_t_focus_abs(struct dw9719_device *dw9719, s32 value) { - return cci_write(dw9719->regmap, DW9719_VCM_CURRENT, value, NULL); + u32 reg =3D (dw9719->model =3D=3D DW9718S) ? DW9718S_VCM_CURRENT + : DW9719_VCM_CURRENT; + return cci_write(dw9719->regmap, reg, value, NULL); } =20 static int dw9719_set_ctrl(struct v4l2_ctrl *ctrl) @@ -363,6 +411,7 @@ static void dw9719_remove(struct i2c_client *client) } =20 static const struct i2c_device_id dw9719_id_table[] =3D { + { "dw9718s", .driver_data =3D DW9718S }, { "dw9719", .driver_data =3D DW9719 }, { "dw9761", .driver_data =3D DW9761 }, { } --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E03E03009E1; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; cv=none; b=D7DR/MljCCJoZSCYVaK3yefT9/kG3VYEOrPO6fSSGX/29CoJiWKOBOci+ahMREuXSJ3J+dYOU8T1bNZZcUOculu6yUmWVLjYDCWb9YXUirjXnoFe8RmaapWcnkdejkOBufQLWNdA23XpDiccKRCITbQVPU95L0qoZ3L0DDWHjnI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; c=relaxed/simple; bh=8s9BTCsGGEvCiyFs4WB8+1SGfYvgDBSpMS/g3/FlHvQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CD6estvS46QeA7LUrrHiDzRhVry/xv1V1IYDkr7TzTOluV55xt0lvly8LRdlq1nLxZXGp0FURLmwklpDCXPsSLSWHMn1rB42TCZQ0xWG32QfchVC0rSCIRoktRVy0h5n+bOwygazO4Q7DyeNzs5qENbmymQ4uCNLbDDHLVD56OY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=IQRSrQGU; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="IQRSrQGU" Received: by smtp.kernel.org (Postfix) with ESMTPS id 6952BC19423; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=8s9BTCsGGEvCiyFs4WB8+1SGfYvgDBSpMS/g3/FlHvQ=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=IQRSrQGUC2FD1lJJzr8qh46wjaoBTNZTPv6Jg/AICzMKxXhpfNU24gJ05AQvApu0m zJrwLqUNHVdPNX2vBCYyNvofMg6ryRIfHybd0BxpFlimPgqS4e0c/WwJG/UZmy9lLN c2vT0pNPnM44D2279sacROWGzJTtaA7DK8ohHPCMgywV8at6qjorJII3Vk7StJmajO RKFINeeJ6ned/z1FHySjLTuzmQxdVRgxHW1QyaqKVvPeBlAh6MQThzKGnubi1SbBHk IgD9Q0t66iV3z35uTcgSIU+ST/sGhzg14DHvJ9YyjM0C+FFYWAhAdZr53+xLNoAVol z7rEqkjaZ5vjA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5FDD4CA0EF1; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:24 +0200 Subject: [PATCH 5/7] media: i2c: dw9719: Update PM last busy time upon close Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-5-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=819; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=q/vBSjo9Qq/woAcBDvdCyCNYGx0lB2/sChYnvyiSRpE=; b=ShTf9qRg6/Sm4Xrcbbqdp2eN1v94VVjWsY5fBe13VbUi4gs32pfRF8Q6BROFE5g5WAEGVeiUs gJ4iRy4n+AXDuFpk7PSJIRxdb6B/gNIEjdN1Iv65coyBc/4L1JYvm9L X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Val Packett Update the close callback to match other similar drivers like dw9768. Signed-off-by: Val Packett Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 61758a9450aee20c9226e879a15eccfced9a3e96..2952d8064899e4ac29f3b1af026= 92fe8043ccfac 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -284,7 +284,8 @@ static int dw9719_open(struct v4l2_subdev *sd, struct v= 4l2_subdev_fh *fh) =20 static int dw9719_close(struct v4l2_subdev *sd, struct v4l2_subdev_fh *fh) { - pm_runtime_put(sd->dev); + pm_runtime_mark_last_busy(sd->dev); + pm_runtime_put_autosuspend(sd->dev); =20 return 0; } --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E24B53009E3; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; cv=none; b=p0MPBqHBhJuknq3ERXP99J9rBetIy/S29+lF3aQyFgLAXnEiQTa0NeIpwmAQ5+z8DYckHdRVM0ICeBWwD7hzpNlJ2UubJXFRy+fNbxzqGfTERrboqGjvOPpeKHUv8QoX+Xy2scCzHMj3WA+E8tTKeHY/zX/R6ZL5slugHm9r7rA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; c=relaxed/simple; bh=ihLZoFKEWHm8zbszslbomfdYpAxFXtTMVcRphVusQvc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=uTrBpgc6IktAd0nsVNJhv9awDGj3jNgNU2fxMvtA7lk/8O9Vm/2op0EfZHSFT8B+euU7BrCLJKrtdld+WgIecEnTZ/vMrL55SeetpgqcphZByXOuQq0XGLle18SmzEw30aUXBLl95uD/eZoVTzwghGBJWZewam2u6fTZC/aoQ0o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=jTtoD0Na; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="jTtoD0Na" Received: by smtp.kernel.org (Postfix) with ESMTPS id 74D7AC4AF0F; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=ihLZoFKEWHm8zbszslbomfdYpAxFXtTMVcRphVusQvc=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=jTtoD0NaFAS30XwGZlkMyXjGay8tffqhOx3HGz4DHVUclZmyvFIdSzYEOXBVroX65 7oDS4O9aGFgChRBGyizxJbgImJD6cyXXE6N1q0KZLlCTA6riQYHG0Agfgs8OxPOH85 4PmvsvDaVr5GyNJHdEg5DJH4YBXj+enP4PP4J+DKhLw9C0gN3UYLI6m2laJ6C65ttk 4Ob+ipPeBo3jik8HMfkrjb8MqUN0wn2ydnw1rkMeYgnE/IeOp54/3Tv3BQS1VUXEnO CnPAE4GHqV3izWwqK7jtBKRXYICTgmDe4xPhC567Ia7RewNetuW6B5KmzJYPMa43Zm VZnkMv9g5y0JA== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CC8ECA0EE9; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:25 +0200 Subject: [PATCH 6/7] media: i2c: dw9719: Add an of_match_table Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-6-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=1283; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=AM7Z9vkbnJudtfa3G+0qxABOY9vGE5baE+qTSnLT+Z8=; b=Ev3iti+ynUBlBW3HpTug9XQTFEc2s+o/aUidJ5fnCuGNFFCKRRHDsHVUjfTFQrtcPHm+HXdJ8 EzAPLWOxrY5DRZdNbOKnuXSQ+59OMHDVaHGqr2me0VjTTZHceNg3TdG X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Val Packett Allow the dw9719 driver to be attached via FDT. Signed-off-by: Val Packett Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 2952d8064899e4ac29f3b1af02692fe8043ccfac..63c7fd4ab70a0e02518252b23b8= 9c45df4ba273d 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -419,6 +419,14 @@ static const struct i2c_device_id dw9719_id_table[] = =3D { }; MODULE_DEVICE_TABLE(i2c, dw9719_id_table); =20 +static const struct of_device_id dw9719_of_table[] =3D { + { .compatible =3D "dongwoon,dw9718s", .data =3D (const void *)DW9718S }, + { .compatible =3D "dongwoon,dw9719", .data =3D (const void *)DW9719 }, + { .compatible =3D "dongwoon,dw9761", .data =3D (const void *)DW9761 }, + { } +}; +MODULE_DEVICE_TABLE(of, dw9719_of_table); + static DEFINE_RUNTIME_DEV_PM_OPS(dw9719_pm_ops, dw9719_suspend, dw9719_res= ume, NULL); =20 @@ -426,6 +434,7 @@ static struct i2c_driver dw9719_i2c_driver =3D { .driver =3D { .name =3D "dw9719", .pm =3D pm_sleep_ptr(&dw9719_pm_ops), + .of_match_table =3D dw9719_of_table, }, .probe =3D dw9719_probe, .remove =3D dw9719_remove, --=20 2.50.1 From nobody Sat Oct 4 11:12:00 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 37EDF3019B6; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; cv=none; b=JOVYkD72g3erurr5LQ039/JV3DeUsoOn3U+Yv2lySlU25kXKnnVSfa7sgPW7uqOurOXYmOmujsHlWVlop5ZtqKloilrbpiUg3BT1avGZAsvJclEzvbi5DR3odhB9pFPQH/wMxdCCPGfOKEbdv8Uskt41bYVHzJG1ln2T38XmhY0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1755450585; c=relaxed/simple; bh=oPsbg1tP3AApN1JK/GZ+8hwHkKQr260jQSdxD+x2O9k=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=g+PFVYpgvo7cxaORdBcWJAseOsj8a948n1KuA+qLtiJhfPyOMzDULdDvim9KE6Iyf+P0emQwQr02ghypDnDlYIzEdrYrbEbMruXU2okxJLKmHhK1wufnHF/e1yZc49EPlbrXCax3+SMlUt6QFGQ98DxCTHKU8YKtVgjAsksQ38Y= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=DmU5lAC7; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="DmU5lAC7" Received: by smtp.kernel.org (Postfix) with ESMTPS id 8700AC2BCB8; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1755450584; bh=oPsbg1tP3AApN1JK/GZ+8hwHkKQr260jQSdxD+x2O9k=; h=From:Date:Subject:References:In-Reply-To:To:Cc:Reply-To:From; b=DmU5lAC77VNl0gTntGzmMwNejE4HBN4OwwvN0RHxvPvj2mboq15U8s4CQPEQwU82z 2daJ47sUuoHhpaGh8k5yIXuK8vJ+EIrRT/Y5dkFeawgK3qIedYCXDZpQOeYwK1Jsmk tVfxR94JJQcN2h0IWmBs7Q6ommrHcXsy79nin/HcCXU9MkqTx5RDH8WWEeMbUkU3qf pWj0SvWkqMiYqwHDCFvaP2cYIyB4zs9y0dxSLm0oCDgIv8p/Sd3yWZ8dp49xnuweDI 4ZvqDJkK4dz1a0DcMTaHPQae8T2paZ0YHmASJncmr/NSlSJ5Qk+jwdsk5P7WVqocdE DGGJw5vSauMWw== Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7AAEDCA0EDC; Sun, 17 Aug 2025 17:09:44 +0000 (UTC) From: =?utf-8?q?Andr=C3=A9_Apitzsch_via_B4_Relay?= Date: Sun, 17 Aug 2025 19:09:26 +0200 Subject: [PATCH 7/7] media: i2c: dw9719: Fix power on/off sequence Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20250817-dw9719-v1-7-426f46c69a5a@apitzsch.eu> References: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> In-Reply-To: <20250817-dw9719-v1-0-426f46c69a5a@apitzsch.eu> To: Mauro Carvalho Chehab , Rob Herring , Krzysztof Kozlowski , Conor Dooley , devicetree@vger.kernel.org, Sakari Ailus , Daniel Scally Cc: ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org, linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, Val Packett , =?utf-8?q?Andr=C3=A9_Apitzsch?= X-Mailer: b4 0.14.2 X-Developer-Signature: v=1; a=ed25519-sha256; t=1755450582; l=2482; i=git@apitzsch.eu; s=20240325; h=from:subject:message-id; bh=WHp/XEAFOtAOYg6kNIcSWN2unJmOfneuc2Td8tZ6uiA=; b=NJpVHJJszElHrcLxB/I+5PDwFas8+W1oFx/BrnqHoTG0l2JCXVt9E+ZVwigf9wxE3C+BFnwvZ Zfmn26gH1EMDwjWpYBJ1sP5M72RPg2CtSw2YF8yWb+DQu8GSP9bEYEl X-Developer-Key: i=git@apitzsch.eu; a=ed25519; pk=wxovcZRfvNYBMcTw4QFFtNEP4qv39gnBfnfyImXZxiU= X-Endpoint-Received: by B4 Relay for git@apitzsch.eu/20240325 with auth_id=142 X-Original-From: =?utf-8?q?Andr=C3=A9_Apitzsch?= Reply-To: git@apitzsch.eu From: Val Packett The "jiggle" code was not actually expecting failure, which it should because that's what actually happens when the device wasn't already woken up by the regulator power-on (i.e. in the case of a shared regulator). Also, do actually enter the internal suspend mode on shutdown, to save power in the case of a shared regulator. Also, wait a bit longer (2x tOPR) on waking up, 1x is not enough at least on the DW9718S as found on the motorola-nora smartphone. Signed-off-by: Val Packett Signed-off-by: Andr=C3=A9 Apitzsch --- drivers/media/i2c/dw9719.c | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/drivers/media/i2c/dw9719.c b/drivers/media/i2c/dw9719.c index 63c7fd4ab70a0e02518252b23b89c45df4ba273d..dd28a0223d6ac980084b1f661bd= 029ea6b0be503 100644 --- a/drivers/media/i2c/dw9719.c +++ b/drivers/media/i2c/dw9719.c @@ -95,12 +95,19 @@ struct dw9719_device { =20 static int dw9719_power_down(struct dw9719_device *dw9719) { + u32 reg_pwr =3D (dw9719->model =3D=3D DW9718S) ? DW9718S_PD : DW9719_CONT= ROL; + + /* + * Worth engaging the internal SHUTDOWN mode especially due to the + * regulator being potentially shared with other devices. + */ + cci_write(dw9719->regmap, reg_pwr, DW9719_SHUTDOWN, NULL); return regulator_disable(dw9719->regulator); } =20 static int dw9719_power_up(struct dw9719_device *dw9719, bool detect) { - u32 reg_pwr; + u32 reg_pwr =3D (dw9719->model =3D=3D DW9718S) ? DW9718S_PD : DW9719_CONT= ROL; u64 val; int ret; int err; @@ -109,13 +116,15 @@ static int dw9719_power_up(struct dw9719_device *dw97= 19, bool detect) if (ret) return ret; =20 - /* Jiggle SCL pin to wake up device */ - reg_pwr =3D (dw9719->model =3D=3D DW9718S) ? DW9718S_PD : DW9719_CONTROL; - cci_write(dw9719->regmap, reg_pwr, DW9719_SHUTDOWN, &ret); - fsleep(100); + /* + * Need 100us to transition from SHUTDOWN to STANDBY. + * Jiggle the SCL pin to wake up the device (even when the regulator + * is shared) and wait double the time to be sure, then retry the write. + */ + cci_write(dw9719->regmap, reg_pwr, DW9719_STANDBY, &ret); + ret =3D 0; /* the jiggle is expected to fail, don't even log that as erro= r */ + fsleep(200); cci_write(dw9719->regmap, reg_pwr, DW9719_STANDBY, &ret); - /* Need 100us to transit from SHUTDOWN to STANDBY */ - fsleep(100); =20 if (detect) { /* This model does not have an INFO register */ --=20 2.50.1