diff --git a/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts b/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts index ceed92aaa82ab2c330f7b92c5a118f0aae08c1b6..8e68c136f368088366893391f80155be484b7c62 100644 --- a/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts +++ b/arch/arm64/boot/dts/seco/seco-imx8qxp-c57.dts @@ -44,6 +44,7 @@ serial3 = &lpuart3; mmc0 = &usdhc1; mmc1 = &usdhc2; + i2c4 = &cm40_i2c; i2c5 = &i2c0_mipi_lvds0; i2c6 = &i2c0_mipi_lvds1; gpio0 = &gpio0; @@ -152,6 +153,32 @@ gpio = <&gpio3 22 GPIO_ACTIVE_LOW>; regulator-always-on; }; + + reg_audio: regulator-soc-audio { + compatible = "regulator-fixed"; + regulator-name = "tlv320aic32x4_supply"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-always-on; + }; + }; + + sound { + status = "okay"; + compatible = "simple-audio-card"; + simple-audio-card,format = "i2s"; + simple-audio-card,name = "seco-tlv320"; + simple-audio-card,frame-master = <&cpudai>; + simple-audio-card,bitclock-master = <&cpudai>; + + cpudai: simple-audio-card,cpu { + sound-dai = <&sai1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + }; + simple-audio-card,codec { + sound-dai = <&tlvcodec 0>; + }; }; /* Both Panels backlight + MP3385AGR */ @@ -194,6 +221,14 @@ }; }; +&acm { + status = "okay"; +}; + +&asrc0 { + fsl,asrc-rate = <48000>; + status = "okay"; +}; &iomuxc { @@ -218,9 +253,21 @@ IMX8QXP_CSI_MCLK_LSIO_GPIO3_IO01 0x00000021 /*EN_VCC_LCD_SW*/ IMX8QXP_SPDIF0_EXT_CLK_LSIO_GPIO0_IO12 0x00000021 + + /*TRRS_PLUG_DETECT*/ + IMX8QXP_QSPI0A_SS1_B_LSIO_GPIO3_IO15 0x00000021 + /*MUTE AUDIO#*/ + IMX8QXP_MIPI_DSI0_GPIO0_01_LSIO_GPIO1_IO28 0x00000021 + >; }; - + + pinctrl_codec: codecgrp { + fsl,pins = < + IMX8QXP_SPI0_SDO_LSIO_GPIO1_IO06 0x00000021 + >; + }; + pinctrl_lpuart0: lpuart0grp { fsl,pins = < IMX8QXP_UART0_RX_ADMA_UART0_RX 0x06000020 @@ -228,7 +275,6 @@ >; }; - pinctrl_lpuart2: lpuart2grp { fsl,pins = < IMX8QXP_UART2_TX_ADMA_UART2_TX 0x06000020 @@ -285,6 +331,13 @@ >; }; + pinctrl_cm40_i2c: cm40i2cgrp { + fsl,pins = < + IMX8QXP_ADC_IN1_M40_I2C0_SDA 0x0600004c + IMX8QXP_ADC_IN0_M40_I2C0_SCL 0x0600004c + >; + }; + pinctrl_lpi2c3: lpi2cgrp { fsl,pins = < IMX8QXP_SPI3_CS1_ADMA_I2C3_SCL 0x0600004c @@ -302,7 +355,28 @@ fsl,pins = < IMX8QXP_MIPI_DSI1_GPIO0_00_MIPI_DSI1_PWM0_OUT 0x00000020 >; - }; + }; + pinctrl_sai0: sai0_grp { + fsl,pins = < + /*SAI BLUETOOTH*/ + IMX8QXP_CSI_D00_ADMA_SAI0_RXC 0xc6000040 + IMX8QXP_SAI0_TXC_ADMA_SAI0_TXC 0xc6000040 + IMX8QXP_CSI_D01_ADMA_SAI0_RXD 0xc6000040 + IMX8QXP_SAI0_TXD_ADMA_SAI0_TXD 0xc6000060 + IMX8QXP_CSI_D02_ADMA_SAI0_RXFS 0xc6000040 + IMX8QXP_SAI0_TXFS_ADMA_SAI0_TXFS 0xc6000040 + >; + }; + + pinctrl_sai1: sai1grp { + fsl,pins = < + IMX8QXP_SAI1_RXD_ADMA_SAI1_RXD 0x06000040 + IMX8QXP_SAI1_RXC_ADMA_SAI1_TXC 0x06000040 + IMX8QXP_SAI1_RXFS_ADMA_SAI1_TXFS 0x06000040 + IMX8QXP_SPI0_CS1_ADMA_SAI1_TXD 0x06000040 + IMX8QXP_MCLK_OUT0_ADMA_ACM_MCLK_OUT0 0x06000040 + >; + }; pinctrl_usdhc1: usdhc1grp { fsl,pins = < @@ -483,6 +557,36 @@ gpio4: &lsio_gpio4 { phy-reset-duration = <2>; }; +&cm40_intmux { + status = "okay"; +}; + +&cm40_i2c { + #address-cells = <1>; + #size-cells = <0>; + clock-frequency = <100000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_cm40_i2c>; + status = "okay"; + + tlvcodec: tlv320aic32x4@18 { + #sound-dai-cells = <0>; + compatible = "ti,tlv320aic32x4"; + status = "okay"; + reg = <0x18>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_codec>; + // MCLK Actually not used, but necessary for initialization + clocks = <&mclkout0_lpcg 0>; + ldoin-supply = <®_audio>; + iov-supply = <®_audio>; + reset-gpios = <&gpio1 6 GPIO_ACTIVE_HIGH>; + clock-names = "mclk"; + route-on-lineout; + mic-bias; + }; +}; + &i2c3 { #address-cells = <1>; #size-cells = <0>; @@ -499,6 +603,32 @@ gpio4: &lsio_gpio4 { }; }; +// Bluetooth +&sai0 { + #sound-dai-cells = <0>; + assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>, + <&sai0_lpcg 0>; + assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai0>; + status = "okay"; +}; + + +&sai1 { + #sound-dai-cells = <0>; + assigned-clocks = <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_PLL>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_SLV_BUS>, + <&clk IMX_SC_R_AUDIO_PLL_0 IMX_SC_PM_CLK_MST_BUS>, + <&sai1_lpcg 0>; + assigned-clock-rates = <786432000>, <49152000>, <12288000>, <49152000>; + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_sai1>; + status = "okay"; +}; + &usdhc1 { pinctrl-names = "default", "state_100mhz", "state_200mhz"; pinctrl-0 = <&pinctrl_usdhc1>;