diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/libata.h | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/include/linux/libata.h b/include/linux/libata.h index 7770eeb21039..bc4ee218b185 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -172,6 +172,7 @@ enum { | |||
| 172 | ATA_LFLAG_NO_RETRY = (1 << 5), /* don't retry this link */ | 172 | ATA_LFLAG_NO_RETRY = (1 << 5), /* don't retry this link */ |
| 173 | ATA_LFLAG_DISABLED = (1 << 6), /* link is disabled */ | 173 | ATA_LFLAG_DISABLED = (1 << 6), /* link is disabled */ |
| 174 | ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */ | 174 | ATA_LFLAG_SW_ACTIVITY = (1 << 7), /* keep activity stats */ |
| 175 | ATA_LFLAG_NO_LPM = (1 << 8), /* disable LPM on this link */ | ||
| 175 | 176 | ||
| 176 | /* struct ata_port flags */ | 177 | /* struct ata_port flags */ |
| 177 | ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */ | 178 | ATA_FLAG_SLAVE_POSS = (1 << 0), /* host supports slave dev */ |
| @@ -324,12 +325,11 @@ enum { | |||
| 324 | ATA_EH_HARDRESET = (1 << 2), /* meaningful only in ->prereset */ | 325 | ATA_EH_HARDRESET = (1 << 2), /* meaningful only in ->prereset */ |
| 325 | ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, | 326 | ATA_EH_RESET = ATA_EH_SOFTRESET | ATA_EH_HARDRESET, |
| 326 | ATA_EH_ENABLE_LINK = (1 << 3), | 327 | ATA_EH_ENABLE_LINK = (1 << 3), |
| 327 | ATA_EH_LPM = (1 << 4), /* link power management action */ | ||
| 328 | ATA_EH_PARK = (1 << 5), /* unload heads and stop I/O */ | 328 | ATA_EH_PARK = (1 << 5), /* unload heads and stop I/O */ |
| 329 | 329 | ||
| 330 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK, | 330 | ATA_EH_PERDEV_MASK = ATA_EH_REVALIDATE | ATA_EH_PARK, |
| 331 | ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET | | 331 | ATA_EH_ALL_ACTIONS = ATA_EH_REVALIDATE | ATA_EH_RESET | |
| 332 | ATA_EH_ENABLE_LINK | ATA_EH_LPM, | 332 | ATA_EH_ENABLE_LINK, |
| 333 | 333 | ||
| 334 | /* ata_eh_info->flags */ | 334 | /* ata_eh_info->flags */ |
| 335 | ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */ | 335 | ATA_EHI_HOTPLUGGED = (1 << 0), /* could have been hotplugged */ |
| @@ -377,7 +377,6 @@ enum { | |||
| 377 | ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ | 377 | ATA_HORKAGE_BROKEN_HPA = (1 << 4), /* Broken HPA */ |
| 378 | ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */ | 378 | ATA_HORKAGE_DISABLE = (1 << 5), /* Disable it */ |
| 379 | ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ | 379 | ATA_HORKAGE_HPA_SIZE = (1 << 6), /* native size off by one */ |
| 380 | ATA_HORKAGE_LPM = (1 << 7), /* Link PM problems */ | ||
| 381 | ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ | 380 | ATA_HORKAGE_IVB = (1 << 8), /* cbl det validity bit bugs */ |
| 382 | ATA_HORKAGE_STUCK_ERR = (1 << 9), /* stuck ERR on next PACKET */ | 381 | ATA_HORKAGE_STUCK_ERR = (1 << 9), /* stuck ERR on next PACKET */ |
| 383 | ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */ | 382 | ATA_HORKAGE_BRIDGE_OK = (1 << 10), /* no bridge limits */ |
| @@ -475,6 +474,11 @@ enum ata_lpm_policy { | |||
| 475 | ATA_LPM_MIN_POWER, | 474 | ATA_LPM_MIN_POWER, |
| 476 | }; | 475 | }; |
| 477 | 476 | ||
| 477 | enum ata_lpm_hints { | ||
| 478 | ATA_LPM_EMPTY = (1 << 0), /* port empty/probing */ | ||
| 479 | ATA_LPM_HIPM = (1 << 1), /* may use HIPM */ | ||
| 480 | }; | ||
| 481 | |||
| 478 | /* forward declarations */ | 482 | /* forward declarations */ |
| 479 | struct scsi_device; | 483 | struct scsi_device; |
| 480 | struct ata_port_operations; | 484 | struct ata_port_operations; |
| @@ -702,6 +706,7 @@ struct ata_link { | |||
| 702 | unsigned int hw_sata_spd_limit; | 706 | unsigned int hw_sata_spd_limit; |
| 703 | unsigned int sata_spd_limit; | 707 | unsigned int sata_spd_limit; |
| 704 | unsigned int sata_spd; /* current SATA PHY speed */ | 708 | unsigned int sata_spd; /* current SATA PHY speed */ |
| 709 | enum ata_lpm_policy lpm_policy; | ||
| 705 | 710 | ||
| 706 | /* record runtime error info, protected by host_set lock */ | 711 | /* record runtime error info, protected by host_set lock */ |
| 707 | struct ata_eh_info eh_info; | 712 | struct ata_eh_info eh_info; |
| @@ -773,7 +778,7 @@ struct ata_port { | |||
| 773 | 778 | ||
| 774 | pm_message_t pm_mesg; | 779 | pm_message_t pm_mesg; |
| 775 | int *pm_result; | 780 | int *pm_result; |
| 776 | enum ata_lpm_policy lpm_policy; | 781 | enum ata_lpm_policy target_lpm_policy; |
| 777 | 782 | ||
| 778 | struct timer_list fastdrain_timer; | 783 | struct timer_list fastdrain_timer; |
| 779 | unsigned long fastdrain_cnt; | 784 | unsigned long fastdrain_cnt; |
| @@ -839,8 +844,8 @@ struct ata_port_operations { | |||
| 839 | int (*scr_write)(struct ata_link *link, unsigned int sc_reg, u32 val); | 844 | int (*scr_write)(struct ata_link *link, unsigned int sc_reg, u32 val); |
| 840 | void (*pmp_attach)(struct ata_port *ap); | 845 | void (*pmp_attach)(struct ata_port *ap); |
| 841 | void (*pmp_detach)(struct ata_port *ap); | 846 | void (*pmp_detach)(struct ata_port *ap); |
| 842 | int (*enable_pm)(struct ata_port *ap, enum ata_lpm_policy policy); | 847 | int (*set_lpm)(struct ata_link *link, enum ata_lpm_policy policy, |
| 843 | void (*disable_pm)(struct ata_port *ap); | 848 | unsigned hints); |
| 844 | 849 | ||
| 845 | /* | 850 | /* |
| 846 | * Start, stop, suspend and resume | 851 | * Start, stop, suspend and resume |
