From patchwork Mon Mar 27 19:38:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 13189993 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 AC07DC77B6D for ; Mon, 27 Mar 2023 19:38:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231510AbjC0Tio (ORCPT ); Mon, 27 Mar 2023 15:38:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33760 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232449AbjC0Tim (ORCPT ); Mon, 27 Mar 2023 15:38:42 -0400 Received: from mail-ed1-x52d.google.com (mail-ed1-x52d.google.com [IPv6:2a00:1450:4864:20::52d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 699CD2D48 for ; Mon, 27 Mar 2023 12:38:40 -0700 (PDT) Received: by mail-ed1-x52d.google.com with SMTP id t10so40619930edd.12 for ; Mon, 27 Mar 2023 12:38:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679945918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=c3FY60jRaqB/nKnC/ZVyGb5zqQ4bk2PkIiKSObmnrIQ=; b=lD3UCQsabNKCxuw+k0jMYVQykNzKE6YSURXkPe/4rGzFb32aL1aoerSdBMjZTnpKTP PpWSsXoxtkEpx4dLH2U1CVhqaDKoWzpvC1TwrKDy+L4SqN4EOywjXnaBC2OZsDTv1e22 sxywrgWntliUknEhF3xNZ7JpQhVRpkWtKODlv3/8c0ZFziUJ0lk14dp3gNMnq5w2LQxC dsiynBXQuB6Q6mpMt17PeUmaXYWzF3/ID8ScsXbNqwQEvYd3WEjSW+0DY4AFT1sYHcOL NnSr3tdPxirCPC5i90vCVYSlQPQG4Rrng1ys+9/rifVwQQ5ZbVjMt8vrToU+VmPNcBtX GSTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679945918; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=c3FY60jRaqB/nKnC/ZVyGb5zqQ4bk2PkIiKSObmnrIQ=; b=3Qi9ZYy5jJ0WqLsqfwi4/yQRbk7BTJyBHMDR4WTMfn+Sb6pqo7w39v7YIZKEuJBaVk sx/Nd78PQk7Nh71XWD6i7qql51Zm8Q/bVtBNaz9vP7rnTt3CNKkSoqyzEv+6lONXo1y6 rUYeIzv8gRVpX0nt11DX9idvwguv/VzqJDgbyyMx51Rs5YuBrNDkU3AEmGN/ZxAVMtY2 grfT3blIwDkYKmZdLnZU2A+H1G0p3ZKyrzDWay4hoMsgQR7oIF7TF8yQ7X306Xez1b9i cMdEn1jovkfuYu6Q6fZWm4IiS8HexJNM1BPPdf8IyTcdB5YWkKPvoROkoSG0bXHRzQPC 7Xrw== X-Gm-Message-State: AAQBX9e9AQcS+THWxAavwZ6S/tK2ESlsb/WZTXYoeI6rJky7r20MykAm U+knsUX+iK3R42juAETv3SvO/w== X-Google-Smtp-Source: AKy350YSvT3xVHjl1UJksa71FJRcStTLZfE1yVgC7y3c2td7z3w2N40AV4VOuwkl/+jDfmgfSLXudg== X-Received: by 2002:a17:906:8398:b0:8f6:88b7:73a7 with SMTP id p24-20020a170906839800b008f688b773a7mr12275694ejx.7.1679945918715; Mon, 27 Mar 2023 12:38:38 -0700 (PDT) Received: from localhost.localdomain ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id kb1-20020a1709070f8100b00933c4a25735sm11701254ejc.100.2023.03.27.12.38.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Mar 2023 12:38:38 -0700 (PDT) From: Abel Vesa To: "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Saravana Kannan Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, Doug Anderson , Matthias Kaehlcke Subject: [PATCH v3 1/4] PM: domains: Allow power off queuing from providers Date: Mon, 27 Mar 2023 22:38:26 +0300 Message-Id: <20230327193829.3756640-2-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230327193829.3756640-1-abel.vesa@linaro.org> References: <20230327193829.3756640-1-abel.vesa@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org In some cases, the providers might choose to refuse powering off some domains until all of the consumers have had a chance to probe, that is, until sync state callback has been called. Such providers might choose to disable such domains on their own, from the sync state callback. So, in order to do that, they need a way to queue up a power off request. Since the generic genpd already has such API, make that available to those providers. Signed-off-by: Abel Vesa Reviewed-by: Ulf Hansson --- drivers/base/power/domain.c | 18 ++++++++++-------- include/linux/pm_domain.h | 4 ++++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/drivers/base/power/domain.c b/drivers/base/power/domain.c index 32084e38b73d..209b8152e948 100644 --- a/drivers/base/power/domain.c +++ b/drivers/base/power/domain.c @@ -643,16 +643,18 @@ static int _genpd_power_off(struct generic_pm_domain *genpd, bool timed) } /** - * genpd_queue_power_off_work - Queue up the execution of genpd_power_off(). + * pm_genpd_queue_power_off - Queue up the execution of genpd_power_off(). * @genpd: PM domain to power off. * * Queue up the execution of genpd_power_off() unless it's already been done - * before. + * before. The sole purpose of this being exported is to allow the providers + * to disable the unused domains from their sync_state callback. */ -static void genpd_queue_power_off_work(struct generic_pm_domain *genpd) +void pm_genpd_queue_power_off(struct generic_pm_domain *genpd) { queue_work(pm_wq, &genpd->power_off_work); } +EXPORT_SYMBOL_GPL(pm_genpd_queue_power_off); /** * genpd_power_off - Remove power from a given PM domain. @@ -1096,7 +1098,7 @@ static int __init genpd_power_off_unused(void) mutex_lock(&gpd_list_lock); list_for_each_entry(genpd, &gpd_list, gpd_list_node) - genpd_queue_power_off_work(genpd); + pm_genpd_queue_power_off(genpd); mutex_unlock(&gpd_list_lock); @@ -1431,7 +1433,7 @@ static void genpd_complete(struct device *dev) genpd->prepared_count--; if (!genpd->prepared_count) - genpd_queue_power_off_work(genpd); + pm_genpd_queue_power_off(genpd); genpd_unlock(genpd); } @@ -2703,7 +2705,7 @@ static void genpd_dev_pm_detach(struct device *dev, bool power_off) } /* Check if PM domain can be powered off after removing this device. */ - genpd_queue_power_off_work(pd); + pm_genpd_queue_power_off(pd); /* Unregister the device if it was created by genpd. */ if (dev->bus == &genpd_bus_type) @@ -2718,7 +2720,7 @@ static void genpd_dev_pm_sync(struct device *dev) if (IS_ERR(pd)) return; - genpd_queue_power_off_work(pd); + pm_genpd_queue_power_off(pd); } static int __genpd_dev_pm_attach(struct device *dev, struct device *base_dev, @@ -2879,7 +2881,7 @@ struct device *genpd_dev_pm_attach_by_id(struct device *dev, } pm_runtime_enable(virt_dev); - genpd_queue_power_off_work(dev_to_genpd(virt_dev)); + pm_genpd_queue_power_off(dev_to_genpd(virt_dev)); return virt_dev; } diff --git a/include/linux/pm_domain.h b/include/linux/pm_domain.h index f776fb93eaa0..b7991bf98e1c 100644 --- a/include/linux/pm_domain.h +++ b/include/linux/pm_domain.h @@ -231,6 +231,7 @@ int pm_genpd_remove_subdomain(struct generic_pm_domain *genpd, int pm_genpd_init(struct generic_pm_domain *genpd, struct dev_power_governor *gov, bool is_off); int pm_genpd_remove(struct generic_pm_domain *genpd); +void pm_genpd_queue_power_off(struct generic_pm_domain *genpd); int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state); int dev_pm_genpd_add_notifier(struct device *dev, struct notifier_block *nb); int dev_pm_genpd_remove_notifier(struct device *dev); @@ -278,6 +279,9 @@ static inline int pm_genpd_remove(struct generic_pm_domain *genpd) return -EOPNOTSUPP; } +static inline void pm_genpd_queue_power_off(struct generic_pm_domain *genpd) +{ } + static inline int dev_pm_genpd_set_performance_state(struct device *dev, unsigned int state) { From patchwork Mon Mar 27 19:38:27 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 13189994 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 69195C77B6E for ; Mon, 27 Mar 2023 19:38:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232597AbjC0Tio (ORCPT ); Mon, 27 Mar 2023 15:38:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33790 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232518AbjC0Tin (ORCPT ); Mon, 27 Mar 2023 15:38:43 -0400 Received: from mail-ed1-x52a.google.com (mail-ed1-x52a.google.com [IPv6:2a00:1450:4864:20::52a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 936832D41 for ; Mon, 27 Mar 2023 12:38:41 -0700 (PDT) Received: by mail-ed1-x52a.google.com with SMTP id x3so40650185edb.10 for ; Mon, 27 Mar 2023 12:38:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679945920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CP7vUwcUfZjT92t57J6/2HFlOi0R4gSQ4bD3Gdxv8EQ=; b=gVYf6k+Q1Hw3tfFAQM3dthxP++izXDBmMYvfyZeGOhZSqGbDx1qu/5ZyiKE43VQTue zPvOP1mwvIB2CxKB/6cmoAngCvHRw0datYLj4+RN5RSnBsXiWmxUbX+b59jUb4MrOMmn ZkDGOUk6rXjH2t0VDphftu05shEtZhH861kbAuDkwdyRyMN7S+8RlaKMtuAz0aacMqFO 1tG3Z8mpmrSpAIUeB7NTlPNGuT4vz7PkgMTro3piu8wao26SgAZtlDfqZgjBh7obA3uw CzfiU5guucKSMFYrOAtcjobT1UqiSj3XJ7rnObW8O8Y8Ri5L0ya/cDWZk7t5VVaUzEoS k1lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679945920; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=CP7vUwcUfZjT92t57J6/2HFlOi0R4gSQ4bD3Gdxv8EQ=; b=GiJ/TaG+4ixkp37/gc5MIHoRz5dmSXLScxeXd6saSpgaI1xrBgMimuQ3jty6WLWYrz Ye+ctAQk6GjoNQXOxoKuCzHTsjK8UxDMJIWdP03CyjHvXCv0Lclj6bDEzv3lFgVDRDtX H6puP1hIJCmtYzR9HHUBMduoai5qvTbgLmxdjeF1ViteDPrIGZk/n06a1uTo8jPsuf3z RibuvFo8P5pcjdiCNRvRfpG455eQ3ANPS6PZbiArQarHniFIUCQ80b6ZSAmff2FyTuUn F6Bo7rMCq7vInfRU2LIXUsAOX/XG7tm6hfYtuBjKJITDxuRM9uHwVNbEZqabqbWAcGGk 4bEg== X-Gm-Message-State: AAQBX9f6W6CkPZhK8hjPNb99RU5dcM1pnOzDxA+Ke5odyO/AqkayNgyc 3nfIRdH4hy8NCpaRsribPCAbfg== X-Google-Smtp-Source: AKy350adEKdeCdVUqGPyeEv9UeZI/9p7Qn5YWZRwAV/xpSyX1GViLO2pAcu7/Eh5auRkifBQ1iRvHQ== X-Received: by 2002:a17:907:76f9:b0:930:fe49:5383 with SMTP id kg25-20020a17090776f900b00930fe495383mr13477287ejc.76.1679945920207; Mon, 27 Mar 2023 12:38:40 -0700 (PDT) Received: from localhost.localdomain ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id kb1-20020a1709070f8100b00933c4a25735sm11701254ejc.100.2023.03.27.12.38.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Mar 2023 12:38:39 -0700 (PDT) From: Abel Vesa To: "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Saravana Kannan Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, Doug Anderson , Matthias Kaehlcke Subject: [PATCH v3 2/4] soc: qcom: rpmhpd: Do proper power off when state synced Date: Mon, 27 Mar 2023 22:38:27 +0300 Message-Id: <20230327193829.3756640-3-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230327193829.3756640-1-abel.vesa@linaro.org> References: <20230327193829.3756640-1-abel.vesa@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org Instead of aggregating different corner values on sync state callback, call the genpd API for queuing up the power off. This will also mark the domain as powered off in the debugfs genpd summary. Also, until sync state has been reached, return busy on power off request, in order to allow genpd core to know that the actual domain hasn't been powered of from the "disable unused" late initcall. Signed-off-by: Abel Vesa Reviewed-by: Ulf Hansson --- drivers/soc/qcom/rpmhpd.c | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/drivers/soc/qcom/rpmhpd.c b/drivers/soc/qcom/rpmhpd.c index f20e2a49a669..ec7926820772 100644 --- a/drivers/soc/qcom/rpmhpd.c +++ b/drivers/soc/qcom/rpmhpd.c @@ -649,8 +649,12 @@ static int rpmhpd_power_off(struct generic_pm_domain *domain) mutex_lock(&rpmhpd_lock); ret = rpmhpd_aggregate_corner(pd, 0); - if (!ret) - pd->enabled = false; + if (!ret) { + if (!pd->state_synced) + ret = -EBUSY; + else + pd->enabled = false; + } mutex_unlock(&rpmhpd_lock); @@ -810,10 +814,8 @@ static void rpmhpd_sync_state(struct device *dev) { const struct rpmhpd_desc *desc = of_device_get_match_data(dev); struct rpmhpd **rpmhpds = desc->rpmhpds; - unsigned int corner; struct rpmhpd *pd; unsigned int i; - int ret; mutex_lock(&rpmhpd_lock); for (i = 0; i < desc->num_pds; i++) { @@ -822,14 +824,7 @@ static void rpmhpd_sync_state(struct device *dev) continue; pd->state_synced = true; - if (pd->enabled) - corner = max(pd->corner, pd->enable_corner); - else - corner = 0; - - ret = rpmhpd_aggregate_corner(pd, corner); - if (ret) - dev_err(dev, "failed to sync %s\n", pd->res_name); + pm_genpd_queue_power_off(&pd->pd); } mutex_unlock(&rpmhpd_lock); } From patchwork Mon Mar 27 19:38:28 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 13189995 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 E51A5C76195 for ; Mon, 27 Mar 2023 19:38:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232115AbjC0Tiq (ORCPT ); Mon, 27 Mar 2023 15:38:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33864 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232578AbjC0Tio (ORCPT ); Mon, 27 Mar 2023 15:38:44 -0400 Received: from mail-ed1-x529.google.com (mail-ed1-x529.google.com [IPv6:2a00:1450:4864:20::529]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 42E03270F for ; Mon, 27 Mar 2023 12:38:42 -0700 (PDT) Received: by mail-ed1-x529.google.com with SMTP id w9so40784819edc.3 for ; Mon, 27 Mar 2023 12:38:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679945921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VsEPgMY5BFjwdL0oALK9gMsrag92KFHyzI19rln1PIE=; b=OyLa/9dGtp66ezkTixrZsqvmqd5gqTBnNDqdv73CyVFo8D4VcoVzTZbABOcXWtHl+e OZkxQEn/l7GGqXQ2OuwEOhxhhhHpVTT+VRragVayCD+FzaUwhB9SOX1HDP3SM8tanc1Q 2eBuOlJgjKRAuZIGIDS2/XVY/2YuXfBf9UP6Tv1wrblkNMsDC8SrJjO39/AHv3UDjQEq 4lXOEcE5NfWgXhpW1rFxLXv0bDQjjKi0Gks5y94sP6UukKf2pFCQfR2wNG+nxnOu+iId FCwp1tCh8lni/MYxM0esvUWWi2fT3+sDloxAV5P+CFSCLW3oWOXfKtxdQRV4xLg7MvrD boWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679945921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=VsEPgMY5BFjwdL0oALK9gMsrag92KFHyzI19rln1PIE=; b=exxJXlWdzVHsBiAv+tA7BL2CxPNR4q7HdGtt6yUExSTA4cKDknwXyuWNK5gj7l52Jm tGXr5YB5cw1AMnLJWmlgrWwiNOBRBYX6hym5qNEFvtGlGiZk4/BjqwEfdqp/1MbCYaff BcM2LOXx0MYjb28tDY3QLa+u+gq/MC3tJ79gp3Owsef24+i2yb6gOUsATI3o1FQ033r/ 3jewAUs+R1I5nvP/Y8AqzbIKJgmgfd89hP/CBkwBO+W3bitc+EA17SSCpU9omVbp7s11 Gxf4JhGroKE9BDeN1c4gwPpgeR0vJPxNQ8vI/q/o6xCIeyVbvS00E36YAr0wMpfGFnUN Usqw== X-Gm-Message-State: AAQBX9cQbvQY71nRze+P/lB16xg4IonR03X2ZhWQsmIzaDJoVK5/fI3N PLF/NQKAF2aXHsyuL6A4rx9nVg== X-Google-Smtp-Source: AKy350ZwNF8Xu5+4eGdhXdHDrA1hqhB2p4RHUk+qIBtKBTqrNiayByfa35LNiX6/ZISwTisJWl5iGg== X-Received: by 2002:a17:906:8398:b0:900:a150:cea3 with SMTP id p24-20020a170906839800b00900a150cea3mr13197868ejx.9.1679945921642; Mon, 27 Mar 2023 12:38:41 -0700 (PDT) Received: from localhost.localdomain ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id kb1-20020a1709070f8100b00933c4a25735sm11701254ejc.100.2023.03.27.12.38.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Mar 2023 12:38:41 -0700 (PDT) From: Abel Vesa To: "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Saravana Kannan Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, Doug Anderson , Matthias Kaehlcke Subject: [PATCH v3 3/4] clk: qcom: gdsc: Avoid actual power off until sync state Date: Mon, 27 Mar 2023 22:38:28 +0300 Message-Id: <20230327193829.3756640-4-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230327193829.3756640-1-abel.vesa@linaro.org> References: <20230327193829.3756640-1-abel.vesa@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org In case there is a sync state callback registered for a provider, do not actually power off any gdsc for that provider until sync state has been reached and return busy instead. Since the qcom_cc is private, add a helper that returns the gdsc_desc based on the device of the provider. Finally, add the generic gdsc sync state callback to be used by the platform specific providers. Signed-off-by: Abel Vesa Reviewed-by: Ulf Hansson --- drivers/clk/qcom/common.c | 19 +++++++++++++++++++ drivers/clk/qcom/common.h | 2 ++ drivers/clk/qcom/gdsc.c | 26 ++++++++++++++++++++++++++ drivers/clk/qcom/gdsc.h | 6 ++++++ 4 files changed, 53 insertions(+) diff --git a/drivers/clk/qcom/common.c b/drivers/clk/qcom/common.c index 75f09e6e057e..d7fd1b170c1c 100644 --- a/drivers/clk/qcom/common.c +++ b/drivers/clk/qcom/common.c @@ -20,6 +20,7 @@ struct qcom_cc { struct qcom_reset_controller reset; struct clk_regmap **rclks; + struct gdsc_desc *scd; size_t num_rclks; }; @@ -234,6 +235,13 @@ static struct clk_hw *qcom_cc_clk_hw_get(struct of_phandle_args *clkspec, return cc->rclks[idx] ? &cc->rclks[idx]->hw : NULL; } +struct gdsc_desc *qcom_cc_get_gdsc_desc(struct device *dev) +{ + struct qcom_cc *cc = dev_get_drvdata(dev); + + return cc->scd; +} + int qcom_cc_really_probe(struct platform_device *pdev, const struct qcom_cc_desc *desc, struct regmap *regmap) { @@ -251,6 +259,8 @@ int qcom_cc_really_probe(struct platform_device *pdev, if (!cc) return -ENOMEM; + dev_set_drvdata(dev, cc); + reset = &cc->reset; reset->rcdev.of_node = dev->of_node; reset->rcdev.ops = &qcom_reset_ops; @@ -267,6 +277,9 @@ int qcom_cc_really_probe(struct platform_device *pdev, scd = devm_kzalloc(dev, sizeof(*scd), GFP_KERNEL); if (!scd) return -ENOMEM; + + cc->scd = scd; + scd->dev = dev; scd->scs = desc->gdscs; scd->num = desc->num_gdscs; @@ -319,6 +332,12 @@ int qcom_cc_probe(struct platform_device *pdev, const struct qcom_cc_desc *desc) } EXPORT_SYMBOL_GPL(qcom_cc_probe); +void qcom_cc_sync_state(struct device *dev) +{ + gdsc_sync_state(dev); +} +EXPORT_SYMBOL_GPL(qcom_cc_sync_state); + int qcom_cc_probe_by_index(struct platform_device *pdev, int index, const struct qcom_cc_desc *desc) { diff --git a/drivers/clk/qcom/common.h b/drivers/clk/qcom/common.h index 9c8f7b798d9f..1bea04da0a00 100644 --- a/drivers/clk/qcom/common.h +++ b/drivers/clk/qcom/common.h @@ -61,9 +61,11 @@ extern struct regmap *qcom_cc_map(struct platform_device *pdev, extern int qcom_cc_really_probe(struct platform_device *pdev, const struct qcom_cc_desc *desc, struct regmap *regmap); +extern struct gdsc_desc *qcom_cc_get_gdsc_desc(struct device *dev); extern int qcom_cc_probe(struct platform_device *pdev, const struct qcom_cc_desc *desc); extern int qcom_cc_probe_by_index(struct platform_device *pdev, int index, const struct qcom_cc_desc *desc); +extern void qcom_cc_sync_state(struct device *dev); #endif diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c index 5358e28122ab..ea7d753a38ef 100644 --- a/drivers/clk/qcom/gdsc.c +++ b/drivers/clk/qcom/gdsc.c @@ -15,6 +15,8 @@ #include #include #include + +#include "common.h" #include "gdsc.h" #define PWR_ON_MASK BIT(31) @@ -319,6 +321,9 @@ static int gdsc_disable(struct generic_pm_domain *domain) struct gdsc *sc = domain_to_gdsc(domain); int ret; + if (!sc->state_synced) + return -EBUSY; + if (sc->pwrsts == PWRSTS_ON) return gdsc_assert_reset(sc); @@ -365,6 +370,7 @@ static int gdsc_disable(struct generic_pm_domain *domain) static int gdsc_init(struct gdsc *sc) { + struct device *dev = sc->dev; u32 mask, val; int on, ret; @@ -452,6 +458,9 @@ static int gdsc_init(struct gdsc *sc) if (!sc->pd.power_on) sc->pd.power_on = gdsc_enable; + if (!dev_has_sync_state(dev)) + sc->state_synced = true; + ret = pm_genpd_init(&sc->pd, NULL, !on); if (ret) goto err_disable_supply; @@ -496,6 +505,7 @@ int gdsc_register(struct gdsc_desc *desc, for (i = 0; i < num; i++) { if (!scs[i]) continue; + scs[i]->dev = dev; scs[i]->regmap = regmap; scs[i]->rcdev = rcdev; ret = gdsc_init(scs[i]); @@ -536,6 +546,22 @@ void gdsc_unregister(struct gdsc_desc *desc) of_genpd_del_provider(dev->of_node); } +void gdsc_sync_state(struct device *dev) +{ + struct gdsc_desc *scd = qcom_cc_get_gdsc_desc(dev); + struct gdsc **scs = scd->scs; + size_t num = scd->num; + int i; + + for (i = 0; i < num; i++) { + if (!scs[i]) + continue; + + scs[i]->state_synced = true; + pm_genpd_queue_power_off(&scs[i]->pd); + } +} + /* * On SDM845+ the GPU GX domain is *almost* entirely controlled by the GMU * running in the CX domain so the CPU doesn't need to know anything about the diff --git a/drivers/clk/qcom/gdsc.h b/drivers/clk/qcom/gdsc.h index 803512688336..e1c902caecde 100644 --- a/drivers/clk/qcom/gdsc.h +++ b/drivers/clk/qcom/gdsc.h @@ -35,6 +35,7 @@ struct gdsc { struct generic_pm_domain pd; struct generic_pm_domain *parent; struct regmap *regmap; + struct device *dev; unsigned int gdscr; unsigned int collapse_ctrl; unsigned int collapse_mask; @@ -73,6 +74,8 @@ struct gdsc { const char *supply; struct regulator *rsupply; + + bool state_synced; }; struct gdsc_desc { @@ -86,6 +89,7 @@ int gdsc_register(struct gdsc_desc *desc, struct reset_controller_dev *, struct regmap *); void gdsc_unregister(struct gdsc_desc *desc); int gdsc_gx_do_nothing_enable(struct generic_pm_domain *domain); +void gdsc_sync_state(struct device *dev); #else static inline int gdsc_register(struct gdsc_desc *desc, struct reset_controller_dev *rcdev, @@ -94,6 +98,8 @@ static inline int gdsc_register(struct gdsc_desc *desc, return -ENOSYS; } +static inline void gdsc_sync_state(struct device *dev) { } + static inline void gdsc_unregister(struct gdsc_desc *desc) {}; #endif /* CONFIG_QCOM_GDSC */ #endif /* __QCOM_GDSC_H__ */ From patchwork Mon Mar 27 19:38:29 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Abel Vesa X-Patchwork-Id: 13189996 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 58B50C76195 for ; Mon, 27 Mar 2023 19:38:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232641AbjC0Ti5 (ORCPT ); Mon, 27 Mar 2023 15:38:57 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34232 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232633AbjC0Tiv (ORCPT ); Mon, 27 Mar 2023 15:38:51 -0400 Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C64C02738 for ; Mon, 27 Mar 2023 12:38:44 -0700 (PDT) Received: by mail-ed1-x52c.google.com with SMTP id er18so29490187edb.9 for ; Mon, 27 Mar 2023 12:38:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1679945923; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=m856MF7/K8cmlkjTZnYkKWIuqNSc8qvv8L1aH+g2FYU=; b=jSMHL1o+sEz/8UCrR0JpZuVM3abUO5F4TCgm6EHB5G/f0ljDCjLdYO5aAJei1xbjuq FrzaT0G0no5peyc9FQdI8M3U7UoVwPVkewYcIQd+99KXMnUxEvzoTmUJ/m0BXW647X1P DUH817nCOHi46L6xIRqqfCprAEUE3gQmkvJa/4SU8lU3PFgH0p/7rpLR4rEuWlP7tJbd LxAGaSy0ZhyMZZQHr2Y2l69XbwCCa3Hz959XUALSFFdP9xvHdmRbzbwk1kvYDgSZM/pV ebVwa8hCjvbHj6cYC8yq4Oflmdj7TIUeQ1xiKwFd3fm8vglMelxSJXS8aCkHP35vdrFe xxgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1679945923; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=m856MF7/K8cmlkjTZnYkKWIuqNSc8qvv8L1aH+g2FYU=; b=YTqJ0i5mD9uBPRsQCLHyW5z6n9DSfIe0jTYqqBerG1L76pmLQvYZAgykiRLgDglRui oOcD1uTfFggCG6tU/3f8/VG5ZKgn17l/OlPsN3hMS/BhN/eIOnFeJJvygOx06SAwSZau i3J1dLU/MX8AbARkJ1SDXTojpH5MtDQIJHQ48gr/uGNc7A7x2x8rTF+Bsy7AfICpcDkW KmIMwZGH8YIWY64pHJAL9u8OBOJ1PZZSH7+WBbQTSsLIKuPzICAWsX5AEeMFaS+dQHjt QZ3Uuquq7lbVC56Yc9jD8wptUvkoqL7CXrlcVL9TKq5qi0kRPnQFHlW2o+0aNL47cadg jCzg== X-Gm-Message-State: AAQBX9dWvA/uqokdwtlIz1TMLWmMt4vo96UJ9UPR2m0aeLn309YojTWh icEGnDtG7/HB7u9PqJ5tOG8YGA== X-Google-Smtp-Source: AKy350b6KvNLgtmif+8h85vL/f3a96hcMSDEr+sVEL3+PRHWCK8YWN7hy1+VbEGbFsbiRQHO0QVBWA== X-Received: by 2002:a17:907:174f:b0:7e0:eed0:8beb with SMTP id lf15-20020a170907174f00b007e0eed08bebmr13297221ejc.41.1679945923236; Mon, 27 Mar 2023 12:38:43 -0700 (PDT) Received: from localhost.localdomain ([94.52.112.99]) by smtp.gmail.com with ESMTPSA id kb1-20020a1709070f8100b00933c4a25735sm11701254ejc.100.2023.03.27.12.38.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Mar 2023 12:38:42 -0700 (PDT) From: Abel Vesa To: "Rafael J. Wysocki" , Kevin Hilman , Ulf Hansson , Pavel Machek , Len Brown , Greg Kroah-Hartman , Bjorn Andersson , Andy Gross , Konrad Dybcio , Mike Turquette , Stephen Boyd , Saravana Kannan Cc: linux-pm@vger.kernel.org, Linux Kernel Mailing List , linux-arm-msm@vger.kernel.org, linux-clk@vger.kernel.org, Doug Anderson , Matthias Kaehlcke Subject: [PATCH v3 4/4] clk: qcom: Add sync state callback to all providers Date: Mon, 27 Mar 2023 22:38:29 +0300 Message-Id: <20230327193829.3756640-5-abel.vesa@linaro.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20230327193829.3756640-1-abel.vesa@linaro.org> References: <20230327193829.3756640-1-abel.vesa@linaro.org> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-clk@vger.kernel.org Now that we have support for sync state delayed disabling of unused power domains and a provided generic qcom_cc sync state callback, add it to all the providers for all platforms that actually registers GDSCs. Signed-off-by: Abel Vesa --- drivers/clk/qcom/apss-ipq6018.c | 1 + drivers/clk/qcom/camcc-sc7180.c | 1 + drivers/clk/qcom/camcc-sc7280.c | 1 + drivers/clk/qcom/camcc-sdm845.c | 1 + drivers/clk/qcom/camcc-sm6350.c | 1 + drivers/clk/qcom/camcc-sm8250.c | 1 + drivers/clk/qcom/camcc-sm8450.c | 1 + drivers/clk/qcom/dispcc-qcm2290.c | 1 + drivers/clk/qcom/dispcc-sc7180.c | 1 + drivers/clk/qcom/dispcc-sc7280.c | 1 + drivers/clk/qcom/dispcc-sc8280xp.c | 1 + drivers/clk/qcom/dispcc-sdm845.c | 1 + drivers/clk/qcom/dispcc-sm6115.c | 1 + drivers/clk/qcom/dispcc-sm6125.c | 1 + drivers/clk/qcom/dispcc-sm6350.c | 1 + drivers/clk/qcom/dispcc-sm6375.c | 1 + drivers/clk/qcom/dispcc-sm8250.c | 1 + drivers/clk/qcom/dispcc-sm8450.c | 1 + drivers/clk/qcom/dispcc-sm8550.c | 1 + drivers/clk/qcom/gcc-apq8084.c | 1 + drivers/clk/qcom/gcc-ipq806x.c | 1 + drivers/clk/qcom/gcc-ipq8074.c | 1 + drivers/clk/qcom/gcc-mdm9615.c | 1 + drivers/clk/qcom/gcc-msm8660.c | 1 + drivers/clk/qcom/gcc-msm8909.c | 1 + drivers/clk/qcom/gcc-msm8916.c | 1 + drivers/clk/qcom/gcc-msm8939.c | 1 + drivers/clk/qcom/gcc-msm8953.c | 1 + drivers/clk/qcom/gcc-msm8960.c | 1 + drivers/clk/qcom/gcc-msm8974.c | 1 + drivers/clk/qcom/gcc-msm8976.c | 1 + drivers/clk/qcom/gcc-msm8994.c | 1 + drivers/clk/qcom/gcc-msm8996.c | 1 + drivers/clk/qcom/gcc-msm8998.c | 1 + drivers/clk/qcom/gcc-qcm2290.c | 1 + drivers/clk/qcom/gcc-qcs404.c | 1 + drivers/clk/qcom/gcc-qdu1000.c | 1 + drivers/clk/qcom/gcc-sa8775p.c | 1 + drivers/clk/qcom/gcc-sc7180.c | 1 + drivers/clk/qcom/gcc-sc7280.c | 1 + drivers/clk/qcom/gcc-sc8180x.c | 1 + drivers/clk/qcom/gcc-sc8280xp.c | 1 + drivers/clk/qcom/gcc-sdm660.c | 1 + drivers/clk/qcom/gcc-sdm845.c | 1 + drivers/clk/qcom/gcc-sdx55.c | 1 + drivers/clk/qcom/gcc-sdx65.c | 1 + drivers/clk/qcom/gcc-sm6115.c | 1 + drivers/clk/qcom/gcc-sm6125.c | 1 + drivers/clk/qcom/gcc-sm6350.c | 1 + drivers/clk/qcom/gcc-sm6375.c | 1 + drivers/clk/qcom/gcc-sm7150.c | 1 + drivers/clk/qcom/gcc-sm8150.c | 1 + drivers/clk/qcom/gcc-sm8250.c | 1 + drivers/clk/qcom/gcc-sm8350.c | 1 + drivers/clk/qcom/gcc-sm8450.c | 1 + drivers/clk/qcom/gcc-sm8550.c | 1 + drivers/clk/qcom/gpucc-msm8998.c | 1 + drivers/clk/qcom/gpucc-sc7180.c | 1 + drivers/clk/qcom/gpucc-sc7280.c | 1 + drivers/clk/qcom/gpucc-sc8280xp.c | 1 + drivers/clk/qcom/gpucc-sdm660.c | 1 + drivers/clk/qcom/gpucc-sdm845.c | 1 + drivers/clk/qcom/gpucc-sm6115.c | 1 + drivers/clk/qcom/gpucc-sm6125.c | 1 + drivers/clk/qcom/gpucc-sm6350.c | 1 + drivers/clk/qcom/gpucc-sm6375.c | 1 + drivers/clk/qcom/gpucc-sm8150.c | 1 + drivers/clk/qcom/gpucc-sm8250.c | 1 + drivers/clk/qcom/gpucc-sm8350.c | 1 + drivers/clk/qcom/lcc-ipq806x.c | 1 + drivers/clk/qcom/lpassaudiocc-sc7280.c | 1 + drivers/clk/qcom/lpasscc-sc7280.c | 1 + drivers/clk/qcom/lpasscorecc-sc7180.c | 2 ++ drivers/clk/qcom/lpasscorecc-sc7280.c | 2 ++ drivers/clk/qcom/mmcc-apq8084.c | 1 + drivers/clk/qcom/mmcc-msm8974.c | 1 + drivers/clk/qcom/mmcc-msm8994.c | 1 + drivers/clk/qcom/mmcc-msm8996.c | 1 + drivers/clk/qcom/mmcc-msm8998.c | 1 + drivers/clk/qcom/mmcc-sdm660.c | 1 + drivers/clk/qcom/videocc-sc7180.c | 1 + drivers/clk/qcom/videocc-sc7280.c | 1 + drivers/clk/qcom/videocc-sdm845.c | 1 + drivers/clk/qcom/videocc-sm8150.c | 1 + drivers/clk/qcom/videocc-sm8250.c | 1 + 85 files changed, 87 insertions(+) diff --git a/drivers/clk/qcom/apss-ipq6018.c b/drivers/clk/qcom/apss-ipq6018.c index f2f502e2d5a4..bf450c82bcb3 100644 --- a/drivers/clk/qcom/apss-ipq6018.c +++ b/drivers/clk/qcom/apss-ipq6018.c @@ -96,6 +96,7 @@ static struct platform_driver apss_ipq6018_driver = { .probe = apss_ipq6018_probe, .driver = { .name = "qcom,apss-ipq6018-clk", + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sc7180.c b/drivers/clk/qcom/camcc-sc7180.c index e2b4804695f3..fe3e4590aaa3 100644 --- a/drivers/clk/qcom/camcc-sc7180.c +++ b/drivers/clk/qcom/camcc-sc7180.c @@ -1695,6 +1695,7 @@ static struct platform_driver cam_cc_sc7180_driver = { .name = "cam_cc-sc7180", .of_match_table = cam_cc_sc7180_match_table, .pm = &cam_cc_pm_ops, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sc7280.c b/drivers/clk/qcom/camcc-sc7280.c index 4396fddba7a6..798adaf5ad39 100644 --- a/drivers/clk/qcom/camcc-sc7280.c +++ b/drivers/clk/qcom/camcc-sc7280.c @@ -2465,6 +2465,7 @@ static struct platform_driver cam_cc_sc7280_driver = { .driver = { .name = "cam_cc-sc7280", .of_match_table = cam_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sdm845.c b/drivers/clk/qcom/camcc-sdm845.c index 27d44188a7ab..98cae0e24afc 100644 --- a/drivers/clk/qcom/camcc-sdm845.c +++ b/drivers/clk/qcom/camcc-sdm845.c @@ -1743,6 +1743,7 @@ static struct platform_driver cam_cc_sdm845_driver = { .driver = { .name = "sdm845-camcc", .of_match_table = cam_cc_sdm845_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c index acba9f99d960..2536a1f94335 100644 --- a/drivers/clk/qcom/camcc-sm6350.c +++ b/drivers/clk/qcom/camcc-sm6350.c @@ -1887,6 +1887,7 @@ static struct platform_driver camcc_sm6350_driver = { .driver = { .name = "sm6350-camcc", .of_match_table = camcc_sm6350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sm8250.c b/drivers/clk/qcom/camcc-sm8250.c index 9b32c56a5bc5..6bc32e5441c0 100644 --- a/drivers/clk/qcom/camcc-sm8250.c +++ b/drivers/clk/qcom/camcc-sm8250.c @@ -2441,6 +2441,7 @@ static struct platform_driver cam_cc_sm8250_driver = { .driver = { .name = "cam_cc-sm8250", .of_match_table = cam_cc_sm8250_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/camcc-sm8450.c b/drivers/clk/qcom/camcc-sm8450.c index 51338a2884d2..b2c6109c7eba 100644 --- a/drivers/clk/qcom/camcc-sm8450.c +++ b/drivers/clk/qcom/camcc-sm8450.c @@ -2847,6 +2847,7 @@ static struct platform_driver cam_cc_sm8450_driver = { .driver = { .name = "camcc-sm8450", .of_match_table = cam_cc_sm8450_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-qcm2290.c b/drivers/clk/qcom/dispcc-qcm2290.c index 2ebd9a02b895..bb35f79ce245 100644 --- a/drivers/clk/qcom/dispcc-qcm2290.c +++ b/drivers/clk/qcom/dispcc-qcm2290.c @@ -530,6 +530,7 @@ static struct platform_driver disp_cc_qcm2290_driver = { .driver = { .name = "dispcc-qcm2290", .of_match_table = disp_cc_qcm2290_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sc7180.c b/drivers/clk/qcom/dispcc-sc7180.c index 9536bfc72a43..118379921410 100644 --- a/drivers/clk/qcom/dispcc-sc7180.c +++ b/drivers/clk/qcom/dispcc-sc7180.c @@ -721,6 +721,7 @@ static struct platform_driver disp_cc_sc7180_driver = { .driver = { .name = "sc7180-dispcc", .of_match_table = disp_cc_sc7180_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sc7280.c b/drivers/clk/qcom/dispcc-sc7280.c index ad596d567f6a..374fcaf52514 100644 --- a/drivers/clk/qcom/dispcc-sc7280.c +++ b/drivers/clk/qcom/dispcc-sc7280.c @@ -892,6 +892,7 @@ static struct platform_driver disp_cc_sc7280_driver = { .driver = { .name = "disp_cc-sc7280", .of_match_table = disp_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sc8280xp.c b/drivers/clk/qcom/dispcc-sc8280xp.c index 167470beb369..a64c396b9cc4 100644 --- a/drivers/clk/qcom/dispcc-sc8280xp.c +++ b/drivers/clk/qcom/dispcc-sc8280xp.c @@ -3199,6 +3199,7 @@ static struct platform_driver disp_cc_sc8280xp_driver = { .driver = { .name = "disp_cc-sc8280xp", .of_match_table = disp_cc_sc8280xp_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sdm845.c b/drivers/clk/qcom/dispcc-sdm845.c index 735adfefc379..9415a832d137 100644 --- a/drivers/clk/qcom/dispcc-sdm845.c +++ b/drivers/clk/qcom/dispcc-sdm845.c @@ -869,6 +869,7 @@ static struct platform_driver disp_cc_sdm845_driver = { .driver = { .name = "disp_cc-sdm845", .of_match_table = disp_cc_sdm845_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm6115.c b/drivers/clk/qcom/dispcc-sm6115.c index 1937edf23f21..28699f7f4692 100644 --- a/drivers/clk/qcom/dispcc-sm6115.c +++ b/drivers/clk/qcom/dispcc-sm6115.c @@ -600,6 +600,7 @@ static struct platform_driver disp_cc_sm6115_driver = { .driver = { .name = "dispcc-sm6115", .of_match_table = disp_cc_sm6115_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm6125.c b/drivers/clk/qcom/dispcc-sm6125.c index 87b27053ddb6..f607d1f60c05 100644 --- a/drivers/clk/qcom/dispcc-sm6125.c +++ b/drivers/clk/qcom/dispcc-sm6125.c @@ -690,6 +690,7 @@ static struct platform_driver disp_cc_sm6125_driver = { .driver = { .name = "disp_cc-sm6125", .of_match_table = disp_cc_sm6125_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm6350.c b/drivers/clk/qcom/dispcc-sm6350.c index ea6f54ed846e..2a791b614dbb 100644 --- a/drivers/clk/qcom/dispcc-sm6350.c +++ b/drivers/clk/qcom/dispcc-sm6350.c @@ -778,6 +778,7 @@ static struct platform_driver disp_cc_sm6350_driver = { .driver = { .name = "disp_cc-sm6350", .of_match_table = disp_cc_sm6350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm6375.c b/drivers/clk/qcom/dispcc-sm6375.c index caa1b90a5ff2..963b1c0f9c2b 100644 --- a/drivers/clk/qcom/dispcc-sm6375.c +++ b/drivers/clk/qcom/dispcc-sm6375.c @@ -591,6 +591,7 @@ static struct platform_driver disp_cc_sm6375_driver = { .driver = { .name = "disp_cc-sm6375", .of_match_table = disp_cc_sm6375_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm8250.c b/drivers/clk/qcom/dispcc-sm8250.c index e17bb8b543b5..6556404141af 100644 --- a/drivers/clk/qcom/dispcc-sm8250.c +++ b/drivers/clk/qcom/dispcc-sm8250.c @@ -1380,6 +1380,7 @@ static struct platform_driver disp_cc_sm8250_driver = { .driver = { .name = "disp_cc-sm8250", .of_match_table = disp_cc_sm8250_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm8450.c b/drivers/clk/qcom/dispcc-sm8450.c index adbfd30bfc96..0ea719940a8e 100644 --- a/drivers/clk/qcom/dispcc-sm8450.c +++ b/drivers/clk/qcom/dispcc-sm8450.c @@ -1803,6 +1803,7 @@ static struct platform_driver disp_cc_sm8450_driver = { .driver = { .name = "disp_cc-sm8450", .of_match_table = disp_cc_sm8450_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/dispcc-sm8550.c b/drivers/clk/qcom/dispcc-sm8550.c index 1e5a11081860..60251884f655 100644 --- a/drivers/clk/qcom/dispcc-sm8550.c +++ b/drivers/clk/qcom/dispcc-sm8550.c @@ -1788,6 +1788,7 @@ static struct platform_driver disp_cc_sm8550_driver = { .driver = { .name = "disp_cc-sm8550", .of_match_table = disp_cc_sm8550_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-apq8084.c b/drivers/clk/qcom/gcc-apq8084.c index 7085d2ccae49..e89c2fd5ed2b 100644 --- a/drivers/clk/qcom/gcc-apq8084.c +++ b/drivers/clk/qcom/gcc-apq8084.c @@ -3642,6 +3642,7 @@ static struct platform_driver gcc_apq8084_driver = { .driver = { .name = "gcc-apq8084", .of_match_table = gcc_apq8084_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-ipq806x.c b/drivers/clk/qcom/gcc-ipq806x.c index 6447f3e81b55..53c14e476521 100644 --- a/drivers/clk/qcom/gcc-ipq806x.c +++ b/drivers/clk/qcom/gcc-ipq806x.c @@ -3428,6 +3428,7 @@ static struct platform_driver gcc_ipq806x_driver = { .driver = { .name = "gcc-ipq806x", .of_match_table = gcc_ipq806x_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-ipq8074.c b/drivers/clk/qcom/gcc-ipq8074.c index 6541d98c0348..f2b08ab865cb 100644 --- a/drivers/clk/qcom/gcc-ipq8074.c +++ b/drivers/clk/qcom/gcc-ipq8074.c @@ -4741,6 +4741,7 @@ static struct platform_driver gcc_ipq8074_driver = { .driver = { .name = "qcom,gcc-ipq8074", .of_match_table = gcc_ipq8074_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-mdm9615.c b/drivers/clk/qcom/gcc-mdm9615.c index 8bed02a748ab..5cdaac200378 100644 --- a/drivers/clk/qcom/gcc-mdm9615.c +++ b/drivers/clk/qcom/gcc-mdm9615.c @@ -1720,6 +1720,7 @@ static struct platform_driver gcc_mdm9615_driver = { .driver = { .name = "gcc-mdm9615", .of_match_table = gcc_mdm9615_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8660.c b/drivers/clk/qcom/gcc-msm8660.c index a9eb6a9ac445..e5ff66cee197 100644 --- a/drivers/clk/qcom/gcc-msm8660.c +++ b/drivers/clk/qcom/gcc-msm8660.c @@ -2775,6 +2775,7 @@ static struct platform_driver gcc_msm8660_driver = { .driver = { .name = "gcc-msm8660", .of_match_table = gcc_msm8660_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8909.c b/drivers/clk/qcom/gcc-msm8909.c index 2a00b11ce2cd..bde4992e0a7d 100644 --- a/drivers/clk/qcom/gcc-msm8909.c +++ b/drivers/clk/qcom/gcc-msm8909.c @@ -2711,6 +2711,7 @@ static struct platform_driver gcc_msm8909_driver = { .driver = { .name = "gcc-msm8909", .of_match_table = gcc_msm8909_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8916.c b/drivers/clk/qcom/gcc-msm8916.c index 0c8fe19387a7..0fa2232f6f6b 100644 --- a/drivers/clk/qcom/gcc-msm8916.c +++ b/drivers/clk/qcom/gcc-msm8916.c @@ -3448,6 +3448,7 @@ static struct platform_driver gcc_msm8916_driver = { .driver = { .name = "gcc-msm8916", .of_match_table = gcc_msm8916_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8939.c b/drivers/clk/qcom/gcc-msm8939.c index 7f8969a77974..ce1ea997b5ff 100644 --- a/drivers/clk/qcom/gcc-msm8939.c +++ b/drivers/clk/qcom/gcc-msm8939.c @@ -4013,6 +4013,7 @@ static struct platform_driver gcc_msm8939_driver = { .driver = { .name = "gcc-msm8939", .of_match_table = gcc_msm8939_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8953.c b/drivers/clk/qcom/gcc-msm8953.c index 8aafa6591e84..313e279af413 100644 --- a/drivers/clk/qcom/gcc-msm8953.c +++ b/drivers/clk/qcom/gcc-msm8953.c @@ -4230,6 +4230,7 @@ static struct platform_driver gcc_msm8953_driver = { .driver = { .name = "gcc-msm8953", .of_match_table = gcc_msm8953_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8960.c b/drivers/clk/qcom/gcc-msm8960.c index dbc7093ab9cc..07dc9ab735bd 100644 --- a/drivers/clk/qcom/gcc-msm8960.c +++ b/drivers/clk/qcom/gcc-msm8960.c @@ -3768,6 +3768,7 @@ static struct platform_driver gcc_msm8960_driver = { .driver = { .name = "gcc-msm8960", .of_match_table = gcc_msm8960_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8974.c b/drivers/clk/qcom/gcc-msm8974.c index 0231c1efd286..93e81deafdee 100644 --- a/drivers/clk/qcom/gcc-msm8974.c +++ b/drivers/clk/qcom/gcc-msm8974.c @@ -2904,6 +2904,7 @@ static struct platform_driver gcc_msm8974_driver = { .driver = { .name = "gcc-msm8974", .of_match_table = gcc_msm8974_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8976.c b/drivers/clk/qcom/gcc-msm8976.c index 8beb923c0e19..665f5165b066 100644 --- a/drivers/clk/qcom/gcc-msm8976.c +++ b/drivers/clk/qcom/gcc-msm8976.c @@ -4137,6 +4137,7 @@ static struct platform_driver gcc_msm8976_driver = { .driver = { .name = "qcom,gcc-msm8976", .of_match_table = gcc_msm8976_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8994.c b/drivers/clk/qcom/gcc-msm8994.c index 0f52c48e89d8..09cda139a416 100644 --- a/drivers/clk/qcom/gcc-msm8994.c +++ b/drivers/clk/qcom/gcc-msm8994.c @@ -2712,6 +2712,7 @@ static struct platform_driver gcc_msm8994_driver = { .driver = { .name = "gcc-msm8994", .of_match_table = gcc_msm8994_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8996.c b/drivers/clk/qcom/gcc-msm8996.c index 5e44d1bcca9e..7386026b08c1 100644 --- a/drivers/clk/qcom/gcc-msm8996.c +++ b/drivers/clk/qcom/gcc-msm8996.c @@ -3856,6 +3856,7 @@ static struct platform_driver gcc_msm8996_driver = { .driver = { .name = "gcc-msm8996", .of_match_table = gcc_msm8996_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-msm8998.c b/drivers/clk/qcom/gcc-msm8998.c index be024f8093c5..bf9ecda86946 100644 --- a/drivers/clk/qcom/gcc-msm8998.c +++ b/drivers/clk/qcom/gcc-msm8998.c @@ -3249,6 +3249,7 @@ static struct platform_driver gcc_msm8998_driver = { .driver = { .name = "gcc-msm8998", .of_match_table = gcc_msm8998_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-qcm2290.c b/drivers/clk/qcom/gcc-qcm2290.c index 096deff2ba25..5dcd4db13b69 100644 --- a/drivers/clk/qcom/gcc-qcm2290.c +++ b/drivers/clk/qcom/gcc-qcm2290.c @@ -3002,6 +3002,7 @@ static struct platform_driver gcc_qcm2290_driver = { .driver = { .name = "gcc-qcm2290", .of_match_table = gcc_qcm2290_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-qcs404.c b/drivers/clk/qcom/gcc-qcs404.c index a39c4990b29d..640ee59ca1b5 100644 --- a/drivers/clk/qcom/gcc-qcs404.c +++ b/drivers/clk/qcom/gcc-qcs404.c @@ -2832,6 +2832,7 @@ static struct platform_driver gcc_qcs404_driver = { .driver = { .name = "gcc-qcs404", .of_match_table = gcc_qcs404_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-qdu1000.c b/drivers/clk/qcom/gcc-qdu1000.c index 5051769ad90c..bea26044df30 100644 --- a/drivers/clk/qcom/gcc-qdu1000.c +++ b/drivers/clk/qcom/gcc-qdu1000.c @@ -2634,6 +2634,7 @@ static struct platform_driver gcc_qdu1000_driver = { .driver = { .name = "gcc-qdu1000", .of_match_table = gcc_qdu1000_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sa8775p.c b/drivers/clk/qcom/gcc-sa8775p.c index bb94ff367abd..ff101e1f0163 100644 --- a/drivers/clk/qcom/gcc-sa8775p.c +++ b/drivers/clk/qcom/gcc-sa8775p.c @@ -4766,6 +4766,7 @@ static struct platform_driver gcc_sa8775p_driver = { .driver = { .name = "sa8775p-gcc", .of_match_table = gcc_sa8775p_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sc7180.c b/drivers/clk/qcom/gcc-sc7180.c index cef3c77564cf..7f36d7017e14 100644 --- a/drivers/clk/qcom/gcc-sc7180.c +++ b/drivers/clk/qcom/gcc-sc7180.c @@ -2469,6 +2469,7 @@ static struct platform_driver gcc_sc7180_driver = { .driver = { .name = "gcc-sc7180", .of_match_table = gcc_sc7180_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sc7280.c b/drivers/clk/qcom/gcc-sc7280.c index 1dc804154031..c6e10e174811 100644 --- a/drivers/clk/qcom/gcc-sc7280.c +++ b/drivers/clk/qcom/gcc-sc7280.c @@ -3480,6 +3480,7 @@ static struct platform_driver gcc_sc7280_driver = { .driver = { .name = "gcc-sc7280", .of_match_table = gcc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sc8180x.c b/drivers/clk/qcom/gcc-sc8180x.c index c41b9f010585..61bcc73e2703 100644 --- a/drivers/clk/qcom/gcc-sc8180x.c +++ b/drivers/clk/qcom/gcc-sc8180x.c @@ -4610,6 +4610,7 @@ static struct platform_driver gcc_sc8180x_driver = { .driver = { .name = "gcc-sc8180x", .of_match_table = gcc_sc8180x_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sc8280xp.c b/drivers/clk/qcom/gcc-sc8280xp.c index b3198784e1c3..64d828ba07da 100644 --- a/drivers/clk/qcom/gcc-sc8280xp.c +++ b/drivers/clk/qcom/gcc-sc8280xp.c @@ -7441,6 +7441,7 @@ static struct platform_driver gcc_sc8280xp_driver = { .driver = { .name = "gcc-sc8280xp", .of_match_table = gcc_sc8280xp_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sdm660.c b/drivers/clk/qcom/gcc-sdm660.c index db918c92a522..a2839e893cb1 100644 --- a/drivers/clk/qcom/gcc-sdm660.c +++ b/drivers/clk/qcom/gcc-sdm660.c @@ -2485,6 +2485,7 @@ static struct platform_driver gcc_sdm660_driver = { .driver = { .name = "gcc-sdm660", .of_match_table = gcc_sdm660_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sdm845.c b/drivers/clk/qcom/gcc-sdm845.c index 6af08e0ca847..2142e0c21d03 100644 --- a/drivers/clk/qcom/gcc-sdm845.c +++ b/drivers/clk/qcom/gcc-sdm845.c @@ -4020,6 +4020,7 @@ static struct platform_driver gcc_sdm845_driver = { .driver = { .name = "gcc-sdm845", .of_match_table = gcc_sdm845_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sdx55.c b/drivers/clk/qcom/gcc-sdx55.c index d5e17122698c..4aa29c08459c 100644 --- a/drivers/clk/qcom/gcc-sdx55.c +++ b/drivers/clk/qcom/gcc-sdx55.c @@ -1628,6 +1628,7 @@ static struct platform_driver gcc_sdx55_driver = { .driver = { .name = "gcc-sdx55", .of_match_table = gcc_sdx55_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sdx65.c b/drivers/clk/qcom/gcc-sdx65.c index b0c17043551d..50530f61225a 100644 --- a/drivers/clk/qcom/gcc-sdx65.c +++ b/drivers/clk/qcom/gcc-sdx65.c @@ -1591,6 +1591,7 @@ static struct platform_driver gcc_sdx65_driver = { .driver = { .name = "gcc-sdx65", .of_match_table = gcc_sdx65_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm6115.c b/drivers/clk/qcom/gcc-sm6115.c index 5b8222fea2f7..f6b9d560ec40 100644 --- a/drivers/clk/qcom/gcc-sm6115.c +++ b/drivers/clk/qcom/gcc-sm6115.c @@ -3512,6 +3512,7 @@ static struct platform_driver gcc_sm6115_driver = { .driver = { .name = "gcc-sm6115", .of_match_table = gcc_sm6115_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm6125.c b/drivers/clk/qcom/gcc-sm6125.c index 40ad062d1bf7..1825deb1f460 100644 --- a/drivers/clk/qcom/gcc-sm6125.c +++ b/drivers/clk/qcom/gcc-sm6125.c @@ -4170,6 +4170,7 @@ static struct platform_driver gcc_sm6125_driver = { .driver = { .name = "gcc-sm6125", .of_match_table = gcc_sm6125_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm6350.c b/drivers/clk/qcom/gcc-sm6350.c index 9b4e4bb05963..c30dd75372a0 100644 --- a/drivers/clk/qcom/gcc-sm6350.c +++ b/drivers/clk/qcom/gcc-sm6350.c @@ -2566,6 +2566,7 @@ static struct platform_driver gcc_sm6350_driver = { .driver = { .name = "gcc-sm6350", .of_match_table = gcc_sm6350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm6375.c b/drivers/clk/qcom/gcc-sm6375.c index 417a0fd242ec..01954b8880c0 100644 --- a/drivers/clk/qcom/gcc-sm6375.c +++ b/drivers/clk/qcom/gcc-sm6375.c @@ -3902,6 +3902,7 @@ static struct platform_driver gcc_sm6375_driver = { .driver = { .name = "gcc-sm6375", .of_match_table = gcc_sm6375_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm7150.c b/drivers/clk/qcom/gcc-sm7150.c index 6b628178f62c..48c7d42d494b 100644 --- a/drivers/clk/qcom/gcc-sm7150.c +++ b/drivers/clk/qcom/gcc-sm7150.c @@ -3029,6 +3029,7 @@ static struct platform_driver gcc_sm7150_driver = { .driver = { .name = "gcc-sm7150", .of_match_table = gcc_sm7150_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm8150.c b/drivers/clk/qcom/gcc-sm8150.c index 70b067f3618c..feb22808a03d 100644 --- a/drivers/clk/qcom/gcc-sm8150.c +++ b/drivers/clk/qcom/gcc-sm8150.c @@ -3795,6 +3795,7 @@ static struct platform_driver gcc_sm8150_driver = { .driver = { .name = "gcc-sm8150", .of_match_table = gcc_sm8150_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm8250.c b/drivers/clk/qcom/gcc-sm8250.c index b6cf4bc88d4d..3508ddaaad67 100644 --- a/drivers/clk/qcom/gcc-sm8250.c +++ b/drivers/clk/qcom/gcc-sm8250.c @@ -3668,6 +3668,7 @@ static struct platform_driver gcc_sm8250_driver = { .driver = { .name = "gcc-sm8250", .of_match_table = gcc_sm8250_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm8350.c b/drivers/clk/qcom/gcc-sm8350.c index af4a1ea28421..f0eb2e804113 100644 --- a/drivers/clk/qcom/gcc-sm8350.c +++ b/drivers/clk/qcom/gcc-sm8350.c @@ -3855,6 +3855,7 @@ static struct platform_driver gcc_sm8350_driver = { .driver = { .name = "sm8350-gcc", .of_match_table = gcc_sm8350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm8450.c b/drivers/clk/qcom/gcc-sm8450.c index 84764cc3db4f..248709fb975e 100644 --- a/drivers/clk/qcom/gcc-sm8450.c +++ b/drivers/clk/qcom/gcc-sm8450.c @@ -3262,6 +3262,7 @@ static struct platform_driver gcc_sm8450_driver = { .driver = { .name = "gcc-sm8450", .of_match_table = gcc_sm8450_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gcc-sm8550.c b/drivers/clk/qcom/gcc-sm8550.c index 277cd4f020ff..6c65634dbe54 100644 --- a/drivers/clk/qcom/gcc-sm8550.c +++ b/drivers/clk/qcom/gcc-sm8550.c @@ -3368,6 +3368,7 @@ static struct platform_driver gcc_sm8550_driver = { .driver = { .name = "gcc-sm8550", .of_match_table = gcc_sm8550_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-msm8998.c b/drivers/clk/qcom/gpucc-msm8998.c index f929e0f2333f..39a5924fb532 100644 --- a/drivers/clk/qcom/gpucc-msm8998.c +++ b/drivers/clk/qcom/gpucc-msm8998.c @@ -343,6 +343,7 @@ static struct platform_driver gpucc_msm8998_driver = { .driver = { .name = "gpucc-msm8998", .of_match_table = gpucc_msm8998_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpucc_msm8998_driver); diff --git a/drivers/clk/qcom/gpucc-sc7180.c b/drivers/clk/qcom/gpucc-sc7180.c index 3f92f0b43be6..a760d09c5385 100644 --- a/drivers/clk/qcom/gpucc-sc7180.c +++ b/drivers/clk/qcom/gpucc-sc7180.c @@ -249,6 +249,7 @@ static struct platform_driver gpu_cc_sc7180_driver = { .driver = { .name = "sc7180-gpucc", .of_match_table = gpu_cc_sc7180_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sc7280.c b/drivers/clk/qcom/gpucc-sc7280.c index 1490cd45a654..b466dcee81cb 100644 --- a/drivers/clk/qcom/gpucc-sc7280.c +++ b/drivers/clk/qcom/gpucc-sc7280.c @@ -473,6 +473,7 @@ static struct platform_driver gpu_cc_sc7280_driver = { .driver = { .name = "gpu_cc-sc7280", .of_match_table = gpu_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sc8280xp.c b/drivers/clk/qcom/gpucc-sc8280xp.c index ea1e9505c335..46ca242ba427 100644 --- a/drivers/clk/qcom/gpucc-sc8280xp.c +++ b/drivers/clk/qcom/gpucc-sc8280xp.c @@ -453,6 +453,7 @@ static struct platform_driver gpu_cc_sc8280xp_driver = { .driver = { .name = "gpu_cc-sc8280xp", .of_match_table = gpu_cc_sc8280xp_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpu_cc_sc8280xp_driver); diff --git a/drivers/clk/qcom/gpucc-sdm660.c b/drivers/clk/qcom/gpucc-sdm660.c index d6b38a0b063d..9c5d5a3ce120 100644 --- a/drivers/clk/qcom/gpucc-sdm660.c +++ b/drivers/clk/qcom/gpucc-sdm660.c @@ -339,6 +339,7 @@ static struct platform_driver gpucc_sdm660_driver = { .driver = { .name = "gpucc-sdm660", .of_match_table = gpucc_sdm660_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpucc_sdm660_driver); diff --git a/drivers/clk/qcom/gpucc-sdm845.c b/drivers/clk/qcom/gpucc-sdm845.c index 970d7414bdf0..b293fe136fe4 100644 --- a/drivers/clk/qcom/gpucc-sdm845.c +++ b/drivers/clk/qcom/gpucc-sdm845.c @@ -200,6 +200,7 @@ static struct platform_driver gpu_cc_sdm845_driver = { .driver = { .name = "sdm845-gpucc", .of_match_table = gpu_cc_sdm845_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sm6115.c b/drivers/clk/qcom/gpucc-sm6115.c index c84727e8352d..f2ef128d4606 100644 --- a/drivers/clk/qcom/gpucc-sm6115.c +++ b/drivers/clk/qcom/gpucc-sm6115.c @@ -495,6 +495,7 @@ static struct platform_driver gpu_cc_sm6115_driver = { .driver = { .name = "sm6115-gpucc", .of_match_table = gpu_cc_sm6115_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpu_cc_sm6115_driver); diff --git a/drivers/clk/qcom/gpucc-sm6125.c b/drivers/clk/qcom/gpucc-sm6125.c index d4f1296a48ef..49981fcca06d 100644 --- a/drivers/clk/qcom/gpucc-sm6125.c +++ b/drivers/clk/qcom/gpucc-sm6125.c @@ -416,6 +416,7 @@ static struct platform_driver gpu_cc_sm6125_driver = { .driver = { .name = "gpucc-sm6125", .of_match_table = gpu_cc_sm6125_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpu_cc_sm6125_driver); diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c index ef15185a99c3..f17138f787c8 100644 --- a/drivers/clk/qcom/gpucc-sm6350.c +++ b/drivers/clk/qcom/gpucc-sm6350.c @@ -502,6 +502,7 @@ static struct platform_driver gpu_cc_sm6350_driver = { .driver = { .name = "sm6350-gpucc", .of_match_table = gpu_cc_sm6350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sm6375.c b/drivers/clk/qcom/gpucc-sm6375.c index d8f4c4b59f1b..839877c32947 100644 --- a/drivers/clk/qcom/gpucc-sm6375.c +++ b/drivers/clk/qcom/gpucc-sm6375.c @@ -449,6 +449,7 @@ static struct platform_driver gpucc_sm6375_driver = { .driver = { .name = "gpucc-sm6375", .of_match_table = gpucc_sm6375_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(gpucc_sm6375_driver); diff --git a/drivers/clk/qcom/gpucc-sm8150.c b/drivers/clk/qcom/gpucc-sm8150.c index 8422fd047493..dd502ffcbe05 100644 --- a/drivers/clk/qcom/gpucc-sm8150.c +++ b/drivers/clk/qcom/gpucc-sm8150.c @@ -312,6 +312,7 @@ static struct platform_driver gpu_cc_sm8150_driver = { .driver = { .name = "sm8150-gpucc", .of_match_table = gpu_cc_sm8150_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sm8250.c b/drivers/clk/qcom/gpucc-sm8250.c index 9c1f8ce32da4..ab407589c8f0 100644 --- a/drivers/clk/qcom/gpucc-sm8250.c +++ b/drivers/clk/qcom/gpucc-sm8250.c @@ -328,6 +328,7 @@ static struct platform_driver gpu_cc_sm8250_driver = { .driver = { .name = "sm8250-gpucc", .of_match_table = gpu_cc_sm8250_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/gpucc-sm8350.c b/drivers/clk/qcom/gpucc-sm8350.c index 5367ce654ac9..9c0ae16df813 100644 --- a/drivers/clk/qcom/gpucc-sm8350.c +++ b/drivers/clk/qcom/gpucc-sm8350.c @@ -618,6 +618,7 @@ static struct platform_driver gpu_cc_sm8350_driver = { .driver = { .name = "sm8350-gpucc", .of_match_table = gpu_cc_sm8350_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/lcc-ipq806x.c b/drivers/clk/qcom/lcc-ipq806x.c index 81a44a9a9abc..76f9483c7371 100644 --- a/drivers/clk/qcom/lcc-ipq806x.c +++ b/drivers/clk/qcom/lcc-ipq806x.c @@ -463,6 +463,7 @@ static struct platform_driver lcc_ipq806x_driver = { .driver = { .name = "lcc-ipq806x", .of_match_table = lcc_ipq806x_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(lcc_ipq806x_driver); diff --git a/drivers/clk/qcom/lpassaudiocc-sc7280.c b/drivers/clk/qcom/lpassaudiocc-sc7280.c index 1339f9211a14..30d7d7fb88ff 100644 --- a/drivers/clk/qcom/lpassaudiocc-sc7280.c +++ b/drivers/clk/qcom/lpassaudiocc-sc7280.c @@ -863,6 +863,7 @@ static struct platform_driver lpass_aon_cc_sc7280_driver = { .name = "lpass_aon_cc-sc7280", .of_match_table = lpass_aon_cc_sc7280_match_table, .pm = &lpass_audio_cc_pm_ops, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/lpasscc-sc7280.c b/drivers/clk/qcom/lpasscc-sc7280.c index 48432010ce24..e48e7406e5b4 100644 --- a/drivers/clk/qcom/lpasscc-sc7280.c +++ b/drivers/clk/qcom/lpasscc-sc7280.c @@ -154,6 +154,7 @@ static struct platform_driver lpass_cc_sc7280_driver = { .driver = { .name = "sc7280-lpasscc", .of_match_table = lpass_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/lpasscorecc-sc7180.c b/drivers/clk/qcom/lpasscorecc-sc7180.c index 010867dcc2ef..27f10dcdba13 100644 --- a/drivers/clk/qcom/lpasscorecc-sc7180.c +++ b/drivers/clk/qcom/lpasscorecc-sc7180.c @@ -469,6 +469,7 @@ static struct platform_driver lpass_core_cc_sc7180_driver = { .name = "lpass_core_cc-sc7180", .of_match_table = lpass_core_cc_sc7180_match_table, .pm = &lpass_pm_ops, + .sync_state = qcom_cc_sync_state, }, }; @@ -478,6 +479,7 @@ static struct platform_driver lpass_hm_sc7180_driver = { .name = "lpass_hm-sc7180", .of_match_table = lpass_hm_sc7180_match_table, .pm = &lpass_pm_ops, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/lpasscorecc-sc7280.c b/drivers/clk/qcom/lpasscorecc-sc7280.c index 6ad19b06b1ce..8da95d0d4345 100644 --- a/drivers/clk/qcom/lpasscorecc-sc7280.c +++ b/drivers/clk/qcom/lpasscorecc-sc7280.c @@ -413,6 +413,7 @@ static struct platform_driver lpass_core_cc_sc7280_driver = { .driver = { .name = "lpass_core_cc-sc7280", .of_match_table = lpass_core_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; @@ -438,6 +439,7 @@ static struct platform_driver lpass_hm_sc7280_driver = { .driver = { .name = "lpass_hm-sc7280", .of_match_table = lpass_hm_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/mmcc-apq8084.c b/drivers/clk/qcom/mmcc-apq8084.c index 02fc21208dd1..0dc828d3831a 100644 --- a/drivers/clk/qcom/mmcc-apq8084.c +++ b/drivers/clk/qcom/mmcc-apq8084.c @@ -3145,6 +3145,7 @@ static struct platform_driver mmcc_apq8084_driver = { .driver = { .name = "mmcc-apq8084", .of_match_table = mmcc_apq8084_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_apq8084_driver); diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c index 4273fce9a4a4..19104a5ddae8 100644 --- a/drivers/clk/qcom/mmcc-msm8974.c +++ b/drivers/clk/qcom/mmcc-msm8974.c @@ -2801,6 +2801,7 @@ static struct platform_driver mmcc_msm8974_driver = { .driver = { .name = "mmcc-msm8974", .of_match_table = mmcc_msm8974_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_msm8974_driver); diff --git a/drivers/clk/qcom/mmcc-msm8994.c b/drivers/clk/qcom/mmcc-msm8994.c index 89c5f5fa7d9a..f021406b13b9 100644 --- a/drivers/clk/qcom/mmcc-msm8994.c +++ b/drivers/clk/qcom/mmcc-msm8994.c @@ -2611,6 +2611,7 @@ static struct platform_driver mmcc_msm8994_driver = { .driver = { .name = "mmcc-msm8994", .of_match_table = mmcc_msm8994_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_msm8994_driver); diff --git a/drivers/clk/qcom/mmcc-msm8996.c b/drivers/clk/qcom/mmcc-msm8996.c index 80330dab4d81..01ef542bc62c 100644 --- a/drivers/clk/qcom/mmcc-msm8996.c +++ b/drivers/clk/qcom/mmcc-msm8996.c @@ -3635,6 +3635,7 @@ static struct platform_driver mmcc_msm8996_driver = { .driver = { .name = "mmcc-msm8996", .of_match_table = mmcc_msm8996_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_msm8996_driver); diff --git a/drivers/clk/qcom/mmcc-msm8998.c b/drivers/clk/qcom/mmcc-msm8998.c index 4490594bde69..cc6153490614 100644 --- a/drivers/clk/qcom/mmcc-msm8998.c +++ b/drivers/clk/qcom/mmcc-msm8998.c @@ -2881,6 +2881,7 @@ static struct platform_driver mmcc_msm8998_driver = { .driver = { .name = "mmcc-msm8998", .of_match_table = mmcc_msm8998_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_msm8998_driver); diff --git a/drivers/clk/qcom/mmcc-sdm660.c b/drivers/clk/qcom/mmcc-sdm660.c index bc19a23e13f8..0afe71ec49fe 100644 --- a/drivers/clk/qcom/mmcc-sdm660.c +++ b/drivers/clk/qcom/mmcc-sdm660.c @@ -2859,6 +2859,7 @@ static struct platform_driver mmcc_660_driver = { .driver = { .name = "mmcc-sdm660", .of_match_table = mmcc_660_match_table, + .sync_state = qcom_cc_sync_state, }, }; module_platform_driver(mmcc_660_driver); diff --git a/drivers/clk/qcom/videocc-sc7180.c b/drivers/clk/qcom/videocc-sc7180.c index 5b9b54f616b8..13aeb02a4b42 100644 --- a/drivers/clk/qcom/videocc-sc7180.c +++ b/drivers/clk/qcom/videocc-sc7180.c @@ -234,6 +234,7 @@ static struct platform_driver video_cc_sc7180_driver = { .driver = { .name = "sc7180-videocc", .of_match_table = video_cc_sc7180_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/videocc-sc7280.c b/drivers/clk/qcom/videocc-sc7280.c index 615695d82319..041317bfc702 100644 --- a/drivers/clk/qcom/videocc-sc7280.c +++ b/drivers/clk/qcom/videocc-sc7280.c @@ -306,6 +306,7 @@ static struct platform_driver video_cc_sc7280_driver = { .driver = { .name = "video_cc-sc7280", .of_match_table = video_cc_sc7280_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/videocc-sdm845.c b/drivers/clk/qcom/videocc-sdm845.c index c77a4dd5d39c..f14584800be0 100644 --- a/drivers/clk/qcom/videocc-sdm845.c +++ b/drivers/clk/qcom/videocc-sdm845.c @@ -337,6 +337,7 @@ static struct platform_driver video_cc_sdm845_driver = { .driver = { .name = "sdm845-videocc", .of_match_table = video_cc_sdm845_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/videocc-sm8150.c b/drivers/clk/qcom/videocc-sm8150.c index 1afdbe4a249d..3144e22dd660 100644 --- a/drivers/clk/qcom/videocc-sm8150.c +++ b/drivers/clk/qcom/videocc-sm8150.c @@ -253,6 +253,7 @@ static struct platform_driver video_cc_sm8150_driver = { .driver = { .name = "video_cc-sm8150", .of_match_table = video_cc_sm8150_match_table, + .sync_state = qcom_cc_sync_state, }, }; diff --git a/drivers/clk/qcom/videocc-sm8250.c b/drivers/clk/qcom/videocc-sm8250.c index ad46c4014a40..fea6caad8d1f 100644 --- a/drivers/clk/qcom/videocc-sm8250.c +++ b/drivers/clk/qcom/videocc-sm8250.c @@ -399,6 +399,7 @@ static struct platform_driver video_cc_sm8250_driver = { .driver = { .name = "sm8250-videocc", .of_match_table = video_cc_sm8250_match_table, + .sync_state = qcom_cc_sync_state, }, };