Changeset e5792d1 in mainline for uspace/srv/bd/ata_bd/ata_bd.h


Ignore:
Timestamp:
2009-08-22T15:20:01Z (15 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
22af3af
Parents:
a71c158 (diff), 4ef117f8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge ATA driver improvements.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/bd/ata_bd/ata_bd.h

    ra71c158 re5792d1  
    3838#include <sys/types.h>
    3939#include <fibril_sync.h>
     40#include <string.h>
    4041
    4142enum {
     
    115116
    116117enum drive_head_bits {
    117         DHR_DRV         = 0x10
     118        DHR_LBA         = 0x40, /**< Use LBA addressing mode */
     119        DHR_DRV         = 0x10  /**< Select device 1 */
    118120};
    119121
     
    142144};
    143145
     146/** Data returned from @c identify command. */
     147typedef struct {
     148        uint16_t gen_conf;
     149        uint16_t cylinders;
     150        uint16_t _res2;
     151        uint16_t heads;
     152        uint16_t _vs4;
     153        uint16_t _vs5;
     154        uint16_t sectors;
     155        uint16_t _vs7;
     156        uint16_t _vs8;
     157        uint16_t _vs9;
     158        uint16_t serial_number[10];
     159        uint16_t _vs20;
     160        uint16_t _vs21;
     161        uint16_t vs_bytes;
     162        uint16_t firmware_rev[4];
     163        uint16_t model_name[20];
     164        uint16_t max_rw_multiple;
     165        uint16_t _res48;
     166        uint16_t caps;
     167        uint16_t _res50;
     168        uint16_t pio_timing;
     169        uint16_t dma_timing;
     170        uint16_t validity;
     171        uint16_t cur_cyl;
     172        uint16_t cur_heads;
     173        uint16_t cur_sectors;
     174        uint16_t cur_capacity0;
     175        uint16_t cur_capacity1;
     176        uint16_t mss;
     177        uint16_t total_lba_sec0;
     178        uint16_t total_lba_sec1;
     179        uint16_t sw_dma;
     180        uint16_t mw_dma;
     181        uint16_t pio_modes;
     182        uint16_t min_mw_dma_cycle;
     183        uint16_t rec_mw_dma_cycle;
     184        uint16_t min_raw_pio_cycle;
     185        uint16_t min_iordy_pio_cycle;
     186        uint16_t _res69;
     187        uint16_t _res70;
     188        uint16_t _res71[1 + 127 - 71];
     189        uint16_t _vs128[1 + 159 - 128];
     190        uint16_t _res160[1 + 255 - 160];
     191} identify_data_t;
     192
     193enum ata_caps {
     194        cap_iordy       = 0x0800,
     195        cap_iordy_cbd   = 0x0400,
     196        cap_lba         = 0x0200,
     197        cap_dma         = 0x0100
     198};
     199
     200/** Block addressing mode. */
     201enum addr_mode {
     202        am_chs,
     203        am_lba28
     204};
     205
    144206typedef struct {
    145207        bool present;
    146         unsigned heads;
    147         unsigned cylinders;
    148         unsigned sectors;
     208        enum addr_mode amode;
     209
     210        /*
     211         * Geometry. Only valid if operating in CHS mode.
     212         */
     213        struct {
     214                unsigned heads;
     215                unsigned cylinders;
     216                unsigned sectors;
     217        } geom;
     218
    149219        uint64_t blocks;
     220
     221        char model[STR_BOUNDS(40) + 1];
    150222
    151223        fibril_mutex_t lock;
Note: See TracChangeset for help on using the changeset viewer.