interconnect changes for 6.1

These are the interconnect changes for the 6.1-rc1 merge window, which
 this time are tiny. One is a series to convert the remove() callback of
 platform devices to return void instead of int. The other change is
 enabling modular support for a driver.
 
 Signed-off-by: Georgi Djakov <djakov@kernel.org>
 -----BEGIN PGP SIGNATURE-----
 
 iQIcBAABAgAGBQJjMapuAAoJEIDQzArG2BZjERkP/jBLAdgFeiYidCJPrK6FB9WB
 qjbmYJIHrDhQgRThSxLhjAX8me1UXd5VEkjgD26EbNnvNfmt/1Wb2twl7NTEGn+7
 dzqFHCALbmVpJJg2BFg0k+B2stZF0+cPBXsvVzCEbihnVuOfrK9QFu7JwVUaivF5
 wPxYn0vtutqXt2/mjMqGMvjteJPO2D8jV0aSdr1j3mqIZslwqWgr9JMC0IVxGHvW
 ubGV7Ydh64U3PT0eSl0iMCC16HQXihhbU06Lj54QKrOjvVRGQV2kFvPU46TXHskH
 aI0deNrYatnWQo/3sHUt7ihiHadOEDYCXYOT0lq9GYQ2j1EIM9wCL00s/Ljbg1d1
 fBfRtAgtnU/jnsnMlBDbg/PsDSPcNQLE3zKh09Lv4q4rjo69LkKwvraaXEi5j7nc
 +IjpSoppjxd807wxNug/pAXKtVppEsonZhZO+jUnE7hNOAA4wHyr05GKCrCifju8
 7KTKej4dpTeKtIhw4i3/bNj/XzqLlLaOCG7BcEvIQjRW8TUn/BJhDY0PMsdGnXjA
 iE0gx5REJ0TFf+RsccT7ub8K7W03KU8hCREll41/fX06Y6LJbaWMPX874i5P505V
 cTnjISddLgvzlQqD74le9Zel2O+gcaneLiAcXKVPsY8mvRPEJ6S61BvMb2bwT2SB
 jIKhEwCJemNST2e2k4Ej
 =RunL
 -----END PGP SIGNATURE-----

Merge tag 'icc-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc into char-misc-next

Grorgi writes:
  "interconnect changes for 6.1

   These are the interconnect changes for the 6.1-rc1 merge window, which
   this time are tiny. One is a series to convert the remove() callback of
   platform devices to return void instead of int. The other change is
   enabling modular support for a driver."

Signed-off-by: Georgi Djakov <djakov@kernel.org>

* tag 'icc-6.1-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/djakov/icc:
  interconnect: qcom: Kconfig: Make INTERCONNECT_QCOM tristate
  interconnect: imx: Make imx_icc_unregister() return void
  interconnect: Make icc_provider_del() return void
  interconnect: sm8450: Ignore return value of icc_provider_del() in .remove()
  interconnect: osm-l3: Ignore return value of icc_provider_del() in .remove()
  interconnect: msm8974: Ignore return value of icc_provider_del() in .remove()
  interconnect: icc-rpmh: Ignore return value of icc_provider_del() in .remove()
  interconnect: icc-rpm: Ignore return value of icc_provider_del() in .remove()
  interconnect: imx: Ignore return value of icc_provider_del() in .remove()
This commit is contained in:
Greg Kroah-Hartman 2022-09-26 19:25:32 +02:00
commit 3aa12610b4
15 changed files with 39 additions and 23 deletions

View file

@ -1057,29 +1057,25 @@ EXPORT_SYMBOL_GPL(icc_provider_add);
/**
* icc_provider_del() - delete previously added interconnect provider
* @provider: the interconnect provider that will be removed from topology
*
* Return: 0 on success, or an error code otherwise
*/
int icc_provider_del(struct icc_provider *provider)
void icc_provider_del(struct icc_provider *provider)
{
mutex_lock(&icc_lock);
if (provider->users) {
pr_warn("interconnect provider still has %d users\n",
provider->users);
mutex_unlock(&icc_lock);
return -EBUSY;
return;
}
if (!list_empty(&provider->nodes)) {
pr_warn("interconnect provider still has nodes\n");
mutex_unlock(&icc_lock);
return -EBUSY;
return;
}
list_del(&provider->provider_list);
mutex_unlock(&icc_lock);
return 0;
}
EXPORT_SYMBOL_GPL(icc_provider_del);

View file

@ -324,13 +324,13 @@ int imx_icc_register(struct platform_device *pdev,
}
EXPORT_SYMBOL_GPL(imx_icc_register);
int imx_icc_unregister(struct platform_device *pdev)
void imx_icc_unregister(struct platform_device *pdev)
{
struct imx_icc_provider *imx_provider = platform_get_drvdata(pdev);
imx_icc_unregister_nodes(&imx_provider->provider);
return icc_provider_del(&imx_provider->provider);
icc_provider_del(&imx_provider->provider);
}
EXPORT_SYMBOL_GPL(imx_icc_unregister);

View file

@ -103,6 +103,6 @@ int imx_icc_register(struct platform_device *pdev,
struct imx_icc_node_desc *nodes,
int nodes_count,
struct imx_icc_noc_setting *noc_settings);
int imx_icc_unregister(struct platform_device *pdev);
void imx_icc_unregister(struct platform_device *pdev);
#endif /* __DRIVERS_INTERCONNECT_IMX_H */

View file

@ -88,7 +88,9 @@ static int imx8mm_icc_probe(struct platform_device *pdev)
static int imx8mm_icc_remove(struct platform_device *pdev)
{
return imx_icc_unregister(pdev);
imx_icc_unregister(pdev);
return 0;
}
static struct platform_driver imx8mm_icc_driver = {

View file

@ -77,7 +77,9 @@ static int imx8mn_icc_probe(struct platform_device *pdev)
static int imx8mn_icc_remove(struct platform_device *pdev)
{
return imx_icc_unregister(pdev);
imx_icc_unregister(pdev);
return 0;
}
static struct platform_driver imx8mn_icc_driver = {

View file

@ -242,7 +242,9 @@ static int imx8mp_icc_probe(struct platform_device *pdev)
static int imx8mp_icc_remove(struct platform_device *pdev)
{
return imx_icc_unregister(pdev);
imx_icc_unregister(pdev);
return 0;
}
static struct platform_driver imx8mp_icc_driver = {

View file

@ -87,7 +87,9 @@ static int imx8mq_icc_probe(struct platform_device *pdev)
static int imx8mq_icc_remove(struct platform_device *pdev)
{
return imx_icc_unregister(pdev);
imx_icc_unregister(pdev);
return 0;
}
static struct platform_driver imx8mq_icc_driver = {

View file

@ -1,6 +1,6 @@
# SPDX-License-Identifier: GPL-2.0-only
config INTERCONNECT_QCOM
bool "Qualcomm Network-on-Chip interconnect drivers"
tristate "Qualcomm Network-on-Chip interconnect drivers"
depends on ARCH_QCOM
help
Support for Qualcomm's Network-on-Chip interconnect hardware.

View file

@ -5,6 +5,7 @@
#include <linux/of.h>
#include <linux/slab.h>
#include <linux/module.h>
#include "icc-common.h"
@ -32,3 +33,5 @@ struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void
return ndata;
}
EXPORT_SYMBOL_GPL(qcom_icc_xlate_extended);
MODULE_LICENSE("GPL");

View file

@ -563,6 +563,8 @@ int qnoc_remove(struct platform_device *pdev)
icc_nodes_remove(&qp->provider);
clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
return icc_provider_del(&qp->provider);
icc_provider_del(&qp->provider);
return 0;
}
EXPORT_SYMBOL(qnoc_remove);

View file

@ -251,7 +251,9 @@ int qcom_icc_rpmh_remove(struct platform_device *pdev)
struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
icc_nodes_remove(&qp->provider);
return icc_provider_del(&qp->provider);
icc_provider_del(&qp->provider);
return 0;
}
EXPORT_SYMBOL_GPL(qcom_icc_rpmh_remove);

View file

@ -749,7 +749,9 @@ static int msm8974_icc_remove(struct platform_device *pdev)
icc_nodes_remove(&qp->provider);
clk_bulk_disable_unprepare(qp->num_clks, qp->bus_clks);
return icc_provider_del(&qp->provider);
icc_provider_del(&qp->provider);
return 0;
}
static const struct of_device_id msm8974_noc_of_match[] = {

View file

@ -217,7 +217,9 @@ static int qcom_osm_l3_remove(struct platform_device *pdev)
struct qcom_osm_l3_icc_provider *qp = platform_get_drvdata(pdev);
icc_nodes_remove(&qp->provider);
return icc_provider_del(&qp->provider);
icc_provider_del(&qp->provider);
return 0;
}
static int qcom_osm_l3_probe(struct platform_device *pdev)

View file

@ -1933,7 +1933,9 @@ static int qnoc_remove(struct platform_device *pdev)
struct qcom_icc_provider *qp = platform_get_drvdata(pdev);
icc_nodes_remove(&qp->provider);
return icc_provider_del(&qp->provider);
icc_provider_del(&qp->provider);
return 0;
}
static const struct of_device_id qnoc_of_match[] = {

View file

@ -123,7 +123,7 @@ void icc_node_add(struct icc_node *node, struct icc_provider *provider);
void icc_node_del(struct icc_node *node);
int icc_nodes_remove(struct icc_provider *provider);
int icc_provider_add(struct icc_provider *provider);
int icc_provider_del(struct icc_provider *provider);
void icc_provider_del(struct icc_provider *provider);
struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec);
void icc_sync_state(struct device *dev);
@ -172,9 +172,8 @@ static inline int icc_provider_add(struct icc_provider *provider)
return -ENOTSUPP;
}
static inline int icc_provider_del(struct icc_provider *provider)
static inline void icc_provider_del(struct icc_provider *provider)
{
return -ENOTSUPP;
}
static inline struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec)