[linux-sunxi] [PATCH v5 09/20] arm64: dts: allwinner: h6: Add DAI node and soundcard for HDMI
Clément Péron
peron.clem at gmail.com
Fri Oct 2 18:01:21 CEST 2020
Hi Chen-Yu,
On Mon, 28 Sep 2020 at 07:42, Chen-Yu Tsai <wens at csie.org> wrote:
>
> On Mon, Sep 28, 2020 at 1:32 PM Chen-Yu Tsai <wens at csie.org> wrote:
> >
> > On Mon, Sep 28, 2020 at 3:29 AM Clément Péron <peron.clem at gmail.com> wrote:
> > >
> > > From: Jernej Skrabec <jernej.skrabec at siol.net>
> > >
> > > Add the I2S node used by the HDMI and a simple-soundcard to
> > > link audio between HDMI and I2S.
> > >
> > > Note that the HDMI codec requires an inverted frame clock and
> > > a fixed I2S width. As there is no such option for I2S we use
> > > TDM property of the simple-soundcard to do that.
> > >
> > > Signed-off-by: Jernej Skrabec <jernej.skrabec at siol.net>
> > > Signed-off-by: Marcus Cooper <codekipper at gmail.com>
> > > Signed-off-by: Clément Péron <peron.clem at gmail.com>
> > > ---
> > > arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 33 ++++++++++++++++++++
> > > 1 file changed, 33 insertions(+)
> > >
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > index 28c77d6872f6..a8853ee7885a 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > @@ -67,6 +67,25 @@ de: display-engine {
> > > status = "disabled";
> > > };
> > >
> > > + hdmi_sound: hdmi-sound {
> > > + compatible = "simple-audio-card";
> > > + simple-audio-card,format = "i2s";
> > > + simple-audio-card,name = "sun50i-h6-hdmi";
> > > + simple-audio-card,mclk-fs = <128>;
> > > + simple-audio-card,frame-inversion;
> > > + status = "disabled";
> > > +
> > > + simple-audio-card,codec {
> > > + sound-dai = <&hdmi>;
> > > + };
> > > +
> > > + simple-audio-card,cpu {
> > > + sound-dai = <&i2s1>;
> > > + dai-tdm-slot-num = <2>;
> >
> > Doesn't this end up limiting the number of audio channels HDMI can carry?
> > AFAICT the TDM properties are all optional, so just leave it out.
> >
> > Same goes for the other two patches.
> >
> > > + dai-tdm-slot-width = <32>;
> > > + };
> > > + };
> > > +
> > > osc24M: osc24M_clk {
> > > #clock-cells = <0>;
> > > compatible = "fixed-clock";
> > > @@ -609,6 +628,19 @@ mdio: mdio {
> > > };
> > > };
> > >
> > > + i2s1: i2s at 5091000 {
> > > + #sound-dai-cells = <0>;
> > > + compatible = "allwinner,sun50i-h6-i2s";
> > > + reg = <0x05091000 0x1000>;
> > > + interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
> > > + clocks = <&ccu CLK_BUS_I2S1>, <&ccu CLK_I2S1>;
> > > + clock-names = "apb", "mod";
> > > + dmas = <&dma 4>, <&dma 4>;
> > > + resets = <&ccu RST_BUS_I2S1>;
> > > + dma-names = "rx", "tx";
>
> Sorry, missed this one.
>
> Given that usage for this interface is transmit only, and there is no
> RX DRQ number assigned to it, you should drop the RX DMA number and name.
Indeed if there is no DRQ number assigned we shouldn't have it in the
device-tree
but Samuel told me that the `make dtbs_check` reports:
i2s at 1c22800: dma-names:0: 'rx' was expected
i2s at 1c22800: dma-names: ['tx'] is too short
i2s at 1c22800: dmas: [[28, 27]] is too short
Should I fix the YAML so?
Regards,
Clement
>
> > > + status = "disabled";
> > > + };
> > > +
> > > spdif: spdif at 5093000 {
> > > #sound-dai-cells = <0>;
> > > compatible = "allwinner,sun50i-h6-spdif";
> > > @@ -739,6 +771,7 @@ ohci3: usb at 5311400 {
> > > };
> > >
> > > hdmi: hdmi at 6000000 {
> > > + #sound-dai-cells = <0>;
> > > compatible = "allwinner,sun50i-h6-dw-hdmi";
> > > reg = <0x06000000 0x10000>;
> > > reg-io-width = <1>;
> >
> > The rest of the patch looks OK.
More information about the Alsa-devel
mailing list