From mboxrd@z Thu Jan 1 00:00:00 1970 From: Subhash Jadavani Subject: Re: [PATCH v2] ufs: add a variety of definitions decribed in UFS spec Date: Tue, 15 Nov 2016 10:36:29 -0800 Message-ID: <1ba463f838960510879f46e143fa3791@codeaurora.org> References: <00fa01d23f32$c3c136e0$4b43a4a0$@samsung.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit Return-path: Received: from smtp.codeaurora.org ([198.145.29.96]:59960 "EHLO smtp.codeaurora.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751937AbcKOSgb (ORCPT ); Tue, 15 Nov 2016 13:36:31 -0500 In-Reply-To: <00fa01d23f32$c3c136e0$4b43a4a0$@samsung.com> Sender: linux-scsi-owner@vger.kernel.org List-Id: linux-scsi@vger.kernel.org To: Kiwoong Kim Cc: linux-scsi@vger.kernel.org, vinholikatti@gmail.com, cpgs@samsung.com, HeonGwang Chu , linux-scsi-owner@vger.kernel.org On 2016-11-15 03:24, Kiwoong Kim wrote: > These things are defined to be used by some UFS Host controllers. > And a new file for some declarations of mphy standard is added > > V2 > - modify the commit message > - add a new macro for UECDL > - add two definitions about UECDL > - change the names of two macros > (s/IS_PWR_MODE_HS/IS_HS_PWR_MODE, s/IS_PWR_MODE_PWM/IS_PWM_PWR_MODE) > > Signed-off-by: Kiwoong Kim > --- > drivers/scsi/ufs/mphy.h | 38 ++++++++++++++++++++++++++++++++++++++ > drivers/scsi/ufs/ufshci.h | 17 ++++++++++++++--- > drivers/scsi/ufs/unipro.h | 26 ++++++++++++++++++++++++++ > 3 files changed, 78 insertions(+), 3 deletions(-) > create mode 100644 drivers/scsi/ufs/mphy.h > > diff --git a/drivers/scsi/ufs/mphy.h b/drivers/scsi/ufs/mphy.h > new file mode 100644 > index 0000000..c431f49 > --- /dev/null > +++ b/drivers/scsi/ufs/mphy.h > @@ -0,0 +1,38 @@ > +/* > + * drivers/scsi/ufs/mphy.h > + * > + * Copyright (C) 2014 Samsung Electronics Co., Ltd. > + * > + * This program is free software; you can redistribute it and/or > modify > + * it under the terms of the GNU General Public License as published > by > + * the Free Software Foundation; either version 2 of the License, or > + * (at your option) any later version. > + */ > + > +#ifndef _MPHY_H_ > +#define _MPHY_H_ > + > +#define TX_HIBERN8TIME_CAP 0x0f > +#define TX_MIN_ACTIVATE_TIME 0x33 > + > +#define RX_HS_G1_SYNC_LEN_CAP 0x8b > +#define RX_HS_G1_PREP_LEN_CAP 0x8c > +#define RX_HS_G2_SYNC_LEN_CAP 0x94 > +#define RX_HS_G3_SYNC_LEN_CAP 0x95 > +#define RX_HS_G2_PREP_LEN_CAP 0x96 > +#define RX_HS_G3_PREP_LEN_CAP 0x97 > + #define SYNC_RANGE_FINE (0 << 6) > + #define SYNC_RANGE_COARSE (1 << 6) > + #define SYNC_LEN(x) ((x) & 0x3f) > + #define PREP_LEN(x) ((x) & 0xf) > +#define RX_ADV_GRANULARITY_CAP 0x98 > + #define RX_ADV_GRAN_STEP(x) ((((x) & 0x3) << 1) | 0x1) > +#define TX_ADV_GRANULARITY_CAP 0x10 > + #define TX_ADV_GRAN_STEP(x) ((((x) & 0x3) << 1) | 0x1) > +#define RX_MIN_ACTIVATETIME_CAP 0x8f > +#define RX_HIBERN8TIME_CAP 0x92 > +#define RX_ADV_HIBERN8TIME_CAP 0x99 > +#define RX_ADV_MIN_ACTIVATETIME_CAP 0x9a > + > +#endif /* _MPHY_H_ */ > + > diff --git a/drivers/scsi/ufs/ufshci.h b/drivers/scsi/ufs/ufshci.h > index 9599741..a1a06ac9 100644 > --- a/drivers/scsi/ufs/ufshci.h > +++ b/drivers/scsi/ufs/ufshci.h > @@ -170,17 +170,28 @@ enum { > /* UECDL - Host UIC Error Code Data Link Layer 3Ch */ > #define UIC_DATA_LINK_LAYER_ERROR UFS_BIT(31) > #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 > +#define UIC_DATA_LINK_LAYER_ERROR_NAC_RECEIVED UFS_BIT(0) > +#define UIC_DATA_LINK_LAYER_ERROR_TCx_REPLAY_TIMEOUT UFS_BIT(1) > +#define UIC_DATA_LINK_LAYER_ERROR_RX_BUF_OF UFS_BIT(5) > +#define UIC_DATA_LINK_LAYER_ERROR_PA_INIT UFS_BIT(13) > +#define UIC_DATA_LINK_LAYER_ERROR_CASE(r, x) (r & x) I has this comment on Patch set #1 : "why don't we just add macros for all the bits in UECDL ? This makes it easy in future." and you had replied "Okay. I'll think about it and apply new macros on new version of this patch." but i don't see these macros added. Do you want to add them? Also, i am not sure why we are adding UIC_DATA_LINK_LAYER_ERROR_CASE() macro? One more thing, As Martin mentioned in other email, please separate this version history from commit text with line having "----" before the start of version history. Rest all looks good but i will wait for updated patch fixing above before giving Reviewed-By. > > /* UECN - Host UIC Error Code Network Layer 40h */ > #define UIC_NETWORK_LAYER_ERROR UFS_BIT(31) > #define UIC_NETWORK_LAYER_ERROR_CODE_MASK 0x7 > +#define UIC_NETWORK_UNSUPPORTED_HEADER_TYPE BIT(0) > +#define UIC_NETWORK_BAD_DEVICEID_ENC BIT(1) > +#define UIC_NETWORK_LHDR_TRAP_PACKET_DROPPING BIT(2) > > /* UECT - Host UIC Error Code Transport Layer 44h */ > #define UIC_TRANSPORT_LAYER_ERROR UFS_BIT(31) > #define UIC_TRANSPORT_LAYER_ERROR_CODE_MASK 0x7F > +#define UIC_TRANSPORT_UNSUPPORTED_HEADER_TYPE BIT(0) > +#define UIC_TRANSPORT_UNKNOWN_CPORTID BIT(1) > +#define UIC_TRANSPORT_NO_CONNECTION_RX BIT(2) > +#define UIC_TRANSPORT_BAD_TC BIT(4) > +#define UIC_TRANSPORT_E2E_CREDIT_OVERFLOW BIT(5) > +#define UIC_TRANSPORT_SAFETY_VALVE_DROPPING BIT(6) > > /* UECDME - Host UIC Error Code DME 48h */ > #define UIC_DME_ERROR UFS_BIT(31) > diff --git a/drivers/scsi/ufs/unipro.h b/drivers/scsi/ufs/unipro.h > index eff8b56..490d867 100644 > --- a/drivers/scsi/ufs/unipro.h > +++ b/drivers/scsi/ufs/unipro.h > @@ -127,6 +127,7 @@ > #define PA_PACPREQEOBTIMEOUT 0x1591 > #define PA_HIBERN8TIME 0x15A7 > #define PA_LOCALVERINFO 0x15A9 > +#define PA_GRANULARITY 0x15AA > #define PA_TACTIVATE 0x15A8 > #define PA_PACPFRAMECOUNT 0x15C0 > #define PA_PACPERRORCOUNT 0x15C1 > @@ -170,6 +171,9 @@ enum { > UNCHANGED = 7, > }; > > +#define IS_HS_PWR_MODE(m) (((m) == FAST_MODE) || ((m) == > FASTAUTO_MODE)) > +#define IS_PWM_PWR_MODE(m) (((m) == SLOW_MODE) || ((m) == > SLOWAUTO_MODE)) > + > /* PA TX/RX Frequency Series */ > enum { > PA_HS_MODE_A = 1, > @@ -231,6 +235,11 @@ enum ufs_unipro_ver { > #define DL_PEERTC1PRESENT 0x2066 > #define DL_PEERTC1RXINITCREVAL 0x2067 > > +/* Default value of L2 Timer */ > +#define FC0PROTTIMEOUTVAL 8191 > +#define TC0REPLAYTIMEOUTVAL 65535 > +#define AFC0REQTIMEOUTVAL 32767 > + > /* > * Network Layer Attributes > */ > @@ -259,6 +268,23 @@ enum ufs_unipro_ver { > #define T_TC0TXMAXSDUSIZE 0x4060 > #define T_TC1TXMAXSDUSIZE 0x4061 > > +/* CPort setting */ > +#define T_CPORTFLAGS_E2EFC_ON (1 << 0) > +#define T_CPORTFLAGS_E2EFC_OFF (0 << 0) > +#define T_CPORTFLAGS_CSD_N_ON (0 << 1) > +#define T_CPORTFLAGS_CSD_N_OFF (1 << 1) > +#define T_CPORTFLAGS_CSV_N_ON (0 << 2) > +#define T_CPORTFLAGS_CSV_N_OFF (1 << 2) > +#define T_CPORTFLAGS_DEF (T_CPORTFLAGS_CSV_N_OFF | \ > + T_CPORTFLAGS_CSD_N_OFF | \ > + T_CPORTFLAGS_E2EFC_OFF) > + > +/* CPort connection state */ > +enum { > + CPORT_IDLE = 0, > + CPORT_CONNECTED, > +}; > + > #ifdef FALSE > #undef FALSE > #endif -- The Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project