/ vendor / fatfs / source / diskio.h
diskio.h
 1  /*-----------------------------------------------------------------------/
 2  /  Low level disk interface modlue include file   (C)ChaN, 2019          /
 3  /-----------------------------------------------------------------------*/
 4  
 5  #ifndef _DISKIO_DEFINED
 6  #define _DISKIO_DEFINED
 7  
 8  #ifdef __cplusplus
 9  extern "C" {
10  #endif
11  
12  /* Status of Disk Functions */
13  typedef BYTE	DSTATUS;
14  
15  /* Results of Disk Functions */
16  typedef enum {
17  	RES_OK = 0,		/* 0: Successful */
18  	RES_ERROR,		/* 1: R/W Error */
19  	RES_WRPRT,		/* 2: Write Protected */
20  	RES_NOTRDY,		/* 3: Not Ready */
21  	RES_PARERR		/* 4: Invalid Parameter */
22  } DRESULT;
23  
24  
25  /*---------------------------------------*/
26  /* Prototypes for disk control functions */
27  
28  
29  DSTATUS disk_initialize (BYTE pdrv);
30  DSTATUS disk_status (BYTE pdrv);
31  DRESULT disk_read (BYTE pdrv, BYTE* buff, LBA_t sector, UINT count);
32  DRESULT disk_write (BYTE pdrv, const BYTE* buff, LBA_t sector, UINT count);
33  DRESULT disk_ioctl (BYTE pdrv, BYTE cmd, void* buff);
34  
35  
36  /* Disk Status Bits (DSTATUS) */
37  
38  #define STA_NOINIT		0x01	/* Drive not initialized */
39  #define STA_NODISK		0x02	/* No medium in the drive */
40  #define STA_PROTECT		0x04	/* Write protected */
41  
42  
43  /* Command code for disk_ioctrl fucntion */
44  
45  /* Generic command (Used by FatFs) */
46  #define CTRL_SYNC			0	/* Complete pending write process (needed at FF_FS_READONLY == 0) */
47  #define GET_SECTOR_COUNT	1	/* Get media size (needed at FF_USE_MKFS == 1) */
48  #define GET_SECTOR_SIZE		2	/* Get sector size (needed at FF_MAX_SS != FF_MIN_SS) */
49  #define GET_BLOCK_SIZE		3	/* Get erase block size (needed at FF_USE_MKFS == 1) */
50  #define CTRL_TRIM			4	/* Inform device that the data on the block of sectors is no longer used (needed at FF_USE_TRIM == 1) */
51  
52  /* Generic command (Not used by FatFs) */
53  #define CTRL_POWER			5	/* Get/Set power status */
54  #define CTRL_LOCK			6	/* Lock/Unlock media removal */
55  #define CTRL_EJECT			7	/* Eject media */
56  #define CTRL_FORMAT			8	/* Create physical format on the media */
57  
58  /* MMC/SDC specific ioctl command */
59  #define MMC_GET_TYPE		10	/* Get card type */
60  #define MMC_GET_CSD			11	/* Get CSD */
61  #define MMC_GET_CID			12	/* Get CID */
62  #define MMC_GET_OCR			13	/* Get OCR */
63  #define MMC_GET_SDSTAT		14	/* Get SD status */
64  #define ISDIO_READ			55	/* Read data form SD iSDIO register */
65  #define ISDIO_WRITE			56	/* Write data to SD iSDIO register */
66  #define ISDIO_MRITE			57	/* Masked write data to SD iSDIO register */
67  
68  /* ATA/CF specific ioctl command */
69  #define ATA_GET_REV			20	/* Get F/W revision */
70  #define ATA_GET_MODEL		21	/* Get model name */
71  #define ATA_GET_SN			22	/* Get serial number */
72  
73  #ifdef __cplusplus
74  }
75  #endif
76  
77  #endif