diff options
Diffstat (limited to 'drivers/ata/sata_sil24.c')
-rw-r--r-- | drivers/ata/sata_sil24.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index 363fb90e1047..67df1d753305 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c | |||
@@ -352,6 +352,14 @@ static void sil24_pmp_attach(struct ata_port *ap); | |||
352 | static void sil24_pmp_detach(struct ata_port *ap); | 352 | static void sil24_pmp_detach(struct ata_port *ap); |
353 | static void sil24_freeze(struct ata_port *ap); | 353 | static void sil24_freeze(struct ata_port *ap); |
354 | static void sil24_thaw(struct ata_port *ap); | 354 | static void sil24_thaw(struct ata_port *ap); |
355 | static int sil24_softreset(struct ata_link *link, unsigned int *class, | ||
356 | unsigned long deadline); | ||
357 | static int sil24_hardreset(struct ata_link *link, unsigned int *class, | ||
358 | unsigned long deadline); | ||
359 | static int sil24_pmp_softreset(struct ata_link *link, unsigned int *class, | ||
360 | unsigned long deadline); | ||
361 | static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class, | ||
362 | unsigned long deadline); | ||
355 | static void sil24_error_handler(struct ata_port *ap); | 363 | static void sil24_error_handler(struct ata_port *ap); |
356 | static void sil24_post_internal_cmd(struct ata_queued_cmd *qc); | 364 | static void sil24_post_internal_cmd(struct ata_queued_cmd *qc); |
357 | static int sil24_port_start(struct ata_port *ap); | 365 | static int sil24_port_start(struct ata_port *ap); |
@@ -402,6 +410,10 @@ static struct ata_port_operations sil24_ops = { | |||
402 | 410 | ||
403 | .freeze = sil24_freeze, | 411 | .freeze = sil24_freeze, |
404 | .thaw = sil24_thaw, | 412 | .thaw = sil24_thaw, |
413 | .softreset = sil24_softreset, | ||
414 | .hardreset = sil24_hardreset, | ||
415 | .pmp_softreset = sil24_pmp_softreset, | ||
416 | .pmp_hardreset = sil24_pmp_hardreset, | ||
405 | .error_handler = sil24_error_handler, | 417 | .error_handler = sil24_error_handler, |
406 | .post_internal_cmd = sil24_post_internal_cmd, | 418 | .post_internal_cmd = sil24_post_internal_cmd, |
407 | .dev_config = sil24_dev_config, | 419 | .dev_config = sil24_dev_config, |
@@ -1181,11 +1193,7 @@ static void sil24_error_handler(struct ata_port *ap) | |||
1181 | if (sil24_init_port(ap)) | 1193 | if (sil24_init_port(ap)) |
1182 | ata_eh_freeze_port(ap); | 1194 | ata_eh_freeze_port(ap); |
1183 | 1195 | ||
1184 | /* perform recovery */ | 1196 | sata_pmp_error_handler(ap); |
1185 | sata_pmp_do_eh(ap, ata_std_prereset, sil24_softreset, sil24_hardreset, | ||
1186 | ata_std_postreset, sata_pmp_std_prereset, | ||
1187 | sil24_pmp_softreset, sil24_pmp_hardreset, | ||
1188 | sata_pmp_std_postreset); | ||
1189 | 1197 | ||
1190 | pp->do_port_rst = 0; | 1198 | pp->do_port_rst = 0; |
1191 | } | 1199 | } |