00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef SDIOEMB_LIBSDIO_H
00010 #define SDIOEMB_LIBSDIO_H
00011
00026
00027 #ifdef __cplusplus
00028 extern "C" {
00029 #endif
00030
00031 #ifdef WIN32
00032 # define LIBSDIOAPI __stdcall
00033 #else
00034 # define LIBSDIOAPI
00035 #endif
00036
00037 struct sdio_uif;
00038
00042 typedef struct sdio_uif *sdio_uif_t;
00043
00044 enum sdio_status {
00045 SDIO_SUCCESS = 0,
00046 SDIO_EAGAIN = -1,
00047 SDIO_EINVAL = -2,
00048 SDIO_EIO = -3,
00049 SDIO_ENODEV = -4,
00050 SDIO_ENOMEM = -5,
00051 SDIO_ENOTSUPP = -6,
00052 SDIO_ENXIO = -7,
00053 SDIO_ETIMEDOUT = -8,
00054 };
00055
00062 typedef void (LIBSDIOAPI *sdio_int_handler_t)(sdio_uif_t uif, void *arg);
00063
00072 typedef void (LIBSDIOAPI *sdio_io_callback_t)(sdio_uif_t uif, void *arg, int status);
00073
00090 sdio_uif_t LIBSDIOAPI sdio_open(const char *dev_filename,
00091 sdio_int_handler_t int_handler, void *arg);
00092
00105 void LIBSDIOAPI sdio_interrupt_mask(sdio_uif_t uif);
00106
00115 void LIBSDIOAPI sdio_interrupt_unmask(sdio_uif_t uif);
00116
00123 void LIBSDIOAPI sdio_close(sdio_uif_t uif);
00124
00132 int LIBSDIOAPI sdio_num_functions(sdio_uif_t uif);
00133
00149 int LIBSDIOAPI sdio_set_bus_width(sdio_uif_t uif, int bus_width);
00150
00165 void LIBSDIOAPI sdio_set_max_bus_freq(sdio_uif_t uif, int max_freq);
00166
00174 uint16_t LIBSDIOAPI sdio_manf_id(sdio_uif_t uif);
00175
00183 uint16_t LIBSDIOAPI sdio_card_id(sdio_uif_t uif);
00184
00193 uint8_t LIBSDIOAPI sdio_std_if(sdio_uif_t uif, int func);
00194
00203 int LIBSDIOAPI sdio_max_block_size(sdio_uif_t uif, int func);
00204
00216 int LIBSDIOAPI sdio_block_size(sdio_uif_t uif, int func);
00217
00229 int LIBSDIOAPI sdio_set_block_size(sdio_uif_t uif, int func, int blksz);
00230
00241 int LIBSDIOAPI sdio_read8(sdio_uif_t uif, int func, uint32_t addr, uint8_t *data);
00242
00253 int LIBSDIOAPI sdio_write8(sdio_uif_t uif, int func, uint32_t addr, uint8_t data);
00254
00275 int LIBSDIOAPI sdio_read(sdio_uif_t uif, int func, uint32_t addr, uint8_t *data,
00276 size_t len, int block_size);
00277
00298 int LIBSDIOAPI sdio_write(sdio_uif_t uif, int func, uint32_t addr, const uint8_t *data,
00299 size_t len, int block_size);
00300
00313 int LIBSDIOAPI sdio_read8_async(sdio_uif_t uif, int func, uint32_t addr, uint8_t *data,
00314 sdio_io_callback_t callback, void *arg);
00315
00328 int LIBSDIOAPI sdio_write8_async(sdio_uif_t uif, int func, uint32_t addr, uint8_t data,
00329 sdio_io_callback_t callback, void *arg);
00330
00354 int LIBSDIOAPI sdio_read_async(sdio_uif_t uif, int func, uint32_t addr, uint8_t *data,
00355 size_t len, int block_size,
00356 sdio_io_callback_t callback, void *arg);
00357
00381 int LIBSDIOAPI sdio_write_async(sdio_uif_t uif, int func, uint32_t addr, const uint8_t *data,
00382 size_t len, int block_size,
00383 sdio_io_callback_t callback, void *arg);
00396 int LIBSDIOAPI sdio_reinsert_card(sdio_uif_t uif);
00397
00398 #ifdef __cplusplus
00399 }
00400 #endif
00401
00404 #endif