From patchwork Thu Dec 22 14:09:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Manivannan Sadhasivam X-Patchwork-Id: 13079968 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E2A88C4332F for ; Thu, 22 Dec 2022 14:28:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-Id:Date:Subject:Cc :To:From:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=cT58hpF+N9qC5/Qoen54lIFGNIC42YpcNoG4bkU6ZLs=; b=N7Km3KkKQCbThY BfgXGG17dyquPgNAVHFmDql1GkX9cWtLiNxipedBj2NiniBscl7l5x7WOOXj/WzpEWT0Knt3g6IwX DHxq584k1ABFXenJ8yzPS4WhgNXslp87sytWHz1nMxlSuwZuGXK2JlZ07RwHRmPprxaTeFwLUfJ2n nqMQTU3sIuWOnOd6a34ylnNo6tPyVk6p/4gUgtu8QLoJ7lPUoMmr3eYhxyBfRW/nlbfIinG8RLr/r +BrlIKHxA54Fpwi0aV9nhZnawD7gKyHUJB6gopp8jesWOs0o7aJAWwa+Bp6hJdljs+1kSYdjGQ4dP 45k2aKFJE+ufUovSf0Tw==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1p8MYF-00CxRp-Hm; Thu, 22 Dec 2022 14:28:03 +0000 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1p8MH4-00Cndh-3m for linux-phy@lists.infradead.org; Thu, 22 Dec 2022 14:10:20 +0000 Received: by mail-pj1-x102e.google.com with SMTP id u4-20020a17090a518400b00223f7eba2c4so1961049pjh.5 for ; Thu, 22 Dec 2022 06:10:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=maKazkqxDXKNlbDmatrsJr0yRFC5v9vVzKjjcP/hqRY=; b=AABuUZlxOnwe7CqeZepSq1GN/aiZtuPS0RScE5ISqZpaE4eO0AzrRnghARB1/opFOZ 99f03JZBJ3vnV1InjXwuwVX9kQMp9bYfoquYv9yPKgo3yBP3rhluCA6xn+7gPKHy9Gut 5JNDL7oL4Df40SKYlFOPEtYi397zLzjv3t7wSfkLik38CZE7lOn85gQLL/WjKYppeRRJ AYiMX8q6m3skqJ6KngLXeMdceoqj8OZYj1pANHsYo33QmzYpwRKVbtzLnUYSym29UBGJ rl1rB2/Ka+htTkwGvU03F5fM4ocHG4FhfBadmcZRbGjvZ1vbeCpkjZGqEFXrpPVICmWn OnrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=maKazkqxDXKNlbDmatrsJr0yRFC5v9vVzKjjcP/hqRY=; b=XBBxp6+bH3n5uhV6Q4VvvQeLyx4vvQgBehqmzSYoCRSbazH1/l1xw3SEvqrbTLAhs6 VxAR2WgA1YSSn3chmOEl+wVvTjI/2gDOYZ0V6W+9f7amcYIZBJ7Lxn/GC5rAT90feuQR QAL89wb8TN1KdMWII279GXCBRfXwMtBv4W1E3bWmU6nZKaZcDBtgvv5YCfhe4vFs0ucE yvapd5pODOHMrgQs+M/MUtJvCXY4nRO6fT84el90X9ASfIo5XnBXY9maQ6bpx1j50X5h Y/tai7ORQ+8XQZrdYlnWjEjf91HUMbRo6q7zy/QCd8dFemfrS6JVfJhPenaGD6JRXP5m PE4w== X-Gm-Message-State: AFqh2kp4IG0Nk7NwMqNccE2cCe691r93DnkK/P0u4Hisjsl84X2mHNte Fg/5PVvolqgeHD13j3ztXvuK X-Google-Smtp-Source: AMrXdXuF2JibIiTYzAmjvFYio+hNi+Z0b/bVtuZcp4sFJ3r90Z/OtlV9hB18rGs1wY4afwTgE4YybA== X-Received: by 2002:a05:6a21:3284:b0:ad:4a3e:a6e1 with SMTP id yt4-20020a056a21328400b000ad4a3ea6e1mr9736629pzb.11.1671718213733; Thu, 22 Dec 2022 06:10:13 -0800 (PST) Received: from localhost.localdomain ([117.217.177.177]) by smtp.gmail.com with ESMTPSA id f8-20020a655908000000b0047829d1b8eesm832031pgu.31.2022.12.22.06.10.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 22 Dec 2022 06:10:12 -0800 (PST) From: Manivannan Sadhasivam To: martin.petersen@oracle.com, jejb@linux.ibm.com, andersson@kernel.org, vkoul@kernel.org Cc: quic_cang@quicinc.com, quic_asutoshd@quicinc.com, linux-arm-msm@vger.kernel.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org, linux-scsi@vger.kernel.org, dmitry.baryshkov@linaro.org, ahalaney@redhat.com, abel.vesa@linaro.org, alim.akhtar@samsung.com, avri.altman@wdc.com, bvanassche@acm.org, Manivannan Sadhasivam Subject: [PATCH v5 00/23] ufs: qcom: Add HS-G4 support Date: Thu, 22 Dec 2022 19:39:38 +0530 Message-Id: <20221222141001.54849-1-manivannan.sadhasivam@linaro.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221222_061018_247186_893F03A7 X-CRM114-Status: GOOD ( 17.61 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org Hello, This series adds HS-G4 support to the Qcom UFS driver and PHY driver. The newer Qcom platforms support configuring the UFS controller and PHY in dual gears (i.e., controller/PHY can be configured to run in two gear speeds). This is accomplished by adding two different PHY init sequences to the PHY driver and the UFS driver requesting the one that's required based on the platform configuration. Initially the ufs-qcom driver will use the default gear G2 for enumerating the UFS device. Afer enumeration, the max gear supported by both the controller and device would be found out and that will be used thereafter. But for using the max gear after enumeration, the ufs-qcom driver requires the UFS device to be reinitialized. For this purpose, a separate quirk has been introduced in the UFS core along with a callback and those will be used by the ufs-qcom driver. This series has been tested on following platforms: * Qcom RB5 development platform powered by SM8250 SoC * SM8450 based dev board * Qdrive3/sa8540p-ride board based on SC8280XP (derivative) Merging Strategy: ----------------- The PHY patches are expected to go through PHY tree and UFS, MAINTAINERS patches are expected to go through SCSI tree. NOTE: Since this series targets multiple SoCs (base like SM8350) and (derivative like SC8280XP), testing on all of these platforms is really appreciated. Although, if the series works for base SoC, then for derivatives also it should work. Thanks, Mani Changes in v5: * Collected Review and tested-by tags * Reworded patch 18/23 (Bart) and also the comment for reinit_notify Changes in v4: * Dropped HS G3 specific setting from SM8350 default init sequence * Added G4 support to SM8350 and SC8280XP * Covered all qcom files under drivers/ufs/host in MAINTAINERS file * Added missing Suggested-by tags for Can Guo * Rebased on top of linux-next 20221201 Changes in v3: * Dropped the "device-max-gear" DT property and switched to reinitialization (Krzysztof) * Added HS-G4 support to all compatible SoCs (SM8150, SM8250 and SM8450). This will also benefit the derivative SoCs of these platforms like SC8180x, SC8280x etc... * Splitted the qmp_phy_init_tbl changes into separate patches (Vinod) * Collected reviews from Andrew H Changes in v2: * Collected reviews from Dmitry * Renamed "max-gear" property to "max-device-gear" * Used min() for deciding which gear to use instead of open comparision * Added comment about the old register name Manivannan Sadhasivam (23): phy: qcom-qmp-ufs: Remove _tbl suffix from qmp_phy_init_tbl definitions phy: qcom-qmp-ufs: Rename MSM8996 PHY definitions phy: qcom-qmp-ufs: Move register settings to qmp_phy_cfg_tbls struct phy: qcom-qmp-ufs: Add support for configuring PHY in HS Series B mode phy: qcom-qmp-ufs: Add support for configuring PHY in HS G4 mode phy: qcom-qmp-ufs: Move HS Rate B register setting to tbls_hs_b phy: qcom-qmp-ufs: Add HS G4 mode support to SM8150 SoC phy: qcom-qmp-ufs: Add HS G4 mode support to SM8250 SoC phy: qcom-qmp-ufs: Avoid setting HS G3 specific registers phy: qcom-qmp-ufs: Add HS G4 mode support to SM8350 SoC phy: qcom-qmp-ufs: Add HS G4 mode support to SM8450 SoC phy: qcom-qmp-ufs: Add HS G4 mode support to SC8280XP SoC scsi: ufs: ufs-qcom: Remove un-necessary goto statements scsi: ufs: ufs-qcom: Remove un-necessary WARN_ON() scsi: ufs: ufs-qcom: Use bitfields where appropriate scsi: ufs: ufs-qcom: Use dev_err_probe() for printing probe error scsi: ufs: ufs-qcom: Fix the Qcom register name for offset 0xD0 scsi: ufs: core: Add reinit_notify() callback scsi: ufs: core: Add support for reinitializing the UFS device scsi: ufs: ufs-qcom: Factor out the logic finding the HS Gear scsi: ufs: ufs-qcom: Add support for reinitializing the UFS device scsi: ufs: ufs-qcom: Add support for finding max gear on new platforms MAINTAINERS: Add myself as the maintainer for Qcom UFS drivers MAINTAINERS | 8 + .../phy/qualcomm/phy-qcom-qmp-pcs-ufs-v5.h | 1 + drivers/phy/qualcomm/phy-qcom-qmp-ufs.c | 454 +++++++++++++----- drivers/ufs/core/ufshcd-priv.h | 6 + drivers/ufs/core/ufshcd.c | 63 ++- drivers/ufs/host/ufs-qcom.c | 170 +++---- drivers/ufs/host/ufs-qcom.h | 70 +-- include/ufs/ufshcd.h | 8 + 8 files changed, 532 insertions(+), 248 deletions(-)