SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
sys-sdhci.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0+ */
2
3#ifndef __SDHCI_SDHCI_H__
4#define __SDHCI_SDHCI_H__
5
6#include <io.h>
7#include <stdarg.h>
8#include <stdbool.h>
9#include <stddef.h>
10#include <stdint.h>
11#include <types.h>
12
13#include <reg/reg-smhc.h>
14#include <sys-gpio.h>
15
16#include <log.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif// __cplusplus
21
22typedef enum { MMC_CLK_400K = 0,
29
36
43
44#define SMHC_DES_NUM_SHIFT 12 /* smhc2!! */
45#define SMHC_DES_BUFFER_MAX_LEN (1 << SMHC_DES_NUM_SHIFT)
46typedef struct {
47 uint32_t : 1, dic : 1, /* disable interrupt on completion */
48 last_desc : 1, /* 1-this data buffer is the last buffer */
49 first_desc : 1, /* 1-data buffer is the first buffer, 0-data buffer contained in the next descriptor is 1st
50 buffer */
51 des_chain : 1, /* 1-the 2nd address in the descriptor is the next descriptor address */
52 // end_of_ring : 1, /* 1-last descriptor flag when using dual data buffer in descriptor */
53 : 25, err_flag : 1, /* transfer error flag */
54 own : 1; /* des owner:1-idma owns it, 0-host owns it */
55
57
60
61} sdhci_idma_desc_t __attribute__((aligned(8)));
62
67
102
103extern sdhci_t sdhci0;
104
111bool sdhci_reset(sdhci_t *hci);
112
121
129bool sdhci_set_width(sdhci_t *hci, uint32_t width);
130
138bool sdhci_set_clock(sdhci_t *hci, smhc_clk_t hz);
139
148bool sdhci_transfer(sdhci_t *hci, sdhci_cmd_t *cmd, sdhci_data_t *dat);
149
156int sunxi_sdhci_init(sdhci_t *sdhci);
157
158#ifdef __cplusplus
159}
160#endif// __cplusplus
161
162#endif /* __SDHCI_SDHCI_H__ */
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
int sunxi_sdhci_init(sunxi_sdhci_t *sdhci)
Initialize the SDHC controller.
Definition sys-sdhci.c:1162
uint32_t dic
Definition sys-sdhci.h:0
struct sunxi_sdhci_desc __attribute__((aligned(8)))
uint32_t data_buf_sz
Definition sys-sdhci.h:9
sdhci_type_t
Definition sys-sdhci.h:63
@ SDHCI_TYPE_SD
Definition sys-sdhci.h:64
@ SDHCI_TYPE_MMC
Definition sys-sdhci.h:65
bool sdhci_set_width(sdhci_t *hci, uint32_t width)
Set the data bus width for the SD card controller.
Definition sys-sdhci.c:374
#define SMHC_DES_NUM_SHIFT
Definition sys-sdhci.h:44
bool sdhci_set_clock(sdhci_t *hci, smhc_clk_t hz)
Set the clock frequency for the SD card controller.
Definition sys-sdhci.c:465
bool sdhci_set_voltage(sdhci_t *hci, uint32_t voltage)
Set the voltage for the SD card controller.
sdhci_t sdhci0
Definition board.c:60
smhc_clk_t
Definition sys-sdhci.h:22
@ MMC_CLK_200M
Definition sys-sdhci.h:28
@ MMC_CLK_25M
Definition sys-sdhci.h:23
@ MMC_CLK_50M
Definition sys-sdhci.h:24
@ MMC_CLK_50M_DDR
Definition sys-sdhci.h:25
@ MMC_CLK_100M
Definition sys-sdhci.h:26
@ MMC_CLK_400K
Definition sys-sdhci.h:22
@ MMC_CLK_150M
Definition sys-sdhci.h:27
bool sdhci_reset(sdhci_t *hci)
Reset the SD card controller.
Definition sys-sdhci.c:369
bool sdhci_transfer(sdhci_t *hci, sdhci_cmd_t *cmd, sdhci_data_t *dat)
Perform a data transfer operation with the SD card controller.
Definition sys-sdhci.c:254
Definition sys-gpio.h:68
Definition sys-sdhci.h:30
uint32_t resptype
Definition sys-sdhci.h:33
uint32_t arg
Definition sys-sdhci.h:32
uint32_t idx
Definition sys-sdhci.h:31
Definition sys-sdhci.h:37
uint8_t * buf
Definition sys-sdhci.h:38
uint32_t blksz
Definition sys-sdhci.h:40
uint32_t blkcnt
Definition sys-sdhci.h:41
uint32_t flag
Definition sys-sdhci.h:39
Definition sys-sdhci.h:46
uint32_t own
Definition sys-sdhci.h:54
uint32_t err_flag
Definition sys-sdhci.h:53
uint32_t data_buf_dummy
Definition sys-sdhci.h:56
uint32_t first_desc
Definition sys-sdhci.h:49
uint32_t buf_addr
Definition sys-sdhci.h:58
uint32_t next_desc_addr
Definition sys-sdhci.h:59
uint32_t des_chain
Definition sys-sdhci.h:51
uint32_t last_desc
Definition sys-sdhci.h:48
Definition reg-smhc.h:186
Definition sys-sdhci.h:68
gpio_mux_t gpio_d7
Definition sys-sdhci.h:96
uint32_t dma_trglvl
Definition sys-sdhci.h:82
gpio_mux_t gpio_d0
Definition sys-sdhci.h:89
uint32_t voltage
Definition sys-sdhci.h:74
uint32_t width
Definition sys-sdhci.h:75
gpio_mux_t gpio_cmd
Definition sys-sdhci.h:97
gpio_mux_t gpio_clk
Definition sys-sdhci.h:98
gpio_mux_t gpio_d6
Definition sys-sdhci.h:95
gpio_mux_t gpio_d3
Definition sys-sdhci.h:92
uint32_t pclk
Definition sys-sdhci.h:77
bool skew_auto_mode
Definition sys-sdhci.h:87
gpio_mux_t gpio_rst
Definition sys-sdhci.h:100
sdhci_type_t sdio_type
Definition sys-sdhci.h:86
volatile uint32_t sdhci_pll
Definition sys-sdhci.h:81
gpio_mux_t gpio_d4
Definition sys-sdhci.h:93
gpio_mux_t gpio_ds
Definition sys-sdhci.h:99
gpio_mux_t gpio_d5
Definition sys-sdhci.h:94
bool isspi
Definition sys-sdhci.h:85
uint32_t reset
Definition sys-sdhci.h:72
gpio_mux_t gpio_d2
Definition sys-sdhci.h:91
smhc_clk_t clock
Definition sys-sdhci.h:76
sdhci_reg_t * reg
Definition sys-sdhci.h:71
uint32_t id
Definition sys-sdhci.h:70
gpio_mux_t gpio_d1
Definition sys-sdhci.h:90
char * name
Definition sys-sdhci.h:69
bool removable
Definition sys-sdhci.h:84