Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp901804imu; Tue, 11 Dec 2018 09:17:24 -0800 (PST) X-Google-Smtp-Source: AFSGD/VZ/nSZjOF9qrnqE4+WYgVSpoMUqze4SYaFuJ1jXwU9JtSWZo42CecHbcDzJo0CNDo5rMeg X-Received: by 2002:a62:a1a:: with SMTP id s26mr17137074pfi.31.1544548644293; Tue, 11 Dec 2018 09:17:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1544548644; cv=none; d=google.com; s=arc-20160816; b=BrjIu8SttLODHzUTQaoe1Q8UIma4nWQqGVlpLW9rksvlemh6fQfRzYF+I/vorHPr3W EB+suZB6k7meK4XLM/VGx2/pbzBKZ9ihP4KZR5FOjsAjFYPuXizvEU6BBxJ1V/Hns15/ LYiI6qIgogVc47Zo8Hqv1+z7KG9QkW2uoC63hKMITZNEdrQkPhZTes7eAwXP2Zycz566 uixDkyBCflgYBHS2djvfkZFYN1Ue6CmEW0IcZPf5ra0mgdVeYlllMKJdYPD/kwQrnkEh bkZ9DIMTfgkOCU3va+L/2F1oglrZ8dUOFEnEgbAva4n0/ZArPKOVEUXurP5HtJJkcYtL Zp/g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=4svwQ762Gmj7hBA0zn2Y8tHKgXkeyE0qUSAw1Ypco4o=; b=IEJVKF9JzI//JB9A3GthD6P5dAw5kgmih93ic04/ok857Eug0eNsJB6XdyLuDr+o7O 2sfzOGVYaxfIvgFpiPK0pHMlK3DDRVB8dmRjLvzDoRLfy9v83B1d6csBqc6Bcgu48ZIL 0ucC1bHLrVj6gHPs+LUifBhxkxUDZUYQU86FYJQM2s5+XQDqZBb+1RFBtF31EUe/7NSj eiEMiwnVnsXDZ6dgsoqFVkVERTw4ILSaZsow99ga0z/XQn8Z/Cojr293AcKgXUdU5kwy 4TNQyyWKcQIdf1oAR5GVI+GK95QnP7WeSOGD5A7qV0g7nZsKEAokyRQeIMRiKoKkTQ0Q 25xw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=NOjn0Jmn; 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 n17si12269313pgj.191.2018.12.11.09.17.09; Tue, 11 Dec 2018 09:17:24 -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; dkim=pass header.i=@kernel.org header.s=default header.b=NOjn0Jmn; 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 S1730159AbeLKPzc (ORCPT + 99 others); Tue, 11 Dec 2018 10:55:32 -0500 Received: from mail.kernel.org ([198.145.29.99]:44194 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729664AbeLKPza (ORCPT ); Tue, 11 Dec 2018 10:55:30 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 14E3420855; Tue, 11 Dec 2018 15:55:28 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1544543729; bh=47CHgfQlhkJcEU2jqm+IUYJlGe5HX+AMJQd7kCGSP6o=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NOjn0Jmn1i16vVo9amgfDZE868+RR2Zbjksic0AE4ovem6FsDusFNShGtsH5XJEPC QuoH9ho9osq7AMc2dzKSqRS64DqvZ6bggZo15i0y3UZ6LdtM4ibWvCfjZen+ksEuvs xpjUe6Jjn6Lgirnn2iE3yXYk4tjlCXi+xHfCvioE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vinayak Holikatti , "James E.J. Bottomley" , "Martin K. Petersen" , linux-scsi@vger.kernel.org, Wei Li , Dmitry Shmidt , John Stultz , Sasha Levin Subject: [PATCH 4.19 009/118] scsi: ufs: Fix hynix ufs bug with quirk on hi36xx SoC Date: Tue, 11 Dec 2018 16:40:28 +0100 Message-Id: <20181211151644.599741132@linuxfoundation.org> X-Mailer: git-send-email 2.20.0 In-Reply-To: <20181211151644.216668863@linuxfoundation.org> References: <20181211151644.216668863@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 4.19-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit 8e4829c6f7470722c1f5a1dc5769ebe09ef036d6 ] 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 (H28U62301AMR model: hB8aL1). 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 Signed-off-by: Martin K. Petersen Signed-off-by: Sasha Levin --- 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(+) diff --git a/drivers/scsi/ufs/ufs-hisi.c b/drivers/scsi/ufs/ufs-hisi.c index 46df707e6f2c..452e19f8fb47 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 71f73d1d1ad1..5d2dfdb41a6f 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 54074dd483a7..0b81d9d03357 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, "hB8aL1" /*H28U62301AMR*/, + UFS_DEVICE_QUIRK_HOST_VS_DEBUGSAVECONFIGTIME), END_FIX }; -- 2.19.1