35 #ifndef __HAL_SDIO_H__ 36 #define __HAL_SDIO_H__ 37 #include "hal_platform.h" 39 #ifdef HAL_SDIO_MODULE_ENABLED 353 HAL_SDIO_STATUS_BUSY = -2,
354 HAL_SDIO_STATUS_ERROR = -1,
355 HAL_SDIO_STATUS_OK = 0,
361 HAL_SDIO_BUS_WIDTH_1 = 1,
362 HAL_SDIO_BUS_WIDTH_4 = 2
363 } hal_sdio_bus_width_t;
368 HAL_SDIO_DIRECTION_READ = 0,
369 HAL_SDIO_DIRECTION_WRITE = 1
370 } hal_sdio_direction_t;
375 HAL_SDIO_FIXED_ADDRESS = 0,
376 HAL_SDIO_INCREMENTING_ADDRESS = 1
377 } hal_sdio_command53_operation_t;
382 HAL_SDIO_FUNCTION_0 = 0,
383 HAL_SDIO_FUNCTION_1 = 1
384 } hal_sdio_function_id_t;
387 HAL_SDIO_EVENT_SUCCESS = 0,
388 HAL_SDIO_EVENT_TRANSFER_ERROR = -1,
389 HAL_SDIO_EVENT_CRC_ERROR = -2,
390 HAL_SDIO_EVENT_DATA_TIMEOUT = -3,
391 }hal_sdio_callback_event_t;
404 hal_sdio_bus_width_t bus_width;
412 hal_sdio_direction_t direction;
413 hal_sdio_function_id_t
function;
415 hal_sdio_command53_operation_t operation;
419 } hal_sdio_command53_config_t;
425 hal_sdio_direction_t direction;
426 hal_sdio_function_id_t
function;
427 bool read_after_write;
431 } hal_sdio_command52_config_t;
448 typedef void (*hal_sdio_callback_t)(hal_sdio_callback_event_t event,
void *user_data);
461 hal_sdio_status_t hal_sdio_register_callback(hal_sdio_port_t sdio_port, hal_sdio_callback_t sdio_callback,
void *user_data);
473 hal_sdio_status_t hal_sdio_init(hal_sdio_port_t sdio_port, hal_sdio_config_t *sdio_config);
482 hal_sdio_status_t hal_sdio_deinit(hal_sdio_port_t sdio_port);
493 hal_sdio_status_t hal_sdio_set_clock(hal_sdio_port_t sdio_port, uint32_t clock);
503 hal_sdio_status_t hal_sdio_get_clock(hal_sdio_port_t sdio_port, uint32_t *clock);
514 hal_sdio_status_t hal_sdio_set_bus_width(hal_sdio_port_t sdio_port, hal_sdio_bus_width_t bus_width);
526 hal_sdio_status_t hal_sdio_set_block_size(hal_sdio_port_t sdio_port, hal_sdio_function_id_t
function, uint32_t block_size);
537 hal_sdio_status_t hal_sdio_get_block_size(hal_sdio_port_t sdio_port, hal_sdio_function_id_t
function, uint32_t *block_size);
548 hal_sdio_status_t hal_sdio_execute_command52(hal_sdio_port_t sdio_port, hal_sdio_command52_config_t *command52_config);
560 hal_sdio_status_t hal_sdio_execute_command53(hal_sdio_port_t sdio_port, hal_sdio_command53_config_t *command53_config);
570 hal_sdio_status_t hal_sdio_execute_command53_dma_blocking(hal_sdio_port_t sdio_port, hal_sdio_command53_config_t *command53_config);
580 hal_sdio_status_t hal_sdio_execute_command53_dma(hal_sdio_port_t sdio_port, hal_sdio_command53_config_t *command53_config);