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];
42 [kDtSpiDeviceRegBlockCore] = 0x40050000,
56 [kDtSpiDevicePeriphIoSck] = {
60 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceSck,
64 [kDtSpiDevicePeriphIoCsb] = {
68 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceCsb,
72 [kDtSpiDevicePeriphIoTpmCsb] = {
76 .periph_input_or_direct_pad = 0,
77 .outsel_or_dt_pad = 0,
80 [kDtSpiDevicePeriphIoSd0] = {
84 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceSd0,
88 [kDtSpiDevicePeriphIoSd1] = {
92 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceSd1,
96 [kDtSpiDevicePeriphIoSd2] = {
100 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceSd2,
104 [kDtSpiDevicePeriphIoSd3] = {
108 .periph_input_or_direct_pad = kTopEnglishbreakfastDirectPadsSpiDeviceSd3,
121#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_spi_device_t)0 || (dt) >= kDtSpiDeviceCount) return (default); &spi_device_desc[dt]; })
139 return TRY_GET_DT(dt, 0xdeadbeef)->reg_addr[reg_block];
146 return TRY_GET_DT(dt, 0xdeadbeef)->mem_addr[mem];
160 if (first_irq == kDtPlicIrqIdNone) {
161 return kDtPlicIrqIdNone;
171 if (first_irq == kDtPlicIrqIdNone) {
186 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];