Re: [PATCHv8 06/16] power: omap-prm: added chain interrupt handler

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi

some comments (also see the comments for the 1/16 patch, some of which 
apply to this patch)

On Fri, 16 Sep 2011, Tero Kristo wrote:

> diff --git a/drivers/power/omap_prm.c b/drivers/power/omap_prm.c
> index dfc0920..880748a 100644
> --- a/drivers/power/omap_prm.c
> +++ b/drivers/power/omap_prm.c

...

> +static int __init omap_prm_probe(struct platform_device *pdev)
> +{
> +	struct omap_hwmod *oh;

This is a sign that something is wrong here.  Device driver code shouldn't 
have any hwmod dependencies.  The driver should just use whatever data it 
gets from the struct platform_device / platform_data.  

Code in arch/arm/mach-omap2 can use hwmod data to populate platform_data, 
if needed.  But it doesn't even look like that would be needed in this 
case.  The PRM revision register resides inside the PRM IP block, so it's 
valid for the PRM driver to read it directly.

Anyway, this PRM revision code is presumably mooted anyway if different 
drivers are probed for OMAP2430 vs. OMAP4-style PRMs.

> +	int rev;
> +
> +	oh = omap_hwmod_lookup("prm");
> +
> +	if (!oh) {
> +		pr_err("prm hwmod not found\n");
> +		return -ENODEV;
> +	}
> +
> +	prm_dev.base = omap_hwmod_get_mpu_rt_va(oh);
> +
> +	rev = prm_read_reg(oh->class->sysc->rev_offs);
> +
> +	switch (rev) {
> +	case OMAP3_PRM_REVISION:
> +		prm_dev.irq_setup = &omap3_prcm_irq_setup;
> +		prm_dev.revision = PRM_OMAP3;
> +		break;
> +	case OMAP4_PRM_REVISION:
> +		prm_dev.irq_setup = &omap4_prcm_irq_setup;
> +		prm_dev.revision = PRM_OMAP4;
> +		break;
> +	default:
> +		pr_err("unknown PRM revision: %08x\n", rev);
> +		return -ENODEV;
> +	}
> +
> +	prm_dev.irq = oh->mpu_irqs[0].irq;
> +
> +	omap_prcm_irq_init();
> +
> +	return 0;
> +}

- Paul
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Arm (vger)]     [ARM Kernel]     [ARM MSM]     [Linux Tegra]     [Linux WPAN Networking]     [Linux Wireless Networking]     [Maemo Users]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite Trails]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux