description: ESP32 SPI Controller

include: ["spi-controller.yaml"]

compatible: "espressif,esp32-spi"

properties:
  host:
    type: int
    required: true
    description: |
      The SPI host (controller) to use.
      Defined by spi_host_device_t (e.g. SPI2_HOST, SPI3_HOST).
  pin-sclk:
    type: phandles
    default: GPIO_PIN_SPEC_NONE
  pin-mosi:
    type: phandles
    default: GPIO_PIN_SPEC_NONE
    description: MOSI (Data 0) pin
  pin-miso:
    type: phandles
    default: GPIO_PIN_SPEC_NONE
    description: MISO (Data 1) pin
  pin-wp:
    type: phandles
    default: GPIO_PIN_SPEC_NONE
    description: WP (Data 2) pin
  pin-hd:
    type: phandles
    default: GPIO_PIN_SPEC_NONE
    description: HD (Data 3) pin
  max-transfer-size:
    type: int
    default: 0
    description: |
      Data transfer size limit in bytes.
      0 means the platform decides the limit.
  cs-gpios:
    type: phandle-array
    element-type: "struct GpioPinSpec"
    default: "{ }"
    description: Null-terminated array of chip select GPIO pin specs for peripherals on this bus
  miso-pull-up:
    type: boolean
    default: false
    description: >
      Enables a weak internal pull-up on MISO, which floats between transactions/while another
      device on the bus is selected. Helps some SPI peripherals (a garbled/invalid response on
      CMD8/if_cond has been observed for SD-over-SPI on some boards) but has been observed to
      break others (prevents the SD card from responding to CMD0 at all) - opt in per board.
