Zephyr API
4.4.99
A Scalable Open Source RTOS
Toggle main menu visibility
Loading...
Searching...
No Matches
sd.h
Go to the documentation of this file.
1
/*
2
* Copyright 2022 NXP
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
11
12
#ifndef ZEPHYR_INCLUDE_SD_SD_H_
13
#define ZEPHYR_INCLUDE_SD_SD_H_
14
15
#include <
zephyr/device.h
>
16
#include <
zephyr/drivers/sdhc.h
>
17
#include <
zephyr/kernel.h
>
18
19
#ifdef __cplusplus
20
extern
"C"
{
21
#endif
22
26
enum
card_status
{
27
CARD_UNINITIALIZED
= 0,
28
CARD_ERROR
= 1,
29
CARD_INITIALIZED
= 2,
30
};
31
35
enum
card_type
{
36
CARD_SDMMC
= 0,
37
CARD_SDIO
= 1,
38
CARD_COMBO
= 2,
39
CARD_MMC
= 3,
40
};
41
48
struct
sdio_func
{
49
enum
sdio_func_num
num
;
50
struct
sd_card
*
card
;
51
struct
sdio_cis
cis
;
52
uint16_t
block_size
;
53
};
54
55
63
struct
sd_card
{
64
const
struct
device
*
sdhc
;
65
struct
sdhc_io
bus_io
;
66
enum
sd_voltage
card_voltage
;
67
struct
k_mutex
lock
;
68
struct
sdhc_host_props
host_props
;
69
uint32_t
ocr
;
70
struct
sd_switch_caps
switch_caps
;
71
unsigned
int
num_io
: 3;
72
uint16_t
relative_addr
;
73
uint32_t
block_count
;
74
uint16_t
block_size
;
75
uint8_t
sd_version
;
76
uint8_t
card_speed
;
77
enum
card_status
status
;
78
enum
card_type
type
;
79
uint16_t
flags
;
80
uint8_t
bus_width
;
81
uint32_t
cccr_flags
;
82
struct
sdio_func
func0
;
83
84
/* NOTE: The buffer is accessed as a uint32_t* by the SD subsystem, so must be
85
* aligned to 4 bytes for platforms that don't support unaligned access...
86
* Systems where the buffer is accessed by DMA may require wider alignment, in
87
* which case, use CONFIG_SDHC_BUFFER_ALIGNMENT.
88
*/
89
uint8_t
card_buffer
[CONFIG_SD_BUFFER_SIZE]
90
__aligned(
MAX
(4, CONFIG_SDHC_BUFFER_ALIGNMENT));
/* Card internal buffer */
91
};
92
105
int
sd_init
(
const
struct
device
*sdhc_dev,
struct
sd_card
*
card
);
106
114
bool
sd_is_card_present
(
const
struct
device
*sdhc_dev);
115
116
117
#ifdef __cplusplus
118
}
119
#endif
120
121
#endif
/* ZEPHYR_INCLUDE_SD_SD_H_ */
device.h
sd_voltage
sd_voltage
SD voltage.
Definition
sdhc.h:151
MAX
#define MAX(a, b)
Obtain the maximum of two values.
Definition
util.h:391
kernel.h
Public kernel APIs.
card_status
card_status
card status.
Definition
sd.h:26
CARD_ERROR
@ CARD_ERROR
card state is error
Definition
sd.h:28
CARD_INITIALIZED
@ CARD_INITIALIZED
card is in valid state
Definition
sd.h:29
CARD_UNINITIALIZED
@ CARD_UNINITIALIZED
card has not been initialized
Definition
sd.h:27
sd_init
int sd_init(const struct device *sdhc_dev, struct sd_card *card)
Initialize an SD device.
sd_is_card_present
bool sd_is_card_present(const struct device *sdhc_dev)
checks to see if card is present in the SD slot
card_type
card_type
card type.
Definition
sd.h:35
CARD_SDIO
@ CARD_SDIO
SD I/O card.
Definition
sd.h:37
CARD_MMC
@ CARD_MMC
MMC memory card.
Definition
sd.h:39
CARD_SDMMC
@ CARD_SDMMC
SD memory card.
Definition
sd.h:36
CARD_COMBO
@ CARD_COMBO
SD memory and I/O card.
Definition
sd.h:38
sdio_func_num
sdio_func_num
SDIO function number.
Definition
sd_spec.h:786
sdhc.h
Main header file for SDHC (Secure Digital Host Controller) driver API.
uint32_t
__UINT32_TYPE__ uint32_t
Definition
stdint.h:90
uint8_t
__UINT8_TYPE__ uint8_t
Definition
stdint.h:88
uint16_t
__UINT16_TYPE__ uint16_t
Definition
stdint.h:89
device
Runtime device structure (in ROM) per driver instance.
Definition
device.h:513
k_mutex
Kernel mutex structure.
Definition
kernel.h:3497
sd_card
SD card structure.
Definition
sd.h:63
sd_card::status
enum card_status status
Card status.
Definition
sd.h:77
sd_card::switch_caps
struct sd_switch_caps switch_caps
SD switch capabilities.
Definition
sd.h:70
sd_card::num_io
unsigned int num_io
I/O function count.
Definition
sd.h:71
sd_card::relative_addr
uint16_t relative_addr
Card relative address.
Definition
sd.h:72
sd_card::bus_width
uint8_t bus_width
Desired bus width.
Definition
sd.h:80
sd_card::block_size
uint16_t block_size
SD block size.
Definition
sd.h:74
sd_card::sd_version
uint8_t sd_version
SD specification version.
Definition
sd.h:75
sd_card::type
enum card_type type
Card type.
Definition
sd.h:78
sd_card::card_buffer
uint8_t card_buffer[CONFIG_SD_BUFFER_SIZE]
Definition
sd.h:90
sd_card::ocr
uint32_t ocr
Raw card OCR content.
Definition
sd.h:69
sd_card::bus_io
struct sdhc_io bus_io
Current bus I/O props for SDHC.
Definition
sd.h:65
sd_card::card_speed
uint8_t card_speed
Card timing mode.
Definition
sd.h:76
sd_card::func0
struct sdio_func func0
Function 0 common card data.
Definition
sd.h:82
sd_card::host_props
struct sdhc_host_props host_props
SDHC host properties.
Definition
sd.h:68
sd_card::cccr_flags
uint32_t cccr_flags
SDIO CCCR data.
Definition
sd.h:81
sd_card::lock
struct k_mutex lock
card mutex
Definition
sd.h:67
sd_card::block_count
uint32_t block_count
Number of blocks in SD card.
Definition
sd.h:73
sd_card::flags
uint16_t flags
Card flags.
Definition
sd.h:79
sd_card::card_voltage
enum sd_voltage card_voltage
Card signal voltage.
Definition
sd.h:66
sd_card::sdhc
const struct device * sdhc
SD host controller for card.
Definition
sd.h:64
sd_switch_caps
SD switch capabilities.
Definition
sd_spec.h:505
sdhc_host_props
SD host controller properties.
Definition
sdhc.h:230
sdhc_io
SD host controller I/O control structure.
Definition
sdhc.h:214
sdio_cis
SDIO common CIS tuple properties.
Definition
sd_spec.h:920
sdio_func
SDIO function definition.
Definition
sd.h:48
sdio_func::num
enum sdio_func_num num
Function number.
Definition
sd.h:49
sdio_func::card
struct sd_card * card
Card this function is present on.
Definition
sd.h:50
sdio_func::block_size
uint16_t block_size
Current block size for this function.
Definition
sd.h:52
sdio_func::cis
struct sdio_cis cis
CIS tuple data for this function.
Definition
sd.h:51
zephyr
sd
sd.h
Generated on
for Zephyr API by
1.17.0