# Copyright (c) 2022 Renesas Electronics Corporation
# SPDX-License-Identifier: Apache-2.0

description: Renesas SmartBond USB device controller

compatible: "renesas,smartbond-usbd"

include: usb-controller.yaml

properties:
  dma-chan-rx:
    type: int
    description: |
      DMA Channel for USB RX (0/2/4/6).

  dma-chan-tx:
    type: int
    description: |
      DMA Channel for USB TX (1/3/5/7).

  dma-min-transfer-size:
    type: int
    description: |
      Minimum transfer size required to engage DMA.

  ep-out-buf-size:
    type: array
    required: true
    description: |
      Buffer size for OUT end points 0-3.

  fifo-read-threshold:
    type: int
    description: |
      RX FIFO is 64 bytes. When endpoint size is greater then 64,
      FIFO warning interrupt is enabled to allow read incoming data
      during frame reception.
      It is possible to stay in interrupt reading whole packet at once,
      but it may be more efficient for MCU to read as much data as
      possible and when FIFO is hardly filled exit interrupt handler
      waiting for next FIFO warning level interrupt or packet end.
      When running at 96MHz code that reads FIFO based on number of
      bytes stored in USB_RXSx_REG.USB_RXCOUNT takes enough time to
      fill FIFO with two additional bytes.
      Settings this threshold above this allows to leave interrupt
      handler and wait for more bytes before next ISR. This allows
      reduce overall ISR time to 1/3 of time that would be needed
      if ISR read as fast as possible.

  iso-out-mps:
    type: int
    description: |
      Max packet size for ISO out endpoint
