Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

dt-bindings: clock: fsl,imx8-acm: Add audio clock mux support

Add the clock dt-binding file for Audio Clock Mux. which
is the IP for i.MX8QM, i.MX8QXP, i.MX8DXL.

Add the clockid for clocks in header file.

The Audio Clock Mux is binded with all the audio IP and audio clocks
in the subsystem, so need to list the power domain of related clocks
and IPs. Each clock and IP has a power domain, so there are so many
power domains.

Signed-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Link: https://lore.kernel.org/r/1690260984-25744-2-git-send-email-shengjiu.wang@nxp.com
Signed-off-by: Abel Vesa <abel.vesa@linaro.org>

authored by

Shengjiu Wang and committed by
Abel Vesa
a70cd8cd 94945b23

+310
+282
Documentation/devicetree/bindings/clock/fsl,imx8-acm.yaml
··· 1 + # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2 + %YAML 1.2 3 + --- 4 + $id: http://devicetree.org/schemas/clock/fsl,imx8-acm.yaml# 5 + $schema: http://devicetree.org/meta-schemas/core.yaml# 6 + 7 + title: NXP i.MX8 Audio Clock Mux 8 + 9 + maintainers: 10 + - Shengjiu Wang <shengjiu.wang@nxp.com> 11 + 12 + description: | 13 + NXP i.MX8 Audio Clock Mux is dedicated clock muxing IP 14 + used to control Audio related clock on the SoC. 15 + 16 + properties: 17 + compatible: 18 + enum: 19 + - fsl,imx8dxl-acm 20 + - fsl,imx8qm-acm 21 + - fsl,imx8qxp-acm 22 + 23 + reg: 24 + maxItems: 1 25 + 26 + power-domains: 27 + minItems: 13 28 + maxItems: 21 29 + 30 + '#clock-cells': 31 + const: 1 32 + description: 33 + The clock consumer should specify the desired clock by having the clock 34 + ID in its "clocks" phandle cell. See include/dt-bindings/clock/imx8-clock.h 35 + for the full list of i.MX8 ACM clock IDs. 36 + 37 + clocks: 38 + minItems: 13 39 + maxItems: 27 40 + 41 + clock-names: 42 + minItems: 13 43 + maxItems: 27 44 + 45 + required: 46 + - compatible 47 + - reg 48 + - power-domains 49 + - '#clock-cells' 50 + - clocks 51 + - clock-names 52 + 53 + allOf: 54 + - if: 55 + properties: 56 + compatible: 57 + contains: 58 + enum: 59 + - fsl,imx8qxp-acm 60 + then: 61 + properties: 62 + power-domains: 63 + items: 64 + - description: power domain of IMX_SC_R_AUDIO_CLK_0 65 + - description: power domain of IMX_SC_R_AUDIO_CLK_1 66 + - description: power domain of IMX_SC_R_MCLK_OUT_0 67 + - description: power domain of IMX_SC_R_MCLK_OUT_1 68 + - description: power domain of IMX_SC_R_AUDIO_PLL_0 69 + - description: power domain of IMX_SC_R_AUDIO_PLL_1 70 + - description: power domain of IMX_SC_R_ASRC_0 71 + - description: power domain of IMX_SC_R_ASRC_1 72 + - description: power domain of IMX_SC_R_ESAI_0 73 + - description: power domain of IMX_SC_R_SAI_0 74 + - description: power domain of IMX_SC_R_SAI_1 75 + - description: power domain of IMX_SC_R_SAI_2 76 + - description: power domain of IMX_SC_R_SAI_3 77 + - description: power domain of IMX_SC_R_SAI_4 78 + - description: power domain of IMX_SC_R_SAI_5 79 + - description: power domain of IMX_SC_R_SPDIF_0 80 + - description: power domain of IMX_SC_R_MQS_0 81 + 82 + clocks: 83 + minItems: 18 84 + maxItems: 18 85 + 86 + clock-names: 87 + items: 88 + - const: aud_rec_clk0_lpcg_clk 89 + - const: aud_rec_clk1_lpcg_clk 90 + - const: aud_pll_div_clk0_lpcg_clk 91 + - const: aud_pll_div_clk1_lpcg_clk 92 + - const: ext_aud_mclk0 93 + - const: ext_aud_mclk1 94 + - const: esai0_rx_clk 95 + - const: esai0_rx_hf_clk 96 + - const: esai0_tx_clk 97 + - const: esai0_tx_hf_clk 98 + - const: spdif0_rx 99 + - const: sai0_rx_bclk 100 + - const: sai0_tx_bclk 101 + - const: sai1_rx_bclk 102 + - const: sai1_tx_bclk 103 + - const: sai2_rx_bclk 104 + - const: sai3_rx_bclk 105 + - const: sai4_rx_bclk 106 + 107 + - if: 108 + properties: 109 + compatible: 110 + contains: 111 + enum: 112 + - fsl,imx8qm-acm 113 + then: 114 + properties: 115 + power-domains: 116 + items: 117 + - description: power domain of IMX_SC_R_AUDIO_CLK_0 118 + - description: power domain of IMX_SC_R_AUDIO_CLK_1 119 + - description: power domain of IMX_SC_R_MCLK_OUT_0 120 + - description: power domain of IMX_SC_R_MCLK_OUT_1 121 + - description: power domain of IMX_SC_R_AUDIO_PLL_0 122 + - description: power domain of IMX_SC_R_AUDIO_PLL_1 123 + - description: power domain of IMX_SC_R_ASRC_0 124 + - description: power domain of IMX_SC_R_ASRC_1 125 + - description: power domain of IMX_SC_R_ESAI_0 126 + - description: power domain of IMX_SC_R_ESAI_1 127 + - description: power domain of IMX_SC_R_SAI_0 128 + - description: power domain of IMX_SC_R_SAI_1 129 + - description: power domain of IMX_SC_R_SAI_2 130 + - description: power domain of IMX_SC_R_SAI_3 131 + - description: power domain of IMX_SC_R_SAI_4 132 + - description: power domain of IMX_SC_R_SAI_5 133 + - description: power domain of IMX_SC_R_SAI_6 134 + - description: power domain of IMX_SC_R_SAI_7 135 + - description: power domain of IMX_SC_R_SPDIF_0 136 + - description: power domain of IMX_SC_R_SPDIF_1 137 + - description: power domain of IMX_SC_R_MQS_0 138 + 139 + clocks: 140 + minItems: 27 141 + maxItems: 27 142 + 143 + clock-names: 144 + items: 145 + - const: aud_rec_clk0_lpcg_clk 146 + - const: aud_rec_clk1_lpcg_clk 147 + - const: aud_pll_div_clk0_lpcg_clk 148 + - const: aud_pll_div_clk1_lpcg_clk 149 + - const: mlb_clk 150 + - const: hdmi_rx_mclk 151 + - const: ext_aud_mclk0 152 + - const: ext_aud_mclk1 153 + - const: esai0_rx_clk 154 + - const: esai0_rx_hf_clk 155 + - const: esai0_tx_clk 156 + - const: esai0_tx_hf_clk 157 + - const: esai1_rx_clk 158 + - const: esai1_rx_hf_clk 159 + - const: esai1_tx_clk 160 + - const: esai1_tx_hf_clk 161 + - const: spdif0_rx 162 + - const: spdif1_rx 163 + - const: sai0_rx_bclk 164 + - const: sai0_tx_bclk 165 + - const: sai1_rx_bclk 166 + - const: sai1_tx_bclk 167 + - const: sai2_rx_bclk 168 + - const: sai3_rx_bclk 169 + - const: sai4_rx_bclk 170 + - const: sai5_tx_bclk 171 + - const: sai6_rx_bclk 172 + 173 + - if: 174 + properties: 175 + compatible: 176 + contains: 177 + enum: 178 + - fsl,imx8dxl-acm 179 + then: 180 + properties: 181 + power-domains: 182 + items: 183 + - description: power domain of IMX_SC_R_AUDIO_CLK_0 184 + - description: power domain of IMX_SC_R_AUDIO_CLK_1 185 + - description: power domain of IMX_SC_R_MCLK_OUT_0 186 + - description: power domain of IMX_SC_R_MCLK_OUT_1 187 + - description: power domain of IMX_SC_R_AUDIO_PLL_0 188 + - description: power domain of IMX_SC_R_AUDIO_PLL_1 189 + - description: power domain of IMX_SC_R_ASRC_0 190 + - description: power domain of IMX_SC_R_SAI_0 191 + - description: power domain of IMX_SC_R_SAI_1 192 + - description: power domain of IMX_SC_R_SAI_2 193 + - description: power domain of IMX_SC_R_SAI_3 194 + - description: power domain of IMX_SC_R_SPDIF_0 195 + - description: power domain of IMX_SC_R_MQS_0 196 + 197 + clocks: 198 + minItems: 13 199 + maxItems: 13 200 + 201 + clock-names: 202 + items: 203 + - const: aud_rec_clk0_lpcg_clk 204 + - const: aud_rec_clk1_lpcg_clk 205 + - const: aud_pll_div_clk0_lpcg_clk 206 + - const: aud_pll_div_clk1_lpcg_clk 207 + - const: ext_aud_mclk0 208 + - const: ext_aud_mclk1 209 + - const: spdif0_rx 210 + - const: sai0_rx_bclk 211 + - const: sai0_tx_bclk 212 + - const: sai1_rx_bclk 213 + - const: sai1_tx_bclk 214 + - const: sai2_rx_bclk 215 + - const: sai3_rx_bclk 216 + 217 + additionalProperties: false 218 + 219 + examples: 220 + # Clock Control Module node: 221 + - | 222 + #include <dt-bindings/clock/imx8-lpcg.h> 223 + #include <dt-bindings/firmware/imx/rsrc.h> 224 + 225 + clock-controller@59e00000 { 226 + compatible = "fsl,imx8qxp-acm"; 227 + reg = <0x59e00000 0x1d0000>; 228 + #clock-cells = <1>; 229 + power-domains = <&pd IMX_SC_R_AUDIO_CLK_0>, 230 + <&pd IMX_SC_R_AUDIO_CLK_1>, 231 + <&pd IMX_SC_R_MCLK_OUT_0>, 232 + <&pd IMX_SC_R_MCLK_OUT_1>, 233 + <&pd IMX_SC_R_AUDIO_PLL_0>, 234 + <&pd IMX_SC_R_AUDIO_PLL_1>, 235 + <&pd IMX_SC_R_ASRC_0>, 236 + <&pd IMX_SC_R_ASRC_1>, 237 + <&pd IMX_SC_R_ESAI_0>, 238 + <&pd IMX_SC_R_SAI_0>, 239 + <&pd IMX_SC_R_SAI_1>, 240 + <&pd IMX_SC_R_SAI_2>, 241 + <&pd IMX_SC_R_SAI_3>, 242 + <&pd IMX_SC_R_SAI_4>, 243 + <&pd IMX_SC_R_SAI_5>, 244 + <&pd IMX_SC_R_SPDIF_0>, 245 + <&pd IMX_SC_R_MQS_0>; 246 + clocks = <&aud_rec0_lpcg IMX_LPCG_CLK_0>, 247 + <&aud_rec1_lpcg IMX_LPCG_CLK_0>, 248 + <&aud_pll_div0_lpcg IMX_LPCG_CLK_0>, 249 + <&aud_pll_div1_lpcg IMX_LPCG_CLK_0>, 250 + <&clk_ext_aud_mclk0>, 251 + <&clk_ext_aud_mclk1>, 252 + <&clk_esai0_rx_clk>, 253 + <&clk_esai0_rx_hf_clk>, 254 + <&clk_esai0_tx_clk>, 255 + <&clk_esai0_tx_hf_clk>, 256 + <&clk_spdif0_rx>, 257 + <&clk_sai0_rx_bclk>, 258 + <&clk_sai0_tx_bclk>, 259 + <&clk_sai1_rx_bclk>, 260 + <&clk_sai1_tx_bclk>, 261 + <&clk_sai2_rx_bclk>, 262 + <&clk_sai3_rx_bclk>, 263 + <&clk_sai4_rx_bclk>; 264 + clock-names = "aud_rec_clk0_lpcg_clk", 265 + "aud_rec_clk1_lpcg_clk", 266 + "aud_pll_div_clk0_lpcg_clk", 267 + "aud_pll_div_clk1_lpcg_clk", 268 + "ext_aud_mclk0", 269 + "ext_aud_mclk1", 270 + "esai0_rx_clk", 271 + "esai0_rx_hf_clk", 272 + "esai0_tx_clk", 273 + "esai0_tx_hf_clk", 274 + "spdif0_rx", 275 + "sai0_rx_bclk", 276 + "sai0_tx_bclk", 277 + "sai1_rx_bclk", 278 + "sai1_tx_bclk", 279 + "sai2_rx_bclk", 280 + "sai3_rx_bclk", 281 + "sai4_rx_bclk"; 282 + };
+28
include/dt-bindings/clock/imx8-clock.h
··· 164 164 165 165 #define IMX_ADMA_LPCG_CLK_END 45 166 166 167 + #define IMX_ADMA_ACM_AUD_CLK0_SEL 0 168 + #define IMX_ADMA_ACM_AUD_CLK1_SEL 1 169 + #define IMX_ADMA_ACM_MCLKOUT0_SEL 2 170 + #define IMX_ADMA_ACM_MCLKOUT1_SEL 3 171 + #define IMX_ADMA_ACM_ESAI0_MCLK_SEL 4 172 + #define IMX_ADMA_ACM_ESAI1_MCLK_SEL 5 173 + #define IMX_ADMA_ACM_GPT0_MUX_CLK_SEL 6 174 + #define IMX_ADMA_ACM_GPT1_MUX_CLK_SEL 7 175 + #define IMX_ADMA_ACM_GPT2_MUX_CLK_SEL 8 176 + #define IMX_ADMA_ACM_GPT3_MUX_CLK_SEL 9 177 + #define IMX_ADMA_ACM_GPT4_MUX_CLK_SEL 10 178 + #define IMX_ADMA_ACM_GPT5_MUX_CLK_SEL 11 179 + #define IMX_ADMA_ACM_SAI0_MCLK_SEL 12 180 + #define IMX_ADMA_ACM_SAI1_MCLK_SEL 13 181 + #define IMX_ADMA_ACM_SAI2_MCLK_SEL 14 182 + #define IMX_ADMA_ACM_SAI3_MCLK_SEL 15 183 + #define IMX_ADMA_ACM_SAI4_MCLK_SEL 16 184 + #define IMX_ADMA_ACM_SAI5_MCLK_SEL 17 185 + #define IMX_ADMA_ACM_SAI6_MCLK_SEL 18 186 + #define IMX_ADMA_ACM_SAI7_MCLK_SEL 19 187 + #define IMX_ADMA_ACM_SPDIF0_TX_CLK_SEL 20 188 + #define IMX_ADMA_ACM_SPDIF1_TX_CLK_SEL 21 189 + #define IMX_ADMA_ACM_MQS_TX_CLK_SEL 22 190 + #define IMX_ADMA_ACM_ASRC0_MUX_CLK_SEL 23 191 + #define IMX_ADMA_ACM_ASRC1_MUX_CLK_SEL 24 192 + 193 + #define IMX_ADMA_ACM_CLK_END 25 194 + 167 195 #endif /* __DT_BINDINGS_CLOCK_IMX_H */