|
@@ -580,7 +580,7 @@ struct ata_device {
|
|
acpi_handle acpi_handle;
|
|
acpi_handle acpi_handle;
|
|
union acpi_object *gtf_cache;
|
|
union acpi_object *gtf_cache;
|
|
#endif
|
|
#endif
|
|
- /* n_sector is used as CLEAR_OFFSET, read comment above CLEAR_OFFSET */
|
|
|
|
|
|
+ /* n_sector is CLEAR_BEGIN, read comment above CLEAR_BEGIN */
|
|
u64 n_sectors; /* size of device, if ATA */
|
|
u64 n_sectors; /* size of device, if ATA */
|
|
unsigned int class; /* ATA_DEV_xxx */
|
|
unsigned int class; /* ATA_DEV_xxx */
|
|
unsigned long unpark_deadline;
|
|
unsigned long unpark_deadline;
|
|
@@ -605,20 +605,22 @@ struct ata_device {
|
|
u16 heads; /* Number of heads */
|
|
u16 heads; /* Number of heads */
|
|
u16 sectors; /* Number of sectors per track */
|
|
u16 sectors; /* Number of sectors per track */
|
|
|
|
|
|
- /* error history */
|
|
|
|
- int spdn_cnt;
|
|
|
|
- struct ata_ering ering;
|
|
|
|
-
|
|
|
|
union {
|
|
union {
|
|
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
|
|
u16 id[ATA_ID_WORDS]; /* IDENTIFY xxx DEVICE data */
|
|
u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
|
|
u32 gscr[SATA_PMP_GSCR_DWORDS]; /* PMP GSCR block */
|
|
};
|
|
};
|
|
|
|
+
|
|
|
|
+ /* error history */
|
|
|
|
+ int spdn_cnt;
|
|
|
|
+ /* ering is CLEAR_END, read comment above CLEAR_END */
|
|
|
|
+ struct ata_ering ering;
|
|
};
|
|
};
|
|
|
|
|
|
-/* Offset into struct ata_device. Fields above it are maintained
|
|
|
|
- * acress device init. Fields below are zeroed.
|
|
|
|
|
|
+/* Fields between ATA_DEVICE_CLEAR_BEGIN and ATA_DEVICE_CLEAR_END are
|
|
|
|
+ * cleared to zero on ata_dev_init().
|
|
*/
|
|
*/
|
|
-#define ATA_DEVICE_CLEAR_OFFSET offsetof(struct ata_device, n_sectors)
|
|
|
|
|
|
+#define ATA_DEVICE_CLEAR_BEGIN offsetof(struct ata_device, n_sectors)
|
|
|
|
+#define ATA_DEVICE_CLEAR_END offsetof(struct ata_device, ering)
|
|
|
|
|
|
struct ata_eh_info {
|
|
struct ata_eh_info {
|
|
struct ata_device *dev; /* offending device */
|
|
struct ata_device *dev; /* offending device */
|