mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 19:30:30 +09:00
ODROID-COMMON:Modify hdmi audio source to be selectable
Change-Id: Ifcf533c157ac1b461100ac38fc1b87781d70a739
This commit is contained in:
@@ -122,6 +122,7 @@
|
||||
/* spdif_b to hdmi, only playback */
|
||||
aml-audio-card,dai-link@1 {
|
||||
mclk-fs = <128>;
|
||||
continuous-clock;
|
||||
/* suffix-name, sync with android audio hal
|
||||
* what's the dai link used for
|
||||
*/
|
||||
@@ -135,25 +136,16 @@
|
||||
};
|
||||
};
|
||||
|
||||
/* spdif_out GPIOA_11 */
|
||||
aml-audio-card,dai-link@2 {
|
||||
format = "i2s";
|
||||
mclk-fs = <256>;
|
||||
//continuous-clock;
|
||||
//bitclock-inversion;
|
||||
//frame-inversion;
|
||||
bitclock-master = <&aml_tdmb>;
|
||||
frame-master = <&aml_tdmb>;
|
||||
mclk-fs = <128>;
|
||||
/* suffix-name, sync with android audio hal
|
||||
* what's the dai link used for
|
||||
*/
|
||||
suffix-name = "alsaPORT-pcm";
|
||||
suffix-name = "alsaPORT-spdif";
|
||||
cpu {
|
||||
sound-dai = <&aml_tdmb>;
|
||||
dai-tdm-slot-tx-mask = <1 1>;
|
||||
dai-tdm-slot-rx-mask = <1 1>;
|
||||
dai-tdm-slot-num = <2>;
|
||||
dai-tdm-slot-width = <32>;
|
||||
system-clock-frequency = <12288000>;
|
||||
sound-dai = <&aml_spdif>;
|
||||
system-clock-frequency = <6144000>;
|
||||
};
|
||||
codec {
|
||||
sound-dai = <&dummy_codec>;
|
||||
@@ -333,23 +325,13 @@
|
||||
};
|
||||
};
|
||||
|
||||
&audiobus {
|
||||
aml_tdmb: tdmb {
|
||||
compatible = "amlogic, g12a-snd-tdmb";
|
||||
#sound-dai-cells = <0>;
|
||||
dai-tdm-lane-slot-mask-in = <0 1 0 0>;
|
||||
dai-tdm-lane-slot-mask-out = <1 0 0 0>;
|
||||
dai-tdm-clk-sel = <1>;
|
||||
clocks = <&clkaudio CLKID_AUDIO_MCLK_B
|
||||
&clkc CLKID_MPLL1
|
||||
&clkc CLKID_MPLL0>;
|
||||
clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
|
||||
pinctrl-names = "tdm_pins";
|
||||
pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
|
||||
status = "okay";
|
||||
};
|
||||
&amhdmitx {
|
||||
/*0:SPDIF, 1:I2S*/
|
||||
tx_aud_src = <1>;
|
||||
};
|
||||
|
||||
/* copy a useless tdm to output for hdmi, no pinmux */
|
||||
&audiobus {
|
||||
/* tdmc to internal DAC output, no pinmux */
|
||||
aml_tdmc: tdmc {
|
||||
compatible = "amlogic, g12a-snd-tdmc";
|
||||
#sound-dai-cells = <0>;
|
||||
@@ -359,10 +341,27 @@
|
||||
clocks = <&clkaudio CLKID_AUDIO_MCLK_C
|
||||
&clkc CLKID_MPLL2>;
|
||||
clock-names = "mclk", "clk_srcpll";
|
||||
i2s2hdmi = <0>;
|
||||
i2s2hdmi = <1>;
|
||||
status = "okay";
|
||||
};
|
||||
|
||||
aml_spdif: spdif {
|
||||
compatible = "amlogic, g12a-snd-spdif-a";
|
||||
#sound-dai-cells = <0>;
|
||||
clocks = <&clkc CLKID_MPLL0
|
||||
&clkc CLKID_FCLK_DIV4
|
||||
&clkaudio CLKID_AUDIO_SPDIFIN
|
||||
&clkaudio CLKID_AUDIO_SPDIFOUT
|
||||
&clkaudio CLKID_AUDIO_SPDIFIN_CTRL
|
||||
&clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
|
||||
clock-names = "sysclk", "fixed_clk", "gate_spdifin",
|
||||
"gate_spdifout", "clk_spdifin", "clk_spdifout";
|
||||
interrupts = <GIC_SPI 151 IRQ_TYPE_EDGE_RISING>;
|
||||
interrupt-names = "irq_spdifin";
|
||||
pinctrl-names = "spdif_pins";
|
||||
pinctrl-0 = <&spdifout>;
|
||||
status = "okay";
|
||||
};
|
||||
aml_spdif_b: spdif_b {
|
||||
compatible = "amlogic, g12a-snd-spdif-b";
|
||||
#sound-dai-cells = <0>;
|
||||
@@ -371,8 +370,6 @@
|
||||
&clkaudio CLKID_AUDIO_SPDIFOUTB_CTRL>;
|
||||
clock-names = "sysclk",
|
||||
"gate_spdifout", "clk_spdifout";
|
||||
pinctrl-names = "spdif_pins";
|
||||
pinctrl-0 = <&spdifout>;
|
||||
status = "okay";
|
||||
};
|
||||
aml_loopback: loopback {
|
||||
@@ -463,32 +460,6 @@
|
||||
drive-strength = <3>;
|
||||
};
|
||||
};
|
||||
tdmb_mclk: tdmb_mclk {
|
||||
mux {
|
||||
groups = "mclk0_a";
|
||||
function = "mclk0";
|
||||
drive-strength = <2>;
|
||||
};
|
||||
};
|
||||
tdmout_b: tdmout_b {
|
||||
mux { /* GPIOA_1, GPIOA_2, GPIOA_3 */
|
||||
groups = "tdmb_sclk",
|
||||
"tdmb_fs",
|
||||
"tdmb_dout0";
|
||||
function = "tdmb_out";
|
||||
drive-strength = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
tdmin_b:tdmin_b {
|
||||
mux { /* GPIOA_4 */
|
||||
groups = "tdmb_din1"
|
||||
/*,"tdmb_slv_sclk", "tdmb_slv_fs"*/;
|
||||
function = "tdmb_in";
|
||||
drive-strength = <2>;
|
||||
};
|
||||
};
|
||||
|
||||
spdifout: spdifout {
|
||||
mux {/* GPIOA_11 */
|
||||
groups = "spdif_out_a11";
|
||||
|
||||
@@ -4303,6 +4303,17 @@ static int amhdmitx_get_dt_info(struct platform_device *pdev)
|
||||
pr_info(SYS "hdmitx_device.chip_type : %d\n",
|
||||
hdmitx_device.chip_type);
|
||||
|
||||
#if defined(CONFIG_ARCH_MESON64_ODROID_COMMON)
|
||||
/* Get audio source information */
|
||||
ret = of_property_read_u32(pdev->dev.of_node, "tx_aud_src",
|
||||
&(hdmitx_device.tx_aud_src));
|
||||
if (ret) {
|
||||
pr_info(SYS "not find tx_aud_src\n");
|
||||
hdmitx_device.tx_aud_src = 0;
|
||||
}
|
||||
pr_info(SYS "hdmitx_device.tx_aud_src : %d\n",
|
||||
hdmitx_device.tx_aud_src);
|
||||
#endif
|
||||
ret = of_property_read_u32(pdev->dev.of_node,
|
||||
"repeater_tx", &val);
|
||||
if (!ret)
|
||||
|
||||
@@ -2697,6 +2697,8 @@ static int hdmitx_set_audmode(struct hdmitx_dev *hdev,
|
||||
return 0;
|
||||
pr_info(HW "set audio\n");
|
||||
audio_mute_op(hdev->tx_aud_cfg);
|
||||
|
||||
#if !defined(CONFIG_ARCH_MESON64_ODROID_COMMON)
|
||||
/* PCM & 8 ch */
|
||||
if ((audio_param->type == CT_PCM) &&
|
||||
(audio_param->channel_num == (8 - 1)))
|
||||
@@ -2707,6 +2709,7 @@ static int hdmitx_set_audmode(struct hdmitx_dev *hdev,
|
||||
/* if hdev->aud_output_ch is true, select I2S as 8ch in, 2ch out */
|
||||
if (hdev->aud_output_ch)
|
||||
hdev->tx_aud_src = 1;
|
||||
#endif
|
||||
|
||||
pr_info(HW "hdmitx tx_aud_src = %d\n", hdev->tx_aud_src);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user