[PATCH v2 11/21] arm64: dts: apple: t8103-j313: Add speaker/headset jack nodes
Ajay Kumar Nandam
ajay.nandam at oss.qualcomm.com
Wed Oct 7 11:32:52 PDT 2026
On 10/4/2026 11:33 AM, James Calligeros wrote:
> The M1 MacBook Air integrates Apple-specific variants of the TI TAS2770
> and Cirrus CS42L42. Add these nodes and advertise them to the machine
> driver via the sound node.
>
> Signed-off-by: James Calligeros <jcalligeros99 at gmail.com>
> ---
> arch/arm64/boot/dts/apple/t8103-j313.dts | 82 +++++++++++++++++++++++++
> 1 file changed, 82 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/apple/t8103-j313.dts b/arch/arm64/boot/dts/apple/t8103-j313.dts
> index f8b2b1637b9d..cdda63ca8b34 100644
> --- a/arch/arm64/boot/dts/apple/t8103-j313.dts
> +++ b/arch/arm64/boot/dts/apple/t8103-j313.dts
> @@ -55,4 +55,86 @@ &typec1 {
> label = "USB-C Left-front";
> };
>
> +/* Audio codecs */
> +&i2c1 {
> + status = "okay";
> +
> + speaker_left: codec at 31 {
> + compatible = "ti,tas5770l";
> + reg = <0x31>;
> + interrupts-extended = <&pinctrl_ap 182 IRQ_TYPE_LEVEL_LOW>;
> + shutdown-gpios = <&pinctrl_ap 181 GPIO_ACTIVE_HIGH>;
> + #sound-dai-cells = <0>;
> + sound-name-prefix = "Left";
> + ti,imon-slot-no = <0>;
> + ti,vmon-slot-no = <2>;
> + };
> +};
> +
> +&i2c3 {
> + status = "okay";
> +
> + speaker_right: codec at 34 {
> + compatible = "ti,tas5770l";
> + reg = <0x34>;
> + interrupts-extended = <&pinctrl_ap 182 IRQ_TYPE_LEVEL_LOW>;
> + shutdown-gpios = <&pinctrl_ap 181 GPIO_ACTIVE_HIGH>;
> + #sound-dai-cells = <0>;
Both speaker codec nodes reference the same shutdown GPIO. Is that
intentional for this board?
The TAS2770 driver requests 'shutdown-gpios' per codec instance, and
GPIO requests are exclusive by default. So I would expect only one codec
instance to own this line, while the other appears to fall back to the
register-only path after the GPIO request fails.
If GPIO181 is a shared physical shutdown line for both amps, how is the
power/reset ordering expected to work across probe, suspend, and resume
when only one of the two codec driver instances controls that line?
Thanks
Ajay Kumar Nandam
> + sound-name-prefix = "Right";
> + ti,imon-slot-no = <4>;
> + ti,vmon-slot-no = <6>;
> + };
> +
> + jack_codec: codec at 48 {
> + compatible = "cirrus,cs42l83";
> + reg = <0x48>;
> + interrupts-extended = <&pinctrl_ap 183 IRQ_TYPE_LEVEL_LOW>;
> + reset-gpios = <&pinctrl_nub 11 GPIO_ACTIVE_HIGH>;
> + #sound-dai-cells = <0>;
> + sound-name-prefix = "Jack";
> + cirrus,ts-inv = <1>;
> + };
> +};
> +
> +/ {
> + sound: sound {
> + compatible = "apple,j313-macaudio";
> + model = "MacBook Air J313";
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + dai-link at 0 {
> + reg = <0>;
> +
> + dai-tdm-idle-mode-0 = "zero";
> + dai-tdm-idle-mode-1 = "zero";
> +
> + link-name = "Speakers";
> +
> + codec {
> + sound-dai = <&speaker_left>, <&speaker_right>;
> + };
> +
> + cpu {
> + sound-dai = <&mca 0>, <&mca 1>;
> + };
> + };
> +
> + dai-link at 1 {
> + reg = <1>;
> +
> + link-name = "Headphone Jack";
> +
> + codec {
> + sound-dai = <&jack_codec>;
> + };
> +
> + cpu {
> + sound-dai = <&mca 2>;
> + };
> + };
> + };
> +};
> +
> #include "hwmon-laptop.dtsi"
>
More information about the Linux-mediatek
mailing list