libata: Add the AHCI_HFLAG_NO_WRITE_TO_RO flag
While most hardware will simply ignore a write to a read-only register, some hardware will signal an abort if this occurs. This commit introduces the flag AHCI_HFLAG_NO_WRITE_TO_RO to prevent the AHCI library from attempting to write to the HOST_CAP, HOST_CAP2, and HOST_PORTS_IMPL registers which may be read-only. Signed-off-by: Doug Berger <opendmb@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
ef0da1bf76
commit
7fab72f85d
|
@ -249,6 +249,8 @@ enum {
|
|||
#endif
|
||||
AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
|
||||
AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
|
||||
AHCI_HFLAG_NO_WRITE_TO_RO = (1 << 24), /* don't write to read
|
||||
only registers */
|
||||
|
||||
/* ap->flags bits */
|
||||
|
||||
|
|
|
@ -945,7 +945,8 @@ int ahci_reset_controller(struct ata_host *host)
|
|||
/* Some registers might be cleared on reset. Restore
|
||||
* initial values.
|
||||
*/
|
||||
ahci_restore_initial_config(host);
|
||||
if (!(hpriv->flags & AHCI_HFLAG_NO_WRITE_TO_RO))
|
||||
ahci_restore_initial_config(host);
|
||||
} else
|
||||
dev_info(host->dev, "skipping global host reset\n");
|
||||
|
||||
|
|
Loading…
Reference in New Issue