linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
@ 2021-06-28 11:30 Adrian Ratiu
  2021-06-29  9:06 ` Alex Bee
  0 siblings, 1 reply; 6+ messages in thread
From: Adrian Ratiu @ 2021-06-28 11:30 UTC (permalink / raw)
  To: Rob Herring, Heiko Stuebner
  Cc: jack, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel, kernel

This adds the necessary pinctrl and nodes to enable the
analog audio on rk3399 rock-pi-4 SBCs using the es8316
codec and the audio-graph-card driver.

Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
---
 .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 +++++++++++++++++++
 1 file changed, 38 insertions(+)

diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
index b28888ea9262..77781d9150ac 100644
--- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
+++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
@@ -128,6 +128,12 @@ vdd_log: vdd-log {
 		regulator-max-microvolt = <1400000>;
 		vin-supply = <&vcc5v0_sys>;
 	};
+
+	sound {
+		compatible = "audio-graph-card";
+		label = "rockchip,rk3399";
+		dais = <&i2s0_p0>;
+	};
 };
 
 &cpu_l0 {
@@ -422,6 +428,24 @@ &i2c1 {
 	i2c-scl-rising-time-ns = <300>;
 	i2c-scl-falling-time-ns = <15>;
 	status = "okay";
+
+	es8316: codec@11 {
+		compatible = "everest,es8316";
+		reg = <0x11>;
+		clocks = <&cru SCLK_I2S_8CH_OUT>;
+		clock-names = "mclk";
+		pinctrl-names = "default";
+		pinctrl-0 = <&hp_det_pin>;
+		interrupt-parent = <&gpio1>;
+		interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
+		#sound-dai-cells = <0>;
+
+		port {
+			es8316_p0_0: endpoint {
+				remote-endpoint = <&i2s0_p0_0>;
+			};
+		};
+	};
 };
 
 &i2c3 {
@@ -441,6 +465,14 @@ &i2s0 {
 	rockchip,capture-channels = <2>;
 	rockchip,playback-channels = <2>;
 	status = "okay";
+
+	i2s0_p0: port {
+		i2s0_p0_0: endpoint {
+			dai-format = "i2s";
+			mclk-fs = <256>;
+			remote-endpoint = <&es8316_p0_0>;
+		};
+	};
 };
 
 &i2s1 {
@@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
 			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
 		};
 	};
+
+	es8316 {
+		hp_det_pin: hp-det-pin {
+			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
 };
 
 &pwm2 {
-- 
2.32.0


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

* Re: [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
  2021-06-28 11:30 [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio Adrian Ratiu
@ 2021-06-29  9:06 ` Alex Bee
  2021-06-29 15:07   ` Adrian Ratiu
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Bee @ 2021-06-29  9:06 UTC (permalink / raw)
  To: Adrian Ratiu, Heiko Stuebner
  Cc: jack, devicetree, linux-arm-kernel, linux-rockchip, linux-kernel,
	kernel, Rob Herring

Hi Adrian,

I've submitted similar patch already. Its part of [1]

There is no headphone detection pin in the schematics, btw.

[1] 
https://patchwork.kernel.org/project/linux-rockchip/cover/20210618181256.27992-1-knaerzche@gmail.com/

Best,

Alex

Am 28.06.21 um 13:30 schrieb Adrian Ratiu:
> This adds the necessary pinctrl and nodes to enable the
> analog audio on rk3399 rock-pi-4 SBCs using the es8316
> codec and the audio-graph-card driver.
>
> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
> ---
>   .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 +++++++++++++++++++
>   1 file changed, 38 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> index b28888ea9262..77781d9150ac 100644
> --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> @@ -128,6 +128,12 @@ vdd_log: vdd-log {
>   		regulator-max-microvolt = <1400000>;
>   		vin-supply = <&vcc5v0_sys>;
>   	};
> +
> +	sound {
> +		compatible = "audio-graph-card";
> +		label = "rockchip,rk3399";
> +		dais = <&i2s0_p0>;
> +	};
>   };
>   
>   &cpu_l0 {
> @@ -422,6 +428,24 @@ &i2c1 {
>   	i2c-scl-rising-time-ns = <300>;
>   	i2c-scl-falling-time-ns = <15>;
>   	status = "okay";
> +
> +	es8316: codec@11 {
> +		compatible = "everest,es8316";
> +		reg = <0x11>;
> +		clocks = <&cru SCLK_I2S_8CH_OUT>;
> +		clock-names = "mclk";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&hp_det_pin>;
> +		interrupt-parent = <&gpio1>;
> +		interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
> +		#sound-dai-cells = <0>;
> +
> +		port {
> +			es8316_p0_0: endpoint {
> +				remote-endpoint = <&i2s0_p0_0>;
> +			};
> +		};
> +	};
>   };
>   
>   &i2c3 {
> @@ -441,6 +465,14 @@ &i2s0 {
>   	rockchip,capture-channels = <2>;
>   	rockchip,playback-channels = <2>;
>   	status = "okay";
> +
> +	i2s0_p0: port {
> +		i2s0_p0_0: endpoint {
> +			dai-format = "i2s";
> +			mclk-fs = <256>;
> +			remote-endpoint = <&es8316_p0_0>;
> +		};
> +	};
>   };
>   
>   &i2s1 {
> @@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
>   			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
>   		};
>   	};
> +
> +	es8316 {
> +		hp_det_pin: hp-det-pin {
> +			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
> +		};
> +	};
>   };
>   
>   &pwm2 {

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

* Re: [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
  2021-06-29  9:06 ` Alex Bee
@ 2021-06-29 15:07   ` Adrian Ratiu
  2021-06-29 15:42     ` Robin Murphy
  0 siblings, 1 reply; 6+ messages in thread
From: Adrian Ratiu @ 2021-06-29 15:07 UTC (permalink / raw)
  To: Alex Bee
  Cc: Heiko Stuebner, jack, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, kernel, Rob Herring

Hi Alex,

On Tue, 29 Jun 2021, Alex Bee <knaerzche@gmail.com> wrote:
> Hi Adrian, 
> 
> I've submitted similar patch already. Its part of [1]

Thank you for pointing out your patch, I was not aware of it as it 
was not merged yet (I tested latest linux-next).

It is a good sign that our code is almost identical except for the 
headphone detect pin which you mention.
 
> 
> There is no headphone detection pin in the schematics, btw. 
>

There are two reasons I added it:

1. The es8316 codec failed to probe() in my testing unless the irq 
was defined. That might have been due to me testing the codec 
directly with the simple card driver instead of the graph driver.

Point 1 doesn't appear to be an issue anymore, the codec + graph 
driver probe correctly and audio supposedly (see below) works even 
without the irq.

2. I got the gpio bank 1 pin 0 location from various headphone 
detection commits in the vendor v4.4 kernel, like for example [1].

Are you 100% sure there is no hp detection pin wired on the 
rock-pi-4? 

Even if it might be missing from the schematics, the vendor driver 
code apparently defines and uses it?

From booting with the irq defined I get the following in 
/proc/interrupts however I'm having an unrelated difficulty 
testing because the audio connector literally broke off the board 
like in [2]. 

90: 1  0  0  0  0  rockchip_gpio_irq   0 Level     es8316

Team Radxa was very nice in offering me a replacement but until 
that arrives I can't test this anymore.

[1] 
https://github.com/radxa/kernel/commit/e945cad5c3ec82d171760465d3c7a84bb10ed1b7

[2] https://forum.radxa.com/t/audio-jack-broke-off/935

> [1] 
> https://patchwork.kernel.org/project/linux-rockchip/cover/20210618181256.27992-1-knaerzche@gmail.com/
>
> Best,
>
> Alex
>
> Am 28.06.21 um 13:30 schrieb Adrian Ratiu:
>> This adds the necessary pinctrl and nodes to enable the
>> analog audio on rk3399 rock-pi-4 SBCs using the es8316
>> codec and the audio-graph-card driver.
>>
>> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
>> ---
>>   .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 +++++++++++++++++++
>>   1 file changed, 38 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>> index b28888ea9262..77781d9150ac 100644
>> --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>> @@ -128,6 +128,12 @@ vdd_log: vdd-log {
>>   		regulator-max-microvolt = <1400000>;
>>   		vin-supply = <&vcc5v0_sys>;
>>   	};
>> +
>> +	sound {
>> +		compatible = "audio-graph-card";
>> +		label = "rockchip,rk3399";
>> +		dais = <&i2s0_p0>;
>> +	};
>>   };
>>   
>>   &cpu_l0 {
>> @@ -422,6 +428,24 @@ &i2c1 {
>>   	i2c-scl-rising-time-ns = <300>;
>>   	i2c-scl-falling-time-ns = <15>;
>>   	status = "okay";
>> +
>> +	es8316: codec@11 {
>> +		compatible = "everest,es8316";
>> +		reg = <0x11>;
>> +		clocks = <&cru SCLK_I2S_8CH_OUT>;
>> +		clock-names = "mclk";
>> +		pinctrl-names = "default";
>> +		pinctrl-0 = <&hp_det_pin>;
>> +		interrupt-parent = <&gpio1>;
>> +		interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
>> +		#sound-dai-cells = <0>;
>> +
>> +		port {
>> +			es8316_p0_0: endpoint {
>> +				remote-endpoint = <&i2s0_p0_0>;
>> +			};
>> +		};
>> +	};
>>   };
>>   
>>   &i2c3 {
>> @@ -441,6 +465,14 @@ &i2s0 {
>>   	rockchip,capture-channels = <2>;
>>   	rockchip,playback-channels = <2>;
>>   	status = "okay";
>> +
>> +	i2s0_p0: port {
>> +		i2s0_p0_0: endpoint {
>> +			dai-format = "i2s";
>> +			mclk-fs = <256>;
>> +			remote-endpoint = <&es8316_p0_0>;
>> +		};
>> +	};
>>   };
>>   
>>   &i2s1 {
>> @@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
>>   			rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
>>   		};
>>   	};
>> +
>> +	es8316 {
>> +		hp_det_pin: hp-det-pin {
>> +			rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
>> +		};
>> +	};
>>   };
>>   
>>   &pwm2 {

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

* Re: [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
  2021-06-29 15:07   ` Adrian Ratiu
@ 2021-06-29 15:42     ` Robin Murphy
  2021-06-29 17:04       ` Alex Bee
  0 siblings, 1 reply; 6+ messages in thread
From: Robin Murphy @ 2021-06-29 15:42 UTC (permalink / raw)
  To: Adrian Ratiu, Alex Bee
  Cc: Heiko Stuebner, jack, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, kernel, Rob Herring

On 2021-06-29 16:07, Adrian Ratiu wrote:
> Hi Alex,
> 
> On Tue, 29 Jun 2021, Alex Bee <knaerzche@gmail.com> wrote:
>> Hi Adrian,
>> I've submitted similar patch already. Its part of [1]
> 
> Thank you for pointing out your patch, I was not aware of it as it was 
> not merged yet (I tested latest linux-next).
> 
> It is a good sign that our code is almost identical except for the 
> headphone detect pin which you mention.
> 
>>
>> There is no headphone detection pin in the schematics, btw.
> 
> There are two reasons I added it:
> 
> 1. The es8316 codec failed to probe() in my testing unless the irq was 
> defined. That might have been due to me testing the codec directly with 
> the simple card driver instead of the graph driver.
> 
> Point 1 doesn't appear to be an issue anymore, the codec + graph driver 
> probe correctly and audio supposedly (see below) works even without the 
> irq.
> 
> 2. I got the gpio bank 1 pin 0 location from various headphone detection 
> commits in the vendor v4.4 kernel, like for example [1].
> 
> Are you 100% sure there is no hp detection pin wired on the rock-pi-4?
> Even if it might be missing from the schematics, the vendor driver code 
> apparently defines and uses it?

FWIW according to the schematics it *is* wired up on the Model C board, 
but not on the Model A or B.

Robin.

>  From booting with the irq defined I get the following in 
> /proc/interrupts however I'm having an unrelated difficulty testing 
> because the audio connector literally broke off the board like in [2].
> 90: 1  0  0  0  0  rockchip_gpio_irq   0 Level     es8316
> 
> Team Radxa was very nice in offering me a replacement but until that 
> arrives I can't test this anymore.
> 
> [1] 
> https://github.com/radxa/kernel/commit/e945cad5c3ec82d171760465d3c7a84bb10ed1b7 
> 
> 
> [2] https://forum.radxa.com/t/audio-jack-broke-off/935
> 
>> [1] 
>> https://patchwork.kernel.org/project/linux-rockchip/cover/20210618181256.27992-1-knaerzche@gmail.com/ 
>>
>>
>> Best,
>>
>> Alex
>>
>> Am 28.06.21 um 13:30 schrieb Adrian Ratiu:
>>> This adds the necessary pinctrl and nodes to enable the
>>> analog audio on rk3399 rock-pi-4 SBCs using the es8316
>>> codec and the audio-graph-card driver.
>>>
>>> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
>>> ---
>>>   .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 +++++++++++++++++++
>>>   1 file changed, 38 insertions(+)
>>>
>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 
>>> b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>> index b28888ea9262..77781d9150ac 100644
>>> --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>> @@ -128,6 +128,12 @@ vdd_log: vdd-log {
>>>           regulator-max-microvolt = <1400000>;
>>>           vin-supply = <&vcc5v0_sys>;
>>>       };
>>> +
>>> +    sound {
>>> +        compatible = "audio-graph-card";
>>> +        label = "rockchip,rk3399";
>>> +        dais = <&i2s0_p0>;
>>> +    };
>>>   };
>>>   &cpu_l0 {
>>> @@ -422,6 +428,24 @@ &i2c1 {
>>>       i2c-scl-rising-time-ns = <300>;
>>>       i2c-scl-falling-time-ns = <15>;
>>>       status = "okay";
>>> +
>>> +    es8316: codec@11 {
>>> +        compatible = "everest,es8316";
>>> +        reg = <0x11>;
>>> +        clocks = <&cru SCLK_I2S_8CH_OUT>;
>>> +        clock-names = "mclk";
>>> +        pinctrl-names = "default";
>>> +        pinctrl-0 = <&hp_det_pin>;
>>> +        interrupt-parent = <&gpio1>;
>>> +        interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
>>> +        #sound-dai-cells = <0>;
>>> +
>>> +        port {
>>> +            es8316_p0_0: endpoint {
>>> +                remote-endpoint = <&i2s0_p0_0>;
>>> +            };
>>> +        };
>>> +    };
>>>   };
>>>   &i2c3 {
>>> @@ -441,6 +465,14 @@ &i2s0 {
>>>       rockchip,capture-channels = <2>;
>>>       rockchip,playback-channels = <2>;
>>>       status = "okay";
>>> +
>>> +    i2s0_p0: port {
>>> +        i2s0_p0_0: endpoint {
>>> +            dai-format = "i2s";
>>> +            mclk-fs = <256>;
>>> +            remote-endpoint = <&es8316_p0_0>;
>>> +        };
>>> +    };
>>>   };
>>>   &i2s1 {
>>> @@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
>>>               rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
>>>           };
>>>       };
>>> +
>>> +    es8316 {
>>> +        hp_det_pin: hp-det-pin {
>>> +            rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
>>> +        };
>>> +    };
>>>   };
>>>   &pwm2 {
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip

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

* Re: [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
  2021-06-29 15:42     ` Robin Murphy
@ 2021-06-29 17:04       ` Alex Bee
  2021-06-29 17:30         ` Adrian Ratiu
  0 siblings, 1 reply; 6+ messages in thread
From: Alex Bee @ 2021-06-29 17:04 UTC (permalink / raw)
  To: Robin Murphy, Adrian Ratiu
  Cc: Heiko Stuebner, jack, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, kernel, Rob Herring

Hi Adrian, Hi Robin
Am 29.06.21 um 17:42 schrieb Robin Murphy:
> On 2021-06-29 16:07, Adrian Ratiu wrote:
>> Hi Alex,
>>
>> On Tue, 29 Jun 2021, Alex Bee <knaerzche@gmail.com> wrote:
>>> Hi Adrian,
>>> I've submitted similar patch already. Its part of [1]
>>
>> Thank you for pointing out your patch, I was not aware of it as it was 
>> not merged yet (I tested latest linux-next).
>>
>> It is a good sign that our code is almost identical except for the 
>> headphone detect pin which you mention.
>>
>>>
>>> There is no headphone detection pin in the schematics, btw.
>>
>> There are two reasons I added it:
>>
>> 1. The es8316 codec failed to probe() in my testing unless the irq was 
>> defined. That might have been due to me testing the codec directly 
>> with the simple card driver instead of the graph driver.
>>
>> Point 1 doesn't appear to be an issue anymore, the codec + graph 
>> driver probe correctly and audio supposedly (see below) works even 
>> without the irq.
I guess that just a "warning" that doesn't mean the driver failed to 
probe. (It the same for RockPro64, for example - where the interrupt 
line isn't connected as well)
>>
>> 2. I got the gpio bank 1 pin 0 location from various headphone 
>> detection commits in the vendor v4.4 kernel, like for example [1].
>>
>> Are you 100% sure there is no hp detection pin wired on the rock-pi-4?
>> Even if it might be missing from the schematics, the vendor driver 
>> code apparently defines and uses it?
> 
> FWIW according to the schematics it *is* wired up on the Model C board, 
> but not on the Model A or B.
> 
Thanks for the pointer, I did look at v1.3 only, tbh.

I'm not sure I understand why we should pull up this pin.

Shouldn't we better use hp-det-gpio property of audio-graph-card to make 
real use of this pin?

> Robin.
> 
>>  From booting with the irq defined I get the following in 
>> /proc/interrupts however I'm having an unrelated difficulty testing 
>> because the audio connector literally broke off the board like in [2].
>> 90: 1  0  0  0  0  rockchip_gpio_irq   0 Level     es8316
According to the Model C schematics the codec interrupt (HP_INT) is 
connected to GPIO1_PA1 (in contrast to GPIO1_PA0 which is used for hp 
detection).

If you're OK I'll update my series and add those pins for Model C only 
(and will request the schematics of A+ and B+ which seem not to be 
published yet to check out what the manufacturer decided for those variants)

Alex
>>
>> Team Radxa was very nice in offering me a replacement but until that 
>> arrives I can't test this anymore.
>>
>> [1] 
>> https://github.com/radxa/kernel/commit/e945cad5c3ec82d171760465d3c7a84bb10ed1b7 
>>
>>
>> [2] https://forum.radxa.com/t/audio-jack-broke-off/935
>>
>>> [1] 
>>> https://patchwork.kernel.org/project/linux-rockchip/cover/20210618181256.27992-1-knaerzche@gmail.com/ 
>>>
>>>
>>> Best,
>>>
>>> Alex
>>>
>>> Am 28.06.21 um 13:30 schrieb Adrian Ratiu:
>>>> This adds the necessary pinctrl and nodes to enable the
>>>> analog audio on rk3399 rock-pi-4 SBCs using the es8316
>>>> codec and the audio-graph-card driver.
>>>>
>>>> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
>>>> ---
>>>>   .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 
>>>> +++++++++++++++++++
>>>>   1 file changed, 38 insertions(+)
>>>>
>>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 
>>>> b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>>> index b28888ea9262..77781d9150ac 100644
>>>> --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>>> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
>>>> @@ -128,6 +128,12 @@ vdd_log: vdd-log {
>>>>           regulator-max-microvolt = <1400000>;
>>>>           vin-supply = <&vcc5v0_sys>;
>>>>       };
>>>> +
>>>> +    sound {
>>>> +        compatible = "audio-graph-card";
>>>> +        label = "rockchip,rk3399";
>>>> +        dais = <&i2s0_p0>;
>>>> +    };
>>>>   };
>>>>   &cpu_l0 {
>>>> @@ -422,6 +428,24 @@ &i2c1 {
>>>>       i2c-scl-rising-time-ns = <300>;
>>>>       i2c-scl-falling-time-ns = <15>;
>>>>       status = "okay";
>>>> +
>>>> +    es8316: codec@11 {
>>>> +        compatible = "everest,es8316";
>>>> +        reg = <0x11>;
>>>> +        clocks = <&cru SCLK_I2S_8CH_OUT>;
>>>> +        clock-names = "mclk";
>>>> +        pinctrl-names = "default";
>>>> +        pinctrl-0 = <&hp_det_pin>;
>>>> +        interrupt-parent = <&gpio1>;
>>>> +        interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
>>>> +        #sound-dai-cells = <0>;
>>>> +
>>>> +        port {
>>>> +            es8316_p0_0: endpoint {
>>>> +                remote-endpoint = <&i2s0_p0_0>;
>>>> +            };
>>>> +        };
>>>> +    };
>>>>   };
>>>>   &i2c3 {
>>>> @@ -441,6 +465,14 @@ &i2s0 {
>>>>       rockchip,capture-channels = <2>;
>>>>       rockchip,playback-channels = <2>;
>>>>       status = "okay";
>>>> +
>>>> +    i2s0_p0: port {
>>>> +        i2s0_p0_0: endpoint {
>>>> +            dai-format = "i2s";
>>>> +            mclk-fs = <256>;
>>>> +            remote-endpoint = <&es8316_p0_0>;
>>>> +        };
>>>> +    };
>>>>   };
>>>>   &i2s1 {
>>>> @@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
>>>>               rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
>>>>           };
>>>>       };
>>>> +
>>>> +    es8316 {
>>>> +        hp_det_pin: hp-det-pin {
>>>> +            rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
>>>> +        };
>>>> +    };
>>>>   };
>>>>   &pwm2 {
>>
>> _______________________________________________
>> Linux-rockchip mailing list
>> Linux-rockchip@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-rockchip
> 
> _______________________________________________
> Linux-rockchip mailing list
> Linux-rockchip@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-rockchip


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

* Re: [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio
  2021-06-29 17:04       ` Alex Bee
@ 2021-06-29 17:30         ` Adrian Ratiu
  0 siblings, 0 replies; 6+ messages in thread
From: Adrian Ratiu @ 2021-06-29 17:30 UTC (permalink / raw)
  To: Alex Bee
  Cc: Robin Murphy, Heiko Stuebner, jack, devicetree, linux-arm-kernel,
	linux-rockchip, linux-kernel, kernel, Rob Herring

On Tuesday, June 29, 2021 20:04 EEST, Alex Bee <knaerzche@gmail.com> wrote: 
 
> Hi Adrian, Hi Robin
> Am 29.06.21 um 17:42 schrieb Robin Murphy:
> > On 2021-06-29 16:07, Adrian Ratiu wrote:
> >> Hi Alex,
> >>
> >> On Tue, 29 Jun 2021, Alex Bee <knaerzche@gmail.com> wrote:
> >>> Hi Adrian,
> >>> I've submitted similar patch already. Its part of [1]
> >>
> >> Thank you for pointing out your patch, I was not aware of it as it was 
> >> not merged yet (I tested latest linux-next).
> >>
> >> It is a good sign that our code is almost identical except for the 
> >> headphone detect pin which you mention.
> >>
> >>>
> >>> There is no headphone detection pin in the schematics, btw.
> >>
> >> There are two reasons I added it:
> >>
> >> 1. The es8316 codec failed to probe() in my testing unless the irq was 
> >> defined. That might have been due to me testing the codec directly 
> >> with the simple card driver instead of the graph driver.
> >>
> >> Point 1 doesn't appear to be an issue anymore, the codec + graph 
> >> driver probe correctly and audio supposedly (see below) works even 
> >> without the irq.
> I guess that just a "warning" that doesn't mean the driver failed to 
> probe. (It the same for RockPro64, for example - where the interrupt 
> line isn't connected as well)
> >>
> >> 2. I got the gpio bank 1 pin 0 location from various headphone 
> >> detection commits in the vendor v4.4 kernel, like for example [1].
> >>
> >> Are you 100% sure there is no hp detection pin wired on the rock-pi-4?
> >> Even if it might be missing from the schematics, the vendor driver 
> >> code apparently defines and uses it?
> > 
> > FWIW according to the schematics it *is* wired up on the Model C board, 
> > but not on the Model A or B.
> > 
> Thanks for the pointer, I did look at v1.3 only, tbh.
> 
> I'm not sure I understand why we should pull up this pin.
> 
> Shouldn't we better use hp-det-gpio property of audio-graph-card to make 
> real use of this pin?

That sounds like the best way forward, only on the model / revision which actually has the pin connected.

> 
> > Robin.
> > 
> >>  From booting with the irq defined I get the following in 
> >> /proc/interrupts however I'm having an unrelated difficulty testing 
> >> because the audio connector literally broke off the board like in [2].
> >> 90: 1  0  0  0  0  rockchip_gpio_irq   0 Level     es8316
> According to the Model C schematics the codec interrupt (HP_INT) is 
> connected to GPIO1_PA1 (in contrast to GPIO1_PA0 which is used for hp 
> detection).
> 
> If you're OK I'll update my series and add those pins for Model C only 
> (and will request the schematics of A+ and B+ which seem not to be 
> published yet to check out what the manufacturer decided for those variants)

Yes, thank you very much! Please CC me on the new series, hopefully I can provide a tested-by if I receive the fixed HW by then.

Adrian

> 
> Alex
> >>
> >> Team Radxa was very nice in offering me a replacement but until that 
> >> arrives I can't test this anymore.
> >>
> >> [1] 
> >> https://github.com/radxa/kernel/commit/e945cad5c3ec82d171760465d3c7a84bb10ed1b7 
> >>
> >>
> >> [2] https://forum.radxa.com/t/audio-jack-broke-off/935
> >>
> >>> [1] 
> >>> https://patchwork.kernel.org/project/linux-rockchip/cover/20210618181256.27992-1-knaerzche@gmail.com/ 
> >>>
> >>>
> >>> Best,
> >>>
> >>> Alex
> >>>
> >>> Am 28.06.21 um 13:30 schrieb Adrian Ratiu:
> >>>> This adds the necessary pinctrl and nodes to enable the
> >>>> analog audio on rk3399 rock-pi-4 SBCs using the es8316
> >>>> codec and the audio-graph-card driver.
> >>>>
> >>>> Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
> >>>> ---
> >>>>   .../boot/dts/rockchip/rk3399-rock-pi-4.dtsi   | 38 
> >>>> +++++++++++++++++++
> >>>>   1 file changed, 38 insertions(+)
> >>>>
> >>>> diff --git a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi 
> >>>> b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> >>>> index b28888ea9262..77781d9150ac 100644
> >>>> --- a/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> >>>> +++ b/arch/arm64/boot/dts/rockchip/rk3399-rock-pi-4.dtsi
> >>>> @@ -128,6 +128,12 @@ vdd_log: vdd-log {
> >>>>           regulator-max-microvolt = <1400000>;
> >>>>           vin-supply = <&vcc5v0_sys>;
> >>>>       };
> >>>> +
> >>>> +    sound {
> >>>> +        compatible = "audio-graph-card";
> >>>> +        label = "rockchip,rk3399";
> >>>> +        dais = <&i2s0_p0>;
> >>>> +    };
> >>>>   };
> >>>>   &cpu_l0 {
> >>>> @@ -422,6 +428,24 @@ &i2c1 {
> >>>>       i2c-scl-rising-time-ns = <300>;
> >>>>       i2c-scl-falling-time-ns = <15>;
> >>>>       status = "okay";
> >>>> +
> >>>> +    es8316: codec@11 {
> >>>> +        compatible = "everest,es8316";
> >>>> +        reg = <0x11>;
> >>>> +        clocks = <&cru SCLK_I2S_8CH_OUT>;
> >>>> +        clock-names = "mclk";
> >>>> +        pinctrl-names = "default";
> >>>> +        pinctrl-0 = <&hp_det_pin>;
> >>>> +        interrupt-parent = <&gpio1>;
> >>>> +        interrupts = <RK_PA0 IRQ_TYPE_LEVEL_HIGH>;
> >>>> +        #sound-dai-cells = <0>;
> >>>> +
> >>>> +        port {
> >>>> +            es8316_p0_0: endpoint {
> >>>> +                remote-endpoint = <&i2s0_p0_0>;
> >>>> +            };
> >>>> +        };
> >>>> +    };
> >>>>   };
> >>>>   &i2c3 {
> >>>> @@ -441,6 +465,14 @@ &i2s0 {
> >>>>       rockchip,capture-channels = <2>;
> >>>>       rockchip,playback-channels = <2>;
> >>>>       status = "okay";
> >>>> +
> >>>> +    i2s0_p0: port {
> >>>> +        i2s0_p0_0: endpoint {
> >>>> +            dai-format = "i2s";
> >>>> +            mclk-fs = <256>;
> >>>> +            remote-endpoint = <&es8316_p0_0>;
> >>>> +        };
> >>>> +    };
> >>>>   };
> >>>>   &i2s1 {
> >>>> @@ -556,6 +588,12 @@ wifi_host_wake_l: wifi-host-wake-l {
> >>>>               rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
> >>>>           };
> >>>>       };
> >>>> +
> >>>> +    es8316 {
> >>>> +        hp_det_pin: hp-det-pin {
> >>>> +            rockchip,pins = <1 RK_PA0 RK_FUNC_GPIO &pcfg_pull_up>;
> >>>> +        };
> >>>> +    };
> >>>>   };
> >>>>   &pwm2 {
> >>
> >> _______________________________________________
> >> Linux-rockchip mailing list
> >> Linux-rockchip@lists.infradead.org
> >> http://lists.infradead.org/mailman/listinfo/linux-rockchip
> > 
> > _______________________________________________
> > Linux-rockchip mailing list
> > Linux-rockchip@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-rockchip
>


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

end of thread, other threads:[~2021-06-29 17:43 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-28 11:30 [PATCH] arm64: dts: rockchip: add rock-pi-4 analog audio Adrian Ratiu
2021-06-29  9:06 ` Alex Bee
2021-06-29 15:07   ` Adrian Ratiu
2021-06-29 15:42     ` Robin Murphy
2021-06-29 17:04       ` Alex Bee
2021-06-29 17:30         ` Adrian Ratiu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).