Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab7b2ffc authored by Tero Kristo's avatar Tero Kristo
Browse files

ARM: OMAP2+: PRM: move SoC specific init calls within a generic API



This gets rid of need for some exported driver APIs, and simplifies the
initialization of the PRM driver. Done in preparation to make PRM a
separate driver. The init data is now also passed to the SoC specific
implementations, allowing future expansion to add feature flags etc.

Signed-off-by: default avatarTero Kristo <t-kristo@ti.com>
parent 2208bf11
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -386,7 +386,7 @@ void __init omap2420_init_early(void)
			       OMAP2_L3_IO_ADDRESS(OMAP2420_SMS_BASE));
	omap2_control_base_init();
	omap2xxx_check_revision();
	omap2xxx_prm_init();
	omap2_prcm_base_init();
	omap2xxx_cm_init();
	omap2xxx_voltagedomains_init();
	omap242x_powerdomains_init();
@@ -413,7 +413,7 @@ void __init omap2430_init_early(void)
			       OMAP2_L3_IO_ADDRESS(OMAP243X_SMS_BASE));
	omap2_control_base_init();
	omap2xxx_check_revision();
	omap2xxx_prm_init();
	omap2_prcm_base_init();
	omap2xxx_cm_init();
	omap2xxx_voltagedomains_init();
	omap243x_powerdomains_init();
@@ -453,7 +453,8 @@ void __init omap3_init_early(void)
	omap2_control_base_init();
	omap3xxx_check_revision();
	omap3xxx_check_features();
	omap3xxx_prm_init();
	omap2_prcm_base_init();
	omap3xxx_prm_init(NULL);
	omap3xxx_cm_init();
	omap3xxx_voltagedomains_init();
	omap3xxx_powerdomains_init();
@@ -551,7 +552,7 @@ void __init ti814x_init_early(void)
	omap2_control_base_init();
	omap3xxx_check_revision();
	ti81xx_check_features();
	am33xx_prm_init();
	omap2_prcm_base_init();
	am33xx_cm_init();
	omap3xxx_voltagedomains_init();
	omap3xxx_powerdomains_init();
@@ -569,7 +570,7 @@ void __init ti816x_init_early(void)
	omap2_control_base_init();
	omap3xxx_check_revision();
	ti81xx_check_features();
	am33xx_prm_init();
	omap2_prcm_base_init();
	am33xx_cm_init();
	omap3xxx_voltagedomains_init();
	omap3xxx_powerdomains_init();
@@ -589,7 +590,7 @@ void __init am33xx_init_early(void)
	omap2_control_base_init();
	omap3xxx_check_revision();
	am33xx_check_features();
	am33xx_prm_init();
	omap2_prcm_base_init();
	am33xx_cm_init();
	am33xx_powerdomains_init();
	am33xx_clockdomains_init();
@@ -612,7 +613,7 @@ void __init am43xx_init_early(void)
	omap2_control_base_init();
	omap3xxx_check_revision();
	am33xx_check_features();
	omap44xx_prm_init();
	omap2_prcm_base_init();
	omap4_cm_init();
	am43xx_powerdomains_init();
	am43xx_clockdomains_init();
@@ -638,7 +639,7 @@ void __init omap4430_init_early(void)
	omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP4430_PRCM_MPU_BASE));
	omap4xxx_check_revision();
	omap4xxx_check_features();
	omap44xx_prm_init();
	omap2_prcm_base_init();
	omap4_cm_init();
	omap4_pm_init_early();
	omap44xx_voltagedomains_init();
@@ -667,7 +668,7 @@ void __init omap5_init_early(void)
				  OMAP2_L4_IO_ADDRESS(OMAP54XX_CTRL_BASE));
	omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE));
	omap4_pm_init_early();
	omap44xx_prm_init();
	omap2_prcm_base_init();
	omap5xxx_check_revision();
	omap4_cm_init();
	omap54xx_voltagedomains_init();
@@ -694,7 +695,7 @@ void __init dra7xx_init_early(void)
				  OMAP2_L4_IO_ADDRESS(DRA7XX_CTRL_BASE));
	omap2_set_globals_prcm_mpu(OMAP2_L4_IO_ADDRESS(OMAP54XX_PRCM_MPU_BASE));
	omap4_pm_init_early();
	omap44xx_prm_init();
	omap2_prcm_base_init();
	dra7xxx_check_revision();
	omap4_cm_init();
	dra7xx_powerdomains_init();
+4 −0
Original line number Diff line number Diff line
@@ -524,12 +524,16 @@ struct omap_prcm_irq_setup {
 * @mem: IO mem pointer for this module
 * @offset: module base address offset from the IO base
 * @flags: PRCM module init flags
 * @init: low level PRCM init function for this module
 * @np: device node for this PRCM module
 */
struct omap_prcm_init_data {
	int index;
	void __iomem *mem;
	s16 offset;
	u16 flags;
	int (*init)(const struct omap_prcm_init_data *data);
	struct device_node *np;
};

extern void omap_prcm_irq_cleanup(void);
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ extern u16 prm_features;
extern void omap2_set_globals_prm(void __iomem *prm);
int omap_prcm_init(void);
int omap2_prm_base_init(void);
int omap2_prcm_base_init(void);
# endif

/*
+1 −2
Original line number Diff line number Diff line
@@ -220,9 +220,8 @@ static struct prm_ll_data omap2xxx_prm_ll_data = {
	.clear_mod_irqs = &omap2xxx_prm_clear_mod_irqs,
};

int __init omap2xxx_prm_init(void)
int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data)
{
	omap2_prm_base_init();
	return prm_register(&omap2xxx_prm_ll_data);
}

+1 −1
Original line number Diff line number Diff line
@@ -124,7 +124,7 @@
extern int omap2xxx_clkdm_sleep(struct clockdomain *clkdm);
extern int omap2xxx_clkdm_wakeup(struct clockdomain *clkdm);

extern int __init omap2xxx_prm_init(void);
int __init omap2xxx_prm_init(const struct omap_prcm_init_data *data);

#endif

Loading