1 //-----------------------------------------------------------------------
2 //  Low level disk interface modlue include file
3 //-----------------------------------------------------------------------
4 
5 #ifndef _DISKIO
6 
7 #define _READONLY    0   // 1: Remove write functions
8 #define _USE_IOCTL   1   // 1: Use disk_ioctl fucntion
9 
10 #include "integer.h"
11 
12 
13 // Status of Disk Functions
14 typedef BYTE    DSTATUS;
15 
16 // Results of Disk Functions
17 typedef enum {
18     RES_OK = 0, // 0: Successful
19     RES_ERROR,  // 1: R/W Error
20     RES_WRPRT,  // 2: Write Protected
21     RES_NOTRDY, // 3: Not Ready
22     RES_PARERR  // 4: Invalid Parameter
23 } DRESULT;
24 
25 
26 // Prototypes for disk control functions
27 
28 int assign_drives (int, int);
29 DSTATUS disk_initialize (BYTE);
30 DSTATUS disk_status (BYTE);
31 DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
32 #if    _READONLY == 0
33 DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
34 #endif
35 DRESULT disk_ioctl (BYTE, BYTE, void*);
36 
37 
38 
39 // Disk Status Bits (DSTATUS)
40 #define STA_NOINIT  0x01    // Drive not initialized
41 #define STA_NODISK  0x02    // No medium in the drive
42 #define STA_PROTECT 0x04    // Write protected
43 
44 
45 // Command code for disk_ioctrl fucntion
46 
47 // Generic command (defined for FatFs)
48 #define CTRL_SYNC           0    // Flush disk cache (for write functions)
49 #define GET_SECTOR_COUNT    1    // Get media size (for only f_mkfs())
50 #define GET_SECTOR_SIZE     2    // Get sector size (for multiple sector size (_MAX_SS >= 1024))
51 #define GET_BLOCK_SIZE      3    // Get erase block size (for only f_mkfs())
52 #define CTRL_ERASE_SECTOR   4    // Force erased a block of sectors (for only _USE_ERASE)
53 
54 // Generic command
55 #define CTRL_POWER          5    // Get/Set power status
56 #define CTRL_LOCK           6    // Lock/Unlock media removal
57 #define CTRL_EJECT          7    // Eject media
58 
59 // MMC/SDC specific ioctl command
60 #define MMC_GET_TYPE        10    // Get card type
61 #define MMC_GET_CSD         11    // Get CSD
62 #define MMC_GET_CID         12    // Get CID
63 #define MMC_GET_OCR         13    // Get OCR
64 #define MMC_GET_SDSTAT      14    // Get SD status
65 
66 // ATA/CF specific ioctl command
67 #define ATA_GET_REV         20    // Get F/W revision
68 #define ATA_GET_MODEL       21    // Get model name
69 #define ATA_GET_SN          22    // Get serial number
70 
71 // NAND specific ioctl command
72 #define NAND_FORMAT         30    // Create physical format
73 
74 
75 #define _DISKIO
76 #endif
77