12#include "hw/top/dt/dt_spi_device.h"
21 uint32_t
reg_addr[kDtSpiDeviceRegBlockCount];
22 uint32_t
mem_addr[kDtSpiDeviceMemoryCount];
23 uint32_t
mem_size[kDtSpiDeviceMemoryCount];
48 [kDtSpiDeviceRegBlockCore] = 0x30310000,
63 [kDtSpiDevicePeriphIoSck] = {
67 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceSck,
71 [kDtSpiDevicePeriphIoCsb] = {
75 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceCsb,
79 [kDtSpiDevicePeriphIoTpmCsb] = {
83 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceTpmCsb,
87 [kDtSpiDevicePeriphIoSd0] = {
91 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceSd0,
95 [kDtSpiDevicePeriphIoSd1] = {
99 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceSd1,
103 [kDtSpiDevicePeriphIoSd2] = {
107 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceSd2,
111 [kDtSpiDevicePeriphIoSd3] = {
115 .periph_input_or_direct_pad = kTopDarjeelingDirectPadsSpiDeviceSd3,
128#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_spi_device_t)0 || (dt) >= kDtSpiDeviceCount) return (default); &spi_device_desc[dt]; })
146 return TRY_GET_DT(dt, 0xdeadbeef)->reg_addr[reg_block];
153 return TRY_GET_DT(dt, 0xdeadbeef)->mem_addr[mem];
167 if (first_irq == kDtPlicIrqIdNone) {
168 return kDtPlicIrqIdNone;
178 if (first_irq == kDtPlicIrqIdNone) {
191 return (
dt_alert_id_t)((uint32_t)spi_device_desc[dt].first_alert + (uint32_t)alert);
198 if (alert < spi_device_desc[dt].first_alert || alert >= spi_device_desc[dt].first_alert + (
dt_alert_id_t)count) {
209 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];