diff options
| author | jakllsch <jakllsch@NetBSD.org> | 2010-01-25 00:39:51 +0000 |
|---|---|---|
| committer | jakllsch <jakllsch@NetBSD.org> | 2010-01-25 00:39:51 +0000 |
| commit | 0da2c5fc0bdad9acc798413b9207c0cede7220be (patch) | |
| tree | ac74ca11fcbe196d569f7a22eebc65c20cb68e79 /sys/dev/ata | |
| parent | ebd419f20822fd53bb642b7c0a7d457f2e66b600 (diff) | |
Add some more elements to struct ataparams.
These mostly concern the new Long Physical Sectors
and Long Logical Sectors feature sets.
Information from a draft of ACS-2, with some additional
in-between members and bits being borrowed from OpenBSD.
There's lots more in ACS-2 we could add, but for the most
part it would be superfluous.
XXX: Some elements marked as reserved no longer are,
and some elements we still reference are now obsolete.
Diffstat (limited to 'sys/dev/ata')
| -rw-r--r-- | sys/dev/ata/atareg.h | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/sys/dev/ata/atareg.h b/sys/dev/ata/atareg.h index 88d0054f9a9..0014d186847 100644 --- a/sys/dev/ata/atareg.h +++ b/sys/dev/ata/atareg.h @@ -1,4 +1,4 @@ -/* $NetBSD: atareg.h,v 1.37 2010/01/22 01:22:00 jakllsch Exp $ */ +/* $NetBSD: atareg.h,v 1.38 2010/01/25 00:39:51 jakllsch Exp $ */ /* * Copyright (c) 1998, 2001 Manuel Bouyer. @@ -435,9 +435,18 @@ struct ataparams { uint16_t atap_apm_val; /* 91: current APM value */ uint16_t __reserved5[8]; /* 92-99: reserved */ uint16_t atap_max_lba[4]; /* 100-103: Max. user LBA addr */ - uint16_t __reserved6[4]; /* 104-107: reserved */ + uint16_t __reserved6[2]; /* 104-105: reserved */ + uint16_t atap_secsz; /* 106: physical/logical sector size */ +#define ATA_SECSZ_VALID_MASK 0xc000 +#define ATA_SECSZ_VALID 0x4000 +#define ATA_SECSZ_LPS 0x2000 /* long physical sectors */ +#define ATA_SECSZ_LLS 0x1000 /* long logical sectors */ +#define ATA_SECSZ_LPS_SZMSK 0x000f /* 2**N logical per physical */ + uint16_t atap_iso7779_isd; /* 107: ISO 7779 inter-seek delay */ uint16_t atap_wwn[4]; /* 108-111: World Wide Name */ - uint16_t __reserved7[15]; /* 112-126: reserved */ + uint16_t __reserved7[5]; /* 112-116 */ + uint16_t atap_lls_secsz[2]; /* 117-118: long logical sector size */ + uint16_t __reserved8[8]; /* 119-126 */ uint16_t atap_rmsn_supp; /* 127: remov. media status notif. */ #define WDC_RMSN_SUPP_MASK 0x0003 #define WDC_RMSN_SUPP 0x0001 @@ -449,6 +458,23 @@ struct ataparams { #define WDC_SEC_LOCKED 0x0004 #define WDC_SEC_EN 0x0002 #define WDC_SEC_SUPP 0x0001 + uint16_t __reserved9[31]; /* 129-159: vendor specific */ + uint16_t atap_cfa_power; /* 160: CFA powermode */ +#define ATA_CFA_MAX_MASK 0x0fff +#define ATA_CFA_MODE1_DIS 0x1000 /* CFA Mode 1 Disabled */ +#define ATA_CFA_MODE1_REQ 0x2000 /* CFA Mode 1 Required */ +#define ATA_CFA_WORD160 0x8000 /* Word 160 supported */ + uint16_t __reserved10[15]; /* 161-175: reserved for CFA */ + uint8_t atap_media_serial[60]; /* 176-205: media serial number */ + uint16_t __reserved11[3]; /* 206-208: */ + uint16_t atap_logical_align; /* 209: logical/physical alignment */ +#define ATA_LA_VALID_MASK 0xc000 +#define ATA_LA_VALID 0x4000 +#define ATA_LA_MASK 0x3fff /* offset of sector LBA 0 in PBA 0 */ + uint16_t __reserved12[45]; /* 210-254: */ + uint16_t atap_integrity; /* 255: Integrity word */ +#define WDC_INTEGRITY_MAGIC_MASK 0x00ff +#define WDC_INTEGRITY_MAGIC 0x00a5 }; /* |
