X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FStorage%2FATA%2Fcommon.h;h=891d2bbee1740c1aabc63cc37d926454ee33b390;hb=a2495c6ea4f4cab16b5d339ae511428e92e89e73;hp=18e62a8d0308b49750c17b17796119bef3a4bb40;hpb=0dbc91f0676576b954aa95dafdb434ce19bc805c;p=tpg%2Facess2.git diff --git a/Modules/Storage/ATA/common.h b/Modules/Storage/ATA/common.h index 18e62a8d..891d2bbe 100644 --- a/Modules/Storage/ATA/common.h +++ b/Modules/Storage/ATA/common.h @@ -10,28 +10,11 @@ // === CONSTANTS === #define MAX_ATA_DISKS 4 -#define SECTOR_SIZE 512 +#define SECTOR_SIZE 512 +#define ATA_TIMEOUT 2000 // 2s timeout +// Needed out of io.c because it's the max for Read/WriteDMA #define MAX_DMA_SECTORS (0x1000 / SECTOR_SIZE) -#define IDE_PRI_BASE 0x1F0 -#define IDE_SEC_BASE 0x170 - -#define IDE_PRDT_LAST 0x8000 -/** - \enum HddControls - \brief Commands to be sent to HDD_CMD -*/ -enum HddControls { - HDD_PIO_R28 = 0x20, - HDD_PIO_R48 = 0x24, - HDD_DMA_R48 = 0x25, - HDD_PIO_W28 = 0x30, - HDD_PIO_W48 = 0x34, - HDD_DMA_W48 = 0x35, - HDD_DMA_R28 = 0xC8, - HDD_DMA_W28 = 0xCA, -}; - // === STRUCTURES === typedef struct { @@ -70,8 +53,16 @@ typedef struct extern tATA_Disk gATA_Disks[]; // === FUNCTIONS === +// --- Common --- extern void ATA_int_MakePartition(tATA_Partition *Part, int Disk, int Num, Uint64 Start, Uint64 Length); + +// --- MBR Parsing --- +extern void ATA_ParseMBR(int Disk, tMBR *MBR); + +// --- IO Functions --- +extern int ATA_SetupIO(void); +extern Uint64 ATA_GetDiskSize(int Disk); extern int ATA_ReadDMA(Uint8 Disk, Uint64 Address, Uint Count, void *Buffer); -extern int ATA_WriteDMA(Uint8 Disk, Uint64 Address, Uint Count, void *Buffer); +extern int ATA_WriteDMA(Uint8 Disk, Uint64 Address, Uint Count, const void *Buffer); #endif