From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p03-ob.smtp.rzone.de (mo4-p03-ob.smtp.rzone.de [81.169.146.173]) (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 2A4C331159C; Sat, 11 Jul 2026 06:05:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.173 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749914; cv=pass; b=ag4eZ4dYdyjRME44BcrvESBH4ZIwgmvfaIDpwLPWJcY+FrXnUlpbZMNdnOKwf6ym07BzmgIDcauwYzau6nGd8KoXqa0TO7xDlUygnkGpTq2F6T0byZxqpHhe8hqJmuk2oC8+9VKFkM1NricuTkgqU72dEORMUuJsRMhvsJA2qNA= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749914; c=relaxed/simple; bh=Q8ShPXJJbkie1XZ9aPxZP9g7/79FhXw3B/IJX9O5rLw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ICLLHZwXrIBrzuHAWyvAFhCui/qleYnKCEBn322mXw7ZT50c1CN/k1YekPmKNq56b3o8vr0RvsbNwQw77ZyKdGOe1bTPHbuTmuqwodJqMMsYd0DRv8TlTntQNfxnQWCTY2LkDwse7S1z1ygQC4gtuAciguLblhIdmMNP1Zn+rRQ= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=p/xvyqSZ; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=m+5PvXgf; arc=pass smtp.client-ip=81.169.146.173 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="p/xvyqSZ"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="m+5PvXgf" ARC-Seal: i=1; a=rsa-sha256; t=1783749728; cv=none; d=strato.com; s=strato-dkim-0002; b=AcgG7Rib40rrNR3mFEY7DHvrOLVXjaSkOl6m849kJGle8CqgRcZynCqA1SRsWzAiw+ pszbceXN9Y3FXgq/c91kxei9DQmp+LE6ioeyRXyabhOacofEJDlyMTxCFLrq7mmXEHHj Un3ADiU0rP3Zwo7V6Da86nlA2btM4+jxs2M7+HXbRAH7be79vJG0NkmdRhlLCmDuhPQD hmgBD94cBn922nD9xVPftDJUUQyg5LPiEjIEKK2xgCaXLOBSXRHWx2Rw6cSgwheP2fFi I+pgzLr6nZexennFQWkczJfo3UHn9AetGsnNz4CtURE2bkX7ZzdxwehDXl5H/LB83Sl6 lPmQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749728; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=QXR5Qg49Kg9ruecbogfudI2YBbpJhxt31ZHIrx9WnZU=; b=cyR07WQYwivBNVI5PZc7/pMiuxlrC5ioHhl0kQ4PkTYddWwoYbJvOYfhlP3Rbm27c9 tlumJkt5ZSI3aHnYoUv62PDVHM4kO0LkAatG3uBaF9JOYN+RVXaLHQYJH5NA5VUNFihg k0MtSVDLZAOq3DA7rh0/jbBElYEEAp08eVjaOYCfDQbw3p70qZj22RzGXYxbhKju4lXu R26dYUGKB6UiJz8rmSWX/2jhxRTcO4nbgY1zdReulfWLd+ymsSTGhUUnzMyXtGkmebxq sWPfOb9ApIz5ukpCrJTGc8SUAOtBbMz3Vvc9974wjEqb65ICmDXohyFAJxbI7WnMi2gY fx7w== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749728; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=QXR5Qg49Kg9ruecbogfudI2YBbpJhxt31ZHIrx9WnZU=; b=p/xvyqSZp5epJfPeBZNYTZOluSU9uGqiRFNq+G8iHffcdGif+9CipG4pS8TBQ0SXyw z3gq8dto40k92lPZS1n/vmYDZJkrLsiYwF5k54z6akd8ugdCR2XcCIJTVbgCfl3rp8z7 WsK5EfMemVpC+zIrXaop5PHLYyP2kq+lcms5V7Aq5snurT2neHZMOuRCkp/BBSop6F0R hUcuY01PYjgfkaQTlV1Tbr2Pltu+oRcNjn4VVR2Yr/Ic+rLXpfBUTqHKTUeWtccBDCZF wNkVRdJ2OMZ7sIrJQ0085dmOl0svaNIrrwG3diECs/p7r5YcoGmO8sh7DuRezaT2/TXJ KNTQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749728; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=QXR5Qg49Kg9ruecbogfudI2YBbpJhxt31ZHIrx9WnZU=; b=m+5PvXgf0ms6g80KPOtqTg3UPfv+ARI8gG/NdH8CV7b/IdiiyD7Vs+YFaOfvGiO5dE a2xAtOZLGBXI7S4KZaCQ== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B626Ghl (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:06 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 01/16] dt-bindings: twl-regulator: Add bindings for exposing ti,twl4030-regen Date: Sat, 11 Jul 2026 08:01:48 +0200 Message-ID: <00718b18253a764c2a7c9a2b95c3b8c411796583.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond FIXME: not reflected in the bindings +Reguired properties: +For twl3040 REGEN signal: + - regulator-min-microvolt: + - Same meaning as in bindings/regulator/regulator.yaml, but must match + regulator-max-microvolt. + - regulator-max-microvolt: + - Same meaning as in bindings/regulator/regulator.yaml, but must match + regulator-min-microvolt. + - startup-delay-us: + - Same meaning as in bindings/regulator/fixed-regulator.yaml. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- Documentation/devicetree/bindings/mfd/ti,twl.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/mfd/ti,twl.yaml b/Documentat= ion/devicetree/bindings/mfd/ti,twl.yaml index 9cc3e4721612e..183fc015e40ad 100644 --- a/Documentation/devicetree/bindings/mfd/ti,twl.yaml +++ b/Documentation/devicetree/bindings/mfd/ti,twl.yaml @@ -46,6 +46,7 @@ allOf: - ti,twl4030-vusb1v5 - ti,twl4030-vusb1v8 - ti,twl4030-vusb3v1 + - ti,twl4030-regen ti,retain-on-reset: false =20 properties: --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p03-ob.smtp.rzone.de (mo4-p03-ob.smtp.rzone.de [85.215.255.104]) (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 5124831159C; Sat, 11 Jul 2026 06:05:16 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.104 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749923; cv=pass; b=oyQY3IMMAr84b1MYoBgbB3CXME93oLH95EDLx0Ohs0vd2LYtg5RBl5hxY91Bh921aM2i/fQxTUAtfAtkyayX7nHsmUaFE9LSVZyleeTZn+9xgLIXoEn3WnypP6WmQpL34g0rO0b2ywgW+JdYIPbTCvm3kd889VX0OAJ05T02Gm4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749923; c=relaxed/simple; bh=dimLf08yaYuVTXwXLVmSUQtgyZHrl56dsYX4wDKhUfo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ubgWuAeaUracbTkHWA3RzaJ7Nuznfyo+MEyY1jC2oOVzo7boRcAPJYPlnfRuSYKEN0PEvlU2NcvNVerES1q2xwAmNB7k73vXFHUJp7CAHGj8BYTfAPOiAfkPsVeoThS7U+agYgtRsvfFT+mymZxnVV6ZDJI6q/Iscq2Pc5g+tRs= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=XY7dnCSJ; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=hDVrjEmI; arc=pass smtp.client-ip=85.215.255.104 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="XY7dnCSJ"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="hDVrjEmI" ARC-Seal: i=1; a=rsa-sha256; t=1783749729; cv=none; d=strato.com; s=strato-dkim-0002; b=UUOLd6ZyshpRymv4dMO+rXsVCXV2tZHyHRsZt7+F2cmqOcPlQnOcbv/LSWzLaNDgB/ YNylaLvpItMRoF/TlLWQfY0AeqwQHyjViw6MRXXF/0RCvTe5vR/1vXCLSG3jEZNdHF+K iK5JSu/65A22CTSQsXAwTor+CE9wWmRpOoNsSh2+s0M7KhzCc4Mq3PLjdA96Od9zn7ai Zrrw5PoMJ06dQHAFe2ppTcHA2AqtYW4oGfmxs6LN3dcjEbB6A8LRss2t/31h/fe7QFhu VVJdiMcxyZQLEzc3qaDIQdejt+nBDFFt71gwhaXSkT4m0bG0CnTMgYaJmuPmSunE3ONm 8vAA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749729; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=5Okt1Bb33hbe5/L8F0+NBgH6ufNIVFYW7HZ0thAd5DA=; b=EOiIll0xUNOQO16tRr+AFZxfJKyD/dMmzbBK9pDwDM8iUEPho0teVtwsyY/dmxBJy8 /ZkfclCgKDABxl6k9Hrg9rfw3+/FMnOuFN9AhoAS84SA/qaNbWpDNXgaRv2ReGkSluwe M/+z3p4tXw55Nsl393cMfgA+me91QxOzddKDiu+wNFWrxtjndyfYXvTrZHssWaC1V+D4 ArROF93vwHJADQ52hfU3io1DEvXR8Sc20KIE2SGYLNghkjXefBsZP6rASsPOKxhdl9cz 436vZEDGtUTtcMVT90HujVVbxUYRCgnecoUk+Ho5+lrVW9lSrlkyklHjxIoxm2eBdjSs R70A== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749729; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=5Okt1Bb33hbe5/L8F0+NBgH6ufNIVFYW7HZ0thAd5DA=; b=XY7dnCSJueGYOy9UvXVGd6wc/nYTWW4OvK0E7XnuX+uFv5AaYufWrAVdAO8Sgw3zP+ fJ5158HiEExFYOBnPgUgSjhH5fn62sU/w5ylGXg350dxNf4Hou6YLfVQlldraiGwEIPr dcZbh3DHadmjIVrBjhrcI0cKVGfgUNHTW5VJPdJ3nLyw/Ii6LmWyjyzfRLcyDH2UYSIV zzKfWcfkHoD05foa+8jVbnYuujJARRVAqXUgLU9K61zGsLEQm5eyw3tpiRoRKab2aCTI wgl2UI+u+QxxG7f/0jILfh6szUL7zFXiLXW4rs0XEoGsFHJTqk0P3nRk7OhDnoOHQK2+ j7/A== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749729; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=5Okt1Bb33hbe5/L8F0+NBgH6ufNIVFYW7HZ0thAd5DA=; b=hDVrjEmIFOAJHf7Fq5bMo30S77ZameLirNq7/VgCssyuhHYXNrG8TlO2qfaxIuT8fw tWgU5Cx0gbYidKyBDHAA== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B628Ghm (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:08 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 02/16] regulator: twl: Expose the TWL4030's REGEN signal as a regulator Date: Sat, 11 Jul 2026 08:01:49 +0200 Message-ID: <1746667e5c17e2d39fc0747d7e098b32b3d7b479.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond This is needed on some boards (for example, the Pandora), where REGEN is used to drive external regulators. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- drivers/regulator/twl-regulator.c | 52 +++++++++++++++++++++++++++++++ include/linux/mfd/twl.h | 3 ++ 2 files changed, 55 insertions(+) diff --git a/drivers/regulator/twl-regulator.c b/drivers/regulator/twl-regu= lator.c index 5bacfcebf59aa..d883ee8abec32 100644 --- a/drivers/regulator/twl-regulator.c +++ b/drivers/regulator/twl-regulator.c @@ -451,6 +451,16 @@ static const struct regulator_ops twl4030fixed_ops =3D= { .get_status =3D twl4030reg_get_status, }; =20 +static const struct regulator_ops twl4030signal_ops =3D { + .enable =3D twl4030reg_enable, + .disable =3D twl4030reg_disable, + .is_enabled =3D twl4030reg_is_enabled, + + .set_mode =3D twl4030reg_set_mode, + + .get_status =3D twl4030reg_get_status, +}; + /*----------------------------------------------------------------------*/ =20 #define TWL4030_ADJUSTABLE_LDO(label, offset, num, turnon_delay, remap_con= f) \ @@ -511,6 +521,24 @@ static const struct twlreg_info TWLFIXED_INFO_##label = =3D { \ }, \ } =20 +#define TWL4030_SIGNAL(label, offset, num, remap_conf) \ +static const struct twlreg_info TWLSIGNAL_INFO_##label =3D { \ + .base =3D offset, \ + .id =3D num, \ + .remap =3D remap_conf, \ + .desc =3D { \ + .name =3D #label, \ + .id =3D TWL4030_REG_##label, \ + .n_voltages =3D 1, \ + .fixed_uV =3D 0, /* filled in from DT later */ \ + .ops =3D &twl4030signal_ops, \ + .type =3D REGULATOR_VOLTAGE, \ + .owner =3D THIS_MODULE, \ + .enable_time =3D 0, /* also filled in from DT */ \ + .of_map_mode =3D twl4030reg_map_mode, \ + }, \ + } + /* * We list regulators here if systems need some level of * software control over them after boot. @@ -536,6 +564,7 @@ TWL4030_FIXED_LDO(VINTDIG, 0x47, 1500, 13, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V5, 0x71, 1500, 17, 100, 0x08); TWL4030_FIXED_LDO(VUSB1V8, 0x74, 1800, 18, 100, 0x08); TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08); +TWL4030_SIGNAL(REGEN, 0x7f, 21, 0x08); =20 #define TWL_OF_MATCH(comp, family, label) \ { \ @@ -548,6 +577,7 @@ TWL4030_FIXED_LDO(VUSB3V1, 0x77, 3100, 19, 150, 0x08); #define TWL6032_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWL6032, label) #define TWLFIXED_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLFIXED, label) #define TWLSMPS_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSMPS, label) +#define TWLSIGNAL_OF_MATCH(comp, label) TWL_OF_MATCH(comp, TWLSIGNAL, labe= l) =20 static const struct of_device_id twl_of_match[] =3D { TWL4030_OF_MATCH("ti,twl4030-vaux1", VAUX1), @@ -570,6 +600,7 @@ static const struct of_device_id twl_of_match[] =3D { TWLFIXED_OF_MATCH("ti,twl4030-vusb1v5", VUSB1V5), TWLFIXED_OF_MATCH("ti,twl4030-vusb1v8", VUSB1V8), TWLFIXED_OF_MATCH("ti,twl4030-vusb3v1", VUSB3V1), + TWLSIGNAL_OF_MATCH("ti,twl4030-regen", REGEN), {}, }; MODULE_DEVICE_TABLE(of, twl_of_match); @@ -583,6 +614,7 @@ static int twlreg_probe(struct platform_device *pdev) struct regulation_constraints *c; struct regulator_dev *rdev; struct regulator_config config =3D { }; + int ret; =20 template =3D of_device_get_match_data(&pdev->dev); if (!template) @@ -615,6 +647,26 @@ static int twlreg_probe(struct platform_device *pdev) case TWL4030_REG_VINTANA2: case TWL4030_REG_VINTDIG: c->always_on =3D true; + break; + case TWL4030_REG_REGEN: + if (c->min_uV =3D=3D 0 || c->max_uV =3D=3D 0) { + dev_err(&pdev->dev, "minimum or maximum regulator voltage zero in DT\n"= ); + return -EINVAL; + } + + if (c->min_uV !=3D c->max_uV) { + dev_err(&pdev->dev, "minimum and maximum voltage are different in DT\n"= ); + return -EINVAL; + } + info->desc.fixed_uV =3D c->min_uV; + + ret =3D of_property_read_u32(pdev->dev.of_node, "startup-delay-us", + &info->desc.enable_time); + if (ret) { + dev_err(&pdev->dev, "no valid startup delay set in DT: %d\n", ret); + return ret; + } + break; default: break; diff --git a/include/linux/mfd/twl.h b/include/linux/mfd/twl.h index b31e07fa4d516..d249b4b22c898 100644 --- a/include/linux/mfd/twl.h +++ b/include/linux/mfd/twl.h @@ -738,6 +738,9 @@ int twl4030_sih_setup(struct device *dev, int module, i= nt irq_base); #define TWL4030_REG_VUSB1V8 18 #define TWL4030_REG_VUSB3V1 19 =20 +/* digital output signal for enabling external regulators */ +#define TWL4030_REG_REGEN 21 + /* TWL6030 SMPS/LDO's */ /* EXTERNAL dc-to-dc buck convertor controllable via SR */ #define TWL6030_REG_VDD1 30 --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p03-ob.smtp.rzone.de (mo4-p03-ob.smtp.rzone.de [81.169.146.174]) (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 C14FD31BCAE; Sat, 11 Jul 2026 06:08:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.174 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783750098; cv=pass; b=spaLiqcPCYTlhL6Y9wtcCuAYk2zI4WJZFZz5w+O9ESsqfcUY2SVCUDFEGHYxcSkGl7BM8DktDmjqR2kKgN3RrB4R+nAOGRpZ9tQ2NYq1xSZgeo5Za+3dbW8gXODpclCB3SpYKwa+oxoKj+SqU/VwsQyaKWC5es7YoWWoEmvavdg= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783750098; c=relaxed/simple; bh=dPmFEXPLHnRYfoZJD/I6aluZXKbNp8YLlXFCVB6SM3k=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Q1YHUu27CP1uqV8EFT9bXPGZFaoWsL57R+Fzt/dhjMIDKVOR3PHe/3f076eL8UKBsdfjZovqhbIPkxqLT9m7312tcirJ7Vcem+XnAqytJ3cFFgWHwUPBcyimztOrMkszPAZXC4VCvEg/mLwsYb71Y3VRPKmaHnd+2F+NgaJVg2c= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=W1Ae092n; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=DtMnNYBN; arc=pass smtp.client-ip=81.169.146.174 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="W1Ae092n"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="DtMnNYBN" ARC-Seal: i=1; a=rsa-sha256; t=1783749730; cv=none; d=strato.com; s=strato-dkim-0002; b=BbY7B4vaCGiOVfo8vBc77M70XHz9IGfhm8sXY5E1C90pMni4bdample4iB0RflMbOQ 6N5mxN+uU17fC264F9i5rUIcl4NxQitAhZ/nbGMGOUYYlO/f4KUkFmbMV6DhAT2ON+un fEbYvnn7wb/KmNm/zRJR1y2Vk1l6a60K8KEkNEBnOhvlT+alLanspRTXX5zm5ttGoTa+ ndxjf15TA7kFt6+vqHryEI7QxrQDXpBf5JoKLylRuGQNXt6gq2xnVkv80MSJbAHgQZRL 8wHOOInfVjy6asmkfEkuUfbyXlOg5VTr9vi3486XNN7eTcVNkodnXHg2NVOgcCJqUHwR mEeA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749730; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7tiROIViVkULix+8N5uu/OdfiKd0ir+RKoC0z/PkkN4=; b=EE+olW3dQrCKi/Uys+SgAPhw5TFHHdY3n86Ih1NClrouAeHXujJoM+ovhWvEY0ANUD /CoTuOsbxUMsDkUx3aIzBVzrdi80mpoSF+D+2/jRcUZU1lZRrZtYn0j1c51yve1AJ2iL wWANvZPe9psDVGA+Yll2M7GffGMOrgBpHcDWjTFqhgR0sgzxSu8tB3mgfv2cMOgS4xSx DKcNm4gRd17AyO7l8vrVnkdVoMoId0oPKPAtHIsqSGooL58dZHDABVKIT+rz2Cw5NCEX lpV0EUuWcg+qPzqlOswT6PjKpb4ntSuU+/x0sdALNFbqF5IVsQm6dVr9lcgQ0tkBGFKy 0bAw== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo03 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749730; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7tiROIViVkULix+8N5uu/OdfiKd0ir+RKoC0z/PkkN4=; b=W1Ae092nFtKFWlOFhN43fYdetRQnkPVHcs8uVXzvbgFa7i4ZlwpBsCIV/jIKOrrJ6i nlB6tApUSIka+/QVxypBmfIHoq6lYLULc+GUu8j0gvjkk+E/+kKlJIgJpelieLakNhod AkXrjs25JulRxPa2UXyDrXc9BXxvmSKYm3FTQEAQQwaMNxcC2S5yRPQ+v8KBsV/19uyM PiDsfzfzsLNVf5paWTSRMvv4anIzQNjRQlnd3ycJhD1bwCpu9t2MO/3bP4TOJH34pEeJ jxIAmCckXWiy/1tAGq4gyWE/zy3TnlfBLYAwn/IQQ4bQp543URQqIZPANZkP6k20ju/O 2HFg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749730; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7tiROIViVkULix+8N5uu/OdfiKd0ir+RKoC0z/PkkN4=; b=DtMnNYBNF/gsV5P1J0NnLK++ooZfquiYReodGVFhPEKpWaCNfZt1prtneK/uVV25m5 wE/qOc48RXn1z4pziVDg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B629Ghn (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:09 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 03/16] arm: dts: twl4030: add twl4030-regen child Date: Sat, 11 Jul 2026 08:01:50 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond This is needed on some boards (for example, the Pandora), where REGEN is used to drive external regulators. Signed-off-by: Grond --- arch/arm/boot/dts/ti/omap/twl4030.dtsi | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/twl4030.dtsi b/arch/arm/boot/dts/ti/= omap/twl4030.dtsi index 07b9ca942e78d..e6f80b8f0a731 100644 --- a/arch/arm/boot/dts/ti/omap/twl4030.dtsi +++ b/arch/arm/boot/dts/ti/omap/twl4030.dtsi @@ -112,6 +112,20 @@ vsim: regulator-vsim { regulator-max-microvolt =3D <3000000>; }; =20 + regen: regulator-regen { + compatible =3D "ti,twl4030-regen"; + /* + * Since REGEN is technically just a signal that actuates an + * external regulator, we do not know what voltage it will + * eventually have, or what it's on/off timing should be. + * Therefore, disable it here; boards that use it can override + * the status to "okay" once they have set the + * regulator-{min,max}-microvolt and startup-delay-us + * attributes. + */ + status =3D "disabled"; + }; + twl_gpio: gpio { compatible =3D "ti,twl4030-gpio"; gpio-controller; --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.123]) (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 79B561FD4; Sat, 11 Jul 2026 06:02:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749765; cv=pass; b=BaEsK6/CIs/rauwEkdkb4kifGb+eOjMp+FkNKiv1JzhiXyhS7bW8B5Q3NHTgV08v2X5MMd8gzp3TrCvSxQYE15G9aKhFdubHXC+vWWpL9A55mthjzE36GGt146ERiRrXN3ISt0BrYPdb/xLs2k//ujBi3lQj/UoszDo+n1y4Pes= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749765; c=relaxed/simple; bh=gVLH3Gll/lrNoxOu6XuDqu7piiCuHfi0FO3rxwyky1U=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Gg1EtC/6TEXhHVAaEFZsEAiVCDGyfdrKOjZl4EIa1ILU1k7tn8xKd6kiw4GbmCmsDJnaCOhMTB1yjgZMHcRb7tc7P4lTMroTsj/5GmRIY7ayZEu+esj4hF6ZMXPoemwhhI+kf2kyvdQzV15XjWFsKIBJbD4Wyll/E9EZzzy//2U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=ODAdJdCE; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=WlvwVONf; arc=pass smtp.client-ip=85.215.255.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="ODAdJdCE"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="WlvwVONf" ARC-Seal: i=1; a=rsa-sha256; t=1783749732; cv=none; d=strato.com; s=strato-dkim-0002; b=AxOWz8SVP1S6FOK1V10S8ZhkMMYVS2OCMbs43ygVVAZ8CKNTz01G+E3cIfvQLEayR6 jqyYAvoq2G+wAzR3Y9G2O6B3vpvqzN7aWO5PeobQF/x4Qg/4UqngcKGHDZz1iAUWQSZK 2FKFXSduwAjPkkH3efcWc3DC7W4DUiCw4vDoHTrplsQJQQ0s9hBhwZj5kD70BtXIx4yX 8LI631cCp4Y9We/AlbQATRmQJBg2lgpwj/v/ZfPUjiuKZzSJSZWkW+B7GHZXDD5jw2Od IsV5QOIecP+lMoIdQQkgriOw7q9E/5T9Gn+VJnSwrq0RuTfzc4di9SiGICN0dz32q2z4 f55w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749732; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=ZB4drwZeCzFntaUbA8UcFyakx9+hGBaPBgbS+EjwmC4=; b=l4WFSASvq/2zX/sPgvqRYr3ZmbRO0tbYaWlwn3hAPdh5QAMzl5Bip0rZ6L/TFNBp0l TaUCmVp7x5ZGPbWZ0rYDrNP15p8CE8CplFPplOb6GZ3UzvCAGit4ib3smILsxNtRdH6c 3vT/P2UFJqj3MjHisc/o3b1qmT+GjhTzHONnYELCNQrTh3Jh0d3UBM0wKFy7ZSYn5cdi eY4b+2WFoYQDlV8ug/6EagyXBB5GbUET+T0lsB/3PluXtEYIfhu8ES1f7a5uRFq8JiW/ R+o2At4b65nilUOCHtC+NyPD5b3GmnbMtLPXMuGTyVIRU4xwb70gpa0i7Bc0Pjlyt4OI ybzQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749732; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=ZB4drwZeCzFntaUbA8UcFyakx9+hGBaPBgbS+EjwmC4=; b=ODAdJdCE+yCfnSBSmGovKKmGSNhHP8ROyYNBa7qHxAeLe4Ooqbr6zwQ7rK7ATdSRks MWFBNA53+Jmcv190NNht1gEYaUcx1W95J3OKKfagSGVyu8bNwkgJLLLjNGEZxZWFB70g Uo+GUi1We4MHyZB4s143zxxkm2bd7gtoMEdiqtVSpfRx8LIhKNrs3RUqdPJ4X5eUzRrR 65BeDX1BHjfgpPU3LXI8va8kFDUcSEMbKK3gp2PnhXTBvnDO34J8zDKqMSVu3WSrm66K FNQRj9XTqM2cKPvZ/hNLKbCGTB16GfwLT8Vin6pbrGXxXRFy+jf3OjuLpKWsKkY1Czdy JJ2Q== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749732; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=ZB4drwZeCzFntaUbA8UcFyakx9+hGBaPBgbS+EjwmC4=; b=WlvwVONf4WYr92wgA8G3MKGSSueqLjRrbW6fKtwcUtkCLnHy0dflC3i5XWSwwIh9MT onJo+t8VZVmM0oApg7Bw== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62AGhp (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:10 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 04/16] arm: dts: omap3pandora: Populate DT data for the TWL4030's REGEN regulator Date: Sat, 11 Jul 2026 08:01:51 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond On the Pandora, REGEN is used to enable TPS61029DRC external regulator which runs a 5V power rail. The 5ms startup delay is taken from Pandora's 3.2 kernel, where it is labeled as a "guess". So it may be possible to activate the regulator faster. On Pandora CC units, this regulator is used as the input to the LCD power supply. Therefore, problems are likely to arise if the regulator is ever disabled, so we add the regulator-always-on property to compensate. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index 06c5b23589991..a0116823ffdef 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -486,6 +486,14 @@ &vsim { regulator-always-on; }; =20 +®en { + regulator-min-microvolt =3D <5000000>; + regulator-max-microvolt =3D <5000000>; + startup-delay-us =3D <5000>; + regulator-always-on; + status =3D "okay"; +}; + &i2c2 { clock-frequency =3D <100000>; /* no clients so we should disable clock */ --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.120]) (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 19A90136358; Sat, 11 Jul 2026 06:02:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749767; cv=pass; b=iXpGsK95MXDPZixnMNQdleIgrhMaH501rRAmyaHPTmcWge7+96w9aFrSD/ICkmKIFQMilU0ReIiqUMVE9JQSc86jtUq3nJloUY2M14MJgv+R5ykcBcrRNWBagPgz1LzWxlGI1NX3RmohRvi3xKWWACESNBJWqZaSaQ3uij3vVLo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749767; c=relaxed/simple; bh=bJ6qStkDY8RJBuTonDh7AE1zqx4/5rSPePh0EOtjHjs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=UsT4Xrp0W/DbJzQsDsTwSHtNsTAON6x8zpCHs3GYejrhkZ8BTNEvpmNSe8wSJ8ZTzbAij5+LaSvNvXxIXgnXjokDG2UVSogGkv4PYC6UON5guhG2L5cO+1ar9GPRQrSZiYhNLJaWYWAhirnaJ+oDTuTqwO+l7petX+tr5+Li+ss= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=TmE6zxFj; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=LyjgpbMK; arc=pass smtp.client-ip=85.215.255.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="TmE6zxFj"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="LyjgpbMK" ARC-Seal: i=1; a=rsa-sha256; t=1783749733; cv=none; d=strato.com; s=strato-dkim-0002; b=UNAol3P+3NSnVFANpP0PNenPYX/++5XBKrsgPStGoWHK/tv07cmPa4CJzz82unyIHc M8eZ9x6nBCb5bdWStJBwD+utDt8qbnwDhnjVL3zpTkhg2sm+HIz6WG/SQUNAkUBFoid4 vVL0EHxWyMT0qkCfYkFfMwAzowyj1Fnm6BOpTCDIfGTIYvf+II4xprpVX15aGFypsvRm ABT8MKCOpLoEns9Qa5xUOAuoB9lU0hKeT9TqHkLv14sY99APWS9uZXQuo2oP9BONzh9w XGSJgByKluI4o61R5m931VxbCJE/fye3v22HyqwTWN+OLTtfNBA7HJ8602Ufw4F3+IbQ d2ww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749733; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=wV6iPQx9mr9GnWcgEuPgvu8N7t+FUMy7pZdOenitrKA=; b=ii2uSQlgcBgDWO0l1OXPUTf/cKHjzlvnCuzFMpdI+q+YLehm+8FfA6yGgBxcSi4/DM UKKA1YNeyp0wxx2RXyYb7jn8DOvp0y4cE+q15n5KyFtB0qZGRvoP9yNOq1Q3uPONBP6B uTA0z7y5VHOZSb5JgTFkyO9VRPrNAWonHD3Z3tDXBWeYBDfrmwb84KrhhTKLHb5vZ61J KfuwZntjwOkOlgdABXYJiC7ZLIvdodcJMtkU2p+vdx5SRrJfIFX875Ogo9PPWJtttk2L 2IakW966dWigtYojCV6X5VToJX2tvPMT4VUmAi+oreQnrFYXYGN9O9sYTFOymipRTvO+ bIyg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749733; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=wV6iPQx9mr9GnWcgEuPgvu8N7t+FUMy7pZdOenitrKA=; b=TmE6zxFjGDgs6NxLtFBYoH6EGjXG5RKaK8LImJxYODhQQx0QMlKfBTwwX27Fmhf95z yaG+wFdkI908C3whCwXFEt9ZwEUxw/uL2GyzjFYKzzFb9KhA1SIbio8FbDj0l6aL6hf7 QQzSxcfchX0AuadBytx3x8E508pv5SHIXs7bEE1UsxD/JNhdxivN6tra0r3te6YksbVp Xdp4884snRffHQldKJ+9Z0jMvvQmmPcsTZ52S6fPjOwWj4vKsrNcdMbkewjNse74ab5N t9x8iAUIeWmtOD3aUcPi8D9sp1bpGYHXA1kun4xtcOKAy2MH8r0+09+/KyzFr2dEkG5m Albw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749733; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=wV6iPQx9mr9GnWcgEuPgvu8N7t+FUMy7pZdOenitrKA=; b=LyjgpbMKh6H6ERpUAmFX42ygfbFz0rHJ1cHwrsF2a/wmKtnMvBsPB4UT/GVX7CtaN5 Nbkrryo0KmZRFkCZ03Dg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62CGhq (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:12 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 05/16] arm: dts: omap3pandora: Don't use DMA channels for unused SPI masters Date: Sat, 11 Jul 2026 08:01:52 +0200 Message-ID: <129b1ff8e73235c74ac66dab9041672190065785.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond On the pandora, only McSPI1 (spi0) is actually used. Because the device tree defaults in arch/arm/boot/dts/omap3.dtsi leave all of the mcspi interfaces enabled, the DMA channels which the device tree assigns to them cannot be used for anything else. This is a problem because OMAP3's sDMA controller can only have 32 DMA channels configured at any one time. So when we try to use (for example) the McBSP subsystem (which is required for sound) it doesn't work because we've already exhausted our available DMA channels. Fix this by disabling mcspi[2-4] on the pandora device tree. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- .../boot/dts/ti/omap/omap3-pandora-common.dtsi | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index a0116823ffdef..b4acab1625212 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -693,6 +693,23 @@ lcd_in: endpoint { =20 }; =20 +/* + * Only mcspi1 is used on the pandora, the others do not surface on the bo= ard + * due to pinmux configuration. disable the unused ones so that they do not + * consume DMA channels + */ +&mcspi2 { + status =3D "disabled"; +}; + +&mcspi3 { + status =3D "disabled"; +}; + +&mcspi4 { + status =3D "disabled"; +}; + /* n/a - used as GPIOs */ &mcbsp1 { }; --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.223]) (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 A55AD31E823; Sat, 11 Jul 2026 06:05:13 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.223 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749919; cv=pass; b=FC35RLmjWYIXPK9de2sKpxllkrPt4YCrz96EzZgG/+MKGMM+QUEBmYezIAMPLO6k/PWewkhgAtgKvaZhngRUiWT3w35u4K8P2ypBDvSc2u+GqaVOszSmm8EcY3xzurtvWBu5Bk4vUtmX9JR2UTatxenNgao/8ctZdReeZgdfvA4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749919; c=relaxed/simple; bh=IBSi1g75ivspH4eP9Pu0ikYEr/rygHyfZXeqS42xw7Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=L3o0+uhiGFKlswhXmxgPKOZ8ZNxFaCYxIYzdGilqp7howYNlf8CS1HwzWjl/Sh8IGdd7MFCkYdS2fFfZiQNAWEghyO0K7gK8zGVW5x4lcNCHLt6q3lmre3uhKpETqVdsPAk4E5aWpdjjPB6zhcm/b9eKY0TsCnOi0W9/wx0mkYc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=tGm8GsIi; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=ESnVmjxn; arc=pass smtp.client-ip=81.169.146.223 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="tGm8GsIi"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="ESnVmjxn" ARC-Seal: i=1; a=rsa-sha256; t=1783749734; cv=none; d=strato.com; s=strato-dkim-0002; b=run2BEMDp+5YV1CDxFqVxZHbYrBhva5ty1Lt5W1KMBhyIhadJrk/IgIjRwc4ItpWRi w6MqH1bVYccVsx9C1ImD57XA2y4Yrdsd+2APuMsxyR5XeBLQSPVxbd0445Fwz5j6Hdon ztO3z6HIyTopjdAgk7IoSbeBZt5RKGA6JbdZ9W00uw4WiRRylTe1fId73ldnirAL6UUJ is29XgkdqOulFS7M5e+1X4qHP6wJiREt9KED03+NjQs7OqRBOez7KL6xy4eB1GnLE1dt 7lv3PLSi8PRUsBiO7vCdnq6l2pJ5likz9XySt8guabB5L2shv0Y8Ev9BY2b3oyh5Rix3 a09A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749734; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HPdy4LPPlxugHv+cSwsCrzTGTCfohShFJc3owzkw44A=; b=U+W+qUiN1/+3Pe4OYHvPhCSB12YJINyO2qvSEfWcDMAP8ITZhJVwaEXZU7oy9QPD15 QkmlP7sZAIzIc8EI16ykCpQAJ0xQf27qFF6bXTL7/qoJRO98DjHJAxrRSHsQ9PWKIUrM cSQi9487ViNEYBpDOvGTIsxqVfe8DzQz6alYDmLk53+a4v3o7Ha7TTz1dSvkY5FVF8Gw 7L8Iuo5jigCGJouPU0pf+psxXrYIfMmmW3qojpj0EFZijcLEHJSt6vm1xawns7QjDNBb +3JhhijJyebeuqv8KIkAIvSyt6Q3MJ2V8T/wHEHJNDRJkxHZ0RqyJLSp9CXPXpsCo1HN Syzw== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749734; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HPdy4LPPlxugHv+cSwsCrzTGTCfohShFJc3owzkw44A=; b=tGm8GsIi8+gfLmYMR0PE1GN8GrJoMxACv6xGhuA/AyiEep3bM76z6IxxcNo2a4K4a1 SNv5tjRXP/78yaa6sf2jgmnlOBd0vlMm0VWjqbBTVJDKgOpywUyfrXAaSPRRZDKg5ysv DbbPBuYwsm/TFowoAZkQzpjbN2yW+wo0sbMPtuRuI9lcEKM5eVT9Q80iNRcvO7x+5bNp o8q+5Qvik8cEPmNJ8jRmwiYXQFCuXtPXZ1xCEHS/Zs+nctosKG0QzzepJEmfyQG42QkM nqHbqleuMBfH95ohBaO6s80PPlrkAVevlMkbu7SfR5FgDsqyI2G0kjA7eKr7EQQFALjY 95cg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749734; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HPdy4LPPlxugHv+cSwsCrzTGTCfohShFJc3owzkw44A=; b=ESnVmjxnmU6AyUjpn0uHweO4UfrbSQPCI6U3IeNAK0XEfgNHZa1ZjUb5q0aI90RWX3 RpF9J9kKa+swzVF8U1Cg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62DGhr (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:13 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 06/16] ASoC: twl4030-codec: Allow setting APLL rate through the .set_sysclk() interface Date: Sat, 11 Jul 2026 08:01:53 +0200 Message-ID: <7ea589f951baf1e217c7169ae21c0bf510672ecf.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond On the Pandora, the APLL is actually what drives all of the audio clocks on the board. Since the TWL4030 is only used for capture, we need some way of setting the correct rate for playback streams, since they will not go through the TWL4030's .hw_params() code path (which is normally how APLL rate is set). Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- include/linux/mfd/twl4030-audio.h | 3 + sound/soc/codecs/twl4030.c | 140 +++++++++++++++++++++--------- 2 files changed, 101 insertions(+), 42 deletions(-) diff --git a/include/linux/mfd/twl4030-audio.h b/include/linux/mfd/twl4030-= audio.h index 1c28605dfda80..4378eef97b0fc 100644 --- a/include/linux/mfd/twl4030-audio.h +++ b/include/linux/mfd/twl4030-audio.h @@ -244,6 +244,9 @@ #define TWL4030_VIBRA_SEL 0x10 #define TWL4030_VIBRA_DIR_SEL 0x20 =20 +/* clock ID used for setting APLL rate */ +#define TWL4030_CLOCK_APLL 0xffff + /* TWL4030 codec resource IDs */ enum twl4030_audio_res { TWL4030_AUDIO_RES_POWER =3D 0, diff --git a/sound/soc/codecs/twl4030.c b/sound/soc/codecs/twl4030.c index 9476cdfd4dde9..ff36679166e20 100644 --- a/sound/soc/codecs/twl4030.c +++ b/sound/soc/codecs/twl4030.c @@ -198,6 +198,38 @@ static void twl4030_codec_enable(struct snd_soc_compon= ent *component, int enable udelay(10); } =20 +static int twl4030_perform_writes(struct snd_soc_component *component, + const unsigned int *regs, + const unsigned int *vals, + unsigned int n) +{ + struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); + int reboot_codec =3D twl4030->codec_powered; + unsigned int i; + int ret; + + if (reboot_codec) + twl4030_codec_enable(component, 0); + + for (i =3D 0; i < n; ++i) { + ret =3D twl4030_write(component, regs[i], vals[i]); + if (ret) + return ret; + } + + if (reboot_codec) + twl4030_codec_enable(component, 1); + + return 0; +} + +static inline int +twl4030_perform_single_write(struct snd_soc_component *component, + unsigned int reg, unsigned int val) +{ + return twl4030_perform_writes(component, ®, &val, 1); +} + static void twl4030_get_board_param_values(struct twl4030_board_params *board_params, struct device_node *node) @@ -1690,38 +1722,16 @@ static void twl4030_shutdown(struct snd_pcm_substre= am *substream, twl4030_tdm_enable(component, substream->stream, 0); } =20 -static int twl4030_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params, - struct snd_soc_dai *dai) +static int twl4030_get_codec_mode_for_apll_rate(struct snd_soc_component *= component, + unsigned int rate, u8 *res) { - struct snd_soc_component *component =3D dai->component; - struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); - u8 mode, old_mode, format, old_format; - - /* If the substream has 4 channel, do the necessary setup */ - if (params_channels(params) =3D=3D 4) { - format =3D twl4030_read(component, TWL4030_REG_AUDIO_IF); - mode =3D twl4030_read(component, TWL4030_REG_CODEC_MODE); - - /* Safety check: are we in the correct operating mode and - * the interface is in TDM mode? */ - if ((mode & TWL4030_OPTION_1) && - ((format & TWL4030_AIF_FORMAT) =3D=3D TWL4030_AIF_FORMAT_TDM)) - twl4030_tdm_enable(component, substream->stream, 1); - else - return -EINVAL; - } - - if (twl4030->configured) - /* Ignoring hw_params for already configured DAI */ - return 0; + u8 old_mode, mode; =20 - /* bit rate */ old_mode =3D twl4030_read(component, TWL4030_REG_CODEC_MODE) & ~TWL4030_CODECPDZ; mode =3D old_mode & ~TWL4030_APLL_RATE; =20 - switch (params_rate(params)) { + switch (rate) { case 8000: mode |=3D TWL4030_APLL_RATE_8000; break; @@ -1753,11 +1763,50 @@ static int twl4030_hw_params(struct snd_pcm_substre= am *substream, mode |=3D TWL4030_APLL_RATE_96000; break; default: - dev_err(component->dev, "%s: unknown rate %d\n", __func__, - params_rate(params)); + dev_err(component->dev, "%s: unknown rate %u\n", __func__, + rate); return -EINVAL; } =20 + *res =3D mode; + + return mode !=3D old_mode ? 1 : 0; +} + +static int twl4030_hw_params(struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params, + struct snd_soc_dai *dai) +{ + struct snd_soc_component *component =3D dai->component; + struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); + u8 mode, format, old_format; + int s; + unsigned int regs[2], vals[2]; + + /* If the substream has 4 channel, do the necessary setup */ + if (params_channels(params) =3D=3D 4) { + format =3D twl4030_read(component, TWL4030_REG_AUDIO_IF); + mode =3D twl4030_read(component, TWL4030_REG_CODEC_MODE); + + /* Safety check: are we in the correct operating mode and + * the interface is in TDM mode? + */ + if ((mode & TWL4030_OPTION_1) && + ((format & TWL4030_AIF_FORMAT) =3D=3D TWL4030_AIF_FORMAT_TDM)) + twl4030_tdm_enable(component, substream->stream, 1); + else + return -EINVAL; + } + + if (twl4030->configured) + /* Ignoring hw_params for already configured DAI */ + return 0; + + s =3D twl4030_get_codec_mode_for_apll_rate(component, + params_rate(params), &mode); + if (s < 0) + return s; + /* sample size */ old_format =3D twl4030_read(component, TWL4030_REG_AUDIO_IF); format =3D old_format; @@ -1775,20 +1824,12 @@ static int twl4030_hw_params(struct snd_pcm_substre= am *substream, return -EINVAL; } =20 - if (format !=3D old_format || mode !=3D old_mode) { - if (twl4030->codec_powered) { - /* - * If the codec is powered, than we need to toggle the - * codec power. - */ - twl4030_codec_enable(component, 0); - twl4030_write(component, TWL4030_REG_CODEC_MODE, mode); - twl4030_write(component, TWL4030_REG_AUDIO_IF, format); - twl4030_codec_enable(component, 1); - } else { - twl4030_write(component, TWL4030_REG_CODEC_MODE, mode); - twl4030_write(component, TWL4030_REG_AUDIO_IF, format); - } + if (format !=3D old_format || s) { + regs[0] =3D TWL4030_REG_CODEC_MODE; + vals[0] =3D mode; + regs[1] =3D TWL4030_REG_AUDIO_IF; + vals[1] =3D format; + twl4030_perform_writes(component, regs, vals, ARRAY_SIZE(regs)); } =20 /* Store the important parameters for the DAI configuration and set @@ -1813,6 +1854,21 @@ static int twl4030_set_dai_sysclk(struct snd_soc_dai= *codec_dai, int clk_id, { struct snd_soc_component *component =3D codec_dai->component; struct twl4030_priv *twl4030 =3D snd_soc_component_get_drvdata(component); + int s; + u8 mode; + + if (clk_id =3D=3D TWL4030_CLOCK_APLL) { + s =3D twl4030_get_codec_mode_for_apll_rate(component, + freq, &mode); + if (s < 0) + return s; + + if (s) + return twl4030_perform_single_write(component, + TWL4030_REG_CODEC_MODE, mode); + + return 0; + } =20 switch (freq) { case 19200000: --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.120]) (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 E913431B83B; Sat, 11 Jul 2026 06:02:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749769; cv=pass; b=fzPQFEXGKsihmS5Yql3T5ci0T1VEnY0YZDGSUT1Y+x5xOhWxpf4HZ4I6WvcsW2dn96ZHtocmjBtsaJmNJQjLain2ODnNST1VhOQvS529CVfExwtm8Kn72pJF4e78lZkxjwLj6cdTvwjzVzMEKlPNDMGwLe+BDzDM/Ak7NAm0+gY= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749769; c=relaxed/simple; bh=Ez6a2tlwx9Srr4TDQPwKhoL/dkxkQlFUtUtecoyPFbU=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Jucct7K9D9Pm8NRm44vn6yykZz4A587a8d1inNaL8ffpZwLdG6xy3CCtWh6grhonE7w9iIKb6t+1xLfOhVa0DoXK7wV7GOoZKSXmZW6kDOK9VX8b94/tsHp9zuR2VV/RyZSFy0rPej5alLenFC+6adTKXttUJtDC9qtZQgvqaQ0= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=bSEIuX13; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=FcC6IWfP; arc=pass smtp.client-ip=85.215.255.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="bSEIuX13"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="FcC6IWfP" ARC-Seal: i=1; a=rsa-sha256; t=1783749736; cv=none; d=strato.com; s=strato-dkim-0002; b=OPe/j2k2jWH4cAU6GP66U8XFCtxb4Y/owuIlLEQ1WOVZ7/a1+EyHlmYTxEsX93Vckg YksXJxSUFK4N56Ol3EeYYom7QYELdI8eRzzSmGOWYKA4AOBWmtFfTMxjUVdOWoZZV9Gy zoZG2/b39GgeqTUxVhsTLRwgkDfLZdBeTBIm2Tko6ce2UHvIQZzYZuINJgSVfqiIq5jX Qz1naDDUFTC76tFZV8l7oE21cAIQou9FlP4oioGp4n1/mNzmbUaYrgQtU7HX7nj8+dep s+vUmKt4xh3Kaxdz3nwCVd8NLqKlJbuXevsP09XDh0V5CNgSfAYmWU5vjUyl44uS3V4C glEw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749736; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=E8jCDGxFCZCvaxcS2Psadz3lVnIPsSjTP8SdZWEFY3o=; b=GzNBhnIuSWQP5HA0tgU9LmvIa6xW0t69LjSFZJSMJDZXNXoaFp2IHcqATQvZnL5UJP GpVDc0tlj2HjEFVz/VvLJoh7q4KvfKOXPzqF5fOl6THSKwAARnt+UEzaJ1q5Iz0r4KZ9 7D32+y4JztNrGHqODg0Et61yyrnnmJMGOWxCFnHArZzHjogGN8xQzU6PEqwsmYe4HR5B VjxozmxsBwh9uZSNc7u2MjES/gioYgRi11F2v2sl4MhBkHR9ytLVInSANsnubQRvk8DT JPg9wQqvbt4486QfPa+YKVetO0udj/FKBMsdMZeyiQfcgsHAyl64rRQFXMhBc9knSqbQ 6X/w== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749736; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=E8jCDGxFCZCvaxcS2Psadz3lVnIPsSjTP8SdZWEFY3o=; b=bSEIuX13cFGeoDxHmGlpREmKzlrkSDTC6RxM5qWfTKqXb5BY/34Nff9VqsmfqcvOFf v4JtxswUCojY1iArIkmsmzupPksVDSWu6O/V85kvf/ffpDe+0bYA/fWte7ZEufoF0+rY BBCDMbdu9isYxeHMwv2V+WeiHQIkN0/PJDFjijmOuqqHlC+DwQVl3ssDw+STMsQP1Ys/ fzvCjU3J2YQoAjnlzZNqw6HyrYjUNOb3kv4onWMXs/eU0n84mcHwb24RGEddx4r7uYQZ lockG54Qt1xEfUmcAJYLsVmOjcS4yrb2+pwQRHbaCYYPJLjtoGUSKw4WoSwxu47+jHlC SO2Q== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749736; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=E8jCDGxFCZCvaxcS2Psadz3lVnIPsSjTP8SdZWEFY3o=; b=FcC6IWfP0TTCCH9BvVqmVo68V1h+An5Q4quALN+HCARu2x7tn5kfeAKJK+S5BJbifF 3qsD1zmLZujyE/v6fUBQ== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62EGhs (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:14 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 07/16] ASoC: dt-bindings: add TI PCM1773 Date: Sat, 11 Jul 2026 08:01:54 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" PCM1771/3 is a simple audio codec that can be enabled through an enable-gpio. Signed-off-by: H. Nikolaus Schaller --- .../devicetree/bindings/sound/pcm1773.yaml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/pcm1773.yaml diff --git a/Documentation/devicetree/bindings/sound/pcm1773.yaml b/Documen= tation/devicetree/bindings/sound/pcm1773.yaml new file mode 100644 index 0000000000000..f3e640705bf70 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/pcm1773.yaml @@ -0,0 +1,32 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/bindings/sound/pcm1773.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Texas Instruments pcm1773 audio codec + +maintainers: + - to-be-defined@openpandora.org + +description: |+ + PCM1771 is a simple audio codec that can be enabled + through a gpio. + +properties: + compatible: + const: ti,pcm1773 + +required: + - compatible + +additionalProperties: false + +examples: + - | + audio-codec { + compatible =3D "ti,pcm1773"; + enable-gpios =3D <&gpio4 22 GPIO_ACTIVE_LOW>; + }; + +... --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.178]) (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 6D192317163; Sat, 11 Jul 2026 06:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.178 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749913; cv=pass; b=JgZg4WdF4rkw4DT5T8J8uhIGnjO5t3VTV1WYKMJ+TvEK8YCavmwin1Mn6PpGCS4XTo3oD/qXX+CEEa14WQU9IGLnV/OFn1J73fVaTbBzkAIPfFWTZVw4cg/wIkg0lxLT3QUT5XJzwn2CV6PxVcw+QdeKgIXBkl/gqa/Kn3n60KI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749913; c=relaxed/simple; bh=Lg5WkyKz9Tjs0OLV+KLbC+uYV0wh6U7Ydokw4jXSD1M=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=OH6+fhDuGtD8iRGapjtVNCAFjAIshZyK67+vd89yQn0aWw15tzXp1RPSNabiSh14BHLWrJ8td1BOaQeQN0GZmUUQJobBA5Em5E+1cVngUIEV3FlicxS5Enl0WHbmG/nLpRxok/6ZJ8yrfNJP6+XEwn7PdeOkCCbami8zujUojIo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=AC5mqVJg; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=+jn36CyM; arc=pass smtp.client-ip=81.169.146.178 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="AC5mqVJg"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="+jn36CyM" ARC-Seal: i=1; a=rsa-sha256; t=1783749737; cv=none; d=strato.com; s=strato-dkim-0002; b=iC0toLXH6Gq6Gbb1wbRJptb/CqlDMcjfKVE70kAJslXM0CYebLJGl+dmsWtcrUGBE9 yGiLYIxAm+wnQ4N3zLDHtcssisr/W2dyZAVagtr2wAeh8mDKJga74qoXHDd6HKSfzwAM vdwBF2BXqgnsPjpFrSdKrKJHMIphQavB8W4WUwrkZ3bc4nkae5wOkUQzA1PQbF9RZ/UQ ImVNOmv2Y14SoVExyHf9JzPGTZX9R2QAaF40v55023I8eMfa5Pg/ozqUI716SIezvsQf d9xt+npKPRxPZdz02ZL7+c9vg9GwGSEICCJqDdXVFrAwJWr62kQ6yRzV4yARiQs+engn sbew== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749737; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=c2DakEhHWnDx3DdMaI7lEbd6D5ZL7hHtybFNpEKNGEY=; b=p3xqTKNzxP2MJOusO2HDNwJQGi+JFybPWQ/Q8v+AEvtTQds6DtK0cWHu53f5LA2/8V KEX/vmxJ1UQU0DeW+UMenWaDtKYkSEobm5J5SxIz+RgcsGdTxupDL/mxNKbDnB7DHpUa 5XOpvmonYsjgv+tD86sOkgzwZyuieAsufVkd+92MU7w1y8d4+jZP9g8MPuqcCMmkWzep f0htsqJrbazcS6uK1F2aEjCQRyDr8Ay0oE8v91QDNJpY2qLpKo03NA9cFnR9dEFITTyd 3AL5IhlLtYUbVbZNd+GZWMrs/hoQrRbItQAZAaX86z06YZ/dSCsnWnxYAnkAd5boyCe4 Ijag== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749737; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=c2DakEhHWnDx3DdMaI7lEbd6D5ZL7hHtybFNpEKNGEY=; b=AC5mqVJgoMmhA3Zb/MSpoOfeAR1ZVSKJIcEc3MCzA3Z142xI8pEe5Db6aR194cu0YG dQg4sGBvsBLzcNVS30nO3nsg4A5aIkIWhaKY0cH5NPe426IyTy97+6PjNlMy2MAmThiE oSkncAjB3E+cDANu0EbBiwfK4POGt/e3CrAED3dWbXLCb6n1wHd5xTXYiJeuS7seljip a46TZb5pKbKx/saN9zIJABswzIAOD3hmh9QneQKXOUA+XHalTCN/Yqat2LLHnjaLhWLd zQusI0eJNMQoSNAjwWLUYKcpPaIiv7GF2K0JSSgaVbamua77vJdorFfiZT0I1UAzFhSU Psmw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749737; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=c2DakEhHWnDx3DdMaI7lEbd6D5ZL7hHtybFNpEKNGEY=; b=+jn36CyMpIt/846xR0wkPkUKOdBAInJWGBq2O5KYF6pSDWRs3pT4NMJFVBeD+fyNBz ekmrFK8i/KxIrSgszUAg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62GGht (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:16 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 08/16] ASoC: pcm1773-codec: write a driver for the PCM1773 chip from TI Date: Sat, 11 Jul 2026 08:01:55 +0200 Message-ID: <7d8989813cbd750259dfdde2e1187082493279a0.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond This chip is used in the OpenPandora. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- sound/soc/codecs/Kconfig | 5 ++ sound/soc/codecs/pcm1773.c | 149 +++++++++++++++++++++++++++++++++++++ 2 files changed, 154 insertions(+) create mode 100644 sound/soc/codecs/pcm1773.c diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 252f683be3c18..3e186652fa06d 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -182,6 +182,7 @@ config SND_SOC_ALL_CODECS imply SND_SOC_HDMI_CODEC imply SND_SOC_PCM1681 imply SND_SOC_PCM1754 + imply SND_SOC_PCM1773 imply SND_SOC_PCM1789_I2C imply SND_SOC_PCM179X_I2C imply SND_SOC_PCM179X_SPI @@ -1541,6 +1542,10 @@ config SND_SOC_PCM1754 tristate "Texas Instruments PCM1754 CODEC" depends on GPIOLIB =20 +config SND_SOC_PCM1773 + tristate "Texas Instruments PCM1773 CODEC" + select GPIOLIB + config SND_SOC_PCM1789 tristate =20 diff --git a/sound/soc/codecs/pcm1773.c b/sound/soc/codecs/pcm1773.c new file mode 100644 index 0000000000000..75f9fe40a89d5 --- /dev/null +++ b/sound/soc/codecs/pcm1773.c @@ -0,0 +1,149 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * pcm1773.c -- codec for the simple PCM1773 output codec from TI + * + * Shamelessly cobbled together from sound/soc/ti/omap3pandora.c and a few + * other codec drivers in sound/soc/codecs/ + * + * Author: Grond + */ + +#include +#include +#include +#include +#include + +struct pcm1773 { + struct regulator *regulator; + struct gpio_desc *enable_gpio; +}; + +static int pcm1773_dac_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *k, int event) +{ + struct snd_soc_component *component =3D snd_soc_dapm_to_component(w->dapm= ); + struct pcm1773 *ctx =3D snd_soc_component_get_drvdata(component); + struct device *dev =3D component->dev; + int ret; + + /* + * The PCM1773 DAC datasheet requires 1ms delay between switching + * VCC power on/off and /PD pin high/low + */ + if (SND_SOC_DAPM_EVENT_ON(event)) { + if (ctx->regulator) { + ret =3D regulator_enable(ctx->regulator); + if (ret) { + dev_err(dev, "Failed to power DAC: %d\n", ret); + return ret; + } + mdelay(1); + } + + if (ctx->enable_gpio) + gpiod_set_value_cansleep(ctx->enable_gpio, 1); + } else { + if (ctx->enable_gpio) + gpiod_set_value_cansleep(ctx->enable_gpio, 0); + + if (ctx->regulator) { + mdelay(1); + regulator_disable(ctx->regulator); + } + } + + return 0; +} + +static const struct snd_soc_dapm_widget pcm1773_dapm_widgets[] =3D { + SND_SOC_DAPM_DAC_E("PCM1773 DAC", "HiFi Playback", SND_SOC_NOPM, + 0, 0, pcm1773_dac_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +}; + +static const struct snd_soc_dapm_route pcm1773_dapm_routes[] =3D { + /* tell DAPM that the main stream flows to the PCM1773 */ + {"PCM1773 DAC", NULL, "PCM1773 IN"}, +}; + +static struct snd_soc_dai_driver pcm1773_dai =3D { + .name =3D "pcm1773-hifi", + .playback =3D { + .stream_name =3D "PCM1773 IN", + .channels_min =3D 2, + .channels_max =3D 2, + .rates =3D SNDRV_PCM_RATE_8000_48000, + // [TODO] these really should be BE, per the data sheet but for + // some reason the omap-mcbsp driver claims only to support LE. + // investigate + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE, + }, +}; + +static int pcm1773_probe(struct snd_soc_component *component) +{ + struct pcm1773 *ctx =3D NULL; + struct device *dev =3D component->dev; + int ret; + + ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) + return -ENOMEM; + snd_soc_component_set_drvdata(component, ctx); + + ctx->enable_gpio =3D devm_gpiod_get_optional(dev, "enable", GPIOD_OUT_LOW= ); + if (IS_ERR(ctx->enable_gpio)) { + return dev_err_probe(dev, PTR_ERR(ctx->enable_gpio), + "invalid GPIO specification for enable"); + } + if (ctx->enable_gpio) + dev_dbg(dev, "got enable-gpio\n"); + else + dev_warn(dev, "enable-gpio not specified\n"); + + ctx->regulator =3D devm_regulator_get(dev, "vcc"); + if (IS_ERR(ctx->regulator)) { + dev_warn(dev, "cannot get regulator 'vcc'"); + ctx->regulator =3D NULL; + } + + return 0; +} + +static const struct snd_soc_component_driver soc_component_dev_pcm1773 =3D= { + .probe =3D pcm1773_probe, + .dapm_widgets =3D pcm1773_dapm_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(pcm1773_dapm_widgets), + .dapm_routes =3D pcm1773_dapm_routes, + .num_dapm_routes =3D ARRAY_SIZE(pcm1773_dapm_routes), +}; + +static int pcm1773_codec_probe(struct platform_device *pdev) +{ + return devm_snd_soc_register_component(&pdev->dev, + &soc_component_dev_pcm1773, + &pcm1773_dai, 1); +} + +static const struct of_device_id pcm1773_of_match[] =3D { + { + .compatible =3D "ti,pcm1773", + }, + { }, +}; +MODULE_DEVICE_TABLE(of, pcm1773_of_match); + +static struct platform_driver pcm1773_codec_driver =3D { + .probe =3D pcm1773_codec_probe, + .driver =3D { + .name =3D "pcm1773-codec", + .of_match_table =3D pcm1773_of_match, + }, +}; + +module_platform_driver(pcm1773_codec_driver); + +MODULE_DESCRIPTION("ASoC codec driver PCM1773"); +MODULE_AUTHOR("Grond"); +MODULE_LICENSE("GPL"); --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.121]) (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 5C79514A619; Sat, 11 Jul 2026 06:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.121 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749767; cv=pass; b=doJjb01yLKSDq0pO3WrC/u+VKZEXWBD9GuA157qDlDbq7ur/0PCwDjD2+OKDORvwQnlxX2fuq1lNVLVHGK9dbKlw2zYBBPQBUgSC+i5XgoZkuSArD39d49sdqDEsIq8KdR+lfS7Bwmv7nMzLRChhhKIERuutgtwyMl0CNj+LLig= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749767; c=relaxed/simple; bh=dQiGYPN6L3Mn6GdD1aTlo5globLJ9HWANGZBAxpHXl4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=j7zzl9YXzq08Zf6UotxVATl4YoMkwbnQvKSeHXva1AvNoww23NuXJyN4txoyOBDr1KCowzJzRBn1Of/EIZRSp/9BEePh3FROhH3fdMx3jDNPzt+Cq89LZx1eHCYqHOBS1deQtvqXStJ1eaAUw/5W3dZhN6HWEkDoPtlafDVxcYk= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=bZam3ACt; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=cB868UH1; arc=pass smtp.client-ip=85.215.255.121 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="bZam3ACt"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="cB868UH1" ARC-Seal: i=1; a=rsa-sha256; t=1783749738; cv=none; d=strato.com; s=strato-dkim-0002; b=iF/B9SBDEvkXNuexCIPHG9Ujd48FL86LW8AQhbDHlVrSTnALAuBf0v8dutzcF7Ai0o muiZkUmL80ELiPksCEAvRwMrm+B/juxJKuRexaRPAy49ef6GkXreqKuDhJ0nb/5IWS6s Bth31lf95JRqIgzbl+T4IEFHyZRJzkSTkrBO93Kmws2zMvWBX4WruiLGUxLFzU1oAx7C uVc9sWIT9bbp50oOJ9ltVlccfubHNbUYc5WxCkIq4ORRode+mOlfn1igcRcFyjXvBSQn n7ItmwyjumvgxHOU1RqaTwSTVDb2EudTsEq0UL5FdD2rwltVi9+JHYDNZs/ci2PcHWJ4 YxrQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749738; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=t/x+YYxsv60bL+EGSlJ2dLJ3eczcNCxWtbxZDP+PXMA=; b=D2e7Iyzhl4/CphUbFloTXyHZ2Ap7xTWkVzJyFesvwINQdw01EsJ76NOVrMhX0AcRgU ED0hcClxLTgbjKyPXqRDM+FzhwgBfq7+DUyCGEKdPvuMYxyQvIpD/nvnkkGO0BV+905A ATsmi1K5RcGMi+1EOSezjB85TFGSYN70KaNzxPBTnjojc4WkJ8P9SmjQuvOgr9VWofBH Ya0S1hP7wVOdQSwsFD5AZJWMoTF+SCp7LL/Ynn6LYjGjO/lt7FvuBjMCUbOQN8iOe9bZ J0FwZ1lSG/Vty29GO+w8GHVrOSj6fADI9C6bPjeMebDSrXennAHSd+TmwM0fOGwPHqjL DuqQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749738; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=t/x+YYxsv60bL+EGSlJ2dLJ3eczcNCxWtbxZDP+PXMA=; b=bZam3ACtFP/+X/qTQ4Ho0KMLfkU12LPFPoAt49mvn2uKjUqHr9W2UJJPxNWbS5W0gu mGHPbyf9uBtzn7xMTc6BgcLJcSa1hCt2s+UtvlRsuVDa05xCvp1P2x6iLk89gFmuWdwE aFI6Oc6dx8OWxMvIVVoU0t0CKZVFtBNVH6LcF0zJ8TPV1rk9FY0avTL+n8fPSLFRUy1h XYx4GlnIcR7j4bKdxcN3ljCj2WV2iiH1prUnH5LNq7cYGoxBlzRVU4o9JJw+kkBbKveC 8S2a/zeW/d3I3ceQWkNtFQMSpnHXCW6oDx2mL7+PiuJP40R0mymfalu/GjBm9qBouQGf 6KGQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749738; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=t/x+YYxsv60bL+EGSlJ2dLJ3eczcNCxWtbxZDP+PXMA=; b=cB868UH1KLyRnvCaocIO59JWga3iF1uWRNJMphEEqoS4k2t1BUCiPb6eIyP46xL8WR h23BL85VNpg+04e1u6Cg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62HGhu (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:17 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 09/16] ASoC: dt-bindings: add OpenPandora Sound Card Date: Sat, 11 Jul 2026 08:01:56 +0200 Message-ID: <7989e699de400c0fe3f0cb7af77a54077784df78.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The OpenPandora audio subsystem describes the routing links between the OMAP3 McBSP interface, the external PCM1773 DAC, and the TWL4030 audio codec, alongside amplifiers and power supplies. Signed-off-by: H. Nikolaus Schaller --- .../sound/openpandora,omap3pandora-sound.yaml | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 Documentation/devicetree/bindings/sound/openpandora,oma= p3pandora-sound.yaml diff --git a/Documentation/devicetree/bindings/sound/openpandora,omap3pando= ra-sound.yaml b/Documentation/devicetree/bindings/sound/openpandora,omap3pa= ndora-sound.yaml new file mode 100644 index 0000000000000..d3c747e5c58d6 --- /dev/null +++ b/Documentation/devicetree/bindings/sound/openpandora,omap3pandora-soun= d.yaml @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org +$schema: http://devicetree.org + +title: OpenPandora OMAP3 Audio Complex + +maintainers: + - H. Nikolaus Schaller + +description: + The OpenPandora audio subsystem describes the routing links between the + OMAP3 McBSP interface, the external PCM1773 DAC, and the TWL4030 audio co= dec, + alongside amplifiers and power supplies. + +properties: + compatible: + const: openpandora,omap3pandora-sound + + status: true + + label: + $ref: /schemas/types.yaml#/definitions/string + description: User-visible name for this sound card. + + amp-gpios: + maxItems: 1 + description: GPIO pin controlling the amplifier power state. + + amp-supply: + description: Regulator supplying power to the amplifier. + + sound-dai: + $ref: /schemas/types.yaml#/definitions/phandle-array + minItems: 2 + maxItems: 2 + description: + Phandles to the audio CPU DAI (OMAP3 McBSP) and the codec DAI. + + routing: + $ref: /schemas/types.yaml#/definitions/non-unique-string-array + description: + A list of the connections between audio components. + Each entry is a pair of strings, the first being the connection's sin= k, + the second being the connection's source. + + widgets: + $ref: /schemas/types.yaml#/definitions/non-unique-string-array + description: + User-specified audio sound widgets. + Each entry is a pair of strings, the first being the widget type + (e.g., "Speaker", "Headphone", "Microphone", "Line") and the second b= eing its name. + +required: + - compatible + - sound-dai + +additionalProperties: false + +examples: + - | + #include + + sound: sound { + compatible =3D "openpandora,omap3pandora-sound"; + status =3D "okay"; + + label =3D "OpenPandora"; + + amp-gpios =3D <&gpio1 14 GPIO_ACTIVE_HIGH>; + amp-supply =3D <®en>; + + widgets =3D + "Line", "Line Out", + "Line", "Line In", + "Headphone", "Headphone Jack", + "Microphone", "Mic (internal)", + "Microphone", "Mic (external)"; + + routing =3D + "PCM1773 DAC", "APLL Enable", + "Headphone Amplifier", "PCM1773 DAC", + "Line Out", "PCM1773 DAC", + "Headphone Jack", "Headphone Amplifier", + "AUXL", "Line In", + "AUXR", "Line In", + "MAINMIC", "Mic (internal)", + "Mic (internal)", "Mic Bias 1", + "SUBMIC", "Mic (external)", + "Mic (external)", "Mic Bias 2"; + + sound-dai =3D <&mcbsp2>, <&dac>; + }; --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.177]) (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 E4E923203B6; Sat, 11 Jul 2026 06:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.177 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749771; cv=pass; b=aFR+MxcXwiLVUqIzSrzia310ihqaBCsQq0EdVBSH50bsEir6MJxoGQhS51jpLQLghxSD1nXR9c+JA+6BpNACBFmtbYNwIHPiay79cPegdTQsTYm4Y7Ns9tfSqOFFsX5/mzsHk2bLTq5XO17BZ0Df7WTl4N1iMBB4JPtJhvS2WRQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749771; c=relaxed/simple; bh=AMRNOlxokmPgeKY+DfNe7od/LCFnky3zdAVEvMGPAIc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=QP4dGFtnFa8bYcKV4z4E5nzxn0Q58b3N5j74x6HSDyzTvmD6h992FIux+h09GgLrBCL8YCZKoGD2hy3k3Yx2y381Y67IUtQ8AJv7ii1DvI80rz+2tyfLywatKM7yxSKNWWP1XtkJdt91IwrGyv7NkWBTPtTGSetbJSq0s9YHy7U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=q4rTPSDE; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=f7BzaV5f; arc=pass smtp.client-ip=81.169.146.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="q4rTPSDE"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="f7BzaV5f" ARC-Seal: i=1; a=rsa-sha256; t=1783749740; cv=none; d=strato.com; s=strato-dkim-0002; b=GavbCTFZBG1aUMVo87JLKjuFV22hdUqfP4Ju8C198sTw03lZx+FZnD3jBZ1fnoVA8e 8cHkEPvkxgTuBSpZCc5WcOtSH2I6/BQ/qs3PO0jvP3ax60aABmELVjF8tTvJEcDXiVYm 0iQP9IdjFs6TTc/BUhRpcBLeYyGGibpbrtHQ0xxPuSjkE6NFluWd9v6EluaR+fmjEYRg vaPlL3v5wXXH7zDo8dPv4CiOkDW5YpnRJEY311xKF3wpRsdR3ztHwH32I7GkywLl2Hkz 9N1cphnBENDhfJVptbN2/1SuG9jgcqDG7FMM2eeLmy5p+eF39qvl8zqQpkL2B8oG3d9G rKtQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749740; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=igw5DRk6EVt837l8O2TTUHhMf9m3D5qGydPU0Gad1u0=; b=RcMZwFyBvozghkwObHtgiCz959R900n0dVDg50BJu31kYTrBrkiKNJoWCaTSqgAFW4 iAO3UfLQsDIKC9stuUX4Sho3hUbv1bZu1co9TtHfOQf98bcnjByZLe+Fqo6zaAeExbaL NoJUjMtp5VoaPanPmSAZwA2B4SMSd8s60TNb+Ne54DTmhQDtUe5K9pO0W4VKBpfb35D2 TaeHhvJTwabIXKJMUZyXlUSothtTsA85YcqZdF7m6dfVuaNVGBdhiu48+0GAzFMjJ7wy Jj2+AzdVPs0AB6gK5q45C7jMFvkCMRSR8HbUOxTSdOxCegPCxG7LYoDk+Fs+c4zk0iJP WWzA== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749740; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=igw5DRk6EVt837l8O2TTUHhMf9m3D5qGydPU0Gad1u0=; b=q4rTPSDEmy1bqza+Z1yq/O+CxRCbaEhdMn/OnVXhJEZl4NvY6TByyMbUNtb+Hjt3ZF 8m8YE6zLbl+NJ4sUY33X35YWsn5lg6M0uVNXPXAKOWp3Z8aEwXfCS9VL95Q8hSaAEi37 YsIQezP20j5I38dheK5jKKEuYUP4UXIlGM5CBgM1Q40cN28CTOXNbe3AcMgsFa0OozRC VIjZMMZVekVv8OeO06OnDol6PvHC7FeJ9ZKBGWP5SlX61IKEZg+NX0su7zAqdS5B5Sel Jhr7cTh1JSLGBn3t6ZKWX2i1qHBVU+oovDQkvmHKzVGxt8czauYSLO6C5njp8v9AiOVV KSuQ== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749740; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=igw5DRk6EVt837l8O2TTUHhMf9m3D5qGydPU0Gad1u0=; b=f7BzaV5fpcSx+hXIQHGf9w7G+7464WA3p1nmYPRi4iqK8MDwMr00glmmOmGWTm9+Di SnN2pK41zDAMYx/KZGCA== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62IGhv (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:18 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 10/16] ASoC: omap3pandora: Rewrite sound card driver as a platform driver with DT Date: Sat, 11 Jul 2026 08:01:57 +0200 Message-ID: <9274200e1ef2bc0e8df267a4b093b99f563c9c90.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Leichter This change takes advantage of numerous prior changes and moves a significant amount of code into the new PCM1773 codec driver (and removes a hardcoded GPIO and regulator in the process). By using this new driver we can remove the prior fiction that playback audio goes through the TWL4030. Previously, the sound card driver worked by checking (through various means) if it was running on the Pandora, and if so, it would create a new platform device from nothing to function as the sound card, and rely on some weirdne= ss to get registered as an ASoC card driver. This has not been the way to do A= SoC card drivers for a while now, so instead we register a platform driver which matches a device in the Pandora's DT and registers the appropriate ASoC card driver when found. This also means that the driver will only load when the = DT says that we need it, and we can stop manually loading this thing. Other significant changes: - as a side-effect this patch retires the last call to machine_is_omap3_pan= dora() - conversion to devm - separate capture and playback ops - conversion to dev_err - use new code for twl4030 to set apll clock - move widgets and routing to device tree definitions Signed-off-by: Stefan Leichter Co-developed-by: Grond Signed-off-by: Grond Co-developed-by: H. Nikolaus Schaller Signed-off-by: H. Nikolaus Schaller --- sound/soc/ti/omap3pandora.c | 454 +++++++++++++++++++++++++----------- 1 file changed, 320 insertions(+), 134 deletions(-) diff --git a/sound/soc/ti/omap3pandora.c b/sound/soc/ti/omap3pandora.c index 6c9c184cd9d6f..d3509473f5df0 100644 --- a/sound/soc/ti/omap3pandora.c +++ b/sound/soc/ti/omap3pandora.c @@ -6,138 +6,279 @@ */ =20 #include -#include -#include #include -#include +#include #include #include +#include +#include =20 #include #include #include =20 +#include +#include #include =20 #include "omap-mcbsp.h" =20 -#define PREFIX "ASoC omap3pandora: " +struct omap3pandora_sound { + struct gpio_desc *amp_gpio; + struct regulator *amp_regulator; + + struct snd_pcm_substream *playback_stream; + struct snd_pcm_substream *capture_stream; =20 -static struct regulator *omap3pandora_dac_reg; -static struct gpio_desc *dac_power_gpio; -static struct gpio_desc *amp_power_gpio; + struct mutex sample_rate_lock; // protects all fields after + unsigned int sample_rate; + int sample_rate_users; +}; =20 -static int omap3pandora_hw_params(struct snd_pcm_substream *substream, - struct snd_pcm_hw_params *params) +static struct snd_soc_dai_link omap3pandora_dai[]; + +static int omap3pandora_common_hw_params(struct snd_pcm_substream *substre= am, + struct snd_pcm_hw_params *params) { struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); struct snd_soc_dai *codec_dai =3D snd_soc_rtd_to_codec(rtd, 0); struct snd_soc_dai *cpu_dai =3D snd_soc_rtd_to_cpu(rtd, 0); + struct device *dev =3D rtd->dev; int ret; =20 - /* Set the codec system clock for DAC and ADC */ - ret =3D snd_soc_dai_set_sysclk(codec_dai, 0, 26000000, - SND_SOC_CLOCK_IN); - if (ret < 0) { - pr_err(PREFIX "can't set codec system clock\n"); - return ret; - } - /* Set McBSP clock to external */ ret =3D snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT, 256 * params_rate(params), SND_SOC_CLOCK_IN); if (ret < 0) { - pr_err(PREFIX "can't set cpu system clock\n"); + dev_err(dev, "cannot set McBSP clock to external: %d\n", ret); return ret; } =20 ret =3D snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, 8); if (ret < 0) { - pr_err(PREFIX "can't set SRG clock divider\n"); + dev_err(dev, "cannot set McBSP clock divider: %d\n", ret); return ret; } =20 return 0; } =20 -static int omap3pandora_dac_event(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *k, int event) +static inline int constrain_sample_rate(struct snd_pcm_substream *substrea= m, + unsigned int sample_rate) { + return snd_pcm_hw_constraint_single(substream->runtime, + SNDRV_PCM_HW_PARAM_RATE, + sample_rate); +} + +static inline void relax_sample_rate(struct snd_pcm_substream *substream) +{ + const struct snd_interval default_sample_rate_range =3D { + .min =3D substream->runtime->hw.rate_min, + .max =3D substream->runtime->hw.rate_max, + .openmin =3D 1, + .openmax =3D 1, + }; + + *constrs_interval(&substream->runtime->hw_constraints, + SNDRV_PCM_HW_PARAM_RATE) =3D + default_sample_rate_range; +} + +static void release_sample_rate(struct omap3pandora_sound *ctx, + struct snd_pcm_substream *substream) +{ + mutex_lock(&ctx->sample_rate_lock); + + if (ctx->sample_rate_users > 0) + --ctx->sample_rate_users; + if (ctx->sample_rate_users =3D=3D 0) + ctx->sample_rate =3D 0; + + relax_sample_rate(substream); + + mutex_unlock(&ctx->sample_rate_lock); +} + +static int grab_sample_rate(struct omap3pandora_sound *ctx, + struct snd_pcm_substream *substream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct device *dev =3D rtd->dev; + int ret; + + ret =3D mutex_lock_interruptible(&ctx->sample_rate_lock); + if (ret) + return ret; + + if (++ctx->sample_rate_users =3D=3D 1) + ctx->sample_rate =3D params_rate(params); + + mutex_unlock(&ctx->sample_rate_lock); + + ret =3D constrain_sample_rate(substream, ctx->sample_rate); + if (ret < 0) + goto err; + + ret =3D constrain_sample_rate(substream, params_rate(params)); + if (ret < 0) { + dev_dbg(dev, "sample rate mismatch; playback/capture share same clock"); + goto err; + } + + return 0; + +err: + release_sample_rate(ctx, substream); + + return ret; +} + +static int omap3pandora_playback_hw_params(struct snd_pcm_substream *subst= ream, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_card *card =3D rtd->card; + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); + struct device *dev =3D rtd->dev; + struct snd_soc_pcm_runtime *tmp_rtd; + struct snd_soc_pcm_runtime *twl4030_rtd =3D NULL; int ret; =20 /* - * The PCM1773 DAC datasheet requires 1ms delay between switching - * VCC power on/off and /PD pin high/low + * We need to set the APLL clock rate on the TWL4030 because it feeds + * both the DAI of the PCM1773. So find the appropriate RTD and call + * the TWL's .set_sysclk callback through there. Ugly, but it must be + * done. */ - if (SND_SOC_DAPM_EVENT_ON(event)) { - struct device *dev =3D snd_soc_dapm_to_dev(w->dapm); =20 - ret =3D regulator_enable(omap3pandora_dac_reg); - if (ret) { - dev_err(dev, "Failed to power DAC: %d\n", ret); - return ret; + for_each_card_rtds(card, tmp_rtd) + if (tmp_rtd->dai_link =3D=3D &omap3pandora_dai[1]) { + twl4030_rtd =3D tmp_rtd; + break; } - mdelay(1); - gpiod_set_value(dac_power_gpio, 1); - } else { - gpiod_set_value(dac_power_gpio, 0); - mdelay(1); - regulator_disable(omap3pandora_dac_reg); + if (!twl4030_rtd) { + dev_err(dev, "cannot find TWL4030 runtime data to set APLL rate\n"); + return -EINVAL; } =20 - return 0; + ret =3D snd_soc_dai_set_sysclk(snd_soc_rtd_to_codec(twl4030_rtd, 0), + TWL4030_CLOCK_APLL, params_rate(params), + SND_SOC_CLOCK_OUT); + if (ret) { + dev_err(dev, "cannot set TWL4030 APLL rate via set_sysclk interface: %d\= n", + ret); + return ret; + } + + if (!ctx->playback_stream) { + ctx->playback_stream =3D substream; + ret =3D grab_sample_rate(ctx, substream, params); + if (ret) + return ret; + } + + return omap3pandora_common_hw_params(substream, params); } =20 -static int omap3pandora_hp_event(struct snd_soc_dapm_widget *w, - struct snd_kcontrol *k, int event) +static int omap3pandora_capture_hw_params(struct snd_pcm_substream *substr= eam, + struct snd_pcm_hw_params *params) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_dai *codec_dai =3D snd_soc_rtd_to_codec(rtd, 0); + struct device *dev =3D rtd->dev; + struct snd_soc_card *card =3D rtd->card; + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); + int ret; + + /* Set the codec system clock for DAC and ADC */ + ret =3D snd_soc_dai_set_sysclk(codec_dai, 0, 26000000, + SND_SOC_CLOCK_IN); + if (ret < 0) { + dev_err(dev, "cannot set TWL4030 system clock: %d\n", ret); + return ret; + } + + if (!ctx->capture_stream) { + ctx->capture_stream =3D substream; + ret =3D grab_sample_rate(ctx, substream, params); + if (ret) + return ret; + } + + return omap3pandora_common_hw_params(substream, params); +} + +static int omap3pandora_playback_hw_free(struct snd_pcm_substream *substre= am) { - if (SND_SOC_DAPM_EVENT_ON(event)) - gpiod_set_value(amp_power_gpio, 1); - else - gpiod_set_value(amp_power_gpio, 0); + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_card *card =3D rtd->card; + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); + + if (ctx->playback_stream) + release_sample_rate(ctx, substream); + ctx->playback_stream =3D NULL; =20 return 0; } =20 -/* - * Audio paths on Pandora board: - * - * |O| ---> PCM DAC +-> AMP -> Headphone Jack - * |M| A +--------> Line Out - * |A| <~~clk~~+ - * |P| <--- TWL4030 <--------- Line In and MICs - */ -static const struct snd_soc_dapm_widget omap3pandora_dapm_widgets[] =3D { - SND_SOC_DAPM_DAC_E("PCM DAC", "HiFi Playback", SND_SOC_NOPM, - 0, 0, omap3pandora_dac_event, - SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), - SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM, - 0, 0, NULL, 0, omap3pandora_hp_event, - SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), - SND_SOC_DAPM_HP("Headphone Jack", NULL), - SND_SOC_DAPM_LINE("Line Out", NULL), +static int omap3pandora_common_startup(struct snd_pcm_substream *substream) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_card *card =3D rtd->card; + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); + unsigned int sample_rate =3D ctx->sample_rate; =20 - SND_SOC_DAPM_MIC("Mic (internal)", NULL), - SND_SOC_DAPM_MIC("Mic (external)", NULL), - SND_SOC_DAPM_LINE("Line In", NULL), -}; + if (!sample_rate) + return 0; =20 -static const struct snd_soc_dapm_route omap3pandora_map[] =3D { - {"PCM DAC", NULL, "APLL Enable"}, - {"Headphone Amplifier", NULL, "PCM DAC"}, - {"Line Out", NULL, "PCM DAC"}, - {"Headphone Jack", NULL, "Headphone Amplifier"}, + return constrain_sample_rate(substream, sample_rate); +} =20 - {"AUXL", NULL, "Line In"}, - {"AUXR", NULL, "Line In"}, +static int omap3pandora_capture_hw_free(struct snd_pcm_substream *substrea= m) +{ + struct snd_soc_pcm_runtime *rtd =3D snd_soc_substream_to_rtd(substream); + struct snd_soc_card *card =3D rtd->card; + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); =20 - {"MAINMIC", NULL, "Mic (internal)"}, - {"Mic (internal)", NULL, "Mic Bias 1"}, + if (ctx->capture_stream) + release_sample_rate(ctx, substream); + ctx->capture_stream =3D NULL; =20 - {"SUBMIC", NULL, "Mic (external)"}, - {"Mic (external)", NULL, "Mic Bias 2"}, -}; + return 0; +} + +static int omap3pandora_hp_event(struct snd_soc_dapm_widget *w, + struct snd_kcontrol *k, int event) +{ + struct snd_soc_card *card =3D snd_soc_dapm_to_card(w->dapm); + struct device *dev =3D card->dev; + struct omap3pandora_sound *ctx =3D + snd_soc_card_get_drvdata(card); + int ret; + + if (SND_SOC_DAPM_EVENT_ON(event)) { + ret =3D regulator_enable(ctx->amp_regulator); + if (ret) { + dev_err(dev, "error enabling amplifier regulator: %d\n", ret); + return ret; + } + + gpiod_set_value(ctx->amp_gpio, 1); + } else { + gpiod_set_value(ctx->amp_gpio, 0); + + ret =3D regulator_disable(ctx->amp_regulator); + if (ret) { + dev_err(dev, "error disabling amplifier regulator: %d\n", ret); + return ret; + } + } + + return 0; +} =20 static int omap3pandora_out_init(struct snd_soc_pcm_runtime *rtd) { @@ -171,20 +312,40 @@ static int omap3pandora_in_init(struct snd_soc_pcm_ru= ntime *rtd) return 0; } =20 -static const struct snd_soc_ops omap3pandora_ops =3D { - .hw_params =3D omap3pandora_hw_params, +static const struct snd_soc_ops omap3pandora_playback_ops =3D { + .startup =3D omap3pandora_common_startup, + .hw_params =3D omap3pandora_playback_hw_params, + .hw_free =3D omap3pandora_playback_hw_free, +}; + +static const struct snd_soc_ops omap3pandora_capture_ops =3D { + .startup =3D omap3pandora_common_startup, + .hw_params =3D omap3pandora_capture_hw_params, + .hw_free =3D omap3pandora_capture_hw_free, }; =20 /* Digital audio interface glue - connects codec <--> CPU */ +#if IS_BUILTIN(CONFIG_SND_SOC_OMAP3_PANDORA) SND_SOC_DAILINK_DEFS(out, DAILINK_COMP_ARRAY(COMP_CPU("omap-mcbsp.2")), - DAILINK_COMP_ARRAY(COMP_CODEC("twl4030-codec", "twl4030-hifi")), + DAILINK_COMP_ARRAY(COMP_CODEC("pcm1773-codec", "pcm1773-hifi")), DAILINK_COMP_ARRAY(COMP_PLATFORM("omap-mcbsp.2"))); =20 SND_SOC_DAILINK_DEFS(in, DAILINK_COMP_ARRAY(COMP_CPU("omap-mcbsp.4")), DAILINK_COMP_ARRAY(COMP_CODEC("twl4030-codec", "twl4030-hifi")), DAILINK_COMP_ARRAY(COMP_PLATFORM("omap-mcbsp.4"))); +#else /* IS_BUILTIN(CONFIG_SND_SOC_OMAP3_PANDORA) */ +SND_SOC_DAILINK_DEFS(out, + DAILINK_COMP_ARRAY(COMP_CPU("49022000.mcbsp")), + DAILINK_COMP_ARRAY(COMP_CODEC("pcm1773-codec", "pcm1773-hifi")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("49022000.mcbsp"))); + +SND_SOC_DAILINK_DEFS(in, + DAILINK_COMP_ARRAY(COMP_CPU("49026000.mcbsp")), + DAILINK_COMP_ARRAY(COMP_CODEC("twl4030-codec", "twl4030-hifi")), + DAILINK_COMP_ARRAY(COMP_PLATFORM("49026000.mcbsp"))); +#endif /* IS_BUILTIN(CONFIG_SND_SOC_OMAP3_PANDORA) */ =20 static struct snd_soc_dai_link omap3pandora_dai[] =3D { { @@ -192,100 +353,125 @@ static struct snd_soc_dai_link omap3pandora_dai[] = =3D { .stream_name =3D "HiFi Out", .dai_fmt =3D SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC, - .ops =3D &omap3pandora_ops, + .ops =3D &omap3pandora_playback_ops, .init =3D omap3pandora_out_init, + .playback_only =3D 1, SND_SOC_DAILINK_REG(out), }, { .name =3D "TWL4030", .stream_name =3D "Line/Mic In", .dai_fmt =3D SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | SND_SOC_DAIFMT_CBC_CFC, - .ops =3D &omap3pandora_ops, + .ops =3D &omap3pandora_capture_ops, .init =3D omap3pandora_in_init, + .capture_only =3D 1, SND_SOC_DAILINK_REG(in), } }; =20 +static const struct snd_soc_dapm_widget omap3pandora_local_widgets[] =3D { + SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM, + 0, 0, NULL, 0, omap3pandora_hp_event, + SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD), +}; + /* SoC card */ static struct snd_soc_card snd_soc_card_omap3pandora =3D { - .name =3D "omap3pandora", - .owner =3D THIS_MODULE, - .dai_link =3D omap3pandora_dai, - .num_links =3D ARRAY_SIZE(omap3pandora_dai), - - .dapm_widgets =3D omap3pandora_dapm_widgets, - .num_dapm_widgets =3D ARRAY_SIZE(omap3pandora_dapm_widgets), - .dapm_routes =3D omap3pandora_map, - .num_dapm_routes =3D ARRAY_SIZE(omap3pandora_map), + .name =3D "omap3pandora", + .owner =3D THIS_MODULE, + .dai_link =3D omap3pandora_dai, + .num_links =3D ARRAY_SIZE(omap3pandora_dai), + .dapm_widgets =3D omap3pandora_local_widgets, + .num_dapm_widgets =3D ARRAY_SIZE(omap3pandora_local_widgets), }; =20 -static struct platform_device *omap3pandora_snd_device; - -static int __init omap3pandora_soc_init(void) +static int omap3pandora_probe(struct platform_device *pdev) { int ret; + struct device *dev =3D &pdev->dev; + struct snd_soc_card *card =3D &snd_soc_card_omap3pandora; + struct omap3pandora_sound *ctx; =20 - if (!of_machine_is_compatible("openpandora,omap3-pandora-600mhz") && - !of_machine_is_compatible("openpandora,omap3-pandora-1ghz")) - return -ENODEV; - - pr_info("OMAP3 Pandora SoC init\n"); - - omap3pandora_snd_device =3D platform_device_alloc("soc-audio", -1); - if (omap3pandora_snd_device =3D=3D NULL) { - pr_err(PREFIX "Platform device allocation failed\n"); + ctx =3D devm_kzalloc(dev, sizeof(*ctx), GFP_KERNEL); + if (!ctx) return -ENOMEM; - } =20 - platform_set_drvdata(omap3pandora_snd_device, &snd_soc_card_omap3pandora); + mutex_init(&ctx->sample_rate_lock); =20 - ret =3D platform_device_add(omap3pandora_snd_device); - if (ret) { - pr_err(PREFIX "Unable to add platform device\n"); - goto fail2; + ctx->amp_gpio =3D devm_gpiod_get(dev, "amp", GPIOD_OUT_LOW); + if (IS_ERR(ctx->amp_gpio)) { + dev_err(dev, "cannot find amplifier gpio\n"); + return PTR_ERR(ctx->amp_gpio); } =20 - dac_power_gpio =3D devm_gpiod_get(&omap3pandora_snd_device->dev, - "dac", GPIOD_OUT_LOW); - if (IS_ERR(dac_power_gpio)) { - ret =3D PTR_ERR(dac_power_gpio); - goto fail3; + ctx->amp_regulator =3D devm_regulator_get(dev, "amp"); + if (IS_ERR(ctx->amp_regulator)) { + ret =3D PTR_ERR(ctx->amp_regulator); + dev_err(dev, "Failed to request regulator for amplifier power: %d\n", re= t); + return ret; } =20 - amp_power_gpio =3D devm_gpiod_get(&omap3pandora_snd_device->dev, - "amp", GPIOD_OUT_LOW); - if (IS_ERR(amp_power_gpio)) { - ret =3D PTR_ERR(amp_power_gpio); - goto fail3; + card->dev =3D dev; + + if (dev->of_node) { + ret =3D snd_soc_of_parse_card_name(card, "label"); + if (ret) + card->name =3D "omap3pandora"; + + ret =3D snd_soc_of_parse_audio_simple_widgets(card, "widgets"); + if (ret) { + dev_err(dev, "Failed to parse DAPM widgets: %d\n", ret); + goto err_mutex; + } + + ret =3D snd_soc_of_parse_audio_routing(card, "routing"); + if (ret) { + dev_err(dev, "Failed to parse audio routing: %d\n", ret); + goto err_mutex; + } } =20 - omap3pandora_dac_reg =3D regulator_get(&omap3pandora_snd_device->dev, "vc= c"); - if (IS_ERR(omap3pandora_dac_reg)) { - pr_err(PREFIX "Failed to get DAC regulator from %s: %ld\n", - dev_name(&omap3pandora_snd_device->dev), - PTR_ERR(omap3pandora_dac_reg)); - ret =3D PTR_ERR(omap3pandora_dac_reg); - goto fail3; + snd_soc_card_set_drvdata(card, ctx); + + ret =3D devm_snd_soc_register_card(dev, card); + if (ret) { + dev_err(dev, "Failed to register sound card: %d\n", ret); + goto err_mutex; } =20 return 0; =20 -fail3: - platform_device_del(omap3pandora_snd_device); -fail2: - platform_device_put(omap3pandora_snd_device); - +err_mutex: + mutex_destroy(&ctx->sample_rate_lock); return ret; } -module_init(omap3pandora_soc_init); =20 -static void __exit omap3pandora_soc_exit(void) +static void omap3pandora_remove(struct platform_device *pdev) { - regulator_put(omap3pandora_dac_reg); - platform_device_unregister(omap3pandora_snd_device); + struct snd_soc_card *card =3D platform_get_drvdata(pdev); + struct omap3pandora_sound *ctx =3D snd_soc_card_get_drvdata(card); + + mutex_destroy(&ctx->sample_rate_lock); } -module_exit(omap3pandora_soc_exit); + +static const struct of_device_id omap3pandora_of_match[] =3D { + { .compatible =3D "openpandora,omap3pandora-sound", }, + { }, +}; +MODULE_DEVICE_TABLE(of, omap3pandora_of_match); + +static struct platform_driver omap3pandora_driver =3D { + .driver =3D { + .name =3D "omap3pandora-sound", + .of_match_table =3D omap3pandora_of_match, + }, + .probe =3D omap3pandora_probe, + .remove =3D omap3pandora_remove, +}; + +module_platform_driver(omap3pandora_driver); =20 MODULE_AUTHOR("Grazvydas Ignotas "); MODULE_DESCRIPTION("ALSA SoC OMAP3 Pandora"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:omap3pandora-sound"); --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.121]) (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 EFB8B2DA76C; Sat, 11 Jul 2026 06:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.121 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749768; cv=pass; b=qwqEQIJTUMi8a26brpwtB+riciQ+cTqFXeKILQH/uRKJWnM+hUYdD6Ae7A2N9reQF2Xt/FEVJ29koTMjJZaMR4Ywvz/vAtng9Io73ZglvbM/xZk6046Xmrgo0Hyqwg6vIzCQeEcVW2Nb2rgZy5gh/I//oANnP0ew1u1JEYznjNQ= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749768; c=relaxed/simple; bh=ei8tTzxx2NWR0dqgcfVWSy/9nOD7csfapjKERc1nNY0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=G9tx57HG8HZkPajlyXqQ+vaX7I49xrXLK64W1ReZn/L5T2JvHoJArOfTzrD92U+oOLO7QNMEVUOjCz2dEpIT/T1CayCdfHG8K/nwvApt6CBheE1PL2VftCFdL0q774e4X+BQs/pIIfWU3vMtj9Vxc8SzedkPAV3G8znuYXakIu8= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=kCyPgNlE; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=iEfMC90x; arc=pass smtp.client-ip=85.215.255.121 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="kCyPgNlE"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="iEfMC90x" ARC-Seal: i=1; a=rsa-sha256; t=1783749741; cv=none; d=strato.com; s=strato-dkim-0002; b=cbHhs1G/UB8S4rKpy+eTavrMAOsuDePdX6s96nPH2HHTTPdY0K5V7VMRv2YltrLVoN sae4VTf9/3We3uaCL81xymPMAEy3gUDZaFhZZSxOCl0ZXWYSSoiSnDC9JxoeaD6rQFPS enVYxcwemHQxj59LUXohlY3jaB+6R6B4SR96khHLocwZ3DEGG39mMI9Xpnm6Rg1pg50C 5mVjQH2pZGJ1Tf+yrOa2+H9GBN0yyFNci76bPcjsPt7aM4K9Da0nZfo7ZbTqRIjWGfio cOd0+dfMUqdlNhyrxNirroMC2kEOPUPSyDQb6MwF5yYf0sUgm6CGOmwEDv5dgVmyFnnE 6GGA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749741; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HENgLEtB9pue7a+OzTC29B2VMtoMvD6SFjJxTuZhfas=; b=p/pEPqImHou+Mlwh+eAFeS0DZK5pnqKcoNMimQVpJw3SvlVwT9jmZQcJ7AJs+ZJLnp Vt6XHfDEREsyWvMIXCXD3cqUMgoLZAiWCPBy6K+zTIaKd7Hq8rI85JMA9uH/8ZrIaOW1 0KQOW3s099HgsShU8rlBTsNbHv+3FRXGzN/KHfxOchLJVCdmG+NVtzbu0tkHQfv0zHVi rp0mmqUlack9CnXpOlja/VTAiYscGx71l2ne/YtYxikQUcxKVpX1BHzpOEZqNrgPdW8E teS0p8NZH09q5XBrJPnKfuS/otgzI78ccJzsKBMt8Gui5Gm8IGMyEc4VMRIEdClEUHHf yXWQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749741; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HENgLEtB9pue7a+OzTC29B2VMtoMvD6SFjJxTuZhfas=; b=kCyPgNlEM4WxjjWOyGgAWA0z8pH8EXo4zD3PLR4gCoHpQUxskyHxbRfxwSnBZ5PfnN i2EKNtSit5uobsCV2mOs3V+ZdkXkxaQqh5MZLMlSvaqqIBg/vqaPMLlYp/nk14eUOnhX tKw3hrjG6ciaYgOwMpyMleFu2Pqd6y4jb9KjIoEkI0DvbqLqQ6H6PKhqgPxU7XHPjX6t ci2HjVu9xo3nDuPzHhPfW45G1xTzgxZJ1JqiuYdXgeXJD0Tk4ECwVmQjo+LZIyeknYiE orZG0RFseD3G5ZfzviqbdxLrF8BDy8a4ulOxScM2j3m2dN7/hYoqJ8B3oaxnGSndxma0 puqg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749741; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=HENgLEtB9pue7a+OzTC29B2VMtoMvD6SFjJxTuZhfas=; b=iEfMC90x31GwXTvNm+0LH5NqByU4WTMnLsdbXDP+vKKABTETSi+XsdwbCwVM3GWC0d FIlCftVoxFOwv2STJqDA== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62KGhw (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:20 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 11/16] ARM: dts: omap3-pandora-common: Enable audio in/out (mcbsp4/2) Date: Sat, 11 Jul 2026 08:01:58 +0200 Message-ID: <88d0a95b354b27aff5ba548d3829ae7c31838119.1783749722.git.hns@goldelico.com> X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Leichter enable mcbsp2 and mcbsp4. Signed-off-by: Stefan Leichter Signed-off-by: H. Nikolaus Schaller --- arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi | 2 ++ 1 file changed, 2 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index b4acab1625212..5907b2455f75b 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -716,6 +716,7 @@ &mcbsp1 { =20 /* audio DAC */ &mcbsp2 { + status =3D "okay"; }; =20 /* bluetooth */ @@ -724,6 +725,7 @@ &mcbsp3 { =20 /* to twl4030*/ &mcbsp4 { + status =3D "okay"; }; =20 &venc { --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.123]) (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 B2B4031F98D; Sat, 11 Jul 2026 06:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.123 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749770; cv=pass; b=XWAQ0yKH6AaWQY2G4RaghnM0uhTsIVen0jTAWy5F5Hio02Vyu50ehp8MYMH+wlgwz2J1HhuZFDdZPcD6Ne+esshQo7Uk1LM8ZXp4UQ5zFJjqNlM5z+/l+O2KEwnpexgMoUn7tVGaTum/VuSt43rDb2w6IKJET9U8WbB/hgRO+Lk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749770; c=relaxed/simple; bh=byxFi183F1E/GfsrzyzOEBkdcoXeAD4xHTu4rZaizYw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Y758KSrgWj5TxcgzhXYY26efAHSzK5pnKPq7duLG1VqTvzdOnAJNW/PieLDJ/1tU5FJoLPxhqJ3blviQR9icqoV4l5IwwIIKF22KeBHISJOoHKNF2WCbnA+MFHPWy9hWjS0g1fV3ecz+QOcNp6494gV9m/tLEX3GbCu+b3vVKMo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=CcOxDknd; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=xicL0N4p; arc=pass smtp.client-ip=85.215.255.123 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="CcOxDknd"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="xicL0N4p" ARC-Seal: i=1; a=rsa-sha256; t=1783749742; cv=none; d=strato.com; s=strato-dkim-0002; b=TvICnOmawaAQ6qEGwLuu5J8KbqZq7R1NS+pDcPR6zGmqsK4v5pXy2s6hK8NRC4Otuu kF/p42VxYJmNJq4drofOCvc4vh9xSHD+mzAwhuq262M0sIlC/e7Ai0wmFRHMbDOodhCF m9lSb5/2rCKCXcvYEwjneFB2hrOpvW5wpFttDW5EIrK8uc6qVF6vz5lfLW/rGB9zv8Ti cHROHupgwRraAF1B39z8xR4iWRfd8I8JY9l3Oji1BD3KRxcVR1gLZd+WVZ13jdGg1UJM /fOsyrhHUtRmgGKgu2KnxRD7gGqMI+adwM5jXgh2yTw4cqwox9EbVlZkRJZNgSfJfatD atpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749742; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=tTK+fNauRW/4gqqxGai+hoiJmwQwzk3dsJhL2tekNfU=; b=WIxSxTcYnF2kY0Weclg2MMkaL3A5T4S9ftUWd+gfl7Mc8hWxPVk4Y06Zmn9nmhVGHb eAqtDSO1xg8ooQvv8TxMSYEA+cQbeYLXhMla0PnCBQu0ct+sGBV0UkILmNdLYRB95+sn eZJFURIcURwO+4Xm43uhaXxUaNvR5O7kuvsQIVgWvzwNAdEfx50KjqDOYcTgN5S36Vcd UO4tq1g9sH3cc74BgAXtQSDAoHszd4MfIMewEICkJMDLtNS9JhmQvoLqmml5NRJVrdqE BbbUGbQRW2zm0iH3hnuRjM5JZTceQXJYkfqpWu6qAGcRq+VQdFwMnNP8mm8YF87P2lwg ttuQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749742; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=tTK+fNauRW/4gqqxGai+hoiJmwQwzk3dsJhL2tekNfU=; b=CcOxDkndXcy9PMb9HHQJsnU7aXgr2lrzwaTKLyqIlbgH7hgLgiZfsUZpvfp74KYs2l MIO+VX/Rg8Lu6lLrPTrIuyyCdHyPRJMH4xfHR1gTAx5GKS0aaaXjleAH8jvX3J8JmxwM wNfJTBd+hj3uYwrE7OX8RFzrRHHNoLjgx23/jfCQYxX3ZIGecN86fvE/egV6L67ALnwA 8B8dhKzaig65tIPSbf8RReuLLrTObwHoMeNLq5foE4stqVnGmEmwLjtvQ//McW+RMzlu bq65677kvAXeBv1oX8F+Q+/5FycQQUXQY06K82ofYWsK/Koj2UshirFawMSYGe78yC26 Ln4A== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749742; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=tTK+fNauRW/4gqqxGai+hoiJmwQwzk3dsJhL2tekNfU=; b=xicL0N4pJboi0V/330GoUB+RrGDnoPYRZURj32SWZcAtJ+jrMpiDwKf+CYIadL8xDN DKdryULyMNUBgufmz4AQ== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62LGhx (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:21 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 12/16] arm: dts: omap3pandora: Add device node for PCM1773 codec Date: Sat, 11 Jul 2026 08:01:59 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Grond This will ensure that the new PCM1773 driver gets loaded automatically. Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index 5907b2455f75b..de9860526b323 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -42,6 +42,13 @@ tv_connector_in: endpoint { }; }; =20 + dac: pcm1773-codec { + compatible =3D "ti,pcm1773"; + vcc-supply =3D <&vsim>; + enable-gpio =3D <&gpio4 22 GPIO_ACTIVE_HIGH>; /* GPIO 118 */ + status =3D "okay"; + }; + gpio-leds { =20 compatible =3D "gpio-leds"; --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [85.215.255.120]) (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 053441FD4; Sat, 11 Jul 2026 06:05:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=85.215.255.120 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749914; cv=pass; b=r2uEwUKfmMeEnG9hMFPhtldlX0+O66XGXWlqTs70IG2MPFHveHFlkCoWtpG7mEf32Cb1soC8eQzIAZsFuk2GyP7vlSHI2GNvu5sV+V5X+hb4iVagWEaYjNG/Cg5njKhdFnNpKkOaM8cgMsbzqfjH06zFqSfJ5NmMa9dFfeWIoIk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749914; c=relaxed/simple; bh=b2sPNADKqMR8qPuqcfZOFA0BbJgzfbHwOjO3i2WEGf4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=oejEYMKxp/OVnkWmhhL6YXIpR9Mh85ei72F4DlPDI0ghZMpP+tRPBOsNWNBwh1NPSCM2FkLRV9lp3VmhOkXvaVqOWRRIx2WqFO5GlKav0f94vzpz131FR0zcWHcmksFsSZpn9nHKTBVCg2epdTPPg9t5sC7Q1gcfvOcBPFH5dvg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=Zhji+Fru; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=zCuCf5AQ; arc=pass smtp.client-ip=85.215.255.120 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="Zhji+Fru"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="zCuCf5AQ" ARC-Seal: i=1; a=rsa-sha256; t=1783749744; cv=none; d=strato.com; s=strato-dkim-0002; b=PR1nHFc/QTqY+8hJVt2n1XSc8RSndpL3dJcVeJbTVYupGbSxEx8+IdKq0jW851lDMy Fb1OL1qYyjm0rry27iYDx9oVVr8WJnH+FGZOEfp10EKfLPK08+y2D7arl+tOfsWuyiHM MuKxA1uEbFgRTmC+NKcZiX9ujqAzDf633fe9IbE8lAJnk8oyn2NCUP5L65LcSHBFb7tp LTIzJ3aMk84+yc2Qsiw6ll+fFzZiXGjyv3Fv4Fxri4VduNcOI9pUX4soGBjusB8E3jLF BjlczD38d/LpCsHCoAOa9i3Kx3birvPMIFhJu3zTukod8E0rasrztihvczZIJskOec1B j4Zw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749744; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=hz7dWutT/qhmVRNalsYplqBc+0PlAjZb59MfOBNTMdM=; b=B55AYc3/CiWoSmm0ewOMOylZKiox5tJZ8moAzxu1QA1GxA3jlJL7N4AeHBmi+WEUfv 0G03dm8zIi43QpfwfO4q1XBsT9NNYsYFTwkKNjp8QFaN3XDdyYO0TUmj33vvPzwmlx0e RHuwcAEQVIW43CZ7v1Ctdo+IbGaFDH1ff+5ibVwjjh0DEINqNw+hvrk7OUyUw0qgIiGR 4bc6h9D4teQ5MMIudFPdAgJAiuYHb3Tgob5Okp1FmgN/XFizAiCA3lonc583jKPssjwk /eyvrQlsIxw0EWMJTS5mNMj4r0ts/V+EdreNDaffHhsVQQNVenJBF1KDwuA5IRAXdMbU NVgg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749744; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=hz7dWutT/qhmVRNalsYplqBc+0PlAjZb59MfOBNTMdM=; b=Zhji+FruYjtrExERO7SrSZF2ktV6BXHMG6nFLQw6JxfER1ygmuRuKHQ8W4GWjh8vrU sZLSgQy7qmu4CU3KTW2L/JgZ1+wzgoI8W3r8xSqIkKZK31vghaSHjMRWAP86FcUopR3r uptdedwaZu9HcOgEgoYTUxQny1XML+MsoOkX69rG6xD6O1a1ZMibAdn8alk/PypHD9AD gJqcbXhcnoAUkI/ifROQtV/IMzkebsvdvuFGP0vn9B3ywlkeLtwfe69zqlKa3CG1qaWb oG3g5Dgss/7Lxsu2iJIzU4y96cCXnYeZhtOwqWMZA6ckg6FWxrnSaGvlBgOVCPvWyVJV +zZg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749744; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=hz7dWutT/qhmVRNalsYplqBc+0PlAjZb59MfOBNTMdM=; b=zCuCf5AQ74RZRR3454ckpV2ZuySuLSyvn2wqrvlKki4HgJirIrNwTdc7KDvLkpElY7 T1I+KXo3MgT3AXba0YDg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62MGhy (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:22 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 13/16] arm: dts: omap3pandora: create new DT node for the sound card Date: Sat, 11 Jul 2026 08:02:00 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Stefan Leichter This means that the sound card driver (snd-soc-omap3pandora) will get loaded by default. To make this work, we also add dac pcm1773-codec and widgets and routing as needed. Signed-off-by: Stefan Leichter Signed-off-by: Grond Signed-off-by: H. Nikolaus Schaller --- .../dts/ti/omap/omap3-pandora-common.dtsi | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index de9860526b323..13821d926afb0 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -47,6 +47,45 @@ dac: pcm1773-codec { vcc-supply =3D <&vsim>; enable-gpio =3D <&gpio4 22 GPIO_ACTIVE_HIGH>; /* GPIO 118 */ status =3D "okay"; + #sound-dai-cells =3D <0>; + }; + + twl_audio_clk: twl-audio-clock { + compatible =3D "fixed-clock"; + #clock-cells =3D <0>; + clock-frequency =3D <12288000>; + clock-output-names =3D "clk256fs"; + }; + + sound: sound { + compatible =3D "openpandora,omap3pandora-sound"; + status =3D "okay"; + + label =3D "OpenPandora"; + + amp-gpios =3D <&gpio1 14 GPIO_ACTIVE_HIGH>; + amp-supply =3D <®en>; + + widgets =3D + "Line", "Line Out", + "Line", "Line In", + "Headphone", "Headphone Jack", + "Microphone", "Mic (internal)", + "Microphone", "Mic (external)"; + + routing =3D + "PCM1773 DAC", "APLL Enable", + "Headphone Amplifier", "PCM1773 DAC", + "Line Out", "PCM1773 DAC", + "Headphone Jack", "Headphone Amplifier", + "AUXL", "Line In", + "AUXR", "Line In", + "MAINMIC", "Mic (internal)", + "Mic (internal)", "Mic Bias 1", + "SUBMIC", "Mic (external)", + "Mic (external)", "Mic Bias 2"; + + sound-dai =3D <&mcbsp2>, <&dac>; }; =20 gpio-leds { @@ -724,6 +763,9 @@ &mcbsp1 { /* audio DAC */ &mcbsp2 { status =3D "okay"; + #sound-dai-cells =3D <0>; + clocks =3D <&mcbsp2_fck>, <&mcbsp2_ick>; + clock-names =3D "fck", "ick"; }; =20 /* bluetooth */ --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.177]) (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 9B3023264F5; Sat, 11 Jul 2026 06:02:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.177 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749771; cv=pass; b=O1nzfj6X9IOrHHznlxNqFy/r8EAKzdpYHuSnoREG2Xv1dgd/Hfo8PAbgxS/Bht6GLZqtjfYLY+HsRmIss8xajjXPHd0CYY2zkvwFK22wZ27RR9bVleg9CiQvClHiUhiKC+/RWEmAB2MwhgJipl0+ySIQIPu0BN4IwS09FO/NfQI= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749771; c=relaxed/simple; bh=gHzNRjwSJjbcr37jplQYfs//w3Z8goDW1tdy/3cSNZE=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Welyz72w4Q/GkrR6+7XU1UdRPVshJ7Z95YzVvyt7+35q2lZiUgEu4CfEfrjZQVtkNBdoUjBDPpl6WyQrMYwwFT6cx9S9QX2/cMiLNZPVx2oUta3yB8Cn1cbGd/IURP120CQJ8v1wUTxyhtsNdn3QSwK+0my88zXO4VVfPYwemnE= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=DsjtJ+yW; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=rAEbVbwN; arc=pass smtp.client-ip=81.169.146.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="DsjtJ+yW"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="rAEbVbwN" ARC-Seal: i=1; a=rsa-sha256; t=1783749745; cv=none; d=strato.com; s=strato-dkim-0002; b=rEKQcvgPuzF3DSEKNCIEmjFwHWJl8G4DFCL+RzQNbiCZUamh6K4Kx2BIMqLZwf0FdS 2IooEYvGMEghIaLo8iXNUXHE6rSEr2HBPGpot7PsYW6d89ubt84pkVC4X9EfjlFbdD1q /Am2zmTbYa8uIuFjilbQlonx64ueydadG6IHHs/Nw4oDDX0zeqk7THXpeXVlvSpchPIx mS6EjzwgsMX9Qhzrf9nP+qnCa380DmxEbZKHcbHv7OXgM0uQJAYz9sYsQWw44U8FJPEM kr/Ip6KN/sOHSY/NIBwebtMhw5KFmTOVldhFhL5NN9ohnDnE9NFQgS9kbZbQ9ZGYzQ4/ 6K4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749745; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=SWpm4yra0YVt5/zp7rN7HY5VEk+YLEulFULLYXtLgbQ=; b=BrXc0GJPyiNyVMdcMgLreB6sPP2tqdS7nck1elLTZ0TQ4U4a+zN/5ztDV+foO6T7yA bvMJDlQM2xwSu7s6TAJrEeAGSEqjhP2jiywW2UoGoNBKY7Mu/JOxUvhpdVjbO/pJFMp+ ArGHnPJ6OSDt2OlYlRGv+sZBzc+HgiO7HGMrYEZOqwel+ap9Ljl+X23ABAHo56acIOuV MbSFcO+pNwtDoQWOP3dOumJXo1rg37R69CR+N6RAonUakTXMKbc4uffNM4YpgfH0+TW1 1jEQ1H+QKhcJEcafe9owptr5Nxyd2oOW30j4Lunp2KLLndsfzWmB5czNkrC35aWKoJ1c 305Q== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749745; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=SWpm4yra0YVt5/zp7rN7HY5VEk+YLEulFULLYXtLgbQ=; b=DsjtJ+yWeQXeGXSXqayzMJFv7mIvd3himmCZ8aVwJqI7AJ6vYiFdDFp7pxEsoNbOD4 B/+NhjSFGn3w/MohgisZorBTHTlAD2rUAmEPKzuL6G3HrV/h7DDN9bBvJhvFV7XZ0OK8 Jqp7rUhyw8YvSl0OfVqP55prKr8SaFXoTFz9drv7wF9I53GJnUOu5NIdD2R06/VSwcF4 sXN8EvBPPE823SJ8yOf1huBAVNXpbVfwmkLAERxGau77u5rDt3Xw2mDnfU8/fn4cwn0b rBKfJechv3HX4Vpakvvyd9c3xtuFZH3IeO+vGIp0nczvcCTSGP/EzJvzne6sOF5wqV5M JJcA== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749745; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=SWpm4yra0YVt5/zp7rN7HY5VEk+YLEulFULLYXtLgbQ=; b=rAEbVbwNm8gmkWWJ4kg92pEQvoOB/LZXTOFifk6HWsHiLmQ6vGhRcSnzE2IUnCIesb iWhaItEvuBz+aWs9j6Cw== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62OGhz (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:24 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 14/16] arm: dts: omap3-pandora-common: backlight: switch to twl4030 pwm and pwm_bl Date: Sat, 11 Jul 2026 08:02:01 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This allows to remove the pandora_bl driver and pdata-quirks. Signed-off-by: H. Nikolaus Schaller --- arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi b/arch/arm= /boot/dts/ti/omap/omap3-pandora-common.dtsi index 13821d926afb0..fea7132ce7c5e 100644 --- a/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi +++ b/arch/arm/boot/dts/ti/omap/omap3-pandora-common.dtsi @@ -31,6 +31,14 @@ hfclk_26m: oscillator { clock-frequency =3D <26000000>; }; =20 + backlight { + compatible =3D "pwm-backlight"; + pwms =3D <&twl_pwm 0 1922710>; + + brightness-levels =3D <0 150 158 166 174 185 205 230 255>; + default-brightness-level =3D <6>; + }; + tv: connector { compatible =3D "connector-analog-tv"; label =3D "tv"; --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.177]) (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 9B35A2DA768; Sat, 11 Jul 2026 06:02:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.177 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749768; cv=pass; b=ArVYasvBu/1Fc36xpvd8IjDl2GZl8GlMUAP8pHvEbybZzA1vm9WACJGVMr6T7rsl0DJHkrSuS22oiN/zp9TCx0zLC5JNg+Z19oXGZL71s73LSTEgFgM8Z29msDCo7EHSpn5x7rltTOctL92GWbie29AId9i1fM36bxXL7JdbAOs= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749768; c=relaxed/simple; bh=8U83B9LRk1dKj2Jnju2tX3sgdInfkKSVyP3e6vEm7A8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=Vsg7ok2oya7ic8zckEXPcrBllGPBkXZ8ugu26Ead58mQi/z5s/3Cqv6qa+xhShv6ys3wtfLLnYsOQ/aMJPvTK+dAVWHzmnSSJXCLZiZVmnlgFvvrMyvVECqbhdaVh0cPFghwq3OraunQH06SeLPej8EzC7s7KtdSYiLXH0PHn/Y= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=H0E6fUOI; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=o0YSAyo+; arc=pass smtp.client-ip=81.169.146.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="H0E6fUOI"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="o0YSAyo+" ARC-Seal: i=1; a=rsa-sha256; t=1783749746; cv=none; d=strato.com; s=strato-dkim-0002; b=g9M4gqJl1SHWv2ddnj27JmqGZPXr91e/K/2pnJNAEchnkCkPExHpVQbpPBr5hRQ3g8 qDuN4k5maOCku7toQYWBo2QVzxOA+YZfM72g+2P0xzZtUcvR3YUHFAXrVfUmc6JMRfG3 IuIM/Kehz89pN9CWDPSVVXQgxzS7m8dAPmawcyfonIwhV451+MtVxPLmtoHjFe01NwEs qibE+4iPhbm0R4HVd4pCw5ccdtYqGo/f59KKFGPh65gpg1arm8BfHk3QPfH4/4HKGomF JNz4hiKa9fUn5bQL8iQBbjN+iQEnIs4RMO9c+iiiU7e1joKaaSMrKBSiEhttavkXjUMh CPQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749746; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7pA0TFC7UkEDXI5FUk59zdzYhP+mOINP0O+fHg17PO8=; b=FozWwp/sAiNBb0Vi3waIgup6pPUUKBANGqkq1yFyQATClVwnivdeT+iujS+w41DceP KmcbvodJ8dz085DHhYjYmLFmEoPj0/H42iM1pHoNSPh1R8G7ZbZ+yRItLikSL2MfhGff 1Rhy8/5f3T1e5TxT1iuDyo9zQkm+KxA4nWqkPGiXeQd/P9QbOXCbO/pRBs/towBV62FH d55CLgTFTB1JqL2NRuXJIApZX2F7dSRuU/jZG1RFTYPKU6Ua9VkCeyaA8NEU90du6kJc nikb4byzkE2gxIG0DNwaEVpBfMczzxJIpg62ag8yBeWvPNGnAcdcwLv6hAlhatjtISa5 PmiQ== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749746; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7pA0TFC7UkEDXI5FUk59zdzYhP+mOINP0O+fHg17PO8=; b=H0E6fUOI+kXtvl2A2BrQrKmQMA7wJAlkBsexcdVWxwz2btf0WN9fY+v+U2YaSltr2W XLMTszlt7IJ3CY4YmdBUAyrJI/zz18XDsb7IddVY6Kn3lHm9JnFsDj50UB982jC/7HAr xCe2Wrp5bVtJD1BIn+z4wJLeQrBWihUu+p7LvCOUr2OlpBVZyr/VnacHDLUbkca7px/r 9sBZdwK/vaSRmNEQrbWzLgVW+AKObAWBooN5BaNpBZfLaJnQvPJBouuOV35cdp94iXuG QaaqBiHzhakev6bvUronTMahQDRfBdXXMDfMCPY6MFEOIMIuWg1Ve45pbkAAdmqLQkD7 CWgw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749746; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=7pA0TFC7UkEDXI5FUk59zdzYhP+mOINP0O+fHg17PO8=; b=o0YSAyo+ZlRrYAUyXkQ2aUg8Awuw7E4YNwmC7YQ62b8sLgqlZ/QhLRRf48RMtbtKsg 43T3NehK34SoQdLmktBg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62PGi1 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:25 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 15/16] backlight: remove pandora_bl Date: Sat, 11 Jul 2026 08:02:02 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Retire the platform specific pandora backlight driver since it can now be replaced by twl_pm and device tree. Signed-off-by: H. Nikolaus Schaller --- drivers/video/backlight/Kconfig | 7 -- drivers/video/backlight/Makefile | 1 - drivers/video/backlight/pandora_bl.c | 159 --------------------------- 3 files changed, 167 deletions(-) delete mode 100644 drivers/video/backlight/pandora_bl.c diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kcon= fig index 7aa1c4b21111f..a250b3edc152c 100644 --- a/drivers/video/backlight/Kconfig +++ b/drivers/video/backlight/Kconfig @@ -451,13 +451,6 @@ config BACKLIGHT_MP3309C To compile this driver as a module, choose M here: the module will be called mp3309c. =20 -config BACKLIGHT_PANDORA - tristate "Backlight driver for Pandora console" - depends on TWL4030_CORE - help - If you have a Pandora console, say Y to enable the - backlight driver. - config BACKLIGHT_SKY81452 tristate "Backlight driver for SKY81452" depends on MFD_SKY81452 diff --git a/drivers/video/backlight/Makefile b/drivers/video/backlight/Mak= efile index 21c8313cfb121..f97ab8ba85807 100644 --- a/drivers/video/backlight/Makefile +++ b/drivers/video/backlight/Makefile @@ -52,7 +52,6 @@ obj-$(CONFIG_BACKLIGHT_MAX8925) +=3D max8925_bl.o obj-$(CONFIG_BACKLIGHT_MP3309C) +=3D mp3309c.o obj-$(CONFIG_BACKLIGHT_MT6370) +=3D mt6370-backlight.o obj-$(CONFIG_BACKLIGHT_OMAP1) +=3D omap1_bl.o -obj-$(CONFIG_BACKLIGHT_PANDORA) +=3D pandora_bl.o obj-$(CONFIG_BACKLIGHT_PWM) +=3D pwm_bl.o obj-$(CONFIG_BACKLIGHT_QCOM_WLED) +=3D qcom-wled.o obj-$(CONFIG_BACKLIGHT_RT4831) +=3D rt4831-backlight.o diff --git a/drivers/video/backlight/pandora_bl.c b/drivers/video/backlight= /pandora_bl.c deleted file mode 100644 index 8a63ded0fa90f..0000000000000 --- a/drivers/video/backlight/pandora_bl.c +++ /dev/null @@ -1,159 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-only -/* - * Backlight driver for Pandora handheld. - * Pandora uses TWL4030 PWM0 -> TPS61161 combo for control backlight. - * Based on pwm_bl.c - * - * Copyright 2009,2012 Gra=C5=BEvydas Ignotas - */ - -#include -#include -#include -#include -#include -#include -#include - -#define TWL_PWM0_ON 0x00 -#define TWL_PWM0_OFF 0x01 - -#define TWL_INTBR_GPBR1 0x0c -#define TWL_INTBR_PMBR1 0x0d - -#define TWL_PMBR1_PWM0_MUXMASK 0x0c -#define TWL_PMBR1_PWM0 0x04 -#define PWM0_CLK_ENABLE BIT(0) -#define PWM0_ENABLE BIT(2) - -/* range accepted by hardware */ -#define MIN_VALUE 9 -#define MAX_VALUE 63 -#define MAX_USER_VALUE (MAX_VALUE - MIN_VALUE) - -struct pandora_private { - unsigned old_state; -#define PANDORABL_WAS_OFF 1 -}; - -static int pandora_backlight_update_status(struct backlight_device *bl) -{ - int brightness =3D bl->props.brightness; - struct pandora_private *priv =3D bl_get_data(bl); - u8 r; - - if (bl->props.power !=3D BACKLIGHT_POWER_ON) - brightness =3D 0; - if (bl->props.state & BL_CORE_FBBLANK) - brightness =3D 0; - if (bl->props.state & BL_CORE_SUSPENDED) - brightness =3D 0; - - if ((unsigned int)brightness > MAX_USER_VALUE) - brightness =3D MAX_USER_VALUE; - - if (brightness =3D=3D 0) { - if (priv->old_state =3D=3D PANDORABL_WAS_OFF) - goto done; - - /* first disable PWM0 output, then clock */ - twl_i2c_read_u8(TWL4030_MODULE_INTBR, &r, TWL_INTBR_GPBR1); - r &=3D ~PWM0_ENABLE; - twl_i2c_write_u8(TWL4030_MODULE_INTBR, r, TWL_INTBR_GPBR1); - r &=3D ~PWM0_CLK_ENABLE; - twl_i2c_write_u8(TWL4030_MODULE_INTBR, r, TWL_INTBR_GPBR1); - - goto done; - } - - if (priv->old_state =3D=3D PANDORABL_WAS_OFF) { - /* - * set PWM duty cycle to max. TPS61161 seems to use this - * to calibrate it's PWM sensitivity when it starts. - */ - twl_i2c_write_u8(TWL_MODULE_PWM, MAX_VALUE, TWL_PWM0_OFF); - - /* first enable clock, then PWM0 out */ - twl_i2c_read_u8(TWL4030_MODULE_INTBR, &r, TWL_INTBR_GPBR1); - r &=3D ~PWM0_ENABLE; - r |=3D PWM0_CLK_ENABLE; - twl_i2c_write_u8(TWL4030_MODULE_INTBR, r, TWL_INTBR_GPBR1); - r |=3D PWM0_ENABLE; - twl_i2c_write_u8(TWL4030_MODULE_INTBR, r, TWL_INTBR_GPBR1); - - /* - * TI made it very easy to enable digital control, so easy that - * it often triggers unintentionally and disabes PWM control, - * so wait until 1 wire mode detection window ends. - */ - usleep_range(2000, 10000); - } - - twl_i2c_write_u8(TWL_MODULE_PWM, MIN_VALUE + brightness, TWL_PWM0_OFF); - -done: - if (brightness !=3D 0) - priv->old_state =3D 0; - else - priv->old_state =3D PANDORABL_WAS_OFF; - - return 0; -} - -static const struct backlight_ops pandora_backlight_ops =3D { - .options =3D BL_CORE_SUSPENDRESUME, - .update_status =3D pandora_backlight_update_status, -}; - -static int pandora_backlight_probe(struct platform_device *pdev) -{ - struct backlight_properties props; - struct backlight_device *bl; - struct pandora_private *priv; - u8 r; - - priv =3D devm_kmalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); - if (!priv) - return -ENOMEM; - - memset(&props, 0, sizeof(props)); - props.max_brightness =3D MAX_USER_VALUE; - props.type =3D BACKLIGHT_RAW; - bl =3D devm_backlight_device_register(&pdev->dev, pdev->name, &pdev->dev, - priv, &pandora_backlight_ops, &props); - if (IS_ERR(bl)) { - dev_err(&pdev->dev, "failed to register backlight\n"); - return PTR_ERR(bl); - } - - platform_set_drvdata(pdev, bl); - - /* 64 cycle period, ON position 0 */ - twl_i2c_write_u8(TWL_MODULE_PWM, 0x80, TWL_PWM0_ON); - - priv->old_state =3D PANDORABL_WAS_OFF; - bl->props.brightness =3D MAX_USER_VALUE; - backlight_update_status(bl); - - /* enable PWM function in pin mux */ - twl_i2c_read_u8(TWL4030_MODULE_INTBR, &r, TWL_INTBR_PMBR1); - r &=3D ~TWL_PMBR1_PWM0_MUXMASK; - r |=3D TWL_PMBR1_PWM0; - twl_i2c_write_u8(TWL4030_MODULE_INTBR, r, TWL_INTBR_PMBR1); - - return 0; -} - -static struct platform_driver pandora_backlight_driver =3D { - .driver =3D { - .name =3D "pandora-backlight", - }, - .probe =3D pandora_backlight_probe, -}; - -module_platform_driver(pandora_backlight_driver); - -MODULE_AUTHOR("Gra=C5=BEvydas Ignotas "); -MODULE_DESCRIPTION("Pandora Backlight Driver"); -MODULE_LICENSE("GPL"); -MODULE_ALIAS("platform:pandora-backlight"); --=20 2.50.1 (Apple Git-155) From nobody Sat Jul 25 23:41:29 2026 Received: from mo4-p04-ob.smtp.rzone.de (mo4-p04-ob.smtp.rzone.de [81.169.146.177]) (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 2873731D362; Sat, 11 Jul 2026 06:02:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=pass smtp.client-ip=81.169.146.177 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749769; cv=pass; b=e2pAqdVH7UpVc7yTiU6rQzypCZwqTYpTxa3fQiNibTyd5CYHjQQHU5i7rC/9SC+zqYPUX0EWZEClUttTPMYmQxe4RMeeH1dM0YASe5hyqAmuEONjhMtr86G9Zgy7nEdEI8GdBOP7VYIaAoP9n/GC6f7cu+H5gCC9JTaJgDSmHV4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783749769; c=relaxed/simple; bh=k8TcFAtq5OzJ3ShLEbgL/dHs7mnwdxGIlUgLItpZfJw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=cK9qEmf92JiUxFSt2+ot1I4UKytZKbEvvcdjSirdwkoMLIQ3ETwPfUCpL9Qwc18BZ7m4SMuuhH4rMekKp+jEeh26ioDKTA7YQeaj2yOtPofxj2l9Yg2e2DvOvmArRUXLBiFyaJfPnWSuvOmJkIROYBuwhRFmgpZf36Q8ZPkZ2bM= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com; spf=pass smtp.mailfrom=goldelico.com; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=rz1xcUgX; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b=8fCXSY9c; arc=pass smtp.client-ip=81.169.146.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=goldelico.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=goldelico.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="rz1xcUgX"; dkim=permerror (0-bit key) header.d=goldelico.com header.i=@goldelico.com header.b="8fCXSY9c" ARC-Seal: i=1; a=rsa-sha256; t=1783749748; cv=none; d=strato.com; s=strato-dkim-0002; b=TwQnfT3mm1kEvuObLqPH26UYG9JlnWXuJEm4kkLExiYeF2ITQRRyvAmjz+RFzYzbz8 oH7pXl9wIj6nyfDIWt3eZ2QFING/+AaK0StdVkNmVaK8U+cmolfy12LLsyVFXmi2zWEy Sm+NE5bmhhExGCcEuv3tSK9L2okCTrAVccjj9PiwWI9mKP5EPW0E3m2jFo8yBmSb4TVB HsqoS9B27maxZmSIxSRIxOw/q0tMEEJnt48uD3HiItjJQ9Do6sNXw52+jQkMDVAMIlho IXJbOvmTVvEupOus0KUL0UfQQGuKYN2651qlUKTibpnBArkwXNEN85V4IgeLOVDPJnKy hcpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749748; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=cPc+/CQe6kjMaEdJWNjK4a7APvXUbTuseVN/eSOqRFw=; b=sAKoWEC1jnAcNNC298HRqiXR+voHv8x7alycw5gAyhMegt7Xt2kJfxJL5Lg8nzhq1L ElvUJu031bdmnfcPnetnKM9ceKPC6zziCrB7ZYa0aWK6d9ylI8zGW563Mmm6Lw6BKA33 WxG9/yXUnWWQWcx+xY6lu0PLEYgVy7H/FnvumgKtvjtqXxe4nOqq751gJkTyySOxCMKC h5Yb6wupre4S8JXFis+eeX9DhUEKvysdBKQMMoCIvwnyOHOmWQ9It5qk6TnfTOUJdEVv 6J+Rt0W0MjDbchKj5kj3Q4+cKZYBsqOowKXs0XrOdojj3POZruK1MLcdRynitqZX/aSm qM+Q== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo04 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1783749748; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=cPc+/CQe6kjMaEdJWNjK4a7APvXUbTuseVN/eSOqRFw=; b=rz1xcUgXG3oRwXWGuBq9YszLtX8ZK6SlaG17IH5YGrw3A7mrDOpTZAdcMhUxTxwCvZ WG24sV2w6GG8tUs96rLlTJfrmcyA0C2442CcDjyZktLAwPHJH1x+wKLxwSlx+KaUFfeb x3g3P4XCuqDy1XuDP3zt/c0SWmxoEWs8KzDG+upus9n0ArC9U2XaRsvNtZY+bQx1StBd sArlVmTF3cwaIvzb34IbieodXXRUo0W2iz0QW5I8RvLUw4uD/RUdY52Jntd187lkRE6i NFiy+im6XC1ahh5DJAQDthZDJk7cHrI53Tn69al0UEzzoAhG688PZB1f/hQkzCGNSOQF mmGw== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; t=1783749748; s=strato-dkim-0003; d=goldelico.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=cPc+/CQe6kjMaEdJWNjK4a7APvXUbTuseVN/eSOqRFw=; b=8fCXSY9c1lXBeUHph8ovftMufel8JVUOdBANz0/iwCW3aXTxsZf4vEfOCYgOzusoqD OHE3a0UTXw2vRS3huIAg== X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9qVpwcQVkPW4I1HrT35oLmciNszeF4HOToVDOd6S1gdjuILE2MKVd" Received: from iMac.fritz.box by smtp.strato.de (RZmta 55.5.6 AUTH) with ESMTPSA id Q4b76426B62QGi2 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Sat, 11 Jul 2026 08:02:26 +0200 (CEST) From: "H. Nikolaus Schaller" To: Grond , Stefan Leichter , "H . Nikolaus Schaller" , Grazvydas Ignotas , Tony Lindgren , Ethan Nelson-Moore , Jarkko Nikula , Sascha Hauer , Andreas Kemnade , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , Aaro Koskinen , Kevin Hilman , Roger Quadros , Russell King , Daniel Thompson , Jingoo Han , Helge Deller , Jaroslav Kysela , Takashi Iwai , Sen Wang , Richard Fitzgerald , Arnd Bergmann , Srinivas Kandagatla , Kuninori Morimoto , Charles Keepax , Niranjan H Y Cc: letux-kernel@openphoenux.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-sound@vger.kernel.org, linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org, dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org, kernel@pyra-handheld.com, mfd@lists.linux.dev Subject: [PATCH 16/16] arm: omap2: remove remaining pdata-quirks for pandora legacy devices Date: Sat, 11 Jul 2026 08:02:03 +0200 Message-ID: X-Mailer: git-send-email 2.50.1 In-Reply-To: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" After updating the pandora-backligt setup and removing the omap3pandora sound system and defining related gpios by device tree, we can remove omap3_pandora_legacy_init() and the related legacy devices completely. Signed-off-by: H. Nikolaus Schaller --- arch/arm/mach-omap2/pdata-quirks.c | 23 ----------------------- 1 file changed, 23 deletions(-) diff --git a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata= -quirks.c index b947bacf23a37..aca7097a692ed 100644 --- a/arch/arm/mach-omap2/pdata-quirks.c +++ b/arch/arm/mach-omap2/pdata-quirks.c @@ -268,27 +268,6 @@ static void __init omap3_logicpd_torpedo_init(void) omap3_gpio126_127_129(); } =20 -/* omap3pandora legacy devices */ - -static struct platform_device pandora_backlight =3D { - .name =3D "pandora-backlight", - .id =3D -1, -}; - -static struct gpiod_lookup_table pandora_soc_audio_gpios =3D { - .dev_id =3D "soc-audio", - .table =3D { - GPIO_LOOKUP("gpio-112-127", 6, "dac", GPIO_ACTIVE_HIGH), - GPIO_LOOKUP("gpio-0-15", 14, "amp", GPIO_ACTIVE_HIGH), - { } - }, -}; - -static void __init omap3_pandora_legacy_init(void) -{ - platform_device_register(&pandora_backlight); - gpiod_add_lookup_table(&pandora_soc_audio_gpios); -} #endif /* CONFIG_ARCH_OMAP3 */ =20 #ifdef CONFIG_SOC_DRA7XX @@ -514,8 +493,6 @@ static struct pdata_init pdata_quirks[] __initdata =3D { { "ti,omap3-evm-37xx", omap3_evm_legacy_init, }, { "ti,am3517-evm", am3517_evm_legacy_init, }, { "technexion,omap3-tao3530", omap3_tao3530_legacy_init, }, - { "openpandora,omap3-pandora-600mhz", omap3_pandora_legacy_init, }, - { "openpandora,omap3-pandora-1ghz", omap3_pandora_legacy_init, }, #endif { /* sentinel */ }, }; --=20 2.50.1 (Apple Git-155)