RTEMS  5.0.0
spi-sd-card.h
Go to the documentation of this file.
1 
7 /*
8  * Copyright (c) 2008
9  * Embedded Brains GmbH
10  * Obere Lagerstr. 30
11  * D-82178 Puchheim
12  * Germany
13  * rtems@embedded-brains.de
14  *
15  * The license and distribution terms for this file may be
16  * found in the file LICENSE in this distribution or at
17  * http://www.rtems.org/license/LICENSE.
18  */
19 
20 #ifndef LIBI2C_SD_CARD_H
21 #define LIBI2C_SD_CARD_H
22 
23 #include <stdint.h>
24 #include <stdbool.h>
25 
26 #include <rtems/libi2c.h>
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif /* __cplusplus */
31 
32 #define SD_CARD_IDLE_TOKEN 0xff
33 
41 #define SD_CARD_COMMAND_SIZE 18
42 
43 #define SD_CARD_TRANSFER_MODE_DEFAULT { .baudrate = 400000, .bits_per_char = 8, .lsb_first = FALSE, .clock_inv = FALSE, .clock_phs = FALSE, .idle_char = SD_CARD_IDLE_TOKEN }
44 
45 #define SD_CARD_COMMAND_DEFAULT { \
46  SD_CARD_IDLE_TOKEN, \
47  0x40, 0, 0, 0, 0, 0x95, \
48  SD_CARD_IDLE_TOKEN, SD_CARD_IDLE_TOKEN, \
49  SD_CARD_IDLE_TOKEN, SD_CARD_IDLE_TOKEN, \
50  SD_CARD_IDLE_TOKEN, SD_CARD_IDLE_TOKEN, \
51  SD_CARD_IDLE_TOKEN, SD_CARD_IDLE_TOKEN, \
52  SD_CARD_IDLE_TOKEN, SD_CARD_IDLE_TOKEN, \
53  SD_CARD_IDLE_TOKEN \
54 }
55 
56 /* Default speed = 400kbps, default timeout = 100ms, n_ac_max is in bytes */
57 #define SD_CARD_N_AC_MAX_DEFAULT 5000
58 
59 typedef struct {
60  const char *device_name;
61  rtems_device_minor_number bus;
62  rtems_libi2c_tfr_mode_t transfer_mode;
63  uint8_t command [SD_CARD_COMMAND_SIZE];
64  uint8_t response [SD_CARD_COMMAND_SIZE];
65  int response_index;
66  uint32_t n_ac_max;
67  uint32_t block_number;
68  uint32_t block_size;
69  uint32_t block_size_shift;
70  bool busy;
71  bool verbose;
72  bool schedule_if_busy;
73  uint32_t retries;
75 
76 extern sd_card_driver_entry sd_card_driver_table [];
77 
78 extern size_t sd_card_driver_table_size;
79 
80 rtems_status_code sd_card_register( void);
81 
82 #ifdef __cplusplus
83 }
84 #endif /* __cplusplus */
85 
86 #endif /* LIBI2C_SD_CARD_H */
Definition: spi-sd-card.h:59
rtems_status_code
Classic API Status.
Definition: status.h:43
#define SD_CARD_COMMAND_SIZE
Definition: spi-sd-card.h:41
Definition: libi2c.h:460
I2C Library.