diff options
Diffstat (limited to 'drivers/ata/libata-eh.c')
-rw-r--r-- | drivers/ata/libata-eh.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/drivers/ata/libata-eh.c b/drivers/ata/libata-eh.c index 0d0a2c0ab9e7..ec32082356cb 100644 --- a/drivers/ata/libata-eh.c +++ b/drivers/ata/libata-eh.c | |||
@@ -2814,6 +2814,7 @@ void ata_eh_finish(struct ata_port *ap) | |||
2814 | /** | 2814 | /** |
2815 | * ata_do_eh - do standard error handling | 2815 | * ata_do_eh - do standard error handling |
2816 | * @ap: host port to handle error for | 2816 | * @ap: host port to handle error for |
2817 | * | ||
2817 | * @prereset: prereset method (can be NULL) | 2818 | * @prereset: prereset method (can be NULL) |
2818 | * @softreset: softreset method (can be NULL) | 2819 | * @softreset: softreset method (can be NULL) |
2819 | * @hardreset: hardreset method (can be NULL) | 2820 | * @hardreset: hardreset method (can be NULL) |
@@ -2844,6 +2845,30 @@ void ata_do_eh(struct ata_port *ap, ata_prereset_fn_t prereset, | |||
2844 | ata_eh_finish(ap); | 2845 | ata_eh_finish(ap); |
2845 | } | 2846 | } |
2846 | 2847 | ||
2848 | /** | ||
2849 | * ata_std_error_handler - standard error handler | ||
2850 | * @ap: host port to handle error for | ||
2851 | * | ||
2852 | * Standard error handler | ||
2853 | * | ||
2854 | * LOCKING: | ||
2855 | * Kernel thread context (may sleep). | ||
2856 | */ | ||
2857 | void ata_std_error_handler(struct ata_port *ap) | ||
2858 | { | ||
2859 | struct ata_port_operations *ops = ap->ops; | ||
2860 | ata_reset_fn_t hardreset = ops->hardreset; | ||
2861 | |||
2862 | /* sata_std_hardreset is inherited to all drivers from | ||
2863 | * ata_base_port_ops. Ignore it if SCR access is not | ||
2864 | * available. | ||
2865 | */ | ||
2866 | if (hardreset == sata_std_hardreset && !sata_scr_valid(&ap->link)) | ||
2867 | hardreset = NULL; | ||
2868 | |||
2869 | ata_do_eh(ap, ops->prereset, ops->softreset, hardreset, ops->postreset); | ||
2870 | } | ||
2871 | |||
2847 | #ifdef CONFIG_PM | 2872 | #ifdef CONFIG_PM |
2848 | /** | 2873 | /** |
2849 | * ata_eh_handle_port_suspend - perform port suspend operation | 2874 | * ata_eh_handle_port_suspend - perform port suspend operation |