Loading drivers/scsi/ufs/ufshcd.c +20 −5 Original line number Diff line number Diff line Loading @@ -682,10 +682,24 @@ int ufshcd_wait_for_register(struct ufs_hba *hba, u32 reg, u32 mask, */ static inline u32 ufshcd_get_intr_mask(struct ufs_hba *hba) { if (hba->ufs_version == UFSHCI_VERSION_10) return INTERRUPT_MASK_ALL_VER_10; else return INTERRUPT_MASK_ALL_VER_11; u32 intr_mask = 0; switch (hba->ufs_version) { case UFSHCI_VERSION_10: intr_mask = INTERRUPT_MASK_ALL_VER_10; break; /* allow fall through */ case UFSHCI_VERSION_11: case UFSHCI_VERSION_20: intr_mask = INTERRUPT_MASK_ALL_VER_11; break; /* allow fall through */ case UFSHCI_VERSION_21: default: intr_mask = INTERRUPT_MASK_ALL_VER_21; } return intr_mask; } /** Loading Loading @@ -8537,7 +8551,8 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) /* print error message if ufs_version is not valid */ if ((hba->ufs_version != UFSHCI_VERSION_10) && (hba->ufs_version != UFSHCI_VERSION_11) && (hba->ufs_version != UFSHCI_VERSION_20)) (hba->ufs_version != UFSHCI_VERSION_20) && (hba->ufs_version != UFSHCI_VERSION_21)) dev_err(hba->dev, "invalid UFS version 0x%x\n", hba->ufs_version); Loading drivers/scsi/ufs/ufshci.h +9 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,11 @@ enum { REG_UIC_COMMAND_ARG_3 = 0x9C, UFSHCI_REG_SPACE_SIZE = 0xA0, REG_UFS_CCAP = 0x100, REG_UFS_CRYPTOCAP = 0x104, UFSHCI_CRYPTO_REG_SPACE_SIZE = 0x400, }; /* Controller capability masks */ Loading @@ -94,6 +99,7 @@ enum { UFSHCI_VERSION_10 = 0x00010000, /* 1.0 */ UFSHCI_VERSION_11 = 0x00010100, /* 1.1 */ UFSHCI_VERSION_20 = 0x00000200, /* 2.0 */ UFSHCI_VERSION_21 = 0x00000210, /* 2.1 */ }; /* Loading Loading @@ -266,6 +272,9 @@ enum { /* Interrupt disable mask for UFSHCI v1.1 */ INTERRUPT_MASK_ALL_VER_11 = 0x31FFF, /* Interrupt disable mask for UFSHCI v2.1 */ INTERRUPT_MASK_ALL_VER_21 = 0x71FFF, }; /* Loading Loading
drivers/scsi/ufs/ufshcd.c +20 −5 Original line number Diff line number Diff line Loading @@ -682,10 +682,24 @@ int ufshcd_wait_for_register(struct ufs_hba *hba, u32 reg, u32 mask, */ static inline u32 ufshcd_get_intr_mask(struct ufs_hba *hba) { if (hba->ufs_version == UFSHCI_VERSION_10) return INTERRUPT_MASK_ALL_VER_10; else return INTERRUPT_MASK_ALL_VER_11; u32 intr_mask = 0; switch (hba->ufs_version) { case UFSHCI_VERSION_10: intr_mask = INTERRUPT_MASK_ALL_VER_10; break; /* allow fall through */ case UFSHCI_VERSION_11: case UFSHCI_VERSION_20: intr_mask = INTERRUPT_MASK_ALL_VER_11; break; /* allow fall through */ case UFSHCI_VERSION_21: default: intr_mask = INTERRUPT_MASK_ALL_VER_21; } return intr_mask; } /** Loading Loading @@ -8537,7 +8551,8 @@ int ufshcd_init(struct ufs_hba *hba, void __iomem *mmio_base, unsigned int irq) /* print error message if ufs_version is not valid */ if ((hba->ufs_version != UFSHCI_VERSION_10) && (hba->ufs_version != UFSHCI_VERSION_11) && (hba->ufs_version != UFSHCI_VERSION_20)) (hba->ufs_version != UFSHCI_VERSION_20) && (hba->ufs_version != UFSHCI_VERSION_21)) dev_err(hba->dev, "invalid UFS version 0x%x\n", hba->ufs_version); Loading
drivers/scsi/ufs/ufshci.h +9 −0 Original line number Diff line number Diff line Loading @@ -74,6 +74,11 @@ enum { REG_UIC_COMMAND_ARG_3 = 0x9C, UFSHCI_REG_SPACE_SIZE = 0xA0, REG_UFS_CCAP = 0x100, REG_UFS_CRYPTOCAP = 0x104, UFSHCI_CRYPTO_REG_SPACE_SIZE = 0x400, }; /* Controller capability masks */ Loading @@ -94,6 +99,7 @@ enum { UFSHCI_VERSION_10 = 0x00010000, /* 1.0 */ UFSHCI_VERSION_11 = 0x00010100, /* 1.1 */ UFSHCI_VERSION_20 = 0x00000200, /* 2.0 */ UFSHCI_VERSION_21 = 0x00000210, /* 2.1 */ }; /* Loading Loading @@ -266,6 +272,9 @@ enum { /* Interrupt disable mask for UFSHCI v1.1 */ INTERRUPT_MASK_ALL_VER_11 = 0x31FFF, /* Interrupt disable mask for UFSHCI v2.1 */ INTERRUPT_MASK_ALL_VER_21 = 0x71FFF, }; /* Loading