soc: dove: add legacy support to PMU driver
PATCH v3 2/3 soc: dove: add legacy support to PMU driver
Add support for legacy non-DT Dove to the PMU driver, so that we can transition the legacy support over.
Acked-by Arnd Bergmann <[email protected]>
Signed-off-by Russell King <[email protected]>
---
v3: add irq_domain_start to init data to kill build error in dove/pmu.c
drivers/soc/Makefile | 1 + drivers/soc/dove/pmu.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/soc/dove/pmu.h | 19 +++++++++++++++++++ 3 files changed, 64 insertions(+)
drivers/soc/Makefile +1 -0
@@ -2,6 +2,7 @@ # Makefile for the Linux Kernel SOC specific device drivers. # +obj-$(CONFIG_ARCH_DOVE) += dove/ obj-$(CONFIG_MACH_DOVE) += dove/ obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/ obj-$(CONFIG_ARCH_QCOM) += qcom/
drivers/soc/dove/pmu.c +44 -0
50 lines not on this page · raw message
include/linux/soc/dove/pmu.h +19 -0
@@ -1,6 +1,25 @@#ifndef LINUX_SOC_DOVE_PMU_H #define LINUX_SOC_DOVE_PMU_H +#include <linux/types.h> + +struct dove_pmu_domain_initdata { +u32 pwr_mask; +u32 rst_mask; +u32 iso_mask; +const char *name; +}; + +struct dove_pmu_initdata { +void __iomem *pmc_base; +void __iomem *pmu_base; +int irq; +int irq_domain_start; +const struct dove_pmu_domain_initdata *domains; +}; + +int dove_init_pmu_legacy (const struct dove_pmu_initdata *); +int dove_init_pmu (void );#endif
Signature · 1 line
2.1.0
PATCH v3 2/3 soc: dove: add legacy support to PMU driver
Hi Russell,
Quoted 5 lines · Russell King
Add support for legacy non-DT Dove to the PMU driver, so that we can transition the legacy support over.
Acked-by Arnd Bergmann <[email protected]>Signed-off-by Russell King <[email protected]>
I applied this patch on mvebu/soc instead of the v2. I still had to amend it by removing the pm_genpd_poweroff_unused call, and now it compiles.
Thanks,
Gregory
Quoted 108 lines
---
v3: addirq_domain_startto init data to kill build error indove/pmu.cdrivers/soc/Makefile | 1 + drivers/soc/dove/pmu.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ include/linux/soc/dove/pmu.h | 19 +++++++++++++++++++ 3 files changed, 64 insertions(+)drivers/soc/Makefile +1
-0@@ -2,6 +2,7 @@ # Makefile for the Linux Kernel SOC specific device drivers. # +obj-$(CONFIG_ARCH_DOVE) += dove/ obj-$(CONFIG_MACH_DOVE) += dove/ obj-$(CONFIG_ARCH_MEDIATEK) += mediatek/ obj-$(CONFIG_ARCH_QCOM) += qcom/drivers/soc/dove/pmu.c +44
-0@@ -305,6 +305,50 @@ static int __init dove_init_pmu_irq(struct pmu_data *pmu, int irq)return 0 ; } +int __init dove_init_pmu_legacy (const struct dove_pmu_initdata *initdata) +{ +const struct dove_pmu_domain_initdata *domain_initdata; +struct pmu_data *pmu; +int ret; + + pmu =kzalloc (sizeof (*pmu),GFP_KERNEL ); +if (!pmu) +return -ENOMEM ; + +spin_lock_init (&pmu->lock); + pmu->pmc_base = initdata->pmc_base; + pmu->pmu_base = initdata->pmu_base; + +pmu_reset_init (pmu); +for (domain_initdata = initdata->domains; domain_initdata->name; + domain_initdata++) { +struct pmu_domain *domain; + + domain =kzalloc (sizeof (*domain),GFP_KERNEL ); +if (domain) { + domain->pmu = pmu; + domain->pwr_mask = domain_initdata->pwr_mask; + domain->rst_mask = domain_initdata->rst_mask; + domain->iso_mask = domain_initdata->iso_mask; + domain->base.name = domain_initdata->name; + +__pmu_domain_register (domain,NULL ); + } + } +pm_genpd_poweroff_unused (); + + ret =dove_init_pmu_irq (pmu, initdata->irq); +if (ret) +pr_err ("dove_init_pmu_irq() failed: %d\n" , ret); + +if (pmu->irq_domain) +irq_domain_associate_many (pmu->irq_domain, + initdata->irq_domain_start, +0 ,NR_PMU_IRQS ); + +return 0 ; +} +/* * pmu: power-manager at d0000 { * compatible = "marvell,dove-pmu"; include/linux/soc/dove/pmu.h +19
-0@@ -1,6 +1,25 @@#ifndef LINUX_SOC_DOVE_PMU_H #define LINUX_SOC_DOVE_PMU_H +#include <linux/types.h> + +struct dove_pmu_domain_initdata { +u32 pwr_mask; +u32 rst_mask; +u32 iso_mask; +const char *name; +}; + +struct dove_pmu_initdata { +void __iomem *pmc_base; +void __iomem *pmu_base; +int irq; +int irq_domain_start; +const struct dove_pmu_domain_initdata *domains; +}; + +int dove_init_pmu_legacy (const struct dove_pmu_initdata *); +int dove_init_pmu (void );#endif Signature · 1 line
2.1.0
Signature · 4 lines
Gregory Clement, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com