Loading drivers/scsi/ufs/ufs_quirks.c +13 −6 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) { int err; u8 model_index; u8 str_desc_buf[QUERY_DESC_STRING_MAX_SIZE]; u8 str_desc_buf[QUERY_DESC_STRING_MAX_SIZE + 1]; u8 desc_buf[QUERY_DESC_DEVICE_MAX_SIZE]; err = ufshcd_read_device_desc(hba, desc_buf, Loading @@ -31,7 +31,13 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) if (err) goto out; card_data->vendor = desc_buf[DEVICE_DESC_PARAM_MANF_ID + 1]; /* * getting vendor (manufacturerID) and Bank Index in big endian * format */ card_data->wmanufacturerid = desc_buf[DEVICE_DESC_PARAM_MANF_ID] << 8 | desc_buf[DEVICE_DESC_PARAM_MANF_ID + 1]; model_index = desc_buf[DEVICE_DESC_PARAM_PRDCT_NAME]; memset(str_desc_buf, 0, QUERY_DESC_STRING_MAX_SIZE); Loading @@ -40,6 +46,7 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) if (err) goto out; str_desc_buf[QUERY_DESC_STRING_MAX_SIZE] = '\0'; strlcpy(card_data->model, str_desc_buf, MAX_MODEL_LEN + 1); out: return err; Loading @@ -51,7 +58,7 @@ void ufs_advertise_fixup_device(struct ufs_hba *hba) struct ufs_card_fix *f; struct ufs_card_info card_data; card_data.vendor = 0; card_data.wmanufacturerid = 0; card_data.model = kmalloc(MAX_MODEL_LEN + 1, GFP_KERNEL); if (!card_data.model) goto out; Loading @@ -64,9 +71,9 @@ void ufs_advertise_fixup_device(struct ufs_hba *hba) } for (f = ufs_fixups; f->quirk; f++) { /* if same vendor */ if (((f->card.vendor == card_data.vendor) || (f->card.vendor == UFS_ANY_VENDOR)) && /* if same wmanufacturerid */ if (((f->card.wmanufacturerid == card_data.wmanufacturerid) || (f->card.wmanufacturerid == UFS_ANY_VENDOR)) && /* and same model */ (STR_PRFX_EQUAL(f->card.model, card_data.model) || !strcmp(f->card.model, UFS_ANY_MODEL))) Loading drivers/scsi/ufs/ufs_quirks.h +6 −6 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ /** * ufs_card_info - ufs device details * @vendor: card details * @wmanufacturerid: card details * @model: card model */ struct ufs_card_info { unsigned int vendor; u16 wmanufacturerid; char *model; }; Loading @@ -52,7 +52,7 @@ struct ufs_card_fix { /* add specific device quirk */ #define UFS_FIX(_vendor, _model, _quirk) \ { \ .card.vendor = (_vendor),\ .card.wmanufacturerid = (_vendor),\ .card.model = (_model), \ .quirk = (_quirk), \ } Loading Loading
drivers/scsi/ufs/ufs_quirks.c +13 −6 Original line number Diff line number Diff line Loading @@ -23,7 +23,7 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) { int err; u8 model_index; u8 str_desc_buf[QUERY_DESC_STRING_MAX_SIZE]; u8 str_desc_buf[QUERY_DESC_STRING_MAX_SIZE + 1]; u8 desc_buf[QUERY_DESC_DEVICE_MAX_SIZE]; err = ufshcd_read_device_desc(hba, desc_buf, Loading @@ -31,7 +31,13 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) if (err) goto out; card_data->vendor = desc_buf[DEVICE_DESC_PARAM_MANF_ID + 1]; /* * getting vendor (manufacturerID) and Bank Index in big endian * format */ card_data->wmanufacturerid = desc_buf[DEVICE_DESC_PARAM_MANF_ID] << 8 | desc_buf[DEVICE_DESC_PARAM_MANF_ID + 1]; model_index = desc_buf[DEVICE_DESC_PARAM_PRDCT_NAME]; memset(str_desc_buf, 0, QUERY_DESC_STRING_MAX_SIZE); Loading @@ -40,6 +46,7 @@ int ufs_get_device_info(struct ufs_hba *hba, struct ufs_card_info *card_data) if (err) goto out; str_desc_buf[QUERY_DESC_STRING_MAX_SIZE] = '\0'; strlcpy(card_data->model, str_desc_buf, MAX_MODEL_LEN + 1); out: return err; Loading @@ -51,7 +58,7 @@ void ufs_advertise_fixup_device(struct ufs_hba *hba) struct ufs_card_fix *f; struct ufs_card_info card_data; card_data.vendor = 0; card_data.wmanufacturerid = 0; card_data.model = kmalloc(MAX_MODEL_LEN + 1, GFP_KERNEL); if (!card_data.model) goto out; Loading @@ -64,9 +71,9 @@ void ufs_advertise_fixup_device(struct ufs_hba *hba) } for (f = ufs_fixups; f->quirk; f++) { /* if same vendor */ if (((f->card.vendor == card_data.vendor) || (f->card.vendor == UFS_ANY_VENDOR)) && /* if same wmanufacturerid */ if (((f->card.wmanufacturerid == card_data.wmanufacturerid) || (f->card.wmanufacturerid == UFS_ANY_VENDOR)) && /* and same model */ (STR_PRFX_EQUAL(f->card.model, card_data.model) || !strcmp(f->card.model, UFS_ANY_MODEL))) Loading
drivers/scsi/ufs/ufs_quirks.h +6 −6 Original line number Diff line number Diff line Loading @@ -29,11 +29,11 @@ /** * ufs_card_info - ufs device details * @vendor: card details * @wmanufacturerid: card details * @model: card model */ struct ufs_card_info { unsigned int vendor; u16 wmanufacturerid; char *model; }; Loading @@ -52,7 +52,7 @@ struct ufs_card_fix { /* add specific device quirk */ #define UFS_FIX(_vendor, _model, _quirk) \ { \ .card.vendor = (_vendor),\ .card.wmanufacturerid = (_vendor),\ .card.model = (_model), \ .quirk = (_quirk), \ } Loading