Re: [PATCH 1/3] scsi: ufshcd: switch to a version macro

From: Caleb Connolly
Date: Mon Mar 08 2021 - 05:43:55 EST


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