Message ID | 87r2e59ky6.wl-kuninori.morimoto.gx@renesas.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Simon Horman |
Headers | show |
Series | arm64: renesas: Sound update for ULCB/KF, etc | expand |
On Wed, Dec 26, 2018 at 09:53:41AM +0900, Kuninori Morimoto wrote: > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> > > KingFisher has pcm3168 sound codec. This patch enables it. > Because pcm3168 can't handle symmetric channel on playback/ > capture, we need to handle it as different DAI. Hi Morimoto-san, as per my response to other patches in this series I have found, hopefully, minor problems, when applying this patch. When compiling I see: # make W=1 dtbs ... DTC arch/arm64/boot/dts/renesas/r8a7795-h3ulcb.dtb DTC arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dtb arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@0: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@1: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@2: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@3: node has a unit name, but no reg property DTC arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb.dtb DTC arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dtb arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@0: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@1: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@2: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7795-es1-h3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@3: node has a unit name, but no reg property DTC arch/arm64/boot/dts/renesas/r8a7796-m3ulcb.dtb DTC arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dtb arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@0: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@1: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@2: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a7796-m3ulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@3: node has a unit name, but no reg property DTC arch/arm64/boot/dts/renesas/r8a77965-m3nulcb.dtb DTC arch/arm64/boot/dts/renesas/r8a77965-m3nulcb-kf.dtb arch/arm64/boot/dts/renesas/r8a77965-m3nulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@0: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a77965-m3nulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/i2c@e6510000/i2c-switch@71/i2c@7/audio-codec@44/ports/port@1: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a77965-m3nulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@2: node has a unit name, but no reg property arch/arm64/boot/dts/renesas/r8a77965-m3nulcb-kf.dtb: Warning (unit_address_vs_reg): /soc/sound@ec500000/ports/port@3: node has a unit name, but no reg property Locally the following seems to resolve this problem. Please consider rolling this incremental change or another fix into a v2 posting of this patchset. diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 401c166599a2..5cfa193fa8a9 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -163,14 +163,22 @@ VCCDA2-supply = <&snd_vcc5v>; ports { + #address-cells = <1>; + #size-cells = <0>; mclk-fs = <512>; + port@0 { + reg = <0>; + pcm3168a_endpoint_p: endpoint { remote-endpoint = <&rsnd_for_pcm3168a_play>; clocks = <&clksndsel>; }; }; + port@1 { + reg = <1>; + pcm3168a_endpoint_c: endpoint { remote-endpoint = <&rsnd_for_pcm3168a_capture>; clocks = <&clksndsel>; @@ -294,8 +302,13 @@ &sound_pcm_pins>; ports { + #address-cells = <1>; + #size-cells = <0>; + /* rsnd_port0/1 are on salvator-common */ rsnd_port2: port@2 { + reg = <2>; + rsnd_for_pcm3168a_play: endpoint { remote-endpoint = <&pcm3168a_endpoint_p>; @@ -307,7 +320,10 @@ playback = <&ssi3>; }; }; + rsnd_port3: port@3 { + reg = <3>; + rsnd_for_pcm3168a_capture: endpoint { remote-endpoint = <&pcm3168a_endpoint_c>;
Hi Simon > > KingFisher has pcm3168 sound codec. This patch enables it. > > Because pcm3168 can't handle symmetric channel on playback/ > > capture, we need to handle it as different DAI. > > Hi Morimoto-san, > > as per my response to other patches in this series I have found, > hopefully, minor problems, when applying this patch. > > When compiling I see: > # make W=1 dtbs Thank you for testing !! I will fix this issue and post v2
diff --git a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi index 1b316d79..401c166 100644 --- a/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi +++ b/arch/arm64/boot/dts/renesas/ulcb-kf.dtsi @@ -6,11 +6,38 @@ * Copyright (C) 2017 Cogent Embedded, Inc. */ +/* + * SSI-PCM3168A + * aplay -D plughw:0,2 xxx.wav + * arecord -D plughw:0,3 xxx.wav + */ + / { aliases { serial1 = &hscif0; serial2 = &scif1; }; + + clksndsel: clksndsel { + #clock-cells = <0>; + compatible = "gpio-mux-clock"; + clocks = <&cs2000>, <&audio_clk_a>; /* clk8snd, clksnd */ + select-gpios = <&gpio_exp_75 13 GPIO_ACTIVE_HIGH>; + }; + + snd_3p3v: regulator-snd_3p3v { + compatible = "regulator-fixed"; + regulator-name = "snd-3.3v"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + snd_vcc5v: regulator-snd_vcc5v { + compatible = "regulator-fixed"; + regulator-name = "snd-vcc5v"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + }; }; &can0 { @@ -44,6 +71,7 @@ }; &i2c2 { + /* U11 */ gpio_exp_74: gpio@74 { compatible = "ti,tca9539"; reg = <0x74>; @@ -53,6 +81,13 @@ interrupt-parent = <&gpio6>; interrupts = <8 IRQ_TYPE_EDGE_FALLING>; + audio_out_off { + gpio-hog; + gpios = <0 GPIO_ACTIVE_HIGH>; /* P00 */ + output-high; + line-name = "Audio_Out_OFF"; + }; + hub_pwen { gpio-hog; gpios = <6 GPIO_ACTIVE_HIGH>; @@ -80,8 +115,16 @@ output-high; line-name = "OTG EXTLPn"; }; + + snd_rst { + gpio-hog; + gpios = <15 GPIO_ACTIVE_HIGH>; /* P17 */ + output-high; + line-name = "SND_RST"; + }; }; + /* U5 */ gpio_exp_75: gpio@75 { compatible = "ti,tca9539"; reg = <0x75>; @@ -98,6 +141,44 @@ #size-cells = <0>; reg = <0x71>; reset-gpios = <&gpio5 3 GPIO_ACTIVE_LOW>; + + /* Audio_SDA, Audio_SCL */ + i2c@7 { + #address-cells = <1>; + #size-cells = <0>; + reg = <7>; + + pcm3168a: audio-codec@44 { + #sound-dai-cells = <0>; + compatible = "ti,pcm3168a"; + reg = <0x44>; + clocks = <&clksndsel>; + clock-names = "scki"; + + VDD1-supply = <&snd_3p3v>; + VDD2-supply = <&snd_3p3v>; + VCCAD1-supply = <&snd_vcc5v>; + VCCAD2-supply = <&snd_vcc5v>; + VCCDA1-supply = <&snd_vcc5v>; + VCCDA2-supply = <&snd_vcc5v>; + + ports { + mclk-fs = <512>; + port@0 { + pcm3168a_endpoint_p: endpoint { + remote-endpoint = <&rsnd_for_pcm3168a_play>; + clocks = <&clksndsel>; + }; + }; + port@1 { + pcm3168a_endpoint_c: endpoint { + remote-endpoint = <&rsnd_for_pcm3168a_capture>; + clocks = <&clksndsel>; + }; + }; + }; + }; + }; }; }; @@ -173,6 +254,11 @@ groups = "usb0"; function = "usb0"; }; + + sound_pcm_pins: sound-pcm { + groups = "ssi349_ctrl", "ssi3_data", "ssi4_data"; + function = "ssi"; + }; }; &scif1 { @@ -193,3 +279,49 @@ &xhci0 { status = "okay"; }; + +&sound_card { + dais = <&rsnd_port0 /* ak4613 */ + &rsnd_port1 /* HDMI0 */ + &rsnd_port2 /* pcm3168a playback */ + &rsnd_port3 /* pcm3168a capture */ + >; +}; + +&rcar_sound { + pinctrl-0 = <&sound_pins + &sound_clk_pins + &sound_pcm_pins>; + + ports { + /* rsnd_port0/1 are on salvator-common */ + rsnd_port2: port@2 { + rsnd_for_pcm3168a_play: endpoint { + remote-endpoint = <&pcm3168a_endpoint_p>; + + dai-format = "i2s"; + bitclock-master = <&rsnd_for_pcm3168a_play>; + frame-master = <&rsnd_for_pcm3168a_play>; + dai-tdm-slot-num = <8>; + + playback = <&ssi3>; + }; + }; + rsnd_port3: port@3 { + rsnd_for_pcm3168a_capture: endpoint { + remote-endpoint = <&pcm3168a_endpoint_c>; + + dai-format = "i2s"; + bitclock-master = <&rsnd_for_pcm3168a_capture>; + frame-master = <&rsnd_for_pcm3168a_capture>; + dai-tdm-slot-num = <6>; + + capture = <&ssi4>; + }; + }; + }; +}; + +&ssi4 { + shared-pin; +};