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 v3 04/15] opp: Add devres wrapper for dev_pm_opp_of_add_table Date: Sun, 14 Mar 2021 19:33:57 +0300 [thread overview] Message-ID: <20210314163408.22292-5-digetx@gmail.com> (raw) In-Reply-To: <20210314163408.22292-1-digetx@gmail.com> From: Yangtao Li <tiny.windzz@gmail.com> Add devres wrapper for dev_pm_opp_of_add_table() to simplify drivers code. Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/opp/of.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_opp.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/drivers/opp/of.c b/drivers/opp/of.c index f480c10e6314..c582a9ca397b 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -1104,6 +1104,42 @@ static int _of_add_table_indexed(struct device *dev, int index, bool getclk) return ret; } +static void devm_pm_opp_of_table_release(void *data) +{ + dev_pm_opp_of_remove_table(data); +} + +/** + * devm_pm_opp_of_add_table() - Initialize opp table from device tree + * @dev: device pointer used to lookup OPP table. + * + * Register the initial OPP table with the OPP library for given device. + * + * The opp_table structure will be freed after the device is destroyed. + * + * Return: + * 0 On success OR + * Duplicate OPPs (both freq and volt are same) and opp->available + * -EEXIST Freq are same and volt are different OR + * Duplicate OPPs (both freq and volt are same) and !opp->available + * -ENOMEM Memory allocation failure + * -ENODEV when 'operating-points' property is not found or is invalid data + * in device node. + * -ENODATA when empty 'operating-points' property is found + * -EINVAL when invalid entries are found in opp-v2 table + */ +int devm_pm_opp_of_add_table(struct device *dev) +{ + int ret; + + ret = dev_pm_opp_of_add_table(dev); + if (ret) + return ret; + + return devm_add_action_or_reset(dev, devm_pm_opp_of_table_release, dev); +} +EXPORT_SYMBOL_GPL(devm_pm_opp_of_add_table); + /** * dev_pm_opp_of_add_table() - Initialize opp table from device tree * @dev: device pointer used to lookup OPP table. diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index e455b187e405..3f8894012429 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -441,6 +441,7 @@ int dev_pm_opp_of_add_table(struct device *dev); int dev_pm_opp_of_add_table_indexed(struct device *dev, int index); int dev_pm_opp_of_add_table_noclk(struct device *dev, int index); void dev_pm_opp_of_remove_table(struct device *dev); +int devm_pm_opp_of_add_table(struct device *dev); int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask); void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask); int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask); @@ -473,6 +474,11 @@ static inline void dev_pm_opp_of_remove_table(struct device *dev) { } +static inline int devm_pm_opp_of_add_table(struct device *dev) +{ + return -EOPNOTSUPP; +} + static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask) { return -EOPNOTSUPP; -- 2.30.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 v3 04/15] opp: Add devres wrapper for dev_pm_opp_of_add_table Date: Sun, 14 Mar 2021 19:33:57 +0300 [thread overview] Message-ID: <20210314163408.22292-5-digetx@gmail.com> (raw) In-Reply-To: <20210314163408.22292-1-digetx@gmail.com> From: Yangtao Li <tiny.windzz@gmail.com> Add devres wrapper for dev_pm_opp_of_add_table() to simplify drivers code. Signed-off-by: Yangtao Li <tiny.windzz@gmail.com> Signed-off-by: Dmitry Osipenko <digetx@gmail.com> --- drivers/opp/of.c | 36 ++++++++++++++++++++++++++++++++++++ include/linux/pm_opp.h | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/drivers/opp/of.c b/drivers/opp/of.c index f480c10e6314..c582a9ca397b 100644 --- a/drivers/opp/of.c +++ b/drivers/opp/of.c @@ -1104,6 +1104,42 @@ static int _of_add_table_indexed(struct device *dev, int index, bool getclk) return ret; } +static void devm_pm_opp_of_table_release(void *data) +{ + dev_pm_opp_of_remove_table(data); +} + +/** + * devm_pm_opp_of_add_table() - Initialize opp table from device tree + * @dev: device pointer used to lookup OPP table. + * + * Register the initial OPP table with the OPP library for given device. + * + * The opp_table structure will be freed after the device is destroyed. + * + * Return: + * 0 On success OR + * Duplicate OPPs (both freq and volt are same) and opp->available + * -EEXIST Freq are same and volt are different OR + * Duplicate OPPs (both freq and volt are same) and !opp->available + * -ENOMEM Memory allocation failure + * -ENODEV when 'operating-points' property is not found or is invalid data + * in device node. + * -ENODATA when empty 'operating-points' property is found + * -EINVAL when invalid entries are found in opp-v2 table + */ +int devm_pm_opp_of_add_table(struct device *dev) +{ + int ret; + + ret = dev_pm_opp_of_add_table(dev); + if (ret) + return ret; + + return devm_add_action_or_reset(dev, devm_pm_opp_of_table_release, dev); +} +EXPORT_SYMBOL_GPL(devm_pm_opp_of_add_table); + /** * dev_pm_opp_of_add_table() - Initialize opp table from device tree * @dev: device pointer used to lookup OPP table. diff --git a/include/linux/pm_opp.h b/include/linux/pm_opp.h index e455b187e405..3f8894012429 100644 --- a/include/linux/pm_opp.h +++ b/include/linux/pm_opp.h @@ -441,6 +441,7 @@ int dev_pm_opp_of_add_table(struct device *dev); int dev_pm_opp_of_add_table_indexed(struct device *dev, int index); int dev_pm_opp_of_add_table_noclk(struct device *dev, int index); void dev_pm_opp_of_remove_table(struct device *dev); +int devm_pm_opp_of_add_table(struct device *dev); int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask); void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask); int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask); @@ -473,6 +474,11 @@ static inline void dev_pm_opp_of_remove_table(struct device *dev) { } +static inline int devm_pm_opp_of_add_table(struct device *dev) +{ + return -EOPNOTSUPP; +} + static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask) { return -EOPNOTSUPP; -- 2.30.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-14 16:35 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-03-14 16:33 [PATCH v3 00/15] Introduce devm_pm_opp_* API Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:33 ` [PATCH v3 01/15] opp: Add devres wrapper for dev_pm_opp_set_clkname Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:33 ` [PATCH v3 02/15] opp: Add devres wrapper for dev_pm_opp_set_regulators Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:33 ` [PATCH v3 03/15] opp: Add devres wrapper for dev_pm_opp_set_supported_hw Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko [this message] 2021-03-14 16:33 ` [PATCH v3 04/15] opp: Add devres wrapper for dev_pm_opp_of_add_table Dmitry Osipenko 2021-03-14 16:33 ` [PATCH v3 05/15] opp: Change return type of devm_pm_opp_register_set_opp_helper() Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:33 ` [PATCH v3 06/15] opp: Change return type of devm_pm_opp_attach_genpd() Dmitry Osipenko 2021-03-14 16:33 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 07/15] serial: qcom_geni_serial: Convert to use resource-managed OPP API Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 08/15] spi: spi-geni-qcom: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 09/15] spi: spi-qcom-qspi: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 10/15] mmc: sdhci-msm: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 11/15] drm/msm: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-15 4:03 ` Viresh Kumar 2021-03-15 4:03 ` Viresh Kumar 2021-03-14 16:34 ` [PATCH v3 12/15] drm/lima: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 13/15] drm/panfrost: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-14 16:34 ` [PATCH v3 14/15] media: venus: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-25 8:13 ` Stanimir Varbanov 2021-03-25 8:13 ` Stanimir Varbanov 2021-03-25 9:09 ` Viresh Kumar 2021-03-25 9:09 ` Viresh Kumar 2021-03-14 16:34 ` [PATCH v3 15/15] memory: samsung: exynos5422-dmc: " Dmitry Osipenko 2021-03-14 16:34 ` Dmitry Osipenko 2021-03-15 4:06 ` [PATCH v3 00/15] Introduce devm_pm_opp_* API Viresh Kumar 2021-03-15 4:06 ` Viresh Kumar
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=20210314163408.22292-5-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.