12#include "hw/top/dt/dt_spi_host.h"
48 [kDtSpiHostRegBlockCore] = 0x40300000,
63 [kDtSpiHostPeriphIoSck] = {
67 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Sck,
71 [kDtSpiHostPeriphIoCsb] = {
75 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Csb,
79 [kDtSpiHostPeriphIoSd0] = {
83 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Sd0,
87 [kDtSpiHostPeriphIoSd1] = {
91 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Sd1,
95 [kDtSpiHostPeriphIoSd2] = {
99 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Sd2,
103 [kDtSpiHostPeriphIoSd3] = {
107 .periph_input_or_direct_pad = kTopEarlgreyDirectPadsSpiHost0Sd3,
116 [kDtSpiHostRegBlockCore] = 0x40310000,
131 [kDtSpiHostPeriphIoSck] = {
135 .periph_input_or_direct_pad = 0,
139 [kDtSpiHostPeriphIoCsb] = {
143 .periph_input_or_direct_pad = 0,
147 [kDtSpiHostPeriphIoSd0] = {
155 [kDtSpiHostPeriphIoSd1] = {
163 [kDtSpiHostPeriphIoSd2] = {
171 [kDtSpiHostPeriphIoSd3] = {
188#define TRY_GET_DT(dt, default) ({ if ((dt) < (dt_spi_host_t)0 || (dt) >= kDtSpiHostCount) return (default); &spi_host_desc[dt]; })
206 return TRY_GET_DT(dt, 0xdeadbeef)->reg_addr[reg_block];
213 return TRY_GET_DT(dt, 0xdeadbeef)->mem_addr[mem];
227 if (first_irq == kDtPlicIrqIdNone) {
228 return kDtPlicIrqIdNone;
238 if (first_irq == kDtPlicIrqIdNone) {
251 return (
dt_alert_id_t)((uint32_t)spi_host_desc[dt].first_alert + (uint32_t)alert);
258 if (alert < spi_host_desc[dt].first_alert || alert >= spi_host_desc[dt].first_alert + (
dt_alert_id_t)count) {
269 return TRY_GET_DT(dt, kDtPeriphIoConstantHighZ)->periph_io[sig];