stm32: Add sdio support

Adds sdio support for the stm32f4 to allow for SD card flash updates
without power cycling some boards, e.g. BTT Octopus Pro.

Signed-off-by: H. Gregor Molter <gregor.molter@secretlab.de>
Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
H. Gregor Molter
2023-02-20 19:52:36 -05:00
committed by Kevin O'Connor
parent 848a78d1a5
commit d7bd7f1f4b
12 changed files with 1050 additions and 11 deletions

25
src/stm32/sdio.h Normal file
View File

@@ -0,0 +1,25 @@
#ifndef __STM32_SDIO_H
#define __STM32_SDIO_H
#include <stdint.h> // uint32_t
struct sdio_config {
void *sdio;
};
struct sdio_config sdio_setup(uint32_t bus);
void sdio_send_cmd(struct sdio_config sdio, uint8_t cmd, uint32_t argument
, uint8_t wait);
uint8_t sdio_send_command(struct sdio_config sdio_config, uint8_t cmd
, uint32_t argument, uint8_t wait
, uint8_t *response_data
, uint8_t *response_data_len);
uint8_t sdio_prepare_data_transfer(struct sdio_config sdio_config, uint8_t read
, uint32_t numblocks, uint32_t blocksize
, uint32_t timeout);
uint8_t sdio_read_data(struct sdio_config sdio_config, uint8_t *data
, uint32_t numblocks, uint32_t blocksize);
uint8_t sdio_write_data(struct sdio_config sdio_config, uint8_t *data
, uint32_t numblocks, uint32_t blocksize);
void sdio_set_speed(struct sdio_config sdio_config, uint32_t speed);
#endif // sdio.h