diff mbox series

[1/3] rpmsg: core: export rpmsg bus type

Message ID 20180302145531.20463-2-srinivas.kandagatla@linaro.org
State New
Headers show
Series drivers: rpmsg: make rpmsg bus DMA capable | expand

Commit Message

Srinivas Kandagatla March 2, 2018, 2:55 p.m. UTC
From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>


Export rpmsg bus type so that iommu drivers iommu ops to
rpmsg bus type.

On Qualcomm SoCs ADSP exposes functions like audio and
other which need iommu access, as these drivers are part
of rpmsg bus, able to allocate memory from iommus is basic
requirement. So expose this bus so that iommu drivers can
add ops to this.

Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

---
 drivers/rpmsg/rpmsg_core.c | 3 ++-
 include/linux/rpmsg.h      | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

-- 
2.15.1

Comments

Robin Murphy March 2, 2018, 3:25 p.m. UTC | #1
On 02/03/18 14:55, srinivas.kandagatla@linaro.org wrote:
> From: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> 

> Export rpmsg bus type so that iommu drivers iommu ops to

> rpmsg bus type.

> 

> On Qualcomm SoCs ADSP exposes functions like audio and

> other which need iommu access, as these drivers are part

> of rpmsg bus, able to allocate memory from iommus is basic

> requirement. So expose this bus so that iommu drivers can

> add ops to this.


IOMMU drivers are built-in while rpmsg can be built as a module, so that 
isn't always going to work.

Robin.

> Signed-off-by: Srinivas Kandagatla <srinivas.kandagatla@linaro.org>

> ---

>   drivers/rpmsg/rpmsg_core.c | 3 ++-

>   include/linux/rpmsg.h      | 2 +-

>   2 files changed, 3 insertions(+), 2 deletions(-)

> 

> diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c

> index 5a081762afcc..e84c71f8d6ab 100644

> --- a/drivers/rpmsg/rpmsg_core.c

> +++ b/drivers/rpmsg/rpmsg_core.c

> @@ -465,7 +465,7 @@ static int rpmsg_dev_remove(struct device *dev)

>   	return err;

>   }

>   

> -static struct bus_type rpmsg_bus = {

> +struct bus_type rpmsg_bus = {

>   	.name		= "rpmsg",

>   	.match		= rpmsg_dev_match,

>   	.dev_groups	= rpmsg_dev_groups,

> @@ -473,6 +473,7 @@ static struct bus_type rpmsg_bus = {

>   	.probe		= rpmsg_dev_probe,

>   	.remove		= rpmsg_dev_remove,

>   };

> +EXPORT_SYMBOL(rpmsg_bus);

>   

>   int rpmsg_register_device(struct rpmsg_device *rpdev)

>   {

> diff --git a/include/linux/rpmsg.h b/include/linux/rpmsg.h

> index ca07366c4c33..869e5946b7df 100644

> --- a/include/linux/rpmsg.h

> +++ b/include/linux/rpmsg.h

> @@ -49,7 +49,7 @@ struct rpmsg_device;

>   struct rpmsg_endpoint;

>   struct rpmsg_device_ops;

>   struct rpmsg_endpoint_ops;

> -

> +extern struct bus_type rpmsg_bus;

>   /**

>    * struct rpmsg_channel_info - channel info representation

>    * @name: name of service

>
diff mbox series

Patch

diff --git a/drivers/rpmsg/rpmsg_core.c b/drivers/rpmsg/rpmsg_core.c
index 5a081762afcc..e84c71f8d6ab 100644
--- a/drivers/rpmsg/rpmsg_core.c
+++ b/drivers/rpmsg/rpmsg_core.c
@@ -465,7 +465,7 @@  static int rpmsg_dev_remove(struct device *dev)
 	return err;
 }
 
-static struct bus_type rpmsg_bus = {
+struct bus_type rpmsg_bus = {
 	.name		= "rpmsg",
 	.match		= rpmsg_dev_match,
 	.dev_groups	= rpmsg_dev_groups,
@@ -473,6 +473,7 @@  static struct bus_type rpmsg_bus = {
 	.probe		= rpmsg_dev_probe,
 	.remove		= rpmsg_dev_remove,
 };
+EXPORT_SYMBOL(rpmsg_bus);
 
 int rpmsg_register_device(struct rpmsg_device *rpdev)
 {
diff --git a/include/linux/rpmsg.h b/include/linux/rpmsg.h
index ca07366c4c33..869e5946b7df 100644
--- a/include/linux/rpmsg.h
+++ b/include/linux/rpmsg.h
@@ -49,7 +49,7 @@  struct rpmsg_device;
 struct rpmsg_endpoint;
 struct rpmsg_device_ops;
 struct rpmsg_endpoint_ops;
-
+extern struct bus_type rpmsg_bus;
 /**
  * struct rpmsg_channel_info - channel info representation
  * @name: name of service