UbixOS
2.0
|
Go to the source code of this file.
Data Structures | |
struct | ata_identify_data |
struct | bsd_disklabel |
struct | bsd_disklabel::partition |
struct | dos_partition |
struct | driveInfo |
Macros | |
#define | ATA_A_4BIT 0x00 |
#define | ATA_A_HOB 0x80 /* High Order Byte enable */ |
#define | ATA_A_IDS 0x02 /* disable interrupts */ |
#define | ATA_A_RESET 0x04 /* RESET controller */ |
#define | ATA_ALTSTAT 11 /* (R) alternate status */ |
#define | ATA_CHECK_POWER_MODE 0xE5 |
#define | ATA_COMMAND 7 /* (W) command */ |
#define | ATA_CONTROL 12 /* (W) control */ |
#define | ATA_COUNT 2 /* (W) sector count */ |
#define | ATA_CTLOFFSET 0x206 /* control register offset */ |
#define | ATA_CYL_LSB 4 /* (RW) cylinder# LSB */ |
#define | ATA_CYL_MSB 5 /* (RW) cylinder# MSB */ |
#define | ATA_D_IBM 0xa0 /* 512 byte sectors, ECC */ |
#define | ATA_D_LBA 0x40 /* use LBA addressing */ |
#define | ATA_DATA 0 /* (RW) data */ |
#define | ATA_DATA_SET_MANAGEMENT 0x06 |
#define | ATA_DEVICE_RESET 0x08 |
#define | ATA_DOWNLOAD_MICROCODE 0x92 |
#define | ATA_DRIVE 6 /* (W) Sector/Drive/Head */ |
#define | ATA_E_ABORT 0x04 /* command aborted */ |
#define | ATA_E_ATAPI_SENSE_MASK 0xf0 /* ATAPI sense key mask */ |
#define | ATA_E_ICRC 0x80 /* UDMA crc error */ |
#define | ATA_E_IDNF 0x10 /* ID not found */ |
#define | ATA_E_ILI 0x01 /* illegal length */ |
#define | ATA_E_MC 0x20 /* media changed */ |
#define | ATA_E_MCR 0x08 /* media change request */ |
#define | ATA_E_NM 0x02 /* no media */ |
#define | ATA_E_UNC 0x40 /* uncorrectable data */ |
#define | ATA_ERROR 8 /* (R) error */ |
#define | ATA_EXECUTE_DEVICE_DIAG 0x90 |
#define | ATA_F_DMA 0x01 /* enable DMA */ |
#define | ATA_F_OVL 0x02 /* enable overlap */ |
#define | ATA_FEATURE 1 /* (W) feature */ |
#define | ATA_FLUSH_CACHE 0xE7 |
#define | ATA_FLUSH_CACHE_EXT 0xEA |
#define | ATA_I_CMD 0x01 /* cmd (1) | data (0) */ |
#define | ATA_I_IN 0x02 /* read (1) | write (0) */ |
#define | ATA_I_RELEASE 0x04 /* released bus (1) */ |
#define | ATA_I_TAGMASK 0xf8 /* tag mask */ |
#define | ATA_IDENTIFY 0xEC |
#define | ATA_IDENTIFY_COMMAND_SET_SUPPORTED1_48BIT_ENABLE 0x0400 |
#define | ATA_IDENTIFY_SECTOR_LARGER_THEN_512_ENABLE 0x0100 |
#define | ATA_IDLE 0xE3 |
#define | ATA_IDLE_IMMED 0xE1 |
#define | ATA_IREASON 9 /* (R) interrupt reason */ |
#define | ATA_MEDIA_EJECT 0xED |
#define | ATA_NOP 0x00 |
#define | ATA_PACKET 0xA0 |
#define | ATA_PACKET_IDENTIFY 0xA1 |
#define | ATA_PC98_CTLOFFSET 0x10c /* do for PC98 devices */ |
#define | ATA_PCCARD_CTLOFFSET 0x0e /* do for PCCARD devices */ |
#define | ATA_READ_BUFFER 0xE4 |
#define | ATA_READ_DMA 0xC8 |
#define | ATA_READ_DMA_EXT 0x25 |
#define | ATA_READ_DMA_QUEUED 0xC7 |
#define | ATA_READ_DMA_QUEUED_EXT 0x26 |
#define | ATA_READ_FPDMA 0x60 |
#define | ATA_READ_LOG_DMA_EXT 0x47 |
#define | ATA_READ_LOG_EXT 0x2F |
#define | ATA_READ_MULTIPLE 0xC4 |
#define | ATA_READ_MULTIPLE_EXT 0x29 |
#define | ATA_READ_SECTORS 0x20 |
#define | ATA_READ_SECTORS_EXT 0x24 |
#define | ATA_READ_STREAM_DMA_EXT 0x2A |
#define | ATA_READ_VERIFY_SECTORS 0x40 |
#define | ATA_READ_VERIFY_SECTORS_EXT 0x42 |
#define | ATA_S_BUSY 0x80 /* busy */ |
#define | ATA_S_CORR 0x04 /* data corrected */ |
#define | ATA_S_DMA 0x20 /* DMA ready */ |
#define | ATA_S_DRQ 0x08 /* data request */ |
#define | ATA_S_DSC 0x10 /* drive seek completed */ |
#define | ATA_S_DWF 0x20 /* drive write fault */ |
#define | ATA_S_ERROR 0x01 /* error */ |
#define | ATA_S_INDEX 0x02 /* index */ |
#define | ATA_S_READY 0x40 /* drive ready */ |
#define | ATA_S_SERVICE 0x10 /* drive needs service */ |
#define | ATA_SECTOR 3 /* (RW) sector # */ |
#define | ATA_SECURITY_FREEZE_LOCK 0xF5 |
#define | ATA_SECURITY_UNLOCK 0xF2 |
#define | ATA_SET_FEATURES 0xEF |
#define | ATA_SMART 0xB0 |
#define | ATA_STANDBY 0xE2 |
#define | ATA_STANDBY_IMMED 0xE0 |
#define | ATA_STATUS 10 /* (R) status */ |
#define | ATA_WRITE_BUFFER 0xE8 |
#define | ATA_WRITE_DMA 0xCA |
#define | ATA_WRITE_DMA_EXT 0x35 |
#define | ATA_WRITE_DMA_FUA 0x3D |
#define | ATA_WRITE_DMA_QUEUED 0xCC |
#define | ATA_WRITE_DMA_QUEUED_EXT 0x36 |
#define | ATA_WRITE_DMA_QUEUED_FUA_EXT 0x3E |
#define | ATA_WRITE_FPDMA 0x61 |
#define | ATA_WRITE_LOG_DMA_EXT 0x57 |
#define | ATA_WRITE_MULTIPLE 0xC5 |
#define | ATA_WRITE_MULTIPLE_EXT 0x39 |
#define | ATA_WRITE_MULTIPLE_FUA_EXT 0xCE |
#define | ATA_WRITE_SECTORS 0x30 |
#define | ATA_WRITE_SECTORS_EXT 0x34 |
#define | ATA_WRITE_STREAM_DMA_EXT 0x3A |
#define | ATA_WRITE_UNCORRECTABLE 0x45 |
#define | hdCmd 0x7 |
#define | hdCylHi 0x5 |
#define | hdCylLow 0x4 |
#define | hdData 0x0 |
#define | hdError 0x1 |
#define | hdHead 0x6 |
#define | hdSecCount 0x2 |
#define | hdSecNum 0x3 |
#define | hdStat 0x7 |
#define | MAXPARTITIONS 8 |
#define | NDDATA 5 |
#define | NSPARE 5 |
Functions | |
int | hdInit (struct device_node *dev) |
int | hdIoctl () |
int | hdRead (struct driveInfo *hdd, void *, uInt32, uInt32) |
int | hdReset () |
int | hdStandby () |
int | hdStart () |
int | hdStop () |
int | hdWrite (struct driveInfo *hdd, void *, uInt32, uInt32) |
int | initHardDisk () |
ATA_IDENTIFY_DEVICE_FIELD_LENGTHS | |
The following constants define the number of bytes contained in various fields found in the IDENTIFY DEVICE data structure. | |
#define | ATA_IDENTIFY_48_LBA_LEN 8 |
#define | ATA_IDENTIFY_FW_REVISION_LEN 8 |
#define | ATA_IDENTIFY_MEDIA_SERIAL_NUMBER_LEN 30 |
#define | ATA_IDENTIFY_MODEL_NUMBER_LEN 40 |
#define | ATA_IDENTIFY_SERIAL_NUMBER_LEN 20 |
#define | ATA_IDENTIFY_WWN_LEN 8 |
int hdInit | ( | struct device_node * | dev | ) |
Definition at line 221 of file hd.c.
References ATA_COMMAND, ATA_DATA, ATA_DRIVE, ATA_IDENTIFY, driveInfo::ata_identify, ATA_IDENTIFY_COMMAND_SET_SUPPORTED1_48BIT_ENABLE, ATA_IDENTIFY_SECTOR_LARGER_THEN_512_ENABLE, ATA_S_BUSY, ata_identify_data::command_set_enabled1, device_node::devInfo, hdCmd, driveInfo::hdDev, driveInfo::hdEnable, hdHead, driveInfo::hdMask, driveInfo::hdMulti, driveInfo::hdPort, hdSecCount, driveInfo::hdShift, driveInfo::hdSize, device_interface::info, device_interface::initialized, inportByte(), inportWord(), kprintf(), driveInfo::lba_high, driveInfo::lba_low, ata_identify_data::max_48bit_lba, outportByte(), ata_identify_data::physical_logical_sector_info, driveInfo::sector_size, device_interface::size, ata_identify_data::total_num_sectors, and ata_identify_data::words_per_logical_sector.
Definition at line 423 of file hd.c.
References driveInfo::hdCalc, hdCmd, hdCylHi, hdCylLow, hdData, driveInfo::hdDev, driveInfo::hdEnable, hdHead, driveInfo::hdMulti, driveInfo::hdPort, hdSecCount, hdSecNum, driveInfo::hdShift, hdStat, inportByte(), inportWord(), kprintf(), driveInfo::lba_start, outportByte(), and driveInfo::parOffset.
Definition at line 356 of file hd.c.
References driveInfo::hdCalc, hdCmd, hdCylHi, hdCylLow, hdData, driveInfo::hdDev, driveInfo::hdEnable, hdHead, driveInfo::hdMulti, driveInfo::hdPort, hdSecCount, hdSecNum, driveInfo::hdShift, hdStat, inportByte(), kprintf(), driveInfo::lba_start, outportByte(), outportWord(), and driveInfo::parOffset.
int initHardDisk | ( | ) |
Definition at line 42 of file hd.c.
References _initHardDisk().