# Copyright (c) 2019 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0

description: Nordic I2S (Inter-IC sound interface)

compatible: "nordic,nrf-i2s"

include: [i2s-controller.yaml, pinctrl-device.yaml]

properties:
    reg:
      required: true

    interrupts:
      required: true

    sck-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The SCK pin to use.

        For pins P0.0 through P0.31, use the pin number. For example,
        to use P0.16 for SCK, set:

            sck-pin = <16>;

        For pins P1.0 through P1.31, add 32 to the pin number. For
        example, to use P1.2 for SCK, set:

            sck-pin = <34>;  /* 32 + 2 */

    lrck-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The LRCK pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    sdout-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The SDOUT pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    sdin-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The SDIN pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    mck-pin:
      type: int
      required: false
      description: |
        IMPORTANT: This option will only be used if the new pin control driver
        is not enabled. It will be deprecated in the future.

        The MCK pin to use. The pin numbering scheme is the same as
        the sck-pin property's.

    clock-source:
      type: string
      required: false
      default: "PCLK32M_HFXO"
      description: |
        Clock source to be used by the I2S peripheral for the master clock
        (MCK) generator. The generator is only needed when the I2S peripheral
        is operating in Master mode. The following options are available:
        - "PCLK32M": 32 MHz peripheral clock, synchronous to HFCLK
        - "PCLK32M_HFXO": PCLK32M running off the 32 MHz crystal oscillator
          (HFXO) for better clock accuracy and jitter performance
        - "ACLK": Audio PLL clock with configurable frequency (frequency for
          this clock must be set via the "hfclkaudio-frequency" property
          in the "nordic,nrf-clock" node); this clock source is only available
          in the nRF53 Series SoCs and it requires the use of HFXO
      enum:
        - "PCLK32M"
        - "PCLK32M_HFXO"
        - "ACLK"
