資源簡介
minix 3 源代碼 操作系統 os 教學
代碼片段和文件信息
/*?This?file?contains?the?device?dependent?part?of?a?driver?for?the?IBM-AT
?*?winchester?controller.??Written?by?Adri?Koppes.
?*
?*?The?file?contains?one?entry?point:
?*
?*???at_winchester_task: main?entry?when?system?is?brought?up
?*
?*?Changes:
?*???Aug?19?2005???ata?pci?support?supports?SATA??(Ben?Gras)
?*???Nov?18?2004???moved?AT?disk?driver?to?user-space??(Jorrit?N.?Herder)
?*???Aug?20?2004???watchdogs?replaced?by?sync?alarms??(Jorrit?N.?Herder)
?*???Mar?23?2000???added?ATAPI?CDROM?support??(Michael?Temari)
?*???May?14?2000???d-d/i?rewrite??(Kees?J.?Bot)
?*???Apr?13?1992???device?dependent/independent?split??(Kees?J.?Bot)
?*/
#include?“at_wini.h“
#include?“../libpci/pci.h“
#include?
#include?
#include?
#define?ATAPI_DEBUG ????0 /*?To?debug?ATAPI?code.?*/
/*?I/O?Ports?used?by?winchester?disk?controllers.?*/
/*?Read?and?write?registers?*/
#define?REG_CMD_base0 0x1F0 /*?command?base?register?of?controller?0?*/
#define?REG_CMD_base1 0x170 /*?command?base?register?of?controller?1?*/
#define?REG_CTL_base0 0x3F6 /*?control?base?register?of?controller?0?*/
#define?REG_CTL_base1 0x376 /*?control?base?register?of?controller?1?*/
#define?REG_DATA ????0 /*?data?register?(offset?from?the?base?reg.)?*/
#define?REG_PRECOMP ????1 /*?start?of?write?precompensation?*/
#define?REG_COUNT ????2 /*?sectors?to?transfer?*/
#define?REG_SECTOR ????3 /*?sector?number?*/
#define?REG_CYL_LO ????4 /*?low?byte?of?cylinder?number?*/
#define?REG_CYL_HI ????5 /*?high?byte?of?cylinder?number?*/
#define?REG_LDH ????6 /*?lba?drive?and?head?*/
#define???LDH_DEFAULT 0xA0 /*?ECC?enable?512?bytes?per?sector?*/
#define???LDH_LBA 0x40 /*?Use?LBA?addressing?*/
#define???ldh_init(drive) (LDH_DEFAULT?|?((drive)?<4))
/*?Read?only?registers?*/
#define?REG_STATUS ????7 /*?status?*/
#define???STATUS_BSY 0x80 /*?controller?busy?*/
#define ??STATUS_RDY 0x40 /*?drive?ready?*/
#define ??STATUS_WF 0x20 /*?write?fault?*/
#define ??STATUS_SC 0x10 /*?seek?complete?(obsolete)?*/
#define ??STATUS_DRQ 0x08 /*?data?transfer?request?*/
#define ??STATUS_CRD 0x04 /*?corrected?data?*/
#define ??STATUS_IDX 0x02 /*?index?pulse?*/
#define ??STATUS_ERR 0x01 /*?error?*/
#define ??STATUS_ADMBSY ???????0x100 /*?administratively?busy?(software)?*/
#define?REG_ERROR ????1 /*?error?code?*/
#define ??ERROR_BB 0x80 /*?bad?block?*/
#define ??ERROR_ECC 0x40 /*?bad?ecc?bytes?*/
#define ??ERROR_ID 0x10 /*?id?not?found?*/
#define ??ERROR_AC 0x04 /*?aborted?command?*/
#define ??ERROR_TK 0x02 /*?track?zero?error?*/
#define ??ERROR_DM 0x01 /*?no?data?address?mark?*/
/*?Write?only?registers?*/
#define?REG_COMMAND ????7 /*?command?*/
#define???CMD_IDLE 0x00 /*?for?w_command:?drive?idle?*/
#define???CMD_RECALIBRATE 0x10 /*?recalibrate?drive?*/
#define???CMD_READ 0x20 /*?read?data?*/
#define???CMD_READ_EXT 0x24 /*?read?data?(LBA48?addressed)?*/
#define???CMD_WRITE 0x30 /*?write?data?*/
#define ??CMD_WRITE_EXT 0x34 /*?write?data?(LBA48?addres
- 上一篇:質檢機構檢驗報告管理系統
- 下一篇:中華會計網校會計人員繼續教育掛機助手V9.exe
評論
共有 條評論