From patchwork Sat May 21 00:53:36 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 575282 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6D904C4332F for ; Sat, 21 May 2022 00:53:53 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354256AbiEUAxw (ORCPT ); Fri, 20 May 2022 20:53:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40522 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354220AbiEUAxw (ORCPT ); Fri, 20 May 2022 20:53:52 -0400 Received: from mail-lf1-x12b.google.com (mail-lf1-x12b.google.com [IPv6:2a00:1450:4864:20::12b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 60CBE1AEC45 for ; Fri, 20 May 2022 17:53:50 -0700 (PDT) Received: by mail-lf1-x12b.google.com with SMTP id p4so15533953lfg.4 for ; Fri, 20 May 2022 17:53:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=iTwcnMPK/uOFAtpzBBBqGJyJk/tYLfG82bGKVHNiQsk=; b=lZ2VOkbYP9lviPyfAK05MtfD0SAgOf3bYi747lLPI8cjFhnNfZOSpaKAACwRlIZP0B JHZ8QsLcg5t2geNWbQcD6MIbbqUdsHkWPOJ0PowEwYgTCds1QeBMdn9S2WiIjdPQ9RC8 0paHvtgo8TivLgzb0h5XY4DVPzk7qqgvG7EPkykIuwuZeHFyB/CVbVfjHKwsF8eePxDp 1CxFjr6nu3VOgukRvDjOckPkNl3uPwrtybDIiRVJEDd4c5wDG8WpN0LhZ6aoxDjWxdUE Xhcx8CdkSPm4LIQnBBLZOM3Ngd6ZHW98FLMOxiZAoK8vVErvq6azn2CYGIPa7rjgHQZo YTVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=iTwcnMPK/uOFAtpzBBBqGJyJk/tYLfG82bGKVHNiQsk=; b=K0U/OfeTBZzvEsGJW0e9Am9US+L0tzq1fJkrvTmmUeRWIRG6MgDBwLdotuRUeSIqX/ 1enJ17aFJfTjq29E7tpBLs7NuuFgGAXx/y6bmHBCF2Fik7as37faTsplSIjARqyjSS0L OkeNL46RxxbNkXbSOEstV32im9v4Zm1qz1j8MuFoeDi/sFer+h/yRNznsz/DiPzXRTV1 yTExgalXgGBdJXlo/F1BY0JiBTTJVx4zSCFIkJwxSijL04TpeGMezuBX6l1c9OMIm6H7 jXfdJ66dzbIR1W5QEQ2NOctlSOGs+8sfrhyDP2vj7lqdThUXU69s6F2Rb6XZNRm7dVpA k/kg== X-Gm-Message-State: AOAM531CP+vKlWICKMAeEtIsAx3dQ4CFkhjhB+rmv+lfl7xEBhzdRB3A 1zP7H6xLst1hxCwpEFKAQyTUcw== X-Google-Smtp-Source: ABdhPJz/BG7MamF6hpFcbIBht3YurAK/b6f7pBbmP1btEEFcqxfkJ/QGdZEBk2Ff6hp2Zh76byL4ug== X-Received: by 2002:ac2:58ca:0:b0:477:d64e:3fbf with SMTP id u10-20020ac258ca000000b00477d64e3fbfmr5228364lfo.60.1653094428750; Fri, 20 May 2022 17:53:48 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:47 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 1/8] Revert "clk: qcom: gcc-sm8450: use new clk_regmap_mux_safe_ops for PCIe pipe clocks" Date: Sat, 21 May 2022 03:53:36 +0300 Message-Id: <20220521005343.1429642-2-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Johan Hovold has pointed out that there are several deficiencies and a race condition in the regmap_mux_safe ops that were merged. Revert the commit that switches gcc-sm8450 driver to use regmap_mux_safe. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/gcc-sm8450.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c index fb6decd3df49..593a195467ff 100644 --- a/drivers/clk/qcom/gcc-sm8450.c +++ b/drivers/clk/qcom/gcc-sm8450.c @@ -243,14 +243,13 @@ static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = { .reg = 0x7b060, .shift = 0, .width = 2, - .safe_src_parent = P_BI_TCXO, .parent_map = gcc_parent_map_4, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_0_pipe_clk_src", .parent_data = gcc_parent_data_4, .num_parents = ARRAY_SIZE(gcc_parent_data_4), - .ops = &clk_regmap_mux_safe_ops, + .ops = &clk_regmap_mux_closest_ops, }, }, }; @@ -274,14 +273,13 @@ static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = { .reg = 0x9d064, .shift = 0, .width = 2, - .safe_src_parent = P_BI_TCXO, .parent_map = gcc_parent_map_6, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_1_pipe_clk_src", .parent_data = gcc_parent_data_6, .num_parents = ARRAY_SIZE(gcc_parent_data_6), - .ops = &clk_regmap_mux_safe_ops, + .ops = &clk_regmap_mux_closest_ops, }, }, }; From patchwork Sat May 21 00:53:37 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 574998 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id AA9A5C433F5 for ; Sat, 21 May 2022 00:53:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354075AbiEUAxy (ORCPT ); Fri, 20 May 2022 20:53:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40562 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354261AbiEUAxx (ORCPT ); Fri, 20 May 2022 20:53:53 -0400 Received: from mail-lf1-x132.google.com (mail-lf1-x132.google.com [IPv6:2a00:1450:4864:20::132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 616B61AEC6C for ; Fri, 20 May 2022 17:53:52 -0700 (PDT) Received: by mail-lf1-x132.google.com with SMTP id br17so4630734lfb.2 for ; Fri, 20 May 2022 17:53:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=2uivrgmJUAM211xuglcveu2q7wPnyfsAfIjgsQu02+M=; b=jBxq1FVyXlncQ83UZr1Q0Wf3yGyUK4h0JrcyJVkJNw0Zyy1IhRim8gO+xMX6YnGdhX 2EheDy5M/yM7YUQGRHRAUWaUpPnPS9xqZkHAFsN3aWPkoPc+AqYh2FZJ4pAJeZ+L9lyr 6+i0iKhE1U1yZfk5obJ94F3M/93Os8kl1fRmvXPXr5/g+IfB3/rL1yXAva0EEnyT4RUT CCYPi40jlIQEY5/lQGi84PYNtu61t4hsDzZQVo1zoY7cmi2/3IBpHRmR0nFJrq6Sah6b GAtiD2Pj3fSXCL5qF/QV7QOyAYzvVVPEDXWEM2ts/nI7vvW8Sk8jHtI6d8ni4I2rYgHR Pe3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=2uivrgmJUAM211xuglcveu2q7wPnyfsAfIjgsQu02+M=; b=zNuPxVNLCxLQOE5eNyTg8yiaFwhWuhx/ESVLSYbr6mJQuSsI7YrNS6X/bN68nDx2z0 gfLiZPWavlJCAzzghNoNm4aG8mRgIxbYoVNJ4tsK8asbpHkKlXqtfHMJm05M8s+E1Er3 IDPVCxcOTVRuKYqNhvn110/ocECImjMpAybR8U6869TpzBzr1v7JZbruTRK64j3UWJZY sy+R28rjQGMW7mFykPHpOAnyGhzb/AInelhvrRZaUjFMTMwOmSRMTRRSRwRNlkRk3u2l nG/a9voBt4dVRjXRsn0pB/eQOL5TiHQfbwgjZ9g8lzNBRl8jqUqmP8TVWG+eE5wcrM5i nFOw== X-Gm-Message-State: AOAM533Q7lAKEa9RlfHAxlossV8e+W1SSFtPDUNtRH2Cw7rIko796o9q 6oETkPscDRo3WlitXiVGzKBYGw== X-Google-Smtp-Source: ABdhPJyPJ+GS6D2f4TxyaBYfEDzLbHqWhVLrlipJNaFEwO8/Z8qzqJIvdNZHHVQqK5BAvJAKJpabIg== X-Received: by 2002:a19:5043:0:b0:477:cc18:840a with SMTP id z3-20020a195043000000b00477cc18840amr6649401lfj.437.1653094430782; Fri, 20 May 2022 17:53:50 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:49 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 2/8] Revert "clk: qcom: gcc-sc7280: use new clk_regmap_mux_safe_ops for PCIe pipe clocks" Date: Sat, 21 May 2022 03:53:37 +0300 Message-Id: <20220521005343.1429642-3-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Johan Hovold has pointed out that there are several deficiencies and a race condition in the regmap_mux_safe ops that were merged. Revert the commit that switches gcc-sc7280 driver to use regmap_mux_safe. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/gcc-sc7280.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/drivers/clk/qcom/gcc-sc7280.c b/drivers/clk/qcom/gcc-sc7280.c index dafbbc8f3bf4..423627d49719 100644 --- a/drivers/clk/qcom/gcc-sc7280.c +++ b/drivers/clk/qcom/gcc-sc7280.c @@ -373,14 +373,13 @@ static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = { .reg = 0x6b054, .shift = 0, .width = 2, - .safe_src_parent = P_BI_TCXO, .parent_map = gcc_parent_map_6, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_0_pipe_clk_src", .parent_data = gcc_parent_data_6, .num_parents = ARRAY_SIZE(gcc_parent_data_6), - .ops = &clk_regmap_mux_safe_ops, + .ops = &clk_regmap_mux_closest_ops, }, }, }; @@ -389,14 +388,13 @@ static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = { .reg = 0x8d054, .shift = 0, .width = 2, - .safe_src_parent = P_BI_TCXO, .parent_map = gcc_parent_map_7, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_1_pipe_clk_src", .parent_data = gcc_parent_data_7, .num_parents = ARRAY_SIZE(gcc_parent_data_7), - .ops = &clk_regmap_mux_safe_ops, + .ops = &clk_regmap_mux_closest_ops, }, }, }; From patchwork Sat May 21 00:53:38 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 575281 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0D440C4332F for ; Sat, 21 May 2022 00:53:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354268AbiEUAx4 (ORCPT ); Fri, 20 May 2022 20:53:56 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40618 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354261AbiEUAxz (ORCPT ); Fri, 20 May 2022 20:53:55 -0400 Received: from mail-lj1-x232.google.com (mail-lj1-x232.google.com [IPv6:2a00:1450:4864:20::232]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47F491AD5B0 for ; Fri, 20 May 2022 17:53:54 -0700 (PDT) Received: by mail-lj1-x232.google.com with SMTP id a23so11259954ljd.9 for ; Fri, 20 May 2022 17:53:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=/RGgCjrjOEbLbfHEEFuHyMmpO24+VFgBBynfKXgtyIM=; b=aYFIaFNqXOHKeGpn8CCECW50lTWmPbPsNo50ceqPkNhm6W7SxZ/sDYFwn2XvjpTNsw WbVj/nQy3nnqmlzTlUbfskR09m0Ryq3CkuqAxLUPB8YY4P2BGU7c8rHTxqCR66nQEl9x LN1ldQpNmWwUQiDoLX63dyEBkvf6TNEkVwcPCRIc2ZXQTrF+98KcNsZaPHU0ojp9G3Y4 /4ITMxYHfAwEBop2+2WTYyl8yO+9GdHERUHWvksaZ/rc4jZRg6DoT6haHTqqKVkZn7cE k6+WiYXEU5FAgSNdAcw+xAv3QzLSd8HM99OOYRiFQ+SD5yi7GpwbyXWH0Z8D5qJn6UwG 22Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=/RGgCjrjOEbLbfHEEFuHyMmpO24+VFgBBynfKXgtyIM=; b=hZRbeLeF0l78Q0UtAIdK0o3qPt6PaUkxfFnQVrv3UfN0xKl8s4srI7f+PTIKaJ7v+s Yl4mDD++Y9Qu+UiDnLjsycrTiogL2bE5z5/mY3dAsZYIBCikf8kHlviZfUgYg/QDpwI2 buPyn2nZuSME7f+nqPv7w0XsQSp82R45txJOyCn1iJ1Z9P4nczn8VLV/8l4YqTmfi09A qqOT0SxnFfxPYFXsItpGJj8PsMX7g4wjFBTvEP0yfG5fbRwrDcQHwLJ9n1VUjek41FDi 4MR6w+YSEaKkzoLZZgOup727aS9FaJJX4d1SXT8Cs5cNT6lRUufvfhOvhmFoJMOa+Qtn D2FA== X-Gm-Message-State: AOAM531l9TKL4IUsDfbWcO+NawO6PKUZoAi5/nbRxMimVFcGkGqyESW5 zmZA5L6wqynr80Jgn7adtXPAfkGBim3O/A== X-Google-Smtp-Source: ABdhPJxCiyHYeH4fovqCoF/55SAXj3vj2ykToH0c4BQ/dbKIUwNUQYjiqEb56ZYRjdpgsRFKIT2+3Q== X-Received: by 2002:a2e:9019:0:b0:250:8205:dfb4 with SMTP id h25-20020a2e9019000000b002508205dfb4mr6782491ljg.396.1653094432506; Fri, 20 May 2022 17:53:52 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:51 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 3/8] Revert "clk: qcom: regmap-mux: add pipe clk implementation" Date: Sat, 21 May 2022 03:53:38 +0300 Message-Id: <20220521005343.1429642-4-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Johan Hovold has pointed out that there are several deficiencies and a race condition in the regmap_mux_safe ops that were merged. Pipe clocks has been updated to use newer and simpler clk_regmap_phy_mux_ops. Drop the regmap-mux-safe clock ops now. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/clk-regmap-mux.c | 78 ------------------------------- drivers/clk/qcom/clk-regmap-mux.h | 3 -- 2 files changed, 81 deletions(-) diff --git a/drivers/clk/qcom/clk-regmap-mux.c b/drivers/clk/qcom/clk-regmap-mux.c index c39ee783ee83..45d9cca28064 100644 --- a/drivers/clk/qcom/clk-regmap-mux.c +++ b/drivers/clk/qcom/clk-regmap-mux.c @@ -49,87 +49,9 @@ static int mux_set_parent(struct clk_hw *hw, u8 index) return regmap_update_bits(clkr->regmap, mux->reg, mask, val); } -static u8 mux_safe_get_parent(struct clk_hw *hw) -{ - struct clk_regmap_mux *mux = to_clk_regmap_mux(hw); - unsigned int val; - - if (clk_hw_is_enabled(hw)) - return mux_get_parent(hw); - - val = mux->stored_parent_cfg; - - if (mux->parent_map) - return qcom_find_cfg_index(hw, mux->parent_map, val); - - return val; -} - -static int mux_safe_set_parent(struct clk_hw *hw, u8 index) -{ - struct clk_regmap_mux *mux = to_clk_regmap_mux(hw); - - if (clk_hw_is_enabled(hw)) - return mux_set_parent(hw, index); - - if (mux->parent_map) - index = mux->parent_map[index].cfg; - - mux->stored_parent_cfg = index; - - return 0; -} - -static void mux_safe_disable(struct clk_hw *hw) -{ - struct clk_regmap_mux *mux = to_clk_regmap_mux(hw); - struct clk_regmap *clkr = to_clk_regmap(hw); - unsigned int mask = GENMASK(mux->width + mux->shift - 1, mux->shift); - unsigned int val; - - regmap_read(clkr->regmap, mux->reg, &val); - - mux->stored_parent_cfg = (val & mask) >> mux->shift; - - val = mux->safe_src_parent; - if (mux->parent_map) { - int index = qcom_find_src_index(hw, mux->parent_map, val); - - if (WARN_ON(index < 0)) - return; - - val = mux->parent_map[index].cfg; - } - val <<= mux->shift; - - regmap_update_bits(clkr->regmap, mux->reg, mask, val); -} - -static int mux_safe_enable(struct clk_hw *hw) -{ - struct clk_regmap_mux *mux = to_clk_regmap_mux(hw); - struct clk_regmap *clkr = to_clk_regmap(hw); - unsigned int mask = GENMASK(mux->width + mux->shift - 1, mux->shift); - unsigned int val; - - val = mux->stored_parent_cfg; - val <<= mux->shift; - - return regmap_update_bits(clkr->regmap, mux->reg, mask, val); -} - const struct clk_ops clk_regmap_mux_closest_ops = { .get_parent = mux_get_parent, .set_parent = mux_set_parent, .determine_rate = __clk_mux_determine_rate_closest, }; EXPORT_SYMBOL_GPL(clk_regmap_mux_closest_ops); - -const struct clk_ops clk_regmap_mux_safe_ops = { - .enable = mux_safe_enable, - .disable = mux_safe_disable, - .get_parent = mux_safe_get_parent, - .set_parent = mux_safe_set_parent, - .determine_rate = __clk_mux_determine_rate_closest, -}; -EXPORT_SYMBOL_GPL(clk_regmap_mux_safe_ops); diff --git a/drivers/clk/qcom/clk-regmap-mux.h b/drivers/clk/qcom/clk-regmap-mux.h index f86c674ce139..db6f4cdd9586 100644 --- a/drivers/clk/qcom/clk-regmap-mux.h +++ b/drivers/clk/qcom/clk-regmap-mux.h @@ -14,13 +14,10 @@ struct clk_regmap_mux { u32 reg; u32 shift; u32 width; - u8 safe_src_parent; - u8 stored_parent_cfg; const struct parent_map *parent_map; struct clk_regmap clkr; }; extern const struct clk_ops clk_regmap_mux_closest_ops; -extern const struct clk_ops clk_regmap_mux_safe_ops; #endif From patchwork Sat May 21 00:53:39 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 574997 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BF885C433FE for ; Sat, 21 May 2022 00:53:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354258AbiEUAx5 (ORCPT ); Fri, 20 May 2022 20:53:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40648 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354273AbiEUAx4 (ORCPT ); Fri, 20 May 2022 20:53:56 -0400 Received: from mail-lf1-x130.google.com (mail-lf1-x130.google.com [IPv6:2a00:1450:4864:20::130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EAF1D1AEC54 for ; Fri, 20 May 2022 17:53:54 -0700 (PDT) Received: by mail-lf1-x130.google.com with SMTP id u30so16924348lfm.9 for ; Fri, 20 May 2022 17:53:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=T+YiK8dxsrGm0m2VhiIGzrrysQ7BgDNB7nIlgNquoww=; b=sSIXdE9p5G79cWnri1fdGlFgZb76DuCz93192G8Ry0Ksrk4jLE8H5YZ3qzVust7aMO nYDIoRWJKjVQP0xXSMnnLi6SkNRw9yfOGMo0jUfH67MImHJflnyuc8rpt8mtMKIuFyPH X6EPY7eCfJunW57xE1IVqa3xunNJBh/AtBnAXR8fucVqoOB41Crqj1m9RGVL0BG2aLiL 95mzaogqx5/ZQHGb4MlwNMp++vPW5q6BohkucswofxW1yXhF4NOdJsSnynLpWmIW5ysZ RQlFJOH5TUETMpqLmuN2EtivwkgFnf2p0d9RRCqNOPjSn50DXfdEkXkVO0fgIzWoMCd+ qj5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=T+YiK8dxsrGm0m2VhiIGzrrysQ7BgDNB7nIlgNquoww=; b=RL91GC31B2OMoDIq7hufNIp6R2lJ7jVT/d4Y0VT8go1TiPBztGXI46euTC7Z8im32k o5AqmRoFwCLi0zSValUwfrmhlkuR0Al3GLPx1cIbrTtAx4O6W/5n7weewn71ktwyONMT mYEuZ8NWqeZtokaBpHcm43BbY82qBfRVJVE1OqKbAnJjs27iyl387ha9FfnI/IhAKFuf 8W5qN6XYtFgizzHkfDmXKqFWOU48XjdsEafk6OSPX3ybED7o0QL0fK2mjQXxaon6cWoe QiRQFpfdOCnfmb3rbFunUyKBQDYE/wBq2RME+C7VmVa2AxjIUHKKEb/Ki3so7cjRCbUM WLUw== X-Gm-Message-State: AOAM5332FSwU0cwBWw61CP2Fu/icKfSFaS4OF0o+jnD+lJp0Qu5pZaN8 SenvXqGxYalG4Rgc4kbwIP2Ihg== X-Google-Smtp-Source: ABdhPJxEqoUT09DUnay3AI+EsKfFnUjXPSHSi6TWr+Zj+GeIKtsXACbcpOQGvEZy4t1WkoXRr4iFGw== X-Received: by 2002:a05:6512:3b93:b0:474:188b:1c99 with SMTP id g19-20020a0565123b9300b00474188b1c99mr8708430lfv.549.1653094434408; Fri, 20 May 2022 17:53:54 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:53 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 4/8] clk: qcom: regmap: add PHY clock source implementation Date: Sat, 21 May 2022 03:53:39 +0300 Message-Id: <20220521005343.1429642-5-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org On recent Qualcomm platforms the QMP PIPE clocks feed into a set of muxes which must be parked to the "safe" source (bi_tcxo) when corresponding GDSC is turned off and on again. Currently this is handcoded in the PCIe driver by reparenting the gcc_pipe_N_clk_src clock. However the same code sequence should be applied in the pcie-qcom endpoint, USB3 and UFS drivers. Rather than copying this sequence over and over again, follow the example of clk_rcg2_shared_ops and implement this parking in the enable() and disable() clock operations. Supplement the regmap-mux with the new clk_regmap_phy_mux type, which implements such multiplexers as a simple gate clocks. This is possible since each of these multiplexers has just two clock sources: one coming from the PHY and a reference (XO) one. If the clock is running off the from-PHY source, report it as enabled. Report it as disabled otherwise (if it uses reference source). This way the PHY will disable the pipe clock before turning off the GDSC, which in turn would lead to disabling corresponding pipe_clk_src (and thus it being parked to a safe, reference clock source). And vice versa, after enabling the GDSC the PHY will enable the pipe clock, which would cause pipe_clk_src to be switched from a safe source to the working one. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/Makefile | 1 + drivers/clk/qcom/clk-regmap-phy-mux.c | 62 +++++++++++++++++++++++++++ drivers/clk/qcom/clk-regmap-phy-mux.h | 33 ++++++++++++++ 3 files changed, 96 insertions(+) create mode 100644 drivers/clk/qcom/clk-regmap-phy-mux.c create mode 100644 drivers/clk/qcom/clk-regmap-phy-mux.h diff --git a/drivers/clk/qcom/Makefile b/drivers/clk/qcom/Makefile index 36789f5233ef..08594230c1c1 100644 --- a/drivers/clk/qcom/Makefile +++ b/drivers/clk/qcom/Makefile @@ -11,6 +11,7 @@ clk-qcom-y += clk-branch.o clk-qcom-y += clk-regmap-divider.o clk-qcom-y += clk-regmap-mux.o clk-qcom-y += clk-regmap-mux-div.o +clk-qcom-y += clk-regmap-phy-mux.o clk-qcom-$(CONFIG_KRAIT_CLOCKS) += clk-krait.o clk-qcom-y += clk-hfpll.o clk-qcom-y += reset.o diff --git a/drivers/clk/qcom/clk-regmap-phy-mux.c b/drivers/clk/qcom/clk-regmap-phy-mux.c new file mode 100644 index 000000000000..a1adc075b471 --- /dev/null +++ b/drivers/clk/qcom/clk-regmap-phy-mux.c @@ -0,0 +1,62 @@ +// SPDX-License-Identifier: GPL-2.0-only +/* + * Copyright (c) 2022, Linaro Ltd. + */ + +#include +#include +#include +#include + +#include "clk-regmap.h" +#include "clk-regmap-phy-mux.h" + +#define PHY_MUX_MASK GENMASK(1, 0) +#define PHY_MUX_PHY_SRC 0 +#define PHY_MUX_REF_SRC 2 + +static inline struct clk_regmap_phy_mux *to_clk_regmap_phy_mux(struct clk_regmap *clkr) +{ + return container_of(clkr, struct clk_regmap_phy_mux, clkr); +} + +static int phy_mux_is_enabled(struct clk_hw *hw) +{ + struct clk_regmap *clkr = to_clk_regmap(hw); + struct clk_regmap_phy_mux *phy_mux = to_clk_regmap_phy_mux(clkr); + unsigned int val; + + regmap_read(clkr->regmap, phy_mux->reg, &val); + val = FIELD_GET(PHY_MUX_MASK, val); + + WARN_ON(val != PHY_MUX_PHY_SRC && val != PHY_MUX_REF_SRC); + + return val == PHY_MUX_PHY_SRC; +} + +static int phy_mux_enable(struct clk_hw *hw) +{ + struct clk_regmap *clkr = to_clk_regmap(hw); + struct clk_regmap_phy_mux *phy_mux = to_clk_regmap_phy_mux(clkr); + + return regmap_update_bits(clkr->regmap, phy_mux->reg, + PHY_MUX_MASK, + FIELD_PREP(PHY_MUX_MASK, PHY_MUX_PHY_SRC)); +} + +static void phy_mux_disable(struct clk_hw *hw) +{ + struct clk_regmap *clkr = to_clk_regmap(hw); + struct clk_regmap_phy_mux *phy_mux = to_clk_regmap_phy_mux(clkr); + + regmap_update_bits(clkr->regmap, phy_mux->reg, + PHY_MUX_MASK, + FIELD_PREP(PHY_MUX_MASK, PHY_MUX_REF_SRC)); +} + +const struct clk_ops clk_regmap_phy_mux_ops = { + .enable = phy_mux_enable, + .disable = phy_mux_disable, + .is_enabled = phy_mux_is_enabled, +}; +EXPORT_SYMBOL_GPL(clk_regmap_phy_mux_ops); diff --git a/drivers/clk/qcom/clk-regmap-phy-mux.h b/drivers/clk/qcom/clk-regmap-phy-mux.h new file mode 100644 index 000000000000..614dd384695c --- /dev/null +++ b/drivers/clk/qcom/clk-regmap-phy-mux.h @@ -0,0 +1,33 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ +/* + * Copyright (c) 2022, Linaro Ltd. + */ + +#ifndef __QCOM_CLK_REGMAP_PHY_MUX_H__ +#define __QCOM_CLK_REGMAP_PHY_MUX_H__ + +#include "clk-regmap.h" + +/* + * A clock implementation for PHY pipe and symbols clock muxes. + * + * If the clock is running off the from-PHY source, report it as enabled. + * Report it as disabled otherwise (if it uses reference source). + * + * This way the PHY will disable the pipe clock before turning off the GDSC, + * which in turn would lead to disabling corresponding pipe_clk_src (and thus + * it being parked to a safe, reference clock source). And vice versa, after + * enabling the GDSC the PHY will enable the pipe clock, which would cause + * pipe_clk_src to be switched from a safe source to the working one. + * + * For some platforms this should be used for the UFS symbol_clk_src clocks + * too. + */ +struct clk_regmap_phy_mux { + u32 reg; + struct clk_regmap clkr; +}; + +extern const struct clk_ops clk_regmap_phy_mux_ops; + +#endif From patchwork Sat May 21 00:53:40 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 575280 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 756DEC43217 for ; Sat, 21 May 2022 00:54:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354278AbiEUAx7 (ORCPT ); Fri, 20 May 2022 20:53:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40730 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237569AbiEUAx7 (ORCPT ); Fri, 20 May 2022 20:53:59 -0400 Received: from mail-lf1-x133.google.com (mail-lf1-x133.google.com [IPv6:2a00:1450:4864:20::133]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id ECA6C1AEC74 for ; Fri, 20 May 2022 17:53:57 -0700 (PDT) Received: by mail-lf1-x133.google.com with SMTP id w14so16891023lfl.13 for ; Fri, 20 May 2022 17:53:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tCXX/Suoor8FeffrE1PZMey9/yk9K9HFCl7bJI8LK0Q=; b=PlsLnRZcE5o5c21WAKOxrI+RFu+D9tCU4ItCkD3uB7kQJqcGo6ICMyMnpclygpW75I 2TZMKLYr8udTVj4jemfrgWP1kSmOU+XTmeHpX3p4oT8L6NJOg87uwmx9omlaGVcKdQhx +VRhIJXyzPKefp7amL7ndHZ2gr8JemZVJXVq/1PbWupzgE+TUAv41xmpL+igUm+LZrNR BV7410xcTzGh0p//BZF8xPiJAM5k44qNntdAIBj6s6JYBMSrK35nDj8XIABFgTAkGrRo LoQ+Ng94JfbMXufcR44Jgz3ejQa6d9E4p5LV3bf1+Orn+KprDA556BsVFVbxJQEHjHA7 uHyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tCXX/Suoor8FeffrE1PZMey9/yk9K9HFCl7bJI8LK0Q=; b=dnBa1I0dShFoZ/PEMTJbwdKr+aFqiWyngsN0/ggKmml3OK2NtativgZB5x5KznTBUx GX758zPqDSl5MnS2WMeH3IAHvRzzL4dlezmfoIiJ+wse4ZbBuxGuIFgtNQW22bQSS7iV RMF3wnLEobGQpuHL4Dm95C2K/zVVWu0RhA6DsBTygvoNzzbHZ1n7G6nnCf7toLcPP/A9 2kM0yrHnH3SdLOq/Tma0/pxHI6W4wrhHvgwarhPAl+GhIAji+nA79fMVRW1gLp5UxZ7h 3olMiv82Bv7K9aIBDbWPlObXpYai4a8G8R6NhPJ9tuEk1PTmRmjdAs7IJ6DBQavrhq9g fZ3A== X-Gm-Message-State: AOAM532Fxu8WPE1wr4Ody3UIue/G3LPKxOpOtaPA+YnUdQOAUn+buDbi 0PeX9kuK4JfWFdl+WtquKK9PjA== X-Google-Smtp-Source: ABdhPJwR8SMI8cuMaG6W/ZmbnrRoPehYtmZ2aeM3FsEEZEsYO8mVlIjJ1epF+iXD9ZQ/+qSTqVJxSA== X-Received: by 2002:a05:6512:39cd:b0:477:a28e:bb69 with SMTP id k13-20020a05651239cd00b00477a28ebb69mr8637331lfu.438.1653094436120; Fri, 20 May 2022 17:53:56 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:55 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 5/8] clk: qcom: gcc-sm8450: use new clk_regmap_phy_mux_ops for PCIe pipe clocks Date: Sat, 21 May 2022 03:53:40 +0300 Message-Id: <20220521005343.1429642-6-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Use newly defined clk_regmap_phy_mux_ops for PCIe pipe clocks to let the clock framework automatically park the clock when the clock is switched off and restore the parent when the clock is switched on. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/gcc-sm8450.c | 49 ++++++++++------------------------- 1 file changed, 13 insertions(+), 36 deletions(-) diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c index 593a195467ff..666efa5ff978 100644 --- a/drivers/clk/qcom/gcc-sm8450.c +++ b/drivers/clk/qcom/gcc-sm8450.c @@ -17,6 +17,7 @@ #include "clk-regmap.h" #include "clk-regmap-divider.h" #include "clk-regmap-mux.h" +#include "clk-regmap-phy-mux.h" #include "gdsc.h" #include "reset.h" @@ -26,9 +27,7 @@ enum { P_GCC_GPLL0_OUT_MAIN, P_GCC_GPLL4_OUT_MAIN, P_GCC_GPLL9_OUT_MAIN, - P_PCIE_0_PIPE_CLK, P_PCIE_1_PHY_AUX_CLK, - P_PCIE_1_PIPE_CLK, P_SLEEP_CLK, P_UFS_PHY_RX_SYMBOL_0_CLK, P_UFS_PHY_RX_SYMBOL_1_CLK, @@ -153,16 +152,6 @@ static const struct clk_parent_data gcc_parent_data_3[] = { { .fw_name = "bi_tcxo" }, }; -static const struct parent_map gcc_parent_map_4[] = { - { P_PCIE_0_PIPE_CLK, 0 }, - { P_BI_TCXO, 2 }, -}; - -static const struct clk_parent_data gcc_parent_data_4[] = { - { .fw_name = "pcie_0_pipe_clk", }, - { .fw_name = "bi_tcxo", }, -}; - static const struct parent_map gcc_parent_map_5[] = { { P_PCIE_1_PHY_AUX_CLK, 0 }, { P_BI_TCXO, 2 }, @@ -173,16 +162,6 @@ static const struct clk_parent_data gcc_parent_data_5[] = { { .fw_name = "bi_tcxo" }, }; -static const struct parent_map gcc_parent_map_6[] = { - { P_PCIE_1_PIPE_CLK, 0 }, - { P_BI_TCXO, 2 }, -}; - -static const struct clk_parent_data gcc_parent_data_6[] = { - { .fw_name = "pcie_1_pipe_clk" }, - { .fw_name = "bi_tcxo" }, -}; - static const struct parent_map gcc_parent_map_7[] = { { P_BI_TCXO, 0 }, { P_GCC_GPLL0_OUT_MAIN, 1 }, @@ -239,17 +218,16 @@ static const struct clk_parent_data gcc_parent_data_11[] = { { .fw_name = "bi_tcxo" }, }; -static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = { +static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = { .reg = 0x7b060, - .shift = 0, - .width = 2, - .parent_map = gcc_parent_map_4, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_0_pipe_clk_src", - .parent_data = gcc_parent_data_4, - .num_parents = ARRAY_SIZE(gcc_parent_data_4), - .ops = &clk_regmap_mux_closest_ops, + .parent_data = &(const struct clk_parent_data){ + .fw_name = "pcie_0_pipe_clk", + }, + .num_parents = 1, + .ops = &clk_regmap_phy_mux_ops, }, }, }; @@ -269,17 +247,16 @@ static struct clk_regmap_mux gcc_pcie_1_phy_aux_clk_src = { }, }; -static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = { +static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = { .reg = 0x9d064, - .shift = 0, - .width = 2, - .parent_map = gcc_parent_map_6, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_1_pipe_clk_src", - .parent_data = gcc_parent_data_6, - .num_parents = ARRAY_SIZE(gcc_parent_data_6), - .ops = &clk_regmap_mux_closest_ops, + .parent_data = &(const struct clk_parent_data){ + .fw_name = "pcie_1_pipe_clk", + }, + .num_parents = 1, + .ops = &clk_regmap_phy_mux_ops, }, }, }; From patchwork Sat May 21 00:53:41 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 574996 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 92312C433F5 for ; Sat, 21 May 2022 00:54:04 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354281AbiEUAyD (ORCPT ); Fri, 20 May 2022 20:54:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40804 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354266AbiEUAyB (ORCPT ); Fri, 20 May 2022 20:54:01 -0400 Received: from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com [IPv6:2a00:1450:4864:20::22d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B5B9D1AEC6C for ; Fri, 20 May 2022 17:53:59 -0700 (PDT) Received: by mail-lj1-x22d.google.com with SMTP id 27so6333117ljw.0 for ; Fri, 20 May 2022 17:53:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=qPKCacZXKzUg/s9zuubTZYIAk2vKFy9+9ffdACuxYk8=; b=Hhm0BDplfhLsyU0nLOiNPzraxPgxGrpg8ZAEIVmdLKrmZqE3FUqmmKfUX5Zy7eZlfe ElW2yPyztGaNTJV0yP4ycYPnGu1RQjxVlJPfJJidFBiQ+xCy9NYIT6oGD1RxOWI2A8z/ 9Y9baDIAgsR8VSO40IT32FfFcXLYav9THhryQdX351JGrQCDPgf3I8ireJfkQBgOw1EE yU4jKao64z3uOrLXMTfdg0hxFAj7QxRRQZQmPnv4vXtp4U8qqWZq/CKHPmZRewfsIAaJ Xz9asdHBBdWeXSjEZzrfVI28xAIAi4jayDopnNUz4UDkgJZs5Aw934DoWgawIW1X2Ueg IrKA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=qPKCacZXKzUg/s9zuubTZYIAk2vKFy9+9ffdACuxYk8=; b=R4HN5oXgYsn73TUUmxJMETqM4YXYRxM+oesxRJEO+4lqhspoxVQ3atb5pp9uW3Zs/u ZZbjqMnpiZeo4PHanIyrJg946rbd0bc9yfIj2ug8MIZAzvF/ckgpmzakLR7IJf6vZx59 +vyeSQwbpDaYhoapw1pOuMCTrFBngNnzeKfZyRL1Jq9mck5+0fnlSthfQ6q45YBpI2jP K5oB6JZWjNyC7dg16XSxvHGKr8yvS1QUL2vk7Sa0C/cO/PR5GHLKzYq25il+8NjKzdq6 Hy7QgZDAoLy2LJuc6gd51K5bwiL/GJ71EZYzDcICFLElsmcbWcj7hxF8ARmiViWJKZz3 Km1Q== X-Gm-Message-State: AOAM530rGFl+r6DTpWEVVQY7eYsTLhwj0Y5nfUXqo++4bHjbdduhbfh9 i9cfuHUlmhg/IRoixI8dSZHk7g== X-Google-Smtp-Source: ABdhPJy49tSvmQ0RZUfBs1a9EoR3lljW4+q4DpWx9oPGJ0WalGnWZ2eiTXp3cfySuBvc8iwpXeeP+w== X-Received: by 2002:a2e:83c9:0:b0:24d:a95d:7b7a with SMTP id s9-20020a2e83c9000000b0024da95d7b7amr6952022ljh.254.1653094437850; Fri, 20 May 2022 17:53:57 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:57 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org Subject: [PATCH v7 6/8] clk: qcom: gcc-sc7280: use new clk_regmap_phy_mux_ops for PCIe pipe clocks Date: Sat, 21 May 2022 03:53:41 +0300 Message-Id: <20220521005343.1429642-7-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Use newly defined clk_regmap_phy_mux_ops for PCIe pipe clocks to let the clock framework automatically park the clock when the clock is switched off and restore the parent when the clock is switched on. Signed-off-by: Dmitry Baryshkov --- drivers/clk/qcom/gcc-sc7280.c | 47 ++++++++++------------------------- 1 file changed, 13 insertions(+), 34 deletions(-) diff --git a/drivers/clk/qcom/gcc-sc7280.c b/drivers/clk/qcom/gcc-sc7280.c index 423627d49719..45a98b01d0f7 100644 --- a/drivers/clk/qcom/gcc-sc7280.c +++ b/drivers/clk/qcom/gcc-sc7280.c @@ -17,6 +17,7 @@ #include "clk-rcg.h" #include "clk-regmap-divider.h" #include "clk-regmap-mux.h" +#include "clk-regmap-phy-mux.h" #include "common.h" #include "gdsc.h" #include "reset.h" @@ -255,26 +256,6 @@ static const struct clk_parent_data gcc_parent_data_5[] = { { .hw = &gcc_gpll0_out_even.clkr.hw }, }; -static const struct parent_map gcc_parent_map_6[] = { - { P_PCIE_0_PIPE_CLK, 0 }, - { P_BI_TCXO, 2 }, -}; - -static const struct clk_parent_data gcc_parent_data_6[] = { - { .fw_name = "pcie_0_pipe_clk", .name = "pcie_0_pipe_clk" }, - { .fw_name = "bi_tcxo" }, -}; - -static const struct parent_map gcc_parent_map_7[] = { - { P_PCIE_1_PIPE_CLK, 0 }, - { P_BI_TCXO, 2 }, -}; - -static const struct clk_parent_data gcc_parent_data_7[] = { - { .fw_name = "pcie_1_pipe_clk", .name = "pcie_1_pipe_clk" }, - { .fw_name = "bi_tcxo" }, -}; - static const struct parent_map gcc_parent_map_8[] = { { P_BI_TCXO, 0 }, { P_GCC_GPLL0_OUT_MAIN, 1 }, @@ -369,32 +350,30 @@ static const struct clk_parent_data gcc_parent_data_15[] = { { .hw = &gcc_mss_gpll0_main_div_clk_src.clkr.hw }, }; -static struct clk_regmap_mux gcc_pcie_0_pipe_clk_src = { +static struct clk_regmap_phy_mux gcc_pcie_0_pipe_clk_src = { .reg = 0x6b054, - .shift = 0, - .width = 2, - .parent_map = gcc_parent_map_6, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_0_pipe_clk_src", - .parent_data = gcc_parent_data_6, - .num_parents = ARRAY_SIZE(gcc_parent_data_6), - .ops = &clk_regmap_mux_closest_ops, + .parent_data = &(const struct clk_parent_data){ + .fw_name = "pcie_0_pipe_clk", + }, + .num_parents = 1, + .ops = &clk_regmap_phy_mux_ops, }, }, }; -static struct clk_regmap_mux gcc_pcie_1_pipe_clk_src = { +static struct clk_regmap_phy_mux gcc_pcie_1_pipe_clk_src = { .reg = 0x8d054, - .shift = 0, - .width = 2, - .parent_map = gcc_parent_map_7, .clkr = { .hw.init = &(struct clk_init_data){ .name = "gcc_pcie_1_pipe_clk_src", - .parent_data = gcc_parent_data_7, - .num_parents = ARRAY_SIZE(gcc_parent_data_7), - .ops = &clk_regmap_mux_closest_ops, + .parent_data = &(const struct clk_parent_data){ + .fw_name = "pcie_1_pipe_clk", + }, + .num_parents = 1, + .ops = &clk_regmap_phy_mux_ops, }, }, }; From patchwork Sat May 21 00:53:42 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 575279 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA385C4332F for ; Sat, 21 May 2022 00:54:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354286AbiEUAyD (ORCPT ); Fri, 20 May 2022 20:54:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40846 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354287AbiEUAyC (ORCPT ); Fri, 20 May 2022 20:54:02 -0400 Received: from mail-lf1-x134.google.com (mail-lf1-x134.google.com [IPv6:2a00:1450:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B15DB1AEC67 for ; Fri, 20 May 2022 17:54:00 -0700 (PDT) Received: by mail-lf1-x134.google.com with SMTP id p4so15533860lfg.4 for ; Fri, 20 May 2022 17:54:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=6sZg18S8rp1uODywqvEr9TdNrYKlPChLaAXqj+OfCPs=; b=bIBGL5V16JPA8slRkMl/7j9TMIJYues+WYVzr6cRgHqb+gPVB2UZIpLsGn7lOwOJb1 XQavB8hMpD/qPvjGX9Be1qdfOY+N709zcXtB58h+hXfWlxPbp3Vq0A1XQHgCVSoC2EWD dEVLSnLsqJpWrxbYOQU86jraD6lgRpSdfqw3P2E1QNuY7WjbxEgxgVTKqzqU1WOQTiWd dIhcDdUpmd0J3wcl/6Cr/Ze8aWKKv3YdPuEX9otxmjwZrfFQIIQzBwF6icijQwFOqfLX MLjVcTmuYcIxDidx3pcEfjYQCT57il6NuihLvSv5fCZ4Dm/zBthmZyv5qiXG7Zcmlrmx /MGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6sZg18S8rp1uODywqvEr9TdNrYKlPChLaAXqj+OfCPs=; b=HNCDQQslcU9hkBnK01c4c/0Q3/YPqh7ScNrTnHPyUrwLTCscwbJpN1ak6c0GO1MIwn 79e4cWm5znKlqW64xlduorZ+pDiFnh3DUgnBDeML+oh5N+m4nkmSxilbqlDTh+DTB5K2 pdT6z8bVdyex5QnwEWmlrUUQcmM25td5P2xjk+eUByx2+9gn14whAAsZj5DUiFUDS5QU ru3G+YfUzjqjy01wXqCSL4vh89L8OzOxmq8WhBm9Rjdpk44uknRVIUXJyy0ulMY5Beds Tz9RrJdueiD+RDclwGhVTR9nX5L2cLsprjqYwcuJ/XmQYUi66Bysj+lyqJOCehuXcM5I FsSA== X-Gm-Message-State: AOAM532pShYcDuWx2ruWmOAf1V7mxK4qZxsosFCEPXbc4BHs1ZcMtQj/ KcWbOwEUe0Ldo/V1cS8ZTNIu9g== X-Google-Smtp-Source: ABdhPJy4/Fl9d4OUlxrYbGVNk7So4daENMceTxyBDtcxi7txB6AJPpQKisgd7mjSwqqSfVaUFmJCgw== X-Received: by 2002:ac2:4294:0:b0:473:e5bc:7a64 with SMTP id m20-20020ac24294000000b00473e5bc7a64mr8927439lfh.84.1653094440018; Fri, 20 May 2022 17:54:00 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.53.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:53:59 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org, Manivannan Sadhasivam Subject: [PATCH v7 7/8] PCI: qcom: Remove unnecessary pipe_clk handling Date: Sat, 21 May 2022 03:53:42 +0300 Message-Id: <20220521005343.1429642-8-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org PCIe PHY drivers (both QMP and PCIe2) already do clk_prepare_enable() / clk_prepare_disable() pipe_clk. Remove extra calls to enable/disable this clock from the PCIe driver, so that the PHY driver can manage the clock on its own. Reviewed-by: Bjorn Andersson Reviewed-by: Manivannan Sadhasivam Reviewed-by: Johan Hovold Tested-by: Johan Hovold Signed-off-by: Dmitry Baryshkov --- drivers/pci/controller/dwc/pcie-qcom.c | 44 ++------------------------ 1 file changed, 3 insertions(+), 41 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 9055bb20777e..91e58edc7ea9 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -128,7 +128,6 @@ struct qcom_pcie_resources_2_3_2 { struct clk *master_clk; struct clk *slave_clk; struct clk *cfg_clk; - struct clk *pipe_clk; struct regulator_bulk_data supplies[QCOM_PCIE_2_3_2_MAX_SUPPLY]; }; @@ -165,7 +164,6 @@ struct qcom_pcie_resources_2_7_0 { int num_clks; struct regulator_bulk_data supplies[2]; struct reset_control *pci_reset; - struct clk *pipe_clk; struct clk *pipe_clk_src; struct clk *phy_pipe_clk; struct clk *ref_clk_src; @@ -597,8 +595,7 @@ static int qcom_pcie_get_resources_2_3_2(struct qcom_pcie *pcie) if (IS_ERR(res->slave_clk)) return PTR_ERR(res->slave_clk); - res->pipe_clk = devm_clk_get(dev, "pipe"); - return PTR_ERR_OR_ZERO(res->pipe_clk); + return 0; } static void qcom_pcie_deinit_2_3_2(struct qcom_pcie *pcie) @@ -613,13 +610,6 @@ static void qcom_pcie_deinit_2_3_2(struct qcom_pcie *pcie) regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); } -static void qcom_pcie_post_deinit_2_3_2(struct qcom_pcie *pcie) -{ - struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; - - clk_disable_unprepare(res->pipe_clk); -} - static int qcom_pcie_init_2_3_2(struct qcom_pcie *pcie) { struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; @@ -694,22 +684,6 @@ static int qcom_pcie_init_2_3_2(struct qcom_pcie *pcie) return ret; } -static int qcom_pcie_post_init_2_3_2(struct qcom_pcie *pcie) -{ - struct qcom_pcie_resources_2_3_2 *res = &pcie->res.v2_3_2; - struct dw_pcie *pci = pcie->pci; - struct device *dev = pci->dev; - int ret; - - ret = clk_prepare_enable(res->pipe_clk); - if (ret) { - dev_err(dev, "cannot prepare/enable pipe clock\n"); - return ret; - } - - return 0; -} - static int qcom_pcie_get_resources_2_4_0(struct qcom_pcie *pcie) { struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0; @@ -1198,8 +1172,7 @@ static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) return PTR_ERR(res->ref_clk_src); } - res->pipe_clk = devm_clk_get(dev, "pipe"); - return PTR_ERR_OR_ZERO(res->pipe_clk); + return 0; } static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie) @@ -1292,14 +1265,7 @@ static int qcom_pcie_post_init_2_7_0(struct qcom_pcie *pcie) if (pcie->cfg->pipe_clk_need_muxing) clk_set_parent(res->pipe_clk_src, res->phy_pipe_clk); - return clk_prepare_enable(res->pipe_clk); -} - -static void qcom_pcie_post_deinit_2_7_0(struct qcom_pcie *pcie) -{ - struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; - - clk_disable_unprepare(res->pipe_clk); + return 0; } static int qcom_pcie_link_up(struct dw_pcie *pci) @@ -1449,9 +1415,7 @@ static const struct qcom_pcie_ops ops_1_0_0 = { static const struct qcom_pcie_ops ops_2_3_2 = { .get_resources = qcom_pcie_get_resources_2_3_2, .init = qcom_pcie_init_2_3_2, - .post_init = qcom_pcie_post_init_2_3_2, .deinit = qcom_pcie_deinit_2_3_2, - .post_deinit = qcom_pcie_post_deinit_2_3_2, .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, }; @@ -1478,7 +1442,6 @@ static const struct qcom_pcie_ops ops_2_7_0 = { .deinit = qcom_pcie_deinit_2_7_0, .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, .post_init = qcom_pcie_post_init_2_7_0, - .post_deinit = qcom_pcie_post_deinit_2_7_0, }; /* Qcom IP rev.: 1.9.0 */ @@ -1488,7 +1451,6 @@ static const struct qcom_pcie_ops ops_1_9_0 = { .deinit = qcom_pcie_deinit_2_7_0, .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, .post_init = qcom_pcie_post_init_2_7_0, - .post_deinit = qcom_pcie_post_deinit_2_7_0, .config_sid = qcom_pcie_config_sid_sm8250, }; From patchwork Sat May 21 00:53:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Dmitry Baryshkov X-Patchwork-Id: 574995 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1DE05C433FE for ; Sat, 21 May 2022 00:54:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354271AbiEUAyH (ORCPT ); Fri, 20 May 2022 20:54:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40904 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1354294AbiEUAyD (ORCPT ); Fri, 20 May 2022 20:54:03 -0400 Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 09C221B0920 for ; Fri, 20 May 2022 17:54:02 -0700 (PDT) Received: by mail-lf1-x135.google.com with SMTP id u30so16924440lfm.9 for ; Fri, 20 May 2022 17:54:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L3xLjgH+8H4EuxOCFISCfGIFUbJpaGjNZmkPZUl6M0Q=; b=kzDAOfuzapWgSPfo7wbJxeczjKqfAMYChaNZd9EKA/9/mgID61Te6JKfnUMPOf3+xU bzgSNKO2q02rnjfd4xcH2uBKGM0iT8/bRuFH0F6Qg6HoJoT3X3DQy8oR9NhFxHxrRL+D CqAsbQ1Zpl2/CYJPbPdMXXOAm184Ip9CoCa7UN2d8akN3il/CqNRZfyVKwQ6oKRxoqd4 DT21BcqHiuthWP0Rt9BPThDlOjpl8j0uOqt2Rs1SxsBaLa0MKL0MqT7udziPG2kgnhN4 zhsa8xPe6DWdjabYbqUg51gZFZ0GxCo+nNUtTWCvbMpv0O2XWx2yQKF6VzoRsiRm0wvG gzRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=L3xLjgH+8H4EuxOCFISCfGIFUbJpaGjNZmkPZUl6M0Q=; b=IEJGAlP+jFVdcKBTkonDopSV+CgloLm84Upz3C4RmoDPuEtxKxz+QPiKHOITDGiPdG nsOYZPFMKXYNHCdUeBV8WDjBmu5pFx8M3ZoNrLKqaFJJesagIRqdyf8Uq4b01Lo8FSxP MVakt94FM1lnZi1Td3TMbsTz3sZiuR7utHWAY1VNxnvpeDjtD4vQDcvNCFApCm29Oz97 PAqf/qljfQD2Uy4OYLnw18gbCyVq2Nh3PFc6EewlUWdaHkhBoXcsDW8G11tlNVBxoRxZ fxZcrJW86zt1hfxCg92cANHpsQ0n7W6h4esSZEwJ/STfKk5F5XCN7jAyXYKRoOiYtT3A G1+Q== X-Gm-Message-State: AOAM533+bFJH0qY3ZtOUYvlUe9IlmfGAfdf3MdtpKuiNy+Nx4cG3fVZ+ MOhLSQavMEaSktjHC7Q2cZMi8Q== X-Google-Smtp-Source: ABdhPJwm/PnJQbj/YC6R5lKtUAQKN5r7LoHRKGmDvFWm14k8bR7xn5DDA8xWdiH1czLeZ9xhsNRD0w== X-Received: by 2002:a05:6512:2207:b0:477:c852:e71 with SMTP id h7-20020a056512220700b00477c8520e71mr7779855lfu.320.1653094441546; Fri, 20 May 2022 17:54:01 -0700 (PDT) Received: from eriador.lan ([2001:470:dd84:abc0::8a5]) by smtp.gmail.com with ESMTPSA id u14-20020a056512094e00b0047255d21187sm844559lft.182.2022.05.20.17.54.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 May 2022 17:54:01 -0700 (PDT) From: Dmitry Baryshkov To: Andy Gross , Bjorn Andersson , Stephen Boyd , Michael Turquette , Taniya Das , Lorenzo Pieralisi , =?utf-8?q?Krzysztof_Wilczy?= =?utf-8?q?=C5=84ski?= , Bjorn Helgaas Cc: Johan Hovold , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, linux-pci@vger.kernel.org, Prasad Malisetty Subject: [PATCH v7 8/8] PCI: qcom: Drop manual pipe_clk_src handling Date: Sat, 21 May 2022 03:53:43 +0300 Message-Id: <20220521005343.1429642-9-dmitry.baryshkov@linaro.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> References: <20220521005343.1429642-1-dmitry.baryshkov@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-arm-msm@vger.kernel.org Manual reparenting of pipe_clk_src is being replaced with the parking of the clock with clk_disable()/clk_enable() in the phy driver. Drop redundant code switching of the pipe clock between the PHY clock source and the safe bi_tcxo. Cc: Prasad Malisetty Reviewed-by: Bjorn Andersson Signed-off-by: Dmitry Baryshkov --- drivers/pci/controller/dwc/pcie-qcom.c | 39 +------------------------- 1 file changed, 1 insertion(+), 38 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index 91e58edc7ea9..e83085e1bf4b 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -164,9 +164,6 @@ struct qcom_pcie_resources_2_7_0 { int num_clks; struct regulator_bulk_data supplies[2]; struct reset_control *pci_reset; - struct clk *pipe_clk_src; - struct clk *phy_pipe_clk; - struct clk *ref_clk_src; }; union qcom_pcie_resources { @@ -192,7 +189,6 @@ struct qcom_pcie_ops { struct qcom_pcie_cfg { const struct qcom_pcie_ops *ops; - unsigned int pipe_clk_need_muxing:1; unsigned int has_tbu_clk:1; unsigned int has_ddrss_sf_tbu_clk:1; unsigned int has_aggre0_clk:1; @@ -1158,20 +1154,6 @@ static int qcom_pcie_get_resources_2_7_0(struct qcom_pcie *pcie) if (ret < 0) return ret; - if (pcie->cfg->pipe_clk_need_muxing) { - res->pipe_clk_src = devm_clk_get(dev, "pipe_mux"); - if (IS_ERR(res->pipe_clk_src)) - return PTR_ERR(res->pipe_clk_src); - - res->phy_pipe_clk = devm_clk_get(dev, "phy_pipe"); - if (IS_ERR(res->phy_pipe_clk)) - return PTR_ERR(res->phy_pipe_clk); - - res->ref_clk_src = devm_clk_get(dev, "ref"); - if (IS_ERR(res->ref_clk_src)) - return PTR_ERR(res->ref_clk_src); - } - return 0; } @@ -1189,10 +1171,6 @@ static int qcom_pcie_init_2_7_0(struct qcom_pcie *pcie) return ret; } - /* Set TCXO as clock source for pcie_pipe_clk_src */ - if (pcie->cfg->pipe_clk_need_muxing) - clk_set_parent(res->pipe_clk_src, res->ref_clk_src); - ret = clk_bulk_prepare_enable(res->num_clks, res->clks); if (ret < 0) goto err_disable_regulators; @@ -1254,18 +1232,8 @@ static void qcom_pcie_deinit_2_7_0(struct qcom_pcie *pcie) struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; clk_bulk_disable_unprepare(res->num_clks, res->clks); - regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); -} -static int qcom_pcie_post_init_2_7_0(struct qcom_pcie *pcie) -{ - struct qcom_pcie_resources_2_7_0 *res = &pcie->res.v2_7_0; - - /* Set pipe clock as clock source for pcie_pipe_clk_src */ - if (pcie->cfg->pipe_clk_need_muxing) - clk_set_parent(res->pipe_clk_src, res->phy_pipe_clk); - - return 0; + regulator_bulk_disable(ARRAY_SIZE(res->supplies), res->supplies); } static int qcom_pcie_link_up(struct dw_pcie *pci) @@ -1441,7 +1409,6 @@ static const struct qcom_pcie_ops ops_2_7_0 = { .init = qcom_pcie_init_2_7_0, .deinit = qcom_pcie_deinit_2_7_0, .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, - .post_init = qcom_pcie_post_init_2_7_0, }; /* Qcom IP rev.: 1.9.0 */ @@ -1450,7 +1417,6 @@ static const struct qcom_pcie_ops ops_1_9_0 = { .init = qcom_pcie_init_2_7_0, .deinit = qcom_pcie_deinit_2_7_0, .ltssm_enable = qcom_pcie_2_3_2_ltssm_enable, - .post_init = qcom_pcie_post_init_2_7_0, .config_sid = qcom_pcie_config_sid_sm8250, }; @@ -1488,7 +1454,6 @@ static const struct qcom_pcie_cfg sm8250_cfg = { static const struct qcom_pcie_cfg sm8450_pcie0_cfg = { .ops = &ops_1_9_0, .has_ddrss_sf_tbu_clk = true, - .pipe_clk_need_muxing = true, .has_aggre0_clk = true, .has_aggre1_clk = true, }; @@ -1496,14 +1461,12 @@ static const struct qcom_pcie_cfg sm8450_pcie0_cfg = { static const struct qcom_pcie_cfg sm8450_pcie1_cfg = { .ops = &ops_1_9_0, .has_ddrss_sf_tbu_clk = true, - .pipe_clk_need_muxing = true, .has_aggre1_clk = true, }; static const struct qcom_pcie_cfg sc7280_cfg = { .ops = &ops_1_9_0, .has_tbu_clk = true, - .pipe_clk_need_muxing = true, }; static const struct qcom_pcie_cfg sc8180x_cfg = {