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
|
#endif
|
||||||
AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
|
AHCI_HFLAG_WAKE_BEFORE_STOP = (1 << 22), /* wake before DMA stop */
|
||||||
AHCI_HFLAG_YES_ALPM = (1 << 23), /* force ALPM cap on */
|
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 */
|
/* ap->flags bits */
|
||||||
|
|
||||||
|
|
|
@ -945,7 +945,8 @@ int ahci_reset_controller(struct ata_host *host)
|
||||||
/* Some registers might be cleared on reset. Restore
|
/* Some registers might be cleared on reset. Restore
|
||||||
* initial values.
|
* initial values.
|
||||||
*/
|
*/
|
||||||
ahci_restore_initial_config(host);
|
if (!(hpriv->flags & AHCI_HFLAG_NO_WRITE_TO_RO))
|
||||||
|
ahci_restore_initial_config(host);
|
||||||
} else
|
} else
|
||||||
dev_info(host->dev, "skipping global host reset\n");
|
dev_info(host->dev, "skipping global host reset\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue