79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
/* Copyright (c) 2014, The Linux Foundation. All rights reserved.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License version 2 and
|
|
* only version 2 as published by the Free Software Foundation.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
#ifndef _UFS_QUIRKS_H_
|
|
#define _UFS_QUIRKS_H_
|
|
|
|
/* return true if s1 is a prefix of s2 */
|
|
#define STR_PRFX_EQUAL(s1, s2) !strncmp(s1, s2, strlen(s1))
|
|
|
|
#define UFS_ANY_VENDOR 0xffff
|
|
#define UFS_ANY_MODEL "ANY_MODEL"
|
|
|
|
#define MAX_MODEL_LEN 16
|
|
|
|
#define UFS_VENDOR_TOSHIBA 0x98
|
|
/* UFS TOSHIBA MODELS */
|
|
#define UFS_MODEL_TOSHIBA_32GB "THGLF2G8D4KBADR"
|
|
#define UFS_MODEL_TOSHIBA_64GB "THGLF2G9D8KBADG"
|
|
|
|
/*uniqueu number*/
|
|
#define UFS_UN_16_DIGITS 16
|
|
#define UFS_UN_18_DIGITS 18
|
|
#define UFS_UN_MAX_DIGITS 19 //current max digit + 1
|
|
|
|
/**
|
|
* ufs_card_info - ufs device details
|
|
* @wmanufacturerid: card details
|
|
* @model: card model
|
|
*/
|
|
struct ufs_card_info {
|
|
u16 wmanufacturerid;
|
|
u8 lifetime;
|
|
char *model;
|
|
};
|
|
|
|
/**
|
|
* ufs_card_fix - ufs device quirk info
|
|
* @card: ufs card details
|
|
* @quirk: device quirk
|
|
*/
|
|
struct ufs_card_fix {
|
|
struct ufs_card_info card;
|
|
unsigned int quirk;
|
|
};
|
|
|
|
#define END_FIX { { 0 } , 0 }
|
|
|
|
/* add specific device quirk */
|
|
#define UFS_FIX(_vendor, _model, _quirk) \
|
|
{ \
|
|
.card.wmanufacturerid = (_vendor),\
|
|
.card.model = (_model), \
|
|
.quirk = (_quirk), \
|
|
}
|
|
|
|
/*
|
|
* If UFS device is having issue in processing LCC (Line Control
|
|
* Command) coming from UFS host controller then enable this quirk.
|
|
* When this quirk is enabled, host controller driver should disable
|
|
* the LCC transmission on UFS host controller (by clearing
|
|
* TX_LCC_ENABLE attribute of host to 0).
|
|
*/
|
|
#define UFS_DEVICE_QUIRK_BROKEN_LCC UFS_BIT(0)
|
|
#define UFS_DEVICE_QUIRK_BROKEN_LINEREST UFS_BIT(1)
|
|
|
|
struct ufs_hba;
|
|
void ufs_advertise_fixup_device(struct ufs_hba *hba);
|
|
#endif /* UFS_QUIRKS_H_ */
|