Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1742533

[PATCH 1/3] scsi: ufs: Change HCI marco to actual bit position

Path csiph.com!weretis.net!feeder6.news.weretis.net!feeder5.news.weretis.net!feeder4.news.weretis.net!news.unit0.net!news.panservice.it!bofh.it!news.nic.it!robomod
From Alim Akhtar <alim.akhtar@samsung.com>
Newsgroups linux.kernel
Subject [PATCH 1/3] scsi: ufs: Change HCI marco to actual bit position
Date Sat, 30 Sep 2017 08:40:02 +0200
Message-ID <uvjBo-uO-13@gated-at.bofh.it> (permalink)
References <uvjBo-uO-21@gated-at.bofh.it>
X-Original-To linux-scsi@vger.kernel.org, linux-kernel@vger.kernel.org
X-Auditid b6c32a39-a6fff7000000109f-e7-59cf39e5ae48
X-Mailer git-send-email 2.7.4
X-Brightmail-Tracker H4sIAAAAAAAAA+NgFlrIIsWRmVeSWpSXmKPExsWy7bCmru5Ty/ORBg+aDCwu/fnCaHF51xw2 i+7rO9gslh//x2RxY/FONosdC6sc2Dwu9/UyeeycdZfd4+PTWywenzfJebQf6GYKYI3isklJ zcksSy3St0vgyjh0cRtLwVOrim/TtzE1MJ416GLk5JAQMJF4uv0IexcjF4eQwA5Gia6ubawQ zndGiVPzpjHDVG2b8RyqagOjxL8FmxghnJ+MEtuf3WIFqWIT0Ja4O30LE4gtImAjcf7mAzCb WSBT4unkT4wgtrCAu8S7D1tZQGwWAVWJhVN2gW3gBYrPfbqQEWKbnMTNc53MIAskBJ6ySjzd NYEVIuEisXPjJTYIW1ji1fEtQCdxANnSEpeO2kKEyyXar/6D6u0AemHSORaIhL3EgStzWCAO 4pN497WHFaKXV6KjTQiixENiaut6qHJHiYefboKtEhKIlWi4dIt5AqPkAkaGVYxiqQXFuemp xYYFpnrFibnFpXnpesn5uZsYwRGnZbmD8dg5n0OMAhyMSjy8N7zORQqxJpYVV+YeYpTgYFYS 4d1gdj5SiDclsbIqtSg/vqg0J7X4EKM0B4uSOK/o+msRQgLpiSWp2ampBalFMFkmDk6pBkYv l/3bdOT6DVL315op+jtEHS87/N33s7r2PYM/Wr+3PN0ptPOixumn7zsu6k7OkT9duz/HQjQt ecWNa9/0Jv5kdgr7UL0lUXZtj9HHb5vEzHR+7Oub9czm1xeLLT92XBWMrw+L2H9H50D5sjuT pHpLbpydeG9L/YG7MwLOfw9mf3Azytc5Y7q4EktxRqKhFnNRcSIAzbys9LQCAAA=
X-Brightmail-Tracker H4sIAAAAAAAAA+NgFnrLJMWRmVeSWpSXmKPExsVy+t9jQd0nlucjDQ4tUbC49OcLo8XlXXPY LLqv72CzWH78H5PFjcU72Sx2LKxyYPO43NfL5LFz1l12j49Pb7F4fN4k59F+oJspgDWKyyYl NSezLLVI3y6BK+PQxW0sBU+tKr5N38bUwHjWoIuRk0NCwERi24zn7F2MXBxCAusYJWZP/cwO khAS+MkoMWV+GYjNJqAtcXf6FiYQW0TARuL8zQdgNrNApsTpHceYQWxhAXeJdx+2soDYLAKq Egun7AKL8wLF5z5dyAixTE7i5rlO5gmMXAsYGVYxSqYWFOem5xYbFRjmpZbrFSfmFpfmpesl 5+duYgQGwrbDWn07GO8viT/EKMDBqMTDe8PrXKQQa2JZcWXuIUYJDmYlEd4NZucjhXhTEiur Uovy44tKc1KLDzFKc7AoifPezjsWKSSQnliSmp2aWpBaBJNl4uCUamDkfMTxyVSU+emne24X lI77a7U/f3FtYuYmne7P/i+rOcXdrl064/Xm5bKHfG2s7QHJK12XSMaqxd2JWy19T4/lq/vK 3oit839rLrrf23S5suOUosbytmD/SoWShOQSe1aN/BWnbYI6PBoLTrM+flQWsitSb2uP1ZHT dSpHgCF/w8Bp297yYiWW4oxEQy3mouJEAMaNfHsAAgAA
X-Cms-Mailid 20170930062956epcas1p1461ea07e21a275a9e5733b3b90b5896a
X-Msg-Generator CA
X-Sender-IP 182.195.42.142
X-Local-Sender 알림SSIR-FDS SW삼성전자./Senior Chief Engineer
X-Global-Sender ALIM AKHTARSSIR-FDS SWSamsung Electronics./Senior Chief Engineer
X-Sender-Code C10SWAHQC10ID07ID010997
Cms-Type 101P
X-Cms-Rootmailid 20170930062956epcas1p1461ea07e21a275a9e5733b3b90b5896a
X-Rootmtr 20170930062956epcas1p1461ea07e21a275a9e5733b3b90b5896a
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 200
Organization linux.* mail to news gateway
X-Original-Cc vinholikatti@gmail.com, martin.petersen@oracle.com, subhashj@codeaurora.org, Bart.VanAssche@wdc.com
X-Original-Date Sat, 30 Sep 2017 11:52:04 +0530
X-Original-Message-ID <1506752526-27014-1-git-send-email-alim.akhtar@samsung.com>
X-Original-References <CGME20170930062956epcas1p1461ea07e21a275a9e5733b3b90b5896a@epcas1p1.samsung.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1742533

Show key headers only | View raw


Currently UFS HCI uses UFS_BIT() macro to get various bit
position for the hardware registers status bits. Which makes
code longer instead of shorter. This macro does not improve
code readability as well.
Lets re-write these macro definition with the actual bit position.

Suggested-by: Bart Van Assche <Bart.VanAssche@wdc.com>
Signed-off-by: Alim Akhtar <alim.akhtar@samsung.com>
---
 This patch is only complied tested, appreciate testing on actual h/w.
 Please see https://lkml.org/lkml/2017/8/28/786  discussion.
 
 drivers/scsi/ufs/ufshcd.h | 14 +++++-----
 drivers/scsi/ufs/ufshci.h | 69 ++++++++++++++++++++++++-----------------------
 2 files changed, 43 insertions(+), 40 deletions(-)

diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h
index cdc8bd0..ce2920b 100644
--- a/drivers/scsi/ufs/ufshcd.h
+++ b/drivers/scsi/ufs/ufshcd.h
@@ -544,13 +544,13 @@ struct ufs_hba {
 	bool is_irq_enabled;
 
 	/* Interrupt aggregation support is broken */
-	#define UFSHCD_QUIRK_BROKEN_INTR_AGGR			UFS_BIT(0)
+	#define UFSHCD_QUIRK_BROKEN_INTR_AGGR			0x1
 
 	/*
 	 * delay before each dme command is required as the unipro
 	 * layer has shown instabilities
 	 */
-	#define UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS		UFS_BIT(1)
+	#define UFSHCD_QUIRK_DELAY_BEFORE_DME_CMDS		0x2
 
 	/*
 	 * If UFS host controller is having issue in processing LCC (Line
@@ -559,21 +559,21 @@ struct ufs_hba {
 	 * the LCC transmission on UFS device (by clearing TX_LCC_ENABLE
 	 * attribute of device to 0).
 	 */
-	#define UFSHCD_QUIRK_BROKEN_LCC				UFS_BIT(2)
+	#define UFSHCD_QUIRK_BROKEN_LCC				0x4
 
 	/*
 	 * The attribute PA_RXHSUNTERMCAP specifies whether or not the
 	 * inbound Link supports unterminated line in HS mode. Setting this
 	 * attribute to 1 fixes moving to HS gear.
 	 */
-	#define UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP		UFS_BIT(3)
+	#define UFSHCD_QUIRK_BROKEN_PA_RXHSUNTERMCAP		0x8
 
 	/*
 	 * This quirk needs to be enabled if the host contoller only allows
 	 * accessing the peer dme attributes in AUTO mode (FAST AUTO or
 	 * SLOW AUTO).
 	 */
-	#define UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE		UFS_BIT(4)
+	#define UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE		0x10
 
 	/*
 	 * This quirk needs to be enabled if the host contoller doesn't
@@ -581,13 +581,13 @@ struct ufs_hba {
 	 * is enabled, standard UFS host driver will call the vendor specific
 	 * ops (get_ufs_hci_version) to get the correct version.
 	 */
-	#define UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION		UFS_BIT(5)
+	#define UFSHCD_QUIRK_BROKEN_UFS_HCI_VERSION		0x20
 
 	/*
 	 * This quirk needs to be enabled if the host contoller regards
 	 * resolution of the values of PRDTO and PRDTL in UTRD as byte.
 	 */
-	#define UFSHCD_QUIRK_PRDT_BYTE_GRAN			UFS_BIT(7)
+	#define UFSHCD_QUIRK_PRDT_BYTE_GRAN			0x80
 
 	unsigned int quirks;	/* Deviations from standard UFSHCI spec. */
 
diff --git a/drivers/scsi/ufs/ufshci.h b/drivers/scsi/ufs/ufshci.h
index f60145d..5a60a8f 100644
--- a/drivers/scsi/ufs/ufshci.h
+++ b/drivers/scsi/ufs/ufshci.h
@@ -119,22 +119,24 @@ enum {
 #define MANUFACTURE_ID_MASK	UFS_MASK(0xFFFF, 0)
 #define PRODUCT_ID_MASK		UFS_MASK(0xFFFF, 16)
 
-#define UFS_BIT(x)	(1L << (x))
-
-#define UTP_TRANSFER_REQ_COMPL			UFS_BIT(0)
-#define UIC_DME_END_PT_RESET			UFS_BIT(1)
-#define UIC_ERROR				UFS_BIT(2)
-#define UIC_TEST_MODE				UFS_BIT(3)
-#define UIC_POWER_MODE				UFS_BIT(4)
-#define UIC_HIBERNATE_EXIT			UFS_BIT(5)
-#define UIC_HIBERNATE_ENTER			UFS_BIT(6)
-#define UIC_LINK_LOST				UFS_BIT(7)
-#define UIC_LINK_STARTUP			UFS_BIT(8)
-#define UTP_TASK_REQ_COMPL			UFS_BIT(9)
-#define UIC_COMMAND_COMPL			UFS_BIT(10)
-#define DEVICE_FATAL_ERROR			UFS_BIT(11)
-#define CONTROLLER_FATAL_ERROR			UFS_BIT(16)
-#define SYSTEM_BUS_FATAL_ERROR			UFS_BIT(17)
+#define UFS_BIT(x)     (1L << (x))
+/*
+ * IS - Interrupt Status - 20h
+ */
+#define UTP_TRANSFER_REQ_COMPL			0x1
+#define UIC_DME_END_PT_RESET			0x2
+#define UIC_ERROR				0x4
+#define UIC_TEST_MODE				0x8
+#define UIC_POWER_MODE				0x10
+#define UIC_HIBERNATE_EXIT			0x20
+#define UIC_HIBERNATE_ENTER			0x40
+#define UIC_LINK_LOST				0x80
+#define UIC_LINK_STARTUP			0x100
+#define UTP_TASK_REQ_COMPL			0x200
+#define UIC_COMMAND_COMPL			0x400
+#define DEVICE_FATAL_ERROR			0x800
+#define CONTROLLER_FATAL_ERROR			0x10000
+#define SYSTEM_BUS_FATAL_ERROR			0x20000
 
 #define UFSHCD_UIC_PWR_MASK	(UIC_HIBERNATE_ENTER |\
 				UIC_HIBERNATE_EXIT |\
@@ -152,10 +154,10 @@ enum {
 				SYSTEM_BUS_FATAL_ERROR)
 
 /* HCS - Host Controller Status 30h */
-#define DEVICE_PRESENT				UFS_BIT(0)
-#define UTP_TRANSFER_REQ_LIST_READY		UFS_BIT(1)
-#define UTP_TASK_REQ_LIST_READY			UFS_BIT(2)
-#define UIC_COMMAND_READY			UFS_BIT(3)
+#define DEVICE_PRESENT				0x1
+#define UTP_TRANSFER_REQ_LIST_READY		0x2
+#define UTP_TASK_REQ_LIST_READY			0x4
+#define UIC_COMMAND_READY			0x8
 #define HOST_ERROR_INDICATOR			UFS_BIT(4)
 #define DEVICE_ERROR_INDICATOR			UFS_BIT(5)
 #define UIC_POWER_MODE_CHANGE_REQ_STATUS_MASK	UFS_MASK(0x7, 8)
@@ -174,46 +176,47 @@ enum {
 };
 
 /* HCE - Host Controller Enable 34h */
-#define CONTROLLER_ENABLE	UFS_BIT(0)
+#define CONTROLLER_ENABLE	0x1
 #define CONTROLLER_DISABLE	0x0
-#define CRYPTO_GENERAL_ENABLE	UFS_BIT(1)
+#define CRYPTO_GENERAL_ENABLE	0x2
 
 /* UECPA - Host UIC Error Code PHY Adapter Layer 38h */
-#define UIC_PHY_ADAPTER_LAYER_ERROR			UFS_BIT(31)
+#define UIC_PHY_ADAPTER_LAYER_ERROR			0x80000000
 #define UIC_PHY_ADAPTER_LAYER_ERROR_CODE_MASK		0x1F
 #define UIC_PHY_ADAPTER_LAYER_LANE_ERR_MASK		0xF
 
 /* UECDL - Host UIC Error Code Data Link Layer 3Ch */
-#define UIC_DATA_LINK_LAYER_ERROR		UFS_BIT(31)
+#define UIC_DATA_LINK_LAYER_ERROR		0x80000000
 #define UIC_DATA_LINK_LAYER_ERROR_CODE_MASK	0x7FFF
 #define UIC_DATA_LINK_LAYER_ERROR_PA_INIT	0x2000
 #define UIC_DATA_LINK_LAYER_ERROR_NAC_RECEIVED	0x0001
 #define UIC_DATA_LINK_LAYER_ERROR_TCx_REPLAY_TIMEOUT 0x0002
 
 /* UECN - Host UIC Error Code Network Layer 40h */
-#define UIC_NETWORK_LAYER_ERROR			UFS_BIT(31)
+#define UIC_NETWORK_LAYER_ERROR			0x80000000
 #define UIC_NETWORK_LAYER_ERROR_CODE_MASK	0x7
 
 /* UECT - Host UIC Error Code Transport Layer 44h */
-#define UIC_TRANSPORT_LAYER_ERROR		UFS_BIT(31)
+#define UIC_TRANSPORT_LAYER_ERROR		0x80000000
 #define UIC_TRANSPORT_LAYER_ERROR_CODE_MASK	0x7F
 
 /* UECDME - Host UIC Error Code DME 48h */
-#define UIC_DME_ERROR			UFS_BIT(31)
+#define UIC_DME_ERROR			0x80000000
 #define UIC_DME_ERROR_CODE_MASK		0x1
 
+/* UTRIACR - Interrupt Aggregation control register - 0x4Ch */
 #define INT_AGGR_TIMEOUT_VAL_MASK		0xFF
 #define INT_AGGR_COUNTER_THRESHOLD_MASK		UFS_MASK(0x1F, 8)
-#define INT_AGGR_COUNTER_AND_TIMER_RESET	UFS_BIT(16)
-#define INT_AGGR_STATUS_BIT			UFS_BIT(20)
-#define INT_AGGR_PARAM_WRITE			UFS_BIT(24)
-#define INT_AGGR_ENABLE				UFS_BIT(31)
+#define INT_AGGR_COUNTER_AND_TIMER_RESET	0x10000
+#define INT_AGGR_STATUS_BIT			0x100000
+#define INT_AGGR_PARAM_WRITE			0x1000000
+#define INT_AGGR_ENABLE				0x80000000
 
 /* UTRLRSR - UTP Transfer Request Run-Stop Register 60h */
-#define UTP_TRANSFER_REQ_LIST_RUN_STOP_BIT	UFS_BIT(0)
+#define UTP_TRANSFER_REQ_LIST_RUN_STOP_BIT	0x1
 
 /* UTMRLRSR - UTP Task Management Request Run-Stop Register 80h */
-#define UTP_TASK_REQ_LIST_RUN_STOP_BIT		UFS_BIT(0)
+#define UTP_TASK_REQ_LIST_RUN_STOP_BIT		0x1
 
 /* UICCMD - UIC Command */
 #define COMMAND_OPCODE_MASK		0xFF
-- 
2.7.4

Back to linux.kernel | Previous | Next — Next in thread | Find similar | Unroll thread


Thread

[PATCH 1/3] scsi: ufs: Change HCI marco to actual bit position Alim Akhtar <alim.akhtar@samsung.com> - 2017-09-30 08:40 +0200
  [PATCH 3/3] scsi: ufs: Remove unused UFS_BIT() macro Alim Akhtar <alim.akhtar@samsung.com> - 2017-09-30 08:40 +0200
  Re: [PATCH 1/3] scsi: ufs: Change HCI marco to actual bit position Bart Van Assche <Bart.VanAssche@wdc.com> - 2017-10-02 22:50 +0200

csiph-web