diff options
Diffstat (limited to 'arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c')
| -rw-r--r-- | arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c | 51 | 
1 files changed, 50 insertions, 1 deletions
diff --git a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c index ceb30524234..3c009069f2f 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2xxx_ipblock_data.c @@ -173,6 +173,26 @@ struct omap_hwmod_class omap2xxx_mcspi_class = {  };  /* + * 'gpmc' class + * general purpose memory controller + */ + +static struct omap_hwmod_class_sysconfig omap2xxx_gpmc_sysc = { +	.rev_offs	= 0x0000, +	.sysc_offs	= 0x0010, +	.syss_offs	= 0x0014, +	.sysc_flags	= (SYSC_HAS_AUTOIDLE | SYSC_HAS_SIDLEMODE | +			   SYSC_HAS_SOFTRESET | SYSS_HAS_RESET_STATUS), +	.idlemodes	= (SIDLE_FORCE | SIDLE_NO | SIDLE_SMART), +	.sysc_fields	= &omap_hwmod_sysc_type1, +}; + +static struct omap_hwmod_class omap2xxx_gpmc_hwmod_class = { +	.name	= "gpmc", +	.sysc	= &omap2xxx_gpmc_sysc, +}; + +/*   * IP blocks   */ @@ -724,7 +744,6 @@ struct omap_hwmod omap2xxx_mcspi2_hwmod = {  	.dev_attr	= &omap_mcspi2_dev_attr,  }; -  static struct omap_hwmod_class omap2xxx_counter_hwmod_class = {  	.name	= "counter",  }; @@ -743,3 +762,33 @@ struct omap_hwmod omap2xxx_counter_32k_hwmod = {  	},  	.class		= &omap2xxx_counter_hwmod_class,  }; + +/* gpmc */ +static struct omap_hwmod_irq_info omap2xxx_gpmc_irqs[] = { +	{ .irq = 20 }, +	{ .irq = -1 } +}; + +struct omap_hwmod omap2xxx_gpmc_hwmod = { +	.name		= "gpmc", +	.class		= &omap2xxx_gpmc_hwmod_class, +	.mpu_irqs	= omap2xxx_gpmc_irqs, +	.main_clk	= "gpmc_fck", +	/* +	 * XXX HWMOD_INIT_NO_RESET should not be needed for this IP +	 * block.  It is not being added due to any known bugs with +	 * resetting the GPMC IP block, but rather because any timings +	 * set by the bootloader are not being correctly programmed by +	 * the kernel from the board file or DT data. +	 * HWMOD_INIT_NO_RESET should be removed ASAP. +	 */ +	.flags		= (HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET | +			   HWMOD_NO_IDLEST), +	.prcm		= { +		.omap2	= { +			.prcm_reg_id = 3, +			.module_bit = OMAP24XX_EN_GPMC_MASK, +			.module_offs = CORE_MOD, +		}, +	}, +};  |