Hi Christoph, On 08/03/2021 8:00 am, Christoph Hellwig wrote: > This looks like a really nice improvement! > > A bunch of comments below: > >> @@ -696,10 +685,21 @@ static inline u32 ufshcd_get_intr_mask(struct ufs_hba *hba) >> */ >> static inline u32 ufshcd_get_ufs_version(struct ufs_hba *hba) >> { >> + u32 ufshci_ver; > missing eempty line after the declaration. > >> if (hba->quirks & UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION) >> + ufshci_ver = ufshcd_vops_get_ufs_hci_version(hba); >> + else >> + ufshci_ver = ufshcd_readl(hba, REG_UFS_VERSION); >> >> + /* >> + * UFSHCI v1.x uses a different version scheme, in order >> + * to allow the use of comparisons with the UFSHCI_VER >> + * macro, we convert it to the same scheme as ufs 2.0+. >> + */ >> + if (ufshci_ver & 0x00010000) >> + ufshci_ver = UFSHCI_VER(1, ufshci_ver & 0x00000100); >> + >> + return ufshci_ver; > I'd use early returns here to clean this up a bit: > > if (hba->quirks & UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION) > ufshci_ver = ufshcd_vops_get_ufs_hci_version(hba); > > ... > ufshci_ver = ufshcd_readl(hba, REG_UFS_VERSION); > if (ufshci_ver & 0x00010000) > return UFSHCI_VER(1, ufshci_ver & 0x00000100); > return ufshci_ver; > >> +#define UFSHCI_VER(major, minor) \ >> + ((major << 8) + (minor << 4)) > This needs braces around major and minor. Or better just convert it > to an inline function (and use a lower case name). Other (similar) implementations, like NVME_VS() use a macro here, is an inline function just personal preference? I'm perfectly happy either way, so I'll switch to your suggestion. Thanks for the review. Regards, Caleb