summaryrefslogtreecommitdiff
path: root/tool/mbed/mbed-sdk/libraries/fs/fat/ChaN/diskio.h
blob: a469ebb855f56d597368c4b4dd7869b3893f35f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
//-----------------------------------------------------------------------
//  Low level disk interface modlue include file
//-----------------------------------------------------------------------

#ifndef _DISKIO

#define _READONLY    0   // 1: Remove write functions
#define _USE_IOCTL   1   // 1: Use disk_ioctl fucntion

#include "integer.h"


// Status of Disk Functions
typedef BYTE    DSTATUS;

// Results of Disk Functions
typedef enum {
    RES_OK = 0, // 0: Successful
    RES_ERROR,  // 1: R/W Error
    RES_WRPRT,  // 2: Write Protected
    RES_NOTRDY, // 3: Not Ready
    RES_PARERR  // 4: Invalid Parameter
} DRESULT;


// Prototypes for disk control functions

int assign_drives (int, int);
DSTATUS disk_initialize (BYTE);
DSTATUS disk_status (BYTE);
DRESULT disk_read (BYTE, BYTE*, DWORD, BYTE);
#if    _READONLY == 0
DRESULT disk_write (BYTE, const BYTE*, DWORD, BYTE);
#endif
DRESULT disk_ioctl (BYTE, BYTE, void*);



// Disk Status Bits (DSTATUS)
#define STA_NOINIT  0x01    // Drive not initialized
#define STA_NODISK  0x02    // No medium in the drive
#define STA_PROTECT 0x04    // Write protected


// Command code for disk_ioctrl fucntion

// Generic command (defined for FatFs)
#define CTRL_SYNC           0    // Flush disk cache (for write functions)
#define GET_SECTOR_COUNT    1    // Get media size (for only f_mkfs())
#define GET_SECTOR_SIZE     2    // Get sector size (for multiple sector size (_MAX_SS >= 1024))
#define GET_BLOCK_SIZE      3    // Get erase block size (for only f_mkfs())
#define CTRL_ERASE_SECTOR   4    // Force erased a block of sectors (for only _USE_ERASE)

// Generic command
#define CTRL_POWER          5    // Get/Set power status
#define CTRL_LOCK           6    // Lock/Unlock media removal
#define CTRL_EJECT          7    // Eject media

// MMC/SDC specific ioctl command
#define MMC_GET_TYPE        10    // Get card type
#define MMC_GET_CSD         11    // Get CSD
#define MMC_GET_CID         12    // Get CID
#define MMC_GET_OCR         13    // Get OCR
#define MMC_GET_SDSTAT      14    // Get SD status

// ATA/CF specific ioctl command
#define ATA_GET_REV         20    // Get F/W revision
#define ATA_GET_MODEL       21    // Get model name
#define ATA_GET_SN          22    // Get serial number

// NAND specific ioctl command
#define NAND_FORMAT         30    // Create physical format


#define _DISKIO
#endif