#ifndef SMOKBLKDEV_H #define SMOKBLKDEV_H // Block device sector size #define BLK_SECTOR_SIZE 512 // Block device controller status masks #define BLK_READING_MASK 0x00008000 #define BLK_WRITING_MASK 0x00004000 #define BLK_EXCEPTION_MASK 0x00002000 #define BLK_CAUSE_MASK 0x000000ff #define BLK_READY_MASK (BLK_READING_MASK | BLK_WRITING_MASK | BLK_EXCEPTION_MASK) // ready when ~(status reg & BLK_READ_MASK) is 0 // control commands #define BLK_START_READ BLK_READING_MASK #define BLK_START_WRITE BLK_WRITING_MASK #define BLK_CLEAR BLK_EXCEPTION_MASK // Block device controller exception cause values #define BLK_EX_IO_COMP 0x00000000 #define BLK_EX_MEM_ADDR 0x00000001 #define BLK_EX_DISK_ADDR 0x00000002 #define BLK_EX_BUSY 0x00000003 #define BLK_EX_UNALIGNED 0x00000004 #define BLK_EX_BAD_CTRL 0x00000005 #define BLK_EX_ZERO_COUNT 0x00000006 #endif // SMOKBLKDEV_H