scsi: ufshcd: use an enum for quirks
Use an enum to specify the various quirks instead of #defines inside the structure definition. [mkp: fix typo] Link: https://lore.kernel.org/r/20200221140812.476338-3-hch@lst.de Reviewed-by: Bart Van Assche <bvanassche@acm.org> Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
Родитель
492001990f
Коммит
c3f7d1fcb4
|
@ -470,6 +470,48 @@ struct ufs_stats {
|
||||||
struct ufs_err_reg_hist task_abort;
|
struct ufs_err_reg_hist task_abort;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum ufshcd_quirks {
|
||||||
|
/* Interrupt aggregation support is broken */
|
||||||
|
UFSHCD_QUIRK_BROKEN_INTR_AGGR = 1 << 0,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* delay before each dme command is required as the unipro
|
||||||
|
* layer has shown instabilities
|
||||||
|
*/
|
||||||
|
UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS = 1 << 1,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* If UFS host controller is having issue in processing LCC (Line
|
||||||
|
* Control Command) coming from device then enable this quirk.
|
||||||
|
* When this quirk is enabled, host controller driver should disable
|
||||||
|
* the LCC transmission on UFS device (by clearing TX_LCC_ENABLE
|
||||||
|
* attribute of device to 0).
|
||||||
|
*/
|
||||||
|
UFSHCD_QUIRK_BROKEN_LCC = 1 << 2,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The attribute PA_RXHSUNTERMCAP specifies whether or not the
|
||||||
|
* inbound Link supports unterminated line in HS mode. Setting this
|
||||||
|
* attribute to 1 fixes moving to HS gear.
|
||||||
|
*/
|
||||||
|
UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP = 1 << 3,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This quirk needs to be enabled if the host controller only allows
|
||||||
|
* accessing the peer dme attributes in AUTO mode (FAST AUTO or
|
||||||
|
* SLOW AUTO).
|
||||||
|
*/
|
||||||
|
UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE = 1 << 4,
|
||||||
|
|
||||||
|
/*
|
||||||
|
* This quirk needs to be enabled if the host controller doesn't
|
||||||
|
* advertise the correct version in UFS_VER register. If this quirk
|
||||||
|
* is enabled, standard UFS host driver will call the vendor specific
|
||||||
|
* ops (get_ufs_hci_version) to get the correct version.
|
||||||
|
*/
|
||||||
|
UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION = 1 << 5,
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct ufs_hba - per adapter private structure
|
* struct ufs_hba - per adapter private structure
|
||||||
* @mmio_base: UFSHCI base register address
|
* @mmio_base: UFSHCI base register address
|
||||||
|
@ -573,46 +615,6 @@ struct ufs_hba {
|
||||||
bool is_irq_enabled;
|
bool is_irq_enabled;
|
||||||
enum ufs_ref_clk_freq dev_ref_clk_freq;
|
enum ufs_ref_clk_freq dev_ref_clk_freq;
|
||||||
|
|
||||||
/* Interrupt aggregation support is broken */
|
|
||||||
#define UFSHCD_QUIRK_BROKEN_INTR_AGGR 0x1
|
|
||||||
|
|
||||||
/*
|
|
||||||
* delay before each dme command is required as the unipro
|
|
||||||
* layer has shown instabilities
|
|
||||||
*/
|
|
||||||
#define UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS 0x2
|
|
||||||
|
|
||||||
/*
|
|
||||||
* If UFS host controller is having issue in processing LCC (Line
|
|
||||||
* Control Command) coming from device then enable this quirk.
|
|
||||||
* When this quirk is enabled, host controller driver should disable
|
|
||||||
* the LCC transmission on UFS device (by clearing TX_LCC_ENABLE
|
|
||||||
* attribute of device to 0).
|
|
||||||
*/
|
|
||||||
#define UFSHCD_QUIRK_BROKEN_LCC 0x4
|
|
||||||
|
|
||||||
/*
|
|
||||||
* The attribute PA_RXHSUNTERMCAP specifies whether or not the
|
|
||||||
* inbound Link supports unterminated line in HS mode. Setting this
|
|
||||||
* attribute to 1 fixes moving to HS gear.
|
|
||||||
*/
|
|
||||||
#define UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP 0x8
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This quirk needs to be enabled if the host contoller only allows
|
|
||||||
* accessing the peer dme attributes in AUTO mode (FAST AUTO or
|
|
||||||
* SLOW AUTO).
|
|
||||||
*/
|
|
||||||
#define UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE 0x10
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This quirk needs to be enabled if the host contoller doesn't
|
|
||||||
* advertise the correct version in UFS_VER register. If this quirk
|
|
||||||
* is enabled, standard UFS host driver will call the vendor specific
|
|
||||||
* ops (get_ufs_hci_version) to get the correct version.
|
|
||||||
*/
|
|
||||||
#define UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION 0x20
|
|
||||||
|
|
||||||
unsigned int quirks; /* Deviations from standard UFSHCI spec. */
|
unsigned int quirks; /* Deviations from standard UFSHCI spec. */
|
||||||
|
|
||||||
/* Device deviations from standard UFS device spec. */
|
/* Device deviations from standard UFS device spec. */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче