From: Dmitry Osipenko <digetx@gmail.com> To: Qiang Yu <yuq825@gmail.com>, Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>, Rob Herring <robh@kernel.org>, Tomeu Vizoso <tomeu.vizoso@collabora.com>, Steven Price <steven.price@arm.com>, Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>, Stanimir Varbanov <stanimir.varbanov@linaro.org>, Andy Gross <agross@kernel.org>, Bjorn Andersson <bjorn.andersson@linaro.org>, Mauro Carvalho Chehab <mchehab@kernel.org>, Lukasz Luba <lukasz.luba@arm.com>, Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Adrian Hunter <adrian.hunter@intel.com>, Ulf Hansson <ulf.hansson@linaro.org>, Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>, Stephen Boyd <sboyd@kernel.org>, Mark Brown <broonie@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jirislaby@kernel.org>, Yangtao Li <tiny.windzz@gmail.com> Cc: Daniel Vetter <daniel@ffwll.ch>, dri-devel@lists.freedesktop.org, lima@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, freedreno@lists.freedesktop.org, linux-media@vger.kernel.org, linux-pm@vger.kernel.org, linux-samsung-soc@vger.kernel.org, linux-mmc@vger.kernel.org, linux-spi@vger.kernel.org, linux-serial@vger.kernel.org, linux-tegra@vger.kernel.org Subject: [PATCH v2 01/14] opp: Add devres wrapper for dev_pm_opp_set_clkname Date: Thu, 11 Mar 2021 22:20:52 +0300 [thread overview] Message-ID: <20210311192105.14998-2-digetx@gmail.com> (raw) In-Reply-To: <20210311192105.14998-1-digetx@gmail.com> From: Yangtao Li <tiny.windzz@gmail.com> Add devres wrapper for dev_pm_opp_set_clkname() to simplify drivers code. Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/opp/core.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_opp.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 150be4c28c99..3345ab8da6b2 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -2119,6 +2119,42 @@ void dev_pm_opp_put_clkname(struct opp_table *opp_table) } EXPORT_SYMBOL_GPL(dev_pm_opp_put_clkname); +static void devm_pm_opp_clkname_release(void *data) +{ + dev_pm_opp_put_clkname(data); +} + +/** + * devm_pm_opp_set_clkname() - Set clk name for the device + * @dev: Device for which clk name is being set. + * @name: Clk name. + * + * In order to support OPP switching, OPP layer needs to get pointer to the + * clock for the device. Simple cases work fine without using this routine (i.e. + * by passing connection-id as NULL), but for a device with multiple clocks + * available, the OPP core needs to know the exact name of the clk to use. + * + * This must be called before any OPPs are initialized for the device. + * + * The opp_table structure will be freed after the device is destroyed. + */ +struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name) +{ + struct opp_table *opp_table; + int err; + + opp_table = dev_pm_opp_set_clkname(dev, name); + if (IS_ERR(opp_table)) + return opp_table; + + err = devm_add_action_or_reset(dev, devm_pm_opp_clkname_release, opp_table); + if (err) + opp_table = ERR_PTR(err); + + return opp_table; +} +EXPORT_SYMBOL_GPL(devm_pm_opp_set_clkname); + /** * dev_pm_opp_register_set_opp_helper() - Register custom set OPP helper * @dev: Device for which the helper is getting registered. diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index c0371efa4a0f..6fb992168f1e 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -150,6 +150,7 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * con void dev_pm_opp_put_regulators(struct opp_table *opp_table); struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char *name); void dev_pm_opp_put_clkname(struct opp_table *opp_table); +struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name); struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data)); void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table); struct opp_table *devm_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data)); @@ -355,6 +356,11 @@ static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {} +static inline struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name) +{ + return ERR_PTR(-EOPNOTSUPP); +} + static inline struct opp_table *dev_pm_opp_attach_genpd(struct device *dev, const char **names, struct device ***virt_devs) { return ERR_PTR(-EOPNOTSUPP); -- 2.29.2
WARNING: multiple messages have this Message-ID (diff)
From: Dmitry Osipenko <digetx@gmail.com> To: Qiang Yu <yuq825@gmail.com>, Rob Clark <robdclark@gmail.com>, Sean Paul <sean@poorly.run>, Rob Herring <robh@kernel.org>, Tomeu Vizoso <tomeu.vizoso@collabora.com>, Steven Price <steven.price@arm.com>, Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>, Stanimir Varbanov <stanimir.varbanov@linaro.org>, Andy Gross <agross@kernel.org>, Bjorn Andersson <bjorn.andersson@linaro.org>, Mauro Carvalho Chehab <mchehab@kernel.org>, Lukasz Luba <lukasz.luba@arm.com>, Krzysztof Kozlowski <krzysztof.kozlowski@canonical.com>, Adrian Hunter <adrian.hunter@intel.com>, Ulf Hansson <ulf.hansson@linaro.org>, Viresh Kumar <vireshk@kernel.org>, Nishanth Menon <nm@ti.com>, Stephen Boyd <sboyd@kernel.org>, Mark Brown <broonie@kernel.org>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Jiri Slaby <jirislaby@kernel.org>, Yangtao Li <tiny.windzz@gmail.com> Cc: linux-samsung-soc@vger.kernel.org, linux-serial@vger.kernel.org, lima@lists.freedesktop.org, linux-pm@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-mmc@vger.kernel.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-spi@vger.kernel.org, linux-tegra@vger.kernel.org, freedreno@lists.freedesktop.org, linux-media@vger.kernel.org Subject: [PATCH v2 01/14] opp: Add devres wrapper for dev_pm_opp_set_clkname Date: Thu, 11 Mar 2021 22:20:52 +0300 [thread overview] Message-ID: <20210311192105.14998-2-digetx@gmail.com> (raw) In-Reply-To: <20210311192105.14998-1-digetx@gmail.com> From: Yangtao Li <tiny.windzz@gmail.com> Add devres wrapper for dev_pm_opp_set_clkname() to simplify drivers code. Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/opp/core.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_opp.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/drivers/opp/core.c b/drivers/opp/core.c index 150be4c28c99..3345ab8da6b2 100644 --- a/drivers/opp/core.c +++ b/drivers/opp/core.c @@ -2119,6 +2119,42 @@ void dev_pm_opp_put_clkname(struct opp_table *opp_table) } EXPORT_SYMBOL_GPL(dev_pm_opp_put_clkname); +static void devm_pm_opp_clkname_release(void *data) +{ + dev_pm_opp_put_clkname(data); +} + +/** + * devm_pm_opp_set_clkname() - Set clk name for the device + * @dev: Device for which clk name is being set. + * @name: Clk name. + * + * In order to support OPP switching, OPP layer needs to get pointer to the + * clock for the device. Simple cases work fine without using this routine (i.e. + * by passing connection-id as NULL), but for a device with multiple clocks + * available, the OPP core needs to know the exact name of the clk to use. + * + * This must be called before any OPPs are initialized for the device. + * + * The opp_table structure will be freed after the device is destroyed. + */ +struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name) +{ + struct opp_table *opp_table; + int err; + + opp_table = dev_pm_opp_set_clkname(dev, name); + if (IS_ERR(opp_table)) + return opp_table; + + err = devm_add_action_or_reset(dev, devm_pm_opp_clkname_release, opp_table); + if (err) + opp_table = ERR_PTR(err); + + return opp_table; +} +EXPORT_SYMBOL_GPL(devm_pm_opp_set_clkname); + /** * dev_pm_opp_register_set_opp_helper() - Register custom set OPP helper * @dev: Device for which the helper is getting registered. diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index c0371efa4a0f..6fb992168f1e 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -150,6 +150,7 @@ struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * con void dev_pm_opp_put_regulators(struct opp_table *opp_table); struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const char *name); void dev_pm_opp_put_clkname(struct opp_table *opp_table); +struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name); struct opp_table *dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data)); void dev_pm_opp_unregister_set_opp_helper(struct opp_table *opp_table); struct opp_table *devm_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data)); @@ -355,6 +356,11 @@ static inline struct opp_table *dev_pm_opp_set_clkname(struct device *dev, const static inline void dev_pm_opp_put_clkname(struct opp_table *opp_table) {} +static inline struct opp_table *devm_pm_opp_set_clkname(struct device *dev, const char *name) +{ + return ERR_PTR(-EOPNOTSUPP); +} + static inline struct opp_table *dev_pm_opp_attach_genpd(struct device *dev, const char **names, struct device ***virt_devs) { return ERR_PTR(-EOPNOTSUPP); -- 2.29.2 _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2021-03-11 19:22 UTC|newest] Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-11 19:20 [PATCH v2 00/14] Introduce devm_pm_opp_* API Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko [this message] 2021-03-11 19:20 ` [PATCH v2 01/14] opp: Add devres wrapper for dev_pm_opp_set_clkname Dmitry Osipenko 2021-03-12 5:33 ` Viresh Kumar 2021-03-12 5:33 ` Viresh Kumar 2021-03-12 10:36 ` Ulf Hansson 2021-03-12 10:36 ` Ulf Hansson 2021-03-12 13:19 ` Dmitry Osipenko 2021-03-12 13:19 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 02/14] opp: Add devres wrapper for dev_pm_opp_set_regulators Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 03/14] opp: Add devres wrapper for dev_pm_opp_set_supported_hw Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 04/14] opp: Add devres wrapper for dev_pm_opp_of_add_table Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 05/14] opp: Add devres wrapper for dev_pm_opp_register_notifier Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-12 5:26 ` Viresh Kumar 2021-03-12 5:26 ` Viresh Kumar 2021-03-12 13:17 ` Dmitry Osipenko 2021-03-12 13:17 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 06/14] serial: qcom_geni_serial: Convert to use resource-managed OPP API Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 07/14] spi: spi-geni-qcom: " Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:44 ` Mark Brown 2021-03-11 19:44 ` Mark Brown 2021-03-11 19:52 ` Dmitry Osipenko 2021-03-11 19:52 ` Dmitry Osipenko 2021-03-11 19:20 ` [PATCH v2 08/14] spi: spi-qcom-qspi: " Dmitry Osipenko 2021-03-11 19:20 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 09/14] mmc: sdhci-msm: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 10/14] drm/msm: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 11/14] drm/lima: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 12/14] drm/panfrost: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 13/14] media: venus: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko 2021-03-11 19:21 ` [PATCH v2 14/14] memory: samsung: exynos5422-dmc: " Dmitry Osipenko 2021-03-11 19:21 ` Dmitry Osipenko
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210311192105.14998-2-digetx@gmail.com \ --to=digetx@gmail.com \ --cc=adrian.hunter@intel.com \ --cc=agross@kernel.org \ --cc=alyssa.rosenzweig@collabora.com \ --cc=bjorn.andersson@linaro.org \ --cc=broonie@kernel.org \ --cc=daniel@ffwll.ch \ --cc=dri-devel@lists.freedesktop.org \ --cc=freedreno@lists.freedesktop.org \ --cc=gregkh@linuxfoundation.org \ --cc=jirislaby@kernel.org \ --cc=krzysztof.kozlowski@canonical.com \ --cc=lima@lists.freedesktop.org \ --cc=linux-arm-msm@vger.kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-media@vger.kernel.org \ --cc=linux-mmc@vger.kernel.org \ --cc=linux-pm@vger.kernel.org \ --cc=linux-samsung-soc@vger.kernel.org \ --cc=linux-serial@vger.kernel.org \ --cc=linux-spi@vger.kernel.org \ --cc=linux-tegra@vger.kernel.org \ --cc=lukasz.luba@arm.com \ --cc=mchehab@kernel.org \ --cc=nm@ti.com \ --cc=robdclark@gmail.com \ --cc=robh@kernel.org \ --cc=sboyd@kernel.org \ --cc=sean@poorly.run \ --cc=stanimir.varbanov@linaro.org \ --cc=steven.price@arm.com \ --cc=tiny.windzz@gmail.com \ --cc=tomeu.vizoso@collabora.com \ --cc=ulf.hansson@linaro.org \ --cc=vireshk@kernel.org \ --cc=yuq825@gmail.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.