aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/ata/libata-core.c
diff options
context:
space:
mode:
authorTejun Heo <tj@kernel.org>2010-09-01 11:50:04 -0400
committerJeff Garzik <jgarzik@redhat.com>2010-10-21 20:21:04 -0400
commitc93b263e0d4fa8ce5fec0142a98196d1a127e845 (patch)
tree6495053b65f7a79d1e5c11aaea77dd25e4082a84 /drivers/ata/libata-core.c
parentc43d559f0423816bb2918d892131d21c51816c3d (diff)
libata: clean up lpm related symbols and sysfs show/store functions
Link power management related symbols are in confusing state w/ mixed usages of lpm, ipm and pm. This patch cleans up lpm related symbols and sysfs show/store functions as follows. * lpm states - NOT_AVAILABLE, MIN_POWER, MAX_PERFORMANCE and MEDIUM_POWER are renamed to ATA_LPM_UNKNOWN and ATA_LPM_{MIN|MAX|MED}_POWER. * Pre/postfixes are unified to lpm. * sysfs show/store functions for link_power_management_policy were curiously named get/put and unnecessarily complex. Renamed to show/store and simplified. Signed-off-by: Tejun Heo <tj@kernel.org> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
Diffstat (limited to 'drivers/ata/libata-core.c')
-rw-r--r--drivers/ata/libata-core.c50
1 files changed, 25 insertions, 25 deletions
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 92cd5f375b8f..380ceb000aad 100644
--- a/drivers/ata/libata-core.c
+++ b/drivers/ata/libata-core.c
@@ -1030,7 +1030,7 @@ const char *sata_spd_string(unsigned int spd)
1030 return spd_str[spd - 1]; 1030 return spd_str[spd - 1];
1031} 1031}
1032 1032
1033static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy) 1033static int ata_dev_set_dipm(struct ata_device *dev, enum ata_lpm_policy policy)
1034{ 1034{
1035 struct ata_link *link = dev->link; 1035 struct ata_link *link = dev->link;
1036 struct ata_port *ap = link->ap; 1036 struct ata_port *ap = link->ap;
@@ -1040,14 +1040,14 @@ static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
1040 1040
1041 /* 1041 /*
1042 * disallow DIPM for drivers which haven't set 1042 * disallow DIPM for drivers which haven't set
1043 * ATA_FLAG_IPM. This is because when DIPM is enabled, 1043 * ATA_FLAG_LPM. This is because when DIPM is enabled,
1044 * phy ready will be set in the interrupt status on 1044 * phy ready will be set in the interrupt status on
1045 * state changes, which will cause some drivers to 1045 * state changes, which will cause some drivers to
1046 * think there are errors - additionally drivers will 1046 * think there are errors - additionally drivers will
1047 * need to disable hot plug. 1047 * need to disable hot plug.
1048 */ 1048 */
1049 if (!(ap->flags & ATA_FLAG_IPM) || !ata_dev_enabled(dev)) { 1049 if (!(ap->flags & ATA_FLAG_LPM) || !ata_dev_enabled(dev)) {
1050 ap->pm_policy = NOT_AVAILABLE; 1050 ap->lpm_policy = ATA_LPM_UNKNOWN;
1051 return -EINVAL; 1051 return -EINVAL;
1052 } 1052 }
1053 1053
@@ -1066,8 +1066,8 @@ static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
1066 return rc; 1066 return rc;
1067 1067
1068 switch (policy) { 1068 switch (policy) {
1069 case MIN_POWER: 1069 case ATA_LPM_MIN_POWER:
1070 /* no restrictions on IPM transitions */ 1070 /* no restrictions on LPM transitions */
1071 scontrol &= ~(0x3 << 8); 1071 scontrol &= ~(0x3 << 8);
1072 rc = sata_scr_write(link, SCR_CONTROL, scontrol); 1072 rc = sata_scr_write(link, SCR_CONTROL, scontrol);
1073 if (rc) 1073 if (rc)
@@ -1078,8 +1078,8 @@ static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
1078 err_mask = ata_dev_set_feature(dev, 1078 err_mask = ata_dev_set_feature(dev,
1079 SETFEATURES_SATA_ENABLE, SATA_DIPM); 1079 SETFEATURES_SATA_ENABLE, SATA_DIPM);
1080 break; 1080 break;
1081 case MEDIUM_POWER: 1081 case ATA_LPM_MED_POWER:
1082 /* allow IPM to PARTIAL */ 1082 /* allow LPM to PARTIAL */
1083 scontrol &= ~(0x1 << 8); 1083 scontrol &= ~(0x1 << 8);
1084 scontrol |= (0x2 << 8); 1084 scontrol |= (0x2 << 8);
1085 rc = sata_scr_write(link, SCR_CONTROL, scontrol); 1085 rc = sata_scr_write(link, SCR_CONTROL, scontrol);
@@ -1087,21 +1087,21 @@ static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
1087 return rc; 1087 return rc;
1088 1088
1089 /* 1089 /*
1090 * we don't have to disable DIPM since IPM flags 1090 * we don't have to disable DIPM since LPM flags
1091 * disallow transitions to SLUMBER, which effectively 1091 * disallow transitions to SLUMBER, which effectively
1092 * disable DIPM if it does not support PARTIAL 1092 * disable DIPM if it does not support PARTIAL
1093 */ 1093 */
1094 break; 1094 break;
1095 case NOT_AVAILABLE: 1095 case ATA_LPM_UNKNOWN:
1096 case MAX_PERFORMANCE: 1096 case ATA_LPM_MAX_POWER:
1097 /* disable all IPM transitions */ 1097 /* disable all LPM transitions */
1098 scontrol |= (0x3 << 8); 1098 scontrol |= (0x3 << 8);
1099 rc = sata_scr_write(link, SCR_CONTROL, scontrol); 1099 rc = sata_scr_write(link, SCR_CONTROL, scontrol);
1100 if (rc) 1100 if (rc)
1101 return rc; 1101 return rc;
1102 1102
1103 /* 1103 /*
1104 * we don't have to disable DIPM since IPM flags 1104 * we don't have to disable DIPM since LPM flags
1105 * disallow all transitions which effectively 1105 * disallow all transitions which effectively
1106 * disable DIPM anyway. 1106 * disable DIPM anyway.
1107 */ 1107 */
@@ -1125,9 +1125,9 @@ static int ata_dev_set_dipm(struct ata_device *dev, enum link_pm policy)
1125 * enabling Host Initiated Power management. 1125 * enabling Host Initiated Power management.
1126 * 1126 *
1127 * Locking: Caller. 1127 * Locking: Caller.
1128 * Returns: -EINVAL if IPM is not supported, 0 otherwise. 1128 * Returns: -EINVAL if LPM is not supported, 0 otherwise.
1129 */ 1129 */
1130void ata_dev_enable_pm(struct ata_device *dev, enum link_pm policy) 1130void ata_dev_enable_pm(struct ata_device *dev, enum ata_lpm_policy policy)
1131{ 1131{
1132 int rc = 0; 1132 int rc = 0;
1133 struct ata_port *ap = dev->link->ap; 1133 struct ata_port *ap = dev->link->ap;
@@ -1141,9 +1141,9 @@ void ata_dev_enable_pm(struct ata_device *dev, enum link_pm policy)
1141 1141
1142enable_pm_out: 1142enable_pm_out:
1143 if (rc) 1143 if (rc)
1144 ap->pm_policy = MAX_PERFORMANCE; 1144 ap->lpm_policy = ATA_LPM_MAX_POWER;
1145 else 1145 else
1146 ap->pm_policy = policy; 1146 ap->lpm_policy = policy;
1147 return /* rc */; /* hopefully we can use 'rc' eventually */ 1147 return /* rc */; /* hopefully we can use 'rc' eventually */
1148} 1148}
1149 1149
@@ -1164,15 +1164,15 @@ static void ata_dev_disable_pm(struct ata_device *dev)
1164{ 1164{
1165 struct ata_port *ap = dev->link->ap; 1165 struct ata_port *ap = dev->link->ap;
1166 1166
1167 ata_dev_set_dipm(dev, MAX_PERFORMANCE); 1167 ata_dev_set_dipm(dev, ATA_LPM_MAX_POWER);
1168 if (ap->ops->disable_pm) 1168 if (ap->ops->disable_pm)
1169 ap->ops->disable_pm(ap); 1169 ap->ops->disable_pm(ap);
1170} 1170}
1171#endif /* CONFIG_PM */ 1171#endif /* CONFIG_PM */
1172 1172
1173void ata_lpm_schedule(struct ata_port *ap, enum link_pm policy) 1173void ata_lpm_schedule(struct ata_port *ap, enum ata_lpm_policy policy)
1174{ 1174{
1175 ap->pm_policy = policy; 1175 ap->lpm_policy = policy;
1176 ap->link.eh_info.action |= ATA_EH_LPM; 1176 ap->link.eh_info.action |= ATA_EH_LPM;
1177 ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY; 1177 ap->link.eh_info.flags |= ATA_EHI_NO_AUTOPSY;
1178 ata_port_schedule_eh(ap); 1178 ata_port_schedule_eh(ap);
@@ -1201,7 +1201,7 @@ static void ata_lpm_disable(struct ata_host *host)
1201 1201
1202 for (i = 0; i < host->n_ports; i++) { 1202 for (i = 0; i < host->n_ports; i++) {
1203 struct ata_port *ap = host->ports[i]; 1203 struct ata_port *ap = host->ports[i];
1204 ata_lpm_schedule(ap, ap->pm_policy); 1204 ata_lpm_schedule(ap, ap->lpm_policy);
1205 } 1205 }
1206} 1206}
1207#endif /* CONFIG_PM */ 1207#endif /* CONFIG_PM */
@@ -2564,7 +2564,7 @@ int ata_dev_configure(struct ata_device *dev)
2564 if (dev->flags & ATA_DFLAG_LBA48) 2564 if (dev->flags & ATA_DFLAG_LBA48)
2565 dev->max_sectors = ATA_MAX_SECTORS_LBA48; 2565 dev->max_sectors = ATA_MAX_SECTORS_LBA48;
2566 2566
2567 if (!(dev->horkage & ATA_HORKAGE_IPM)) { 2567 if (!(dev->horkage & ATA_HORKAGE_LPM)) {
2568 if (ata_id_has_hipm(dev->id)) 2568 if (ata_id_has_hipm(dev->id))
2569 dev->flags |= ATA_DFLAG_HIPM; 2569 dev->flags |= ATA_DFLAG_HIPM;
2570 if (ata_id_has_dipm(dev->id)) 2570 if (ata_id_has_dipm(dev->id))
@@ -2591,11 +2591,11 @@ int ata_dev_configure(struct ata_device *dev)
2591 dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128, 2591 dev->max_sectors = min_t(unsigned int, ATA_MAX_SECTORS_128,
2592 dev->max_sectors); 2592 dev->max_sectors);
2593 2593
2594 if (ata_dev_blacklisted(dev) & ATA_HORKAGE_IPM) { 2594 if (ata_dev_blacklisted(dev) & ATA_HORKAGE_LPM) {
2595 dev->horkage |= ATA_HORKAGE_IPM; 2595 dev->horkage |= ATA_HORKAGE_LPM;
2596 2596
2597 /* reset link pm_policy for this port to no pm */ 2597 /* reset link pm_policy for this port to no pm */
2598 ap->pm_policy = MAX_PERFORMANCE; 2598 ap->lpm_policy = ATA_LPM_MAX_POWER;
2599 } 2599 }
2600 2600
2601 if (ap->ops->dev_config) 2601 if (ap->ops->dev_config)