source: rtems/c/src/libchip/i2c/spi-sd-card.h @ 0e27119

4.115
Last change on this file since 0e27119 was 0e27119, checked in by Joel Sherrill <joel.sherrill@…>, on 10/11/12 at 20:52:18

Use proper 3 line form of license text

  • Property mode set to 100644
File size: 2.0 KB
RevLine 
[e0ecc66d]1/**
2 * @file
3 *
4 * @brief SD Card LibI2C driver.
5 */
6
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 *
[0e27119]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.com/license/LICENSE.
[e0ecc66d]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
29extern "C" {
30#endif /* __cplusplus */
31
32#define SD_CARD_IDLE_TOKEN 0xff
33
34/**
35 * 1 idle token before command
36 * 6 bytes for the command
37 * 1 to 8 bytes for response start (N_CR)
38 * 1 to 2 bytes for response
39 * 1 idle token after command (minimum N_RC)
40 */
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
[58eccd0]56/* Default speed = 400kbps, default timeout = 100ms, n_ac_max is in bytes */
57#define SD_CARD_N_AC_MAX_DEFAULT 5000
[e0ecc66d]58
59typedef struct {
60        const char *device_name;
[4c18d8c]61        rtems_device_minor_number bus;
[e0ecc66d]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;
[3495c57]66        uint32_t n_ac_max;
[e0ecc66d]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;
[d290bbb]73        uint32_t retries;
[e0ecc66d]74} sd_card_driver_entry;
75
76extern sd_card_driver_entry sd_card_driver_table [];
77
[9814d2dd]78extern size_t sd_card_driver_table_size;
79
80rtems_status_code sd_card_register( void);
81
[e0ecc66d]82#ifdef __cplusplus
83}
84#endif /* __cplusplus */
85
86#endif /* LIBI2C_SD_CARD_H */
Note: See TracBrowser for help on using the repository browser.