16 #define SDIO_BUS_DEBUG (1) 19 #define SDIO_DEBUG_IPRINTF(...) \ 21 iprintf("%s:%d", __FUNCTION__, __LINE__); \ 22 iprintf(__VA_ARGS__); \ 26 #define SDIO_DEBUG_IPRINTF(...) ((void)0) 37 #define SDIO_SPI_BUS (1) 62 extern "C" typedef void (*SdioInterruptService)(void);
75 SdioBus(uint32_t speed, uint32_t connectTimeout, uint32_t responseTimeout);
82 virtual BOOL attachBus(
void) = 0;
85 virtual BOOL acquireBus(
void) = 0;
88 virtual void releaseBus(
void) = 0;
91 virtual void selectCard(
void) = 0;
94 virtual void releaseCard(
void) = 0;
97 virtual BOOL sendCommand(SdioCommand &command) = 0;
100 virtual BOOL receiveResponse(SdioResponse &response, BOOL idle = TRUE) = 0;
103 virtual BOOL sendData(
const puint8_t dataPtr, ssize_t dataLength) = 0;
106 virtual BOOL receiveData(puint8_t dataPtr, ssize_t dataLength) = 0;
109 virtual void idleBus(
void) = 0;
112 virtual BOOL executeExtendedCommand(SdioCommand &command,
113 SdioResponse &response,
116 ssize_t dataLength) = 0;
120 uint32_t getSpeed(
void);
123 uint32_t getConnectTimeout(
void);
126 uint32_t getResponseTimeout(
void);
143 uint32_t __connectTimeout;
146 uint32_t __responseTimeout;
159 class SdioBusSpiMode :
public SdioBus
163 SdioBusSpiMode(uint32_t speed,
164 uint32_t connectTimeout,
165 uint32_t responseTimeout,
166 ssize_t idleByteCount,
167 uint16_t idleFillValue,
169 NetDeviceSelectDetail chipSelectDetail);
176 BOOL attachBus(
void);
179 BOOL acquireBus(
void);
182 void releaseBus(
void);
185 void selectCard(
void);
188 void releaseCard(
void);
191 BOOL sendCommand(SdioCommand &command);
194 BOOL receiveResponse(SdioResponse &response, BOOL idleBus = TRUE);
197 BOOL sendData(
const puint8_t dataPtr, ssize_t dataLength);
200 BOOL receiveData(puint8_t dataPtr, ssize_t dataLength);
206 BOOL executeExtendedCommand(SdioCommand &command, SdioResponse &response, BOOL writeData, puint8_t dataPtr, ssize_t dataLength);
214 uint8_t waitForDataReceived(
void);
217 BOOL waitForData(
void);
224 int __chipSelectMask;
227 NetDeviceSelectDetail __chipSelectDetail;
233 ssize_t __idleByteCount;
236 uint16_t __idleFillValue;