From patchwork Mon Oct 1 22:58:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Stultz X-Patchwork-Id: 147944 Delivered-To: patches@linaro.org Received: by 2002:a2e:8595:0:0:0:0:0 with SMTP id b21-v6csp4460590lji; Mon, 1 Oct 2018 15:58:23 -0700 (PDT) X-Received: by 2002:a62:1b45:: with SMTP id b66-v6mr13597591pfb.94.1538434703796; Mon, 01 Oct 2018 15:58:23 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538434703; cv=none; d=google.com; s=arc-20160816; b=ID0qKUheO0vGxK24JPWsanOtambgfyBdWjm4a7zAQYucQLrmmfvTlirbbUA60eB2LA fU7a7/L4n0KaejvYdrogrOKJGTrQAmxu07Gu/I1ntrEW2hkqn2y1veEKsU4zsrPxBnPT o8NfJ4UX7zsZJjKGWIkOmlcovYDkXv1GKyGpHZDCKqWb+KxJtZgp3+lmt+lMio/0A9Bv 044yeWwiQr267mX9lO4gq4EI8rU4AAUCRTpK1vky471bCtQPowfmGA8W3x6qk0bbHFKK n1qgWzkmwPD4jG3PJKQmyGUBxwmkSNyO/rF5BmhLeGgFNAs7jpVvt5Ft12LGTAnI8gDV KK7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:date:subject:cc:to:from:dkim-signature; bh=XVGguNxmvicpsvPN9XyposHjvHXdJRHd3e9kTGdUpjY=; b=i9+nFMYF557sxM0k4ESFzt69TPPa+Hg0/t/HJ00IGVdZRJ5GSvUE/TY8bUtwhhaX1C lI7KJmw1ntXfn9Nj4JKWbR1hoxKxRoSv7G3iwucxxZDwO6dzNNfHI2jd4JtDIlTslHqD 2s4MlERUZFfkmieoeHeb/Mj7DnseUHnm6ERmmCOYIS2CYpIkMhOnwJ32Y7cwnU/5HTyn +ZPIuocE0J39zWqIkXhcupMNV0WTXkp+u6Q0f4j7XnSut/mDY1N5xtmyJ42n+Qv7EMr5 7TG5cCTKakBnZjMJHMUX95/AHF73Q79RIFNRFK8739oXm+P4yv9AMaB6lt1hwaEtuyNH 5Gqg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AGTK1O8A; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from mail-sor-f65.google.com (mail-sor-f65.google.com. [209.85.220.65]) by mx.google.com with SMTPS id q5-v6sor3490294pls.99.2018.10.01.15.58.23 for (Google Transport Security); Mon, 01 Oct 2018 15:58:23 -0700 (PDT) Received-SPF: pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) client-ip=209.85.220.65; Authentication-Results: mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=AGTK1O8A; spf=pass (google.com: domain of john.stultz@linaro.org designates 209.85.220.65 as permitted sender) smtp.mailfrom=john.stultz@linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id; bh=XVGguNxmvicpsvPN9XyposHjvHXdJRHd3e9kTGdUpjY=; b=AGTK1O8AH3Uc176l48Ttdo/DKB5ks1S7TGG1YA4j+qMzd04FJhqbcUxYLCDTDZ8y3K MW9W2NM9mXXPACe3aZAQxxCiMl949ypv/w+9EjQUEGfgC41NY+9YFotzVKb9IbrK+P/U Zf9NFw0NwR/8ZoOd3j760P9XQ2jQuqyPRqW4s= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=XVGguNxmvicpsvPN9XyposHjvHXdJRHd3e9kTGdUpjY=; b=qpmKfSKAJAgMK3vWoLdWv3NOCJsT6qzFvdKLoRGwKUgz6WOSX/oFBD08j6mx0A6oNc RoMpwIcbtYjYGAE6FuIvFmq0JPhN7CKkRSxe7Aku2yx9Sts7UQmId4IC83UIavxTq52j V1U+IQSlzcPEVpVNKr8PpBGdUJqKadrE0gh+pIg2UxX3Bbc+2IOBYTkz9IA/emLtlUCJ QeBWqXT6UeaAZOdbGvvH1JFC8yz0BFh5/vc0TZjd3MSaCMc4ZO08WFVCFsfvkUe5ssAi 1TI5eFitNiSEOe+TnR25N54yqQcKV8xAdSqN/5a0Cdeygew8o1AfAugAVL5jun7A1Axj ADpg== X-Gm-Message-State: ABuFfoiN0at2zTkOuBcA0RAoTkMJM5cNdDKFmONj0Zw67iHp470xsGNb dSeienkzsHtje2uPbsbuGZQIsGkr X-Google-Smtp-Source: ACcGV63moVCi/iW3DSQxIXaVkr34YlUdIPrmYv40Ush9UTJxjyeOK8xXHoyekLHOp2i2qHsZOdXa2w== X-Received: by 2002:a17:902:7e0f:: with SMTP id b15-v6mr13668804plm.246.1538434702985; Mon, 01 Oct 2018 15:58:22 -0700 (PDT) Return-Path: Received: from localhost.localdomain ([2601:1c2:680:1319:4e72:b9ff:fe99:466a]) by smtp.gmail.com with ESMTPSA id m26-v6sm20457843pfi.102.2018.10.01.15.58.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 01 Oct 2018 15:58:21 -0700 (PDT) From: John Stultz To: lkml Cc: Wei Li , Vinayak Holikatti , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org, Dmitry Shmidt , John Stultz Subject: [RESEND][PATCH] scsi: ufs: Fix hynix ufs bug with quirk on hi36xx SoC Date: Mon, 1 Oct 2018 15:58:18 -0700 Message-Id: <1538434698-1042-1-git-send-email-john.stultz@linaro.org> X-Mailer: git-send-email 2.7.4 From: Wei Li Hynix ufs has deviations on hi36xx platform which will result in ufs bursts transfer failures. To fix the problem, the Hynix device must set the register VS_DebugSaveConfigTime to 0x10, which will set time reference for SaveConfigTime is 250 ns. The time reference for SaveConfigTime is 40 ns by default. This patch is necessary to boot on HiKey960 boards that use Hynix UFS chips. Cc: Vinayak Holikatti Cc: "James E.J. Bottomley" Cc: "Martin K. Petersen" Cc: linux-scsi@vger.kernel.org Signed-off-by: Wei Li Signed-off-by: Dmitry Shmidt [jstultz: Forward ported from older code, slight tweak to commit message] Signed-off-by: John Stultz --- drivers/scsi/ufs/ufs-hisi.c | 9 +++++++++ drivers/scsi/ufs/ufs_quirks.h | 6 ++++++ drivers/scsi/ufs/ufshcd.c | 2 ++ 3 files changed, 17 insertions(+) -- 2.7.4 diff --git a/drivers/scsi/ufs/ufs-hisi.c b/drivers/scsi/ufs/ufs-hisi.c index 46df707..452e19f 100644 --- a/drivers/scsi/ufs/ufs-hisi.c +++ b/drivers/scsi/ufs/ufs-hisi.c @@ -20,6 +20,7 @@ #include "unipro.h" #include "ufs-hisi.h" #include "ufshci.h" +#include "ufs_quirks.h" static int ufs_hisi_check_hibern8(struct ufs_hba *hba) { @@ -390,6 +391,14 @@ static void ufs_hisi_set_dev_cap(struct ufs_hisi_dev_params *hisi_param) static void ufs_hisi_pwr_change_pre_change(struct ufs_hba *hba) { + if (hba->dev_quirks & UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME) { + pr_info("ufs flash device must set VS_DebugSaveConfigTime 0x10\n"); + /* VS_DebugSaveConfigTime */ + ufshcd_dme_set(hba, UIC_ARG_MIB(0xD0A0), 0x10); + /* sync length */ + ufshcd_dme_set(hba, UIC_ARG_MIB(0x1556), 0x48); + } + /* update */ ufshcd_dme_set(hba, UIC_ARG_MIB(0x15A8), 0x1); /* PA_TxSkip */ diff --git a/drivers/scsi/ufs/ufs_quirks.h b/drivers/scsi/ufs/ufs_quirks.h index 71f73d1..5d2dfdb 100644 --- a/drivers/scsi/ufs/ufs_quirks.h +++ b/drivers/scsi/ufs/ufs_quirks.h @@ -131,4 +131,10 @@ struct ufs_dev_fix { */ #define UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME (1 << 8) +/* + * Some UFS devices require VS_DebugSaveConfigTime is 0x10, + * enabling this quirk ensure this. + */ +#define UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME (1 << 9) + #endif /* UFS_QUIRKS_H_ */ diff --git a/drivers/scsi/ufs/ufshcd.c b/drivers/scsi/ufs/ufshcd.c index c55f38e..a67f298 100644 --- a/drivers/scsi/ufs/ufshcd.c +++ b/drivers/scsi/ufs/ufshcd.c @@ -230,6 +230,8 @@ static struct ufs_dev_fix ufs_fixups[] = { UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL, UFS_DEVICE_NO_VCCQ), UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL, UFS_DEVICE_QUIRK_HOST_PA_SAVECONFIGTIME), + UFS_FIX(UFS_VENDOR_SKHYNIX, UFS_ANY_MODEL, + UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME), END_FIX };