| # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) |
| %YAML 1.2 |
| --- |
| $id: http://devicetree.org/schemas/sound/fsl,imx-asrc.yaml# |
| $schema: http://devicetree.org/meta-schemas/core.yaml# |
| |
| title: Freescale Asynchronous Sample Rate Converter (ASRC) Controller |
| |
| description: |
| The Asynchronous Sample Rate Converter (ASRC) converts the sampling rate of |
| a signal associated with an input clock into a signal associated with a |
| different output clock. The driver currently works as a Front End of DPCM |
| with other Back Ends Audio controller such as ESAI, SSI and SAI. It has |
| three pairs to support three substreams within totally 10 channels. |
| |
| maintainers: |
| - Shawn Guo <shawnguo@kernel.org> |
| - Sascha Hauer <s.hauer@pengutronix.de> |
| |
| properties: |
| compatible: |
| oneOf: |
| - enum: |
| - fsl,imx35-asrc |
| - fsl,imx53-asrc |
| - fsl,imx8qm-asrc |
| - fsl,imx8qxp-asrc |
| - items: |
| - enum: |
| - fsl,imx6sx-asrc |
| - fsl,imx6ul-asrc |
| - const: fsl,imx53-asrc |
| |
| reg: |
| maxItems: 1 |
| |
| interrupts: |
| maxItems: 1 |
| |
| dmas: |
| maxItems: 6 |
| |
| dma-names: |
| items: |
| - const: rxa |
| - const: rxb |
| - const: rxc |
| - const: txa |
| - const: txb |
| - const: txc |
| |
| clocks: |
| maxItems: 19 |
| |
| clock-names: |
| items: |
| - const: mem |
| - const: ipg |
| - const: asrck_0 |
| - const: asrck_1 |
| - const: asrck_2 |
| - const: asrck_3 |
| - const: asrck_4 |
| - const: asrck_5 |
| - const: asrck_6 |
| - const: asrck_7 |
| - const: asrck_8 |
| - const: asrck_9 |
| - const: asrck_a |
| - const: asrck_b |
| - const: asrck_c |
| - const: asrck_d |
| - const: asrck_e |
| - const: asrck_f |
| - const: spba |
| |
| fsl,asrc-rate: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: The mutual sample rate used by DPCM Back Ends |
| |
| fsl,asrc-width: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: The mutual sample width used by DPCM Back Ends |
| enum: [16, 24] |
| |
| fsl,asrc-clk-map: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| Defines clock map used in driver |
| <0> - select the map for asrc0 in imx8qm/imx8qxp |
| <1> - select the map for asrc1 in imx8qm/imx8qxp |
| enum: [0, 1] |
| |
| big-endian: |
| type: boolean |
| description: |
| If this property is absent, the little endian mode will be in use as |
| default. Otherwise, the big endian mode will be in use for all the |
| device registers. |
| |
| fsl,asrc-format: |
| $ref: /schemas/types.yaml#/definitions/uint32 |
| description: |
| Defines a mutual sample format used by DPCM Back Ends, which can |
| replace the fsl,asrc-width. The value is 2 (S16_LE), or 6 (S24_LE). |
| enum: [2, 6] |
| |
| required: |
| - compatible |
| - reg |
| - interrupts |
| - dmas |
| - dma-names |
| - clocks |
| - clock-names |
| - fsl,asrc-rate |
| - fsl,asrc-width |
| |
| allOf: |
| - if: |
| properties: |
| compatible: |
| contains: |
| enum: |
| - fsl,imx8qm-asrc |
| - fsl,imx8qxp-asrc |
| then: |
| required: |
| - fsl,asrc-clk-map |
| else: |
| properties: |
| fsl,asrc-clk-map: false |
| |
| additionalProperties: false |
| |
| examples: |
| - | |
| #include <dt-bindings/interrupt-controller/irq.h> |
| #include <dt-bindings/clock/imx6qdl-clock.h> |
| asrc: asrc@2034000 { |
| compatible = "fsl,imx53-asrc"; |
| reg = <0x02034000 0x4000>; |
| interrupts = <0 50 IRQ_TYPE_LEVEL_HIGH>; |
| clocks = <&clks IMX6QDL_CLK_ASRC_IPG>, |
| <&clks IMX6QDL_CLK_ASRC_MEM>, <&clks 0>, |
| <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, |
| <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, |
| <&clks 0>, <&clks 0>, <&clks 0>, <&clks 0>, |
| <&clks IMX6QDL_CLK_ASRC>, <&clks 0>, <&clks 0>, |
| <&clks IMX6QDL_CLK_SPBA>; |
| clock-names = "mem", "ipg", "asrck_0", |
| "asrck_1", "asrck_2", "asrck_3", "asrck_4", |
| "asrck_5", "asrck_6", "asrck_7", "asrck_8", |
| "asrck_9", "asrck_a", "asrck_b", "asrck_c", |
| "asrck_d", "asrck_e", "asrck_f", "spba"; |
| dmas = <&sdma 17 23 1>, <&sdma 18 23 1>, <&sdma 19 23 1>, |
| <&sdma 20 23 1>, <&sdma 21 23 1>, <&sdma 22 23 1>; |
| dma-names = "rxa", "rxb", "rxc", |
| "txa", "txb", "txc"; |
| fsl,asrc-rate = <48000>; |
| fsl,asrc-width = <16>; |
| }; |