diff options
| author | Peter Ujfalusi <peter.ujfalusi@ti.com> | 2012-11-21 16:15:17 -0700 | 
|---|---|---|
| committer | Paul Walmsley <paul@pwsan.com> | 2012-11-21 16:15:17 -0700 | 
| commit | dad4191d79bded6674529084bcf842c00e4d874a (patch) | |
| tree | 72d072bf30441da7e745ba28c10af91ce570b40e /arch/arm/mach-omap2/omap_hwmod.c | |
| parent | e6d3a8b0bdcd8f323488a52927682190aee5488e (diff) | |
| download | olio-linux-3.10-dad4191d79bded6674529084bcf842c00e4d874a.tar.xz olio-linux-3.10-dad4191d79bded6674529084bcf842c00e4d874a.zip  | |
ARM: OMAP2+: hwmod: Add possibility to count hwmod resources based on type
Add flags parameter for omap_hwmod_count_resources() so users can tell which
type of resources they are interested when counting them in hwmod database.
Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Acked-by: BenoƮt Cousson <b-cousson@ti.com>
[paul@pwsan.com: updated to apply]
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod.c | 27 | 
1 files changed, 16 insertions, 11 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 083adbed0bf..a8090907fe3 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c @@ -3427,7 +3427,7 @@ int omap_hwmod_reset(struct omap_hwmod *oh)  /**   * omap_hwmod_count_resources - count number of struct resources needed by hwmod   * @oh: struct omap_hwmod * - * @res: pointer to the first element of an array of struct resource to fill + * @flags: Type of resources to include when counting (IRQ/DMA/MEM)   *   * Count the number of struct resource array elements necessary to   * contain omap_hwmod @oh resources.  Intended to be called by code @@ -3440,20 +3440,25 @@ int omap_hwmod_reset(struct omap_hwmod *oh)   * resource IDs.   *   */ -int omap_hwmod_count_resources(struct omap_hwmod *oh) +int omap_hwmod_count_resources(struct omap_hwmod *oh, unsigned long flags)  { -	struct omap_hwmod_ocp_if *os; -	struct list_head *p; -	int ret; -	int i = 0; +	int ret = 0; -	ret = _count_mpu_irqs(oh) + _count_sdma_reqs(oh); +	if (flags & IORESOURCE_IRQ) +		ret += _count_mpu_irqs(oh); -	p = oh->slave_ports.next; +	if (flags & IORESOURCE_DMA) +		ret += _count_sdma_reqs(oh); -	while (i < oh->slaves_cnt) { -		os = _fetch_next_ocp_if(&p, &i); -		ret += _count_ocp_if_addr_spaces(os); +	if (flags & IORESOURCE_MEM) { +		int i = 0; +		struct omap_hwmod_ocp_if *os; +		struct list_head *p = oh->slave_ports.next; + +		while (i < oh->slaves_cnt) { +			os = _fetch_next_ocp_if(&p, &i); +			ret += _count_ocp_if_addr_spaces(os); +		}  	}  	return ret;  |