Received: by 10.223.176.46 with SMTP id f43csp1897978wra; Thu, 25 Jan 2018 01:40:25 -0800 (PST) X-Google-Smtp-Source: AH8x226tsCUNAKhsiBEKTboz4erMQyBWqsQ7PBOgDKVerzgm7AfjfMcrJkyfKJeRqocn7LVq52G7 X-Received: by 10.98.212.26 with SMTP id a26mr15601973pfh.38.1516873225435; Thu, 25 Jan 2018 01:40:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516873225; cv=none; d=google.com; s=arc-20160816; b=XNex9iUDyxv1UZHf2liu91bb6TFctVf33UaATupQUSiw0Mjfcjml5VJUSP8YOMFpBY Z7V/CeCAdiO9InBUYhS1zwWkpJ5BLxarKuGmMD/PU3sNTAPpZ7g6GDchYI7wKDVgYmWz rFxRhxjB6z4rTms9luX1t4fD3t/62KNvLiEDLkLLDg74DF13cW3TzLR8fjI3Rt+APFqA fcsH6dCta2fYDj7ANM8Scs1TTzGqG3QzAOl5/q2TqPZ9ls8iuZ5tJOykEWlljlL9EoOX gMSdZ3qscTcIiWcIFFywGeRrkItyKd4FBAwHdxOwqumCY9yOtM/eJZQkDkH4/sfyUxnP l9Og== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :arc-authentication-results; bh=/5mh7p9IZPWZqJjsv8jg8agRYcq/kUYLAfrDMGyyYn4=; b=cdWVwGZEkBmf4IKKTNtAfXZUj7cE4bnNXdqqhJGSWl3SVnK8LvNBRQFVf+JNjD2KeU 5miYVGT17lbFOOn4gtoHRUg0F+GSBme5AAcvKlYqIG2XOtX7gQqQDjAY3CY1Mj3hyCez MQlly0IoenFYXFbE6E7Gl0SVuR5/cMNnfG9NBX8dujXx+ctbT3w5dV+4ewF5SfwX7+fK ZP9nzqpeoQ9uOz86IME59rhreUQKLr+WS6maEWfa++O3FnwSoQ4hnI4mFoSAdDLDOQQO rmiaB2XniMKFGpsakczvgfxxBlzprNpd1vm5GMCXis1JIQXvUbbcYkZrBO2UEyUepVkP RACA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id g3-v6si1713302plt.528.2018.01.25.01.40.11; Thu, 25 Jan 2018 01:40:25 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751296AbeAYJjr (ORCPT + 99 others); Thu, 25 Jan 2018 04:39:47 -0500 Received: from sabertooth01.qualcomm.com ([65.197.215.72]:48291 "EHLO sabertooth01.qualcomm.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750769AbeAYJjo (ORCPT ); Thu, 25 Jan 2018 04:39:44 -0500 X-IronPort-AV: E=Sophos;i="5.46,411,1511856000"; d="scan'208";a="122928289" Received: from unknown (HELO ironmsg02-sd.qualcomm.com) ([10.53.140.142]) by sabertooth01.qualcomm.com with ESMTP; 25 Jan 2018 01:39:43 -0800 X-MGA-submission: =?us-ascii?q?MDFirR8GTW7q6xgoLtzWhl9Qfx8nYv8AHOQKRu?= =?us-ascii?q?WsKPAuVFv8M8yQQgRj1AenIgLi5ZSRrZ2tMhdfdKvicP/x1iOwJBJ4AK?= =?us-ascii?q?SiSXF09o8Hnw7Fias829ek65nvxhEksYihFZdIR79OJORPCpfMryziBz?= =?us-ascii?q?md?= Received: from asutoshd-linux.qualcomm.com ([10.206.24.163]) by ironmsg02-sd.qualcomm.com with ESMTP; 25 Jan 2018 01:39:39 -0800 Received: by asutoshd-linux.qualcomm.com (Postfix, from userid 92687) id BE3EE2243; Thu, 25 Jan 2018 15:09:37 +0530 (IST) From: Asutosh Das To: subhashj@codeaurora.org, cang@codeaurora.org, vivek.gautam@codeaurora.org, vinholikatti@gmail.com, jejb@linux.vnet.ibm.com, martin.petersen@oracle.com Cc: linux-scsi@vger.kernel.org, Venkat Gopalakrishnan , Asutosh Das , linux-kernel@vger.kernel.org (open list) Subject: [PATCH 1/1] scsi: ufs: Add LCC quirk for host and device Date: Thu, 25 Jan 2018 15:09:18 +0530 Message-Id: <1516873158-2900-1-git-send-email-asutoshd@codeaurora.org> X-Mailer: git-send-email 1.9.1 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Subhash Jadavani LCC (Line Control Command) is being used for communication between UFS host and UFS device. But some hosts might have the issue with issuing the LCC commands to UFS device and in this case LCC could be explicitly disabled. But there could be a need where we don't want to disable the LCC on both host & device; hence this change splits the quirk in 2 parts one for host and one for device. Signed-off-by: Subhash Jadavani Signed-off-by: Venkat Gopalakrishnan Signed-off-by: Can Guo Signed-off-by: Asutosh Das --- drivers/scsi/ufs/ufshcd.c | 16 ++++++++++++++++ drivers/scsi/ufs/ufshcd.h | 11 +++++++++++ 2 files changed, 27 insertions(+) diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index 8af2af3..d6fc88d 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -4121,6 +4121,11 @@ static int ufshcd_disable_tx_lcc(struct ufs_hba *hba, bool peer) return err; } +static inline int ufshcd_disable_host_tx_lcc(struct ufs_hba *hba) +{ + return ufshcd_disable_tx_lcc(hba, false); +} + static inline int ufshcd_disable_device_tx_lcc(struct ufs_hba *hba) { return ufshcd_disable_tx_lcc(hba, true); @@ -4171,6 +4176,17 @@ static int ufshcd_link_startup(struct ufs_hba *hba) /* failed to get the link up... retire */ goto out; + if (hba->quirks & UFSHCD_BROKEN_LCC_PROCESSING_ON_HOST) { + ret = ufshcd_disable_device_tx_lcc(hba); + if (ret) + goto out; + } + + if (hba->quirks & UFSHCD_BROKEN_LCC_PROCESSING_ON_DEVICE) { + ret = ufshcd_disable_host_tx_lcc(hba); + if (ret) + goto out; + } if (link_startup_again) { link_startup_again = false; retries = DME_LINKSTARTUP_RETRIES; diff --git a/drivers/scsi/ufs/ufshcd.h b/drivers/scsi/ufs/ufshcd.h index 1332e54..7a2dad3 100644 --- a/drivers/scsi/ufs/ufshcd.h +++ b/drivers/scsi/ufs/ufshcd.h @@ -591,6 +591,17 @@ struct ufs_hba { */ #define UFSHCD_QUIRK_PRDT_BYTE_GRAN 0x80 + /* + * 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 UFSHCD_BROKEN_LCC_PROCESSING_ON_DEVICE 0x100 + + #define UFSHCD_BROKEN_LCC_PROCESSING_ON_HOST 0x200 + unsigned int quirks; /* Deviations from standard UFSHCI spec. */ /* Device deviations from standard UFS device spec. */ -- Qualcomm India Private Limited, on behalf of Qualcomm Innovation Center, Inc. Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project.