Re: [PATCH v10 14/24] coresight: allow funnel driver to be built as module

2020-09-13 Thread Tingwei Zhang
On Sun, Sep 13, 2020 at 09:24:52PM +0800, Suzuki K Poulose wrote:
> On 08/21/2020 04:44 AM, Tingwei Zhang wrote:
> >From: Kim Phillips 
> >
> >Allow to build coresight-funnel as module, for ease of development.
> >
> >- combine static and dynamic funnel init into single
> >   module_init/exit call
> >- add funnel_remove functions, for module unload
> >- add a MODULE_DEVICE_TABLE for autoloading on boot
> >
> >Cc: Mathieu Poirier 
> >Cc: Leo Yan 
> >Cc: Alexander Shishkin 
> >Cc: Randy Dunlap 
> >Cc: Suzuki K Poulose 
> >Cc: Greg Kroah-Hartman 
> >Cc: Russell King 
> >Co-developed-by: Mian Yousaf Kaukab 
> >Signed-off-by: Mian Yousaf Kaukab 
> >Signed-off-by: Kim Phillips 
> >Signed-off-by: Tingwei Zhang 
> >Reported-by: kernel test robot 
> >Tested-by: Mike Leach 
> >Reviewed-by: Mathieu Poirier 
> >---
> >  .../hwtracing/coresight/coresight-funnel.c| 64 ++-
> >  1 file changed, 62 insertions(+), 2 deletions(-)
> >
> >diff --git a/drivers/hwtracing/coresight/coresight-funnel.c
> b/drivers/hwtracing/coresight/coresight-funnel.c
> >index 900690a9f7f0..07bc20391fac 100644
> >--- a/drivers/hwtracing/coresight/coresight-funnel.c
> >+++ b/drivers/hwtracing/coresight/coresight-funnel.c
> >@@ -274,6 +274,15 @@ static int funnel_probe(struct device *dev, struct
> resource *res)
> > return ret;
> >  }
> >+static int __exit funnel_remove(struct device *dev)
> >+{
> >+struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
> >+
> >+coresight_unregister(drvdata->csdev);
> >+
> >+return 0;
> >+}
> >+
> >  #ifdef CONFIG_PM
> >  static int funnel_runtime_suspend(struct device *dev)
> >  {
> >@@ -319,20 +328,32 @@ static int static_funnel_probe(struct
> platform_device *pdev)
> > return ret;
> >  }
> >+static int __exit static_funnel_remove(struct platform_device *pdev)
> >+{
> >+funnel_remove(>dev);
> >+pm_runtime_disable(>dev);
> >+return 0;
> >+}
> >+
> >  static const struct of_device_id static_funnel_match[] = {
> > {.compatible = "arm,coresight-static-funnel"},
> > {}
> >  };
> >+MODULE_DEVICE_TABLE(of, static_funnel_match);
> >+
> >  #ifdef CONFIG_ACPI
> >  static const struct acpi_device_id static_funnel_ids[] = {
> > {"ARMHC9FE", 0},
> > {},
> >  };
> >+
> >+MODULE_DEVICE_TABLE(acpi, static_funnel_ids);
> >  #endif
> >  static struct platform_driver static_funnel_driver = {
> > .probe  = static_funnel_probe,
> >+.remove  = static_funnel_remove,
> > .driver = {
> > .name   = "coresight-static-funnel",
> > .of_match_table = static_funnel_match,
> 
> Sorry missed this. Please set the owner field here. With that :
> 
> Reviewed-by: Suzuki K Poulose 
>
Thanks, Suzuki. I'll add owner in v11.

Thanks,
Tingwei 
> ___
> linux-arm-kernel mailing list
> linux-arm-ker...@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


Re: [PATCH v10 14/24] coresight: allow funnel driver to be built as module

2020-09-13 Thread Suzuki K Poulose

On 08/21/2020 04:44 AM, Tingwei Zhang wrote:

From: Kim Phillips 

Allow to build coresight-funnel as module, for ease of development.

- combine static and dynamic funnel init into single
   module_init/exit call
- add funnel_remove functions, for module unload
- add a MODULE_DEVICE_TABLE for autoloading on boot

Cc: Mathieu Poirier 
Cc: Leo Yan 
Cc: Alexander Shishkin 
Cc: Randy Dunlap 
Cc: Suzuki K Poulose 
Cc: Greg Kroah-Hartman 
Cc: Russell King 
Co-developed-by: Mian Yousaf Kaukab 
Signed-off-by: Mian Yousaf Kaukab 
Signed-off-by: Kim Phillips 
Signed-off-by: Tingwei Zhang 
Reported-by: kernel test robot 
Tested-by: Mike Leach 
Reviewed-by: Mathieu Poirier 
---
  .../hwtracing/coresight/coresight-funnel.c| 64 ++-
  1 file changed, 62 insertions(+), 2 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-funnel.c 
b/drivers/hwtracing/coresight/coresight-funnel.c
index 900690a9f7f0..07bc20391fac 100644
--- a/drivers/hwtracing/coresight/coresight-funnel.c
+++ b/drivers/hwtracing/coresight/coresight-funnel.c
@@ -274,6 +274,15 @@ static int funnel_probe(struct device *dev, struct 
resource *res)
return ret;
  }
  
+static int __exit funnel_remove(struct device *dev)

+{
+   struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
+
+   coresight_unregister(drvdata->csdev);
+
+   return 0;
+}
+
  #ifdef CONFIG_PM
  static int funnel_runtime_suspend(struct device *dev)
  {
@@ -319,20 +328,32 @@ static int static_funnel_probe(struct platform_device 
*pdev)
return ret;
  }
  
+static int __exit static_funnel_remove(struct platform_device *pdev)

+{
+   funnel_remove(>dev);
+   pm_runtime_disable(>dev);
+   return 0;
+}
+
  static const struct of_device_id static_funnel_match[] = {
{.compatible = "arm,coresight-static-funnel"},
{}
  };
  
+MODULE_DEVICE_TABLE(of, static_funnel_match);

+
  #ifdef CONFIG_ACPI
  static const struct acpi_device_id static_funnel_ids[] = {
{"ARMHC9FE", 0},
{},
  };
+
+MODULE_DEVICE_TABLE(acpi, static_funnel_ids);
  #endif
  
  static struct platform_driver static_funnel_driver = {

.probe  = static_funnel_probe,
+   .remove  = static_funnel_remove,
.driver = {
.name   = "coresight-static-funnel",
.of_match_table = static_funnel_match,


Sorry missed this. Please set the owner field here. With that :

Reviewed-by: Suzuki K Poulose 


Re: [PATCH v10 14/24] coresight: allow funnel driver to be built as module

2020-09-13 Thread Suzuki K Poulose

On 08/21/2020 04:44 AM, Tingwei Zhang wrote:

From: Kim Phillips 

Allow to build coresight-funnel as module, for ease of development.

- combine static and dynamic funnel init into single
   module_init/exit call
- add funnel_remove functions, for module unload
- add a MODULE_DEVICE_TABLE for autoloading on boot

Cc: Mathieu Poirier 
Cc: Leo Yan 
Cc: Alexander Shishkin 
Cc: Randy Dunlap 
Cc: Suzuki K Poulose 
Cc: Greg Kroah-Hartman 
Cc: Russell King 
Co-developed-by: Mian Yousaf Kaukab 
Signed-off-by: Mian Yousaf Kaukab 
Signed-off-by: Kim Phillips 
Signed-off-by: Tingwei Zhang 
Reported-by: kernel test robot 
Tested-by: Mike Leach 
Reviewed-by: Mathieu Poirier 


Reviewed-by: Suzuki K Poulose 


Re: [PATCH v10 14/24] coresight: allow funnel driver to be built as module

2020-08-21 Thread Sai Prakash Ranjan

On 2020-08-21 09:14, Tingwei Zhang wrote:

From: Kim Phillips 

Allow to build coresight-funnel as module, for ease of development.

- combine static and dynamic funnel init into single
  module_init/exit call
- add funnel_remove functions, for module unload
- add a MODULE_DEVICE_TABLE for autoloading on boot

Cc: Mathieu Poirier 
Cc: Leo Yan 
Cc: Alexander Shishkin 
Cc: Randy Dunlap 
Cc: Suzuki K Poulose 
Cc: Greg Kroah-Hartman 
Cc: Russell King 
Co-developed-by: Mian Yousaf Kaukab 
Signed-off-by: Mian Yousaf Kaukab 
Signed-off-by: Kim Phillips 
Signed-off-by: Tingwei Zhang 
Reported-by: kernel test robot 
Tested-by: Mike Leach 
Reviewed-by: Mathieu Poirier 
---


Tested-by: Sai Prakash Ranjan 

--
QUALCOMM INDIA, on behalf of Qualcomm Innovation Center, Inc. is a 
member

of Code Aurora Forum, hosted by The Linux Foundation


[PATCH v10 14/24] coresight: allow funnel driver to be built as module

2020-08-20 Thread Tingwei Zhang
From: Kim Phillips 

Allow to build coresight-funnel as module, for ease of development.

- combine static and dynamic funnel init into single
  module_init/exit call
- add funnel_remove functions, for module unload
- add a MODULE_DEVICE_TABLE for autoloading on boot

Cc: Mathieu Poirier 
Cc: Leo Yan 
Cc: Alexander Shishkin 
Cc: Randy Dunlap 
Cc: Suzuki K Poulose 
Cc: Greg Kroah-Hartman 
Cc: Russell King 
Co-developed-by: Mian Yousaf Kaukab 
Signed-off-by: Mian Yousaf Kaukab 
Signed-off-by: Kim Phillips 
Signed-off-by: Tingwei Zhang 
Reported-by: kernel test robot 
Tested-by: Mike Leach 
Reviewed-by: Mathieu Poirier 
---
 .../hwtracing/coresight/coresight-funnel.c| 64 ++-
 1 file changed, 62 insertions(+), 2 deletions(-)

diff --git a/drivers/hwtracing/coresight/coresight-funnel.c 
b/drivers/hwtracing/coresight/coresight-funnel.c
index 900690a9f7f0..07bc20391fac 100644
--- a/drivers/hwtracing/coresight/coresight-funnel.c
+++ b/drivers/hwtracing/coresight/coresight-funnel.c
@@ -274,6 +274,15 @@ static int funnel_probe(struct device *dev, struct 
resource *res)
return ret;
 }
 
+static int __exit funnel_remove(struct device *dev)
+{
+   struct funnel_drvdata *drvdata = dev_get_drvdata(dev);
+
+   coresight_unregister(drvdata->csdev);
+
+   return 0;
+}
+
 #ifdef CONFIG_PM
 static int funnel_runtime_suspend(struct device *dev)
 {
@@ -319,20 +328,32 @@ static int static_funnel_probe(struct platform_device 
*pdev)
return ret;
 }
 
+static int __exit static_funnel_remove(struct platform_device *pdev)
+{
+   funnel_remove(>dev);
+   pm_runtime_disable(>dev);
+   return 0;
+}
+
 static const struct of_device_id static_funnel_match[] = {
{.compatible = "arm,coresight-static-funnel"},
{}
 };
 
+MODULE_DEVICE_TABLE(of, static_funnel_match);
+
 #ifdef CONFIG_ACPI
 static const struct acpi_device_id static_funnel_ids[] = {
{"ARMHC9FE", 0},
{},
 };
+
+MODULE_DEVICE_TABLE(acpi, static_funnel_ids);
 #endif
 
 static struct platform_driver static_funnel_driver = {
.probe  = static_funnel_probe,
+   .remove  = static_funnel_remove,
.driver = {
.name   = "coresight-static-funnel",
.of_match_table = static_funnel_match,
@@ -341,7 +362,6 @@ static struct platform_driver static_funnel_driver = {
.suppress_bind_attrs = true,
},
 };
-builtin_platform_driver(static_funnel_driver);
 
 static int dynamic_funnel_probe(struct amba_device *adev,
const struct amba_id *id)
@@ -349,6 +369,11 @@ static int dynamic_funnel_probe(struct amba_device *adev,
return funnel_probe(>dev, >res);
 }
 
+static int __exit dynamic_funnel_remove(struct amba_device *adev)
+{
+   return funnel_remove(>dev);
+}
+
 static const struct amba_id dynamic_funnel_ids[] = {
{
.id = 0x000bb908,
@@ -362,6 +387,8 @@ static const struct amba_id dynamic_funnel_ids[] = {
{ 0, 0},
 };
 
+MODULE_DEVICE_TABLE(amba, dynamic_funnel_ids);
+
 static struct amba_driver dynamic_funnel_driver = {
.drv = {
.name   = "coresight-dynamic-funnel",
@@ -370,6 +397,39 @@ static struct amba_driver dynamic_funnel_driver = {
.suppress_bind_attrs = true,
},
.probe  = dynamic_funnel_probe,
+   .remove = dynamic_funnel_remove,
.id_table   = dynamic_funnel_ids,
 };
-builtin_amba_driver(dynamic_funnel_driver);
+
+static int __init funnel_init(void)
+{
+   int ret;
+
+   ret = platform_driver_register(_funnel_driver);
+   if (ret) {
+   pr_info("Error registering platform driver\n");
+   return ret;
+   }
+
+   ret = amba_driver_register(_funnel_driver);
+   if (ret) {
+   pr_info("Error registering amba driver\n");
+   platform_driver_unregister(_funnel_driver);
+   }
+
+   return ret;
+}
+
+static void __exit funnel_exit(void)
+{
+   platform_driver_unregister(_funnel_driver);
+   amba_driver_unregister(_funnel_driver);
+}
+
+module_init(funnel_init);
+module_exit(funnel_exit);
+
+MODULE_AUTHOR("Pratik Patel ");
+MODULE_AUTHOR("Mathieu Poirier ");
+MODULE_DESCRIPTION("Arm CoreSight Funnel Driver");
+MODULE_LICENSE("GPL v2");
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project