1 /* 2 * Copyright (c) 2006-2021, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2013-11-06 xiaonong first version. 9 */ 10 11 #ifndef __DRV_SD_H 12 #define __DRV_SD_H 13 14 #include <stdint.h> 15 #include <rtthread.h> 16 #include <LPC54608.h> 17 #include "fsl_card.h" 18 #include "fsl_iocon.h" 19 #include <rtdevice.h> 20 21 #define IOCON_PIO_DIGITAL_EN 0x0100u /*!< Enables digital function */ 22 #define IOCON_PIO_FUNC1 0x01u /*!< Selects pin function 1 */ 23 #define IOCON_PIO_FUNC2 0x02u /*!< Selects pin function 2 */ 24 #define IOCON_PIO_INPFILT_OFF 0x0200u /*!< Input filter disabled */ 25 #define IOCON_PIO_INV_DI 0x00u /*!< Input function is not inverted */ 26 #define IOCON_PIO_MODE_INACT 0x00u /*!< No addition pin function */ 27 #define IOCON_PIO_MODE_PULLUP 0x20u /*!< Selects pull-up function */ 28 #define IOCON_PIO_OPENDRAIN_DI 0x00u /*!< Open drain is disabled */ 29 #define IOCON_PIO_SLEW_FAST 0x0400u /*!< Fast mode, slew rate control is disabled */ 30 #define IOCON_PIO_SLEW_STANDARD 0x00u /*!< Standard mode, output slew rate control is enabled */ 31 #define PIN3_IDX 3u /*!< Pin number for pin 3 in a port 2 */ 32 #define PIN4_IDX 4u /*!< Pin number for pin 4 in a port 2 */ 33 #define PIN5_IDX 5u /*!< Pin number for pin 5 in a port 2 */ 34 #define PIN6_IDX 6u /*!< Pin number for pin 6 in a port 2 */ 35 #define PIN7_IDX 7u /*!< Pin number for pin 7 in a port 2 */ 36 #define PIN8_IDX 8u /*!< Pin number for pin 8 in a port 2 */ 37 #define PIN9_IDX 9u /*!< Pin number for pin 9 in a port 2 */ 38 #define PIN10_IDX 10u /*!< Pin number for pin 10 in a port 2 */ 39 #define PIN15_IDX 15u /*!< Pin number for pin 15 in a port 3 */ 40 #define PIN27_IDX 27u /*!< Pin number for pin 27 in a port 1 */ 41 #define PIN28_IDX 28u /*!< Pin number for pin 28 in a port 1 */ 42 #define PIN29_IDX 29u /*!< Pin number for pin 29 in a port 0 */ 43 #define PIN30_IDX 30u /*!< Pin number for pin 30 in a port 0 */ 44 #define PORT0_IDX 0u /*!< Port index */ 45 #define PORT1_IDX 1u /*!< Port index */ 46 #define PORT2_IDX 2u /*!< Port index */ 47 #define PORT3_IDX 3u /*!< Port index */ 48 49 struct mci_device 50 { 51 struct rt_device parent; /**< RT-Thread device struct */ 52 struct rt_device_blk_geometry geometry; /**< sector size, sector count */ 53 sd_card_t card; /**< Card descriptor */ 54 rt_event_t finish_event; /**< data send finish event*/ 55 rt_bool_t data_error; /**< data send error*/ 56 struct rt_mutex lock; 57 }; 58 59 extern rt_err_t mci_hw_init(const char *device_name); 60 61 #endif // __DRV_SD_H 62