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.
This commit is contained in:
jakllsch 2010-01-25 00:39:51 +00:00
parent ebd419f208
commit 0da2c5fc0b
1 changed files with 29 additions and 3 deletions

View File

@ -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
};
/*