• Tejun Heo's avatar
    [PATCH] sil24: add sil24_restart_controller · 7d1ce682
    Tejun Heo authored
    When an error condition is raised by device via D2H FIS or SDB.  sil24
    controller should be restarted by setting PORT_CS_INIT and waiting
    until PORT_CS_RDY is asserted instead of resetting the controller.
    This patch implements sil24_restart_controller for those cases.  This
    patch also makes sure that PORT_CS_RDY is asserted on
    sil24_reset_controller completion.
    Signed-off-by: default avatarTejun Heo <htejun@gmail.com>
    
    --
    
    Jeff, delay is reduced to 1us and cnt increased to 10k.  My sil3124
    turns on PORT_CS_RDY on the second iteration even without any delay.
    I think 10k * 1us should be more than enough.
    
    I tried to convert both restart and reset to use msleep's with work
    queue, but if we do that, host_set lock should be released after
    initiating restart or reset, leading to race condition among
    reset/restart, other interrupts and timeout.  Implementing
    synchronization among those in low-level driver doesn't seem right.
    Well, reduced timeout should work for the time being.
    
    Thanks.
    Signed-off-by: default avatarJeff Garzik <jgarzik@pobox.com>
    7d1ce682
sata_sil24.c 25.9 KB