Message ID | 20200805025458.2978-24-tingwei@codeaurora.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | coresight: allow to build coresight as modules | expand |
On 08/05/2020 03:54 AM, Tingwei Zhang wrote: > From: Mian Yousaf Kaukab <ykaukab@suse.de> > > Make etr_catu_buf_ops static. Instead of directly accessing it in > etr_buf_ops[], add a function to let catu driver register the ops at > runtime. Break circular dependency between tmc-etr and catu drivers. > > Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de> > Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> > --- > drivers/hwtracing/coresight/coresight-catu.c | 22 +++++++++++++++++-- > drivers/hwtracing/coresight/coresight-catu.h | 2 -- > .../hwtracing/coresight/coresight-tmc-etr.c | 15 +++++++++++-- > drivers/hwtracing/coresight/coresight-tmc.h | 3 +++ > 4 files changed, 36 insertions(+), 6 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-catu.c b/drivers/hwtracing/coresight/coresight-catu.c > index 1801804a7762..47696a7d24a7 100644 > --- a/drivers/hwtracing/coresight/coresight-catu.c > +++ b/drivers/hwtracing/coresight/coresight-catu.c > @@ -358,7 +358,7 @@ static int catu_alloc_etr_buf(struct tmc_drvdata *tmc_drvdata, > return 0; > } > > -const struct etr_buf_operations etr_catu_buf_ops = { > +static const struct etr_buf_operations etr_catu_buf_ops = { > .alloc = catu_alloc_etr_buf, > .free = catu_free_etr_buf, > .sync = catu_sync_etr_buf, > @@ -582,4 +582,22 @@ static struct amba_driver catu_driver = { > .id_table = catu_ids, > }; > > -builtin_amba_driver(catu_driver); > +static int __init catu_init(void) > +{ > + int ret; > + > + ret = amba_driver_register(&catu_driver); > + if (ret) > + pr_info("Error registering catu driver\n"); > + tmc_etr_set_catu_ops(&etr_catu_buf_ops); > + return ret; > +} > + > +static void __exit catu_exit(void) > +{ > + tmc_etr_remove_catu_ops(); > + amba_driver_unregister(&catu_driver); > +} > + > +module_init(catu_init); > +module_exit(catu_exit); Please add : MODULE_AUTHOR("Suzuki K Poulose <suzuki.poulose@arm.com>"); MODULE_DESCRIPTION("Arm CoreSight Address Translation Unit driver"); MODULE_LICENSE("GPL v2"); With that Reviewed-by : Suzuki K Poulose <suzuki.poulose@arm.com>
On 08/05/2020 05:09 PM, Suzuki K Poulose wrote: > On 08/05/2020 03:54 AM, Tingwei Zhang wrote: >> From: Mian Yousaf Kaukab <ykaukab@suse.de> >> >> Make etr_catu_buf_ops static. Instead of directly accessing it in >> etr_buf_ops[], add a function to let catu driver register the ops at >> runtime. Break circular dependency between tmc-etr and catu drivers. >> >> Signed-off-by: Mian Yousaf Kaukab <ykaukab@suse.de> >> Signed-off-by: Tingwei Zhang <tingwei@codeaurora.org> >> --- >> drivers/hwtracing/coresight/coresight-catu.c | 22 +++++++++++++++++-- >> drivers/hwtracing/coresight/coresight-catu.h | 2 -- >> .../hwtracing/coresight/coresight-tmc-etr.c | 15 +++++++++++-- >> drivers/hwtracing/coresight/coresight-tmc.h | 3 +++ >> 4 files changed, 36 insertions(+), 6 deletions(-) >> >> diff --git a/drivers/hwtracing/coresight/coresight-catu.c >> b/drivers/hwtracing/coresight/coresight-catu.c >> index 1801804a7762..47696a7d24a7 100644 >> --- a/drivers/hwtracing/coresight/coresight-catu.c >> +++ b/drivers/hwtracing/coresight/coresight-catu.c >> @@ -358,7 +358,7 @@ static int catu_alloc_etr_buf(struct tmc_drvdata >> *tmc_drvdata, >> return 0; >> } >> -const struct etr_buf_operations etr_catu_buf_ops = { >> +static const struct etr_buf_operations etr_catu_buf_ops = { >> .alloc = catu_alloc_etr_buf, >> .free = catu_free_etr_buf, >> .sync = catu_sync_etr_buf, >> @@ -582,4 +582,22 @@ static struct amba_driver catu_driver = { >> .id_table = catu_ids, >> }; >> -builtin_amba_driver(catu_driver); >> +static int __init catu_init(void) >> +{ >> + int ret; >> + >> + ret = amba_driver_register(&catu_driver); >> + if (ret) >> + pr_info("Error registering catu driver\n"); >> + tmc_etr_set_catu_ops(&etr_catu_buf_ops); >> + return ret; >> +} >> + >> +static void __exit catu_exit(void) >> +{ >> + tmc_etr_remove_catu_ops(); >> + amba_driver_unregister(&catu_driver); >> +} >> + >> +module_init(catu_init); >> +module_exit(catu_exit); > > Please add : > > > MODULE_AUTHOR("Suzuki K Poulose <suzuki.poulose@arm.com>"); > MODULE_DESCRIPTION("Arm CoreSight Address Translation Unit driver"); > MODULE_LICENSE("GPL v2"); Please ignore that, I see this in the next patch. > > Reviewed-by : Suzuki K Poulose <suzuki.poulose@arm.com> Suzuki
diff --git a/drivers/hwtracing/coresight/coresight-catu.c b/drivers/hwtracing/coresight/coresight-catu.c index 1801804a7762..47696a7d24a7 100644 --- a/drivers/hwtracing/coresight/coresight-catu.c +++ b/drivers/hwtracing/coresight/coresight-catu.c @@ -358,7 +358,7 @@ static int catu_alloc_etr_buf(struct tmc_drvdata *tmc_drvdata, return 0; } -const struct etr_buf_operations etr_catu_buf_ops = { +static const struct etr_buf_operations etr_catu_buf_ops = { .alloc = catu_alloc_etr_buf, .free = catu_free_etr_buf, .sync = catu_sync_etr_buf, @@ -582,4 +582,22 @@ static struct amba_driver catu_driver = { .id_table = catu_ids, }; -builtin_amba_driver(catu_driver); +static int __init catu_init(void) +{ + int ret; + + ret = amba_driver_register(&catu_driver); + if (ret) + pr_info("Error registering catu driver\n"); + tmc_etr_set_catu_ops(&etr_catu_buf_ops); + return ret; +} + +static void __exit catu_exit(void) +{ + tmc_etr_remove_catu_ops(); + amba_driver_unregister(&catu_driver); +} + +module_init(catu_init); +module_exit(catu_exit); diff --git a/drivers/hwtracing/coresight/coresight-catu.h b/drivers/hwtracing/coresight/coresight-catu.h index 80ceee3c739c..6160c2d75a56 100644 --- a/drivers/hwtracing/coresight/coresight-catu.h +++ b/drivers/hwtracing/coresight/coresight-catu.h @@ -108,6 +108,4 @@ static inline bool coresight_is_catu_device(struct coresight_device *csdev) return true; } -extern const struct etr_buf_operations etr_catu_buf_ops; - #endif diff --git a/drivers/hwtracing/coresight/coresight-tmc-etr.c b/drivers/hwtracing/coresight/coresight-tmc-etr.c index ad991a37e2d2..714f9e867e5f 100644 --- a/drivers/hwtracing/coresight/coresight-tmc-etr.c +++ b/drivers/hwtracing/coresight/coresight-tmc-etr.c @@ -794,10 +794,21 @@ static inline void tmc_etr_disable_catu(struct tmc_drvdata *drvdata) static const struct etr_buf_operations *etr_buf_ops[] = { [ETR_MODE_FLAT] = &etr_flat_buf_ops, [ETR_MODE_ETR_SG] = &etr_sg_buf_ops, - [ETR_MODE_CATU] = IS_ENABLED(CONFIG_CORESIGHT_CATU) - ? &etr_catu_buf_ops : NULL, + [ETR_MODE_CATU] = NULL, }; +void tmc_etr_set_catu_ops(const struct etr_buf_operations *catu) +{ + etr_buf_ops[ETR_MODE_CATU] = catu; +} +EXPORT_SYMBOL_GPL(tmc_etr_set_catu_ops); + +void tmc_etr_remove_catu_ops(void) +{ + etr_buf_ops[ETR_MODE_CATU] = NULL; +} +EXPORT_SYMBOL_GPL(tmc_etr_remove_catu_ops); + static inline int tmc_etr_mode_alloc_buf(int mode, struct tmc_drvdata *drvdata, struct etr_buf *etr_buf, int node, diff --git a/drivers/hwtracing/coresight/coresight-tmc.h b/drivers/hwtracing/coresight/coresight-tmc.h index 6e8d2dc33d17..b91ec7dde7bc 100644 --- a/drivers/hwtracing/coresight/coresight-tmc.h +++ b/drivers/hwtracing/coresight/coresight-tmc.h @@ -326,4 +326,7 @@ tmc_sg_table_buf_size(struct tmc_sg_table *sg_table) struct coresight_device *tmc_etr_get_catu_device(struct tmc_drvdata *drvdata); +void tmc_etr_set_catu_ops(const struct etr_buf_operations *catu); +void tmc_etr_remove_catu_ops(void); + #endif