diff options
| author | Lokesh Vutla <lokeshvutla@ti.com> | 2013-12-10 15:02:21 +0530 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2013-12-18 21:14:18 -0500 | 
| commit | 965de8b91bddd1f5967240d1d44005719b09dd5e (patch) | |
| tree | dbcbdffdaaf14e8ace3eb1a911f27ace0352bbc6 /arch/arm/cpu/armv7/am33xx/ddr.c | |
| parent | cf04d0326bd1e24909cfe644c0c8676440a915b1 (diff) | |
| download | olio-uboot-2014.01-965de8b91bddd1f5967240d1d44005719b09dd5e.tar.xz olio-uboot-2014.01-965de8b91bddd1f5967240d1d44005719b09dd5e.zip | |
ARM: AM33xx+: Update ioregs to pass different values
Currently same value is programmed for all ioregs. This is not
the case for all SoC's like AM4372. So adding a structure for ioregs
and updating in all board files. And also return from config_cmd_ctrl()
and config_ddr_data() functions if data is not passed.
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
[trini: Fixup dxr2, cm_t335, adapt pcm051 rev3]
Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'arch/arm/cpu/armv7/am33xx/ddr.c')
| -rw-r--r-- | arch/arm/cpu/armv7/am33xx/ddr.c | 27 | 
1 files changed, 21 insertions, 6 deletions
| diff --git a/arch/arm/cpu/armv7/am33xx/ddr.c b/arch/arm/cpu/armv7/am33xx/ddr.c index 5b0454c3e..255f333b6 100644 --- a/arch/arm/cpu/armv7/am33xx/ddr.c +++ b/arch/arm/cpu/armv7/am33xx/ddr.c @@ -88,6 +88,9 @@ void config_ddr_phy(const struct emif_regs *regs, int nr)   */  void config_cmd_ctrl(const struct cmd_control *cmd, int nr)  { +	if (!cmd) +		return; +  	writel(cmd->cmd0csratio, &ddr_cmd_reg[nr]->cm0csratio);  	writel(cmd->cmd0iclkout, &ddr_cmd_reg[nr]->cm0iclkout); @@ -105,6 +108,9 @@ void config_ddr_data(const struct ddr_data *data, int nr)  {  	int i; +	if (!data) +		return; +  	for (i = 0; i < DDR_DATA_REGS_NR; i++) {  		writel(data->datardsratio0,  			&(ddr_data_reg[nr]+i)->dt0rdsratio0); @@ -121,11 +127,20 @@ void config_ddr_data(const struct ddr_data *data, int nr)  	}  } -void config_io_ctrl(unsigned long val) +void config_io_ctrl(const struct ctrl_ioregs *ioregs)  { -	writel(val, &ioctrl_reg->cm0ioctl); -	writel(val, &ioctrl_reg->cm1ioctl); -	writel(val, &ioctrl_reg->cm2ioctl); -	writel(val, &ioctrl_reg->dt0ioctl); -	writel(val, &ioctrl_reg->dt1ioctl); +	if (!ioregs) +		return; + +	writel(ioregs->cm0ioctl, &ioctrl_reg->cm0ioctl); +	writel(ioregs->cm1ioctl, &ioctrl_reg->cm1ioctl); +	writel(ioregs->cm2ioctl, &ioctrl_reg->cm2ioctl); +	writel(ioregs->dt0ioctl, &ioctrl_reg->dt0ioctl); +	writel(ioregs->dt1ioctl, &ioctrl_reg->dt1ioctl); +#ifdef CONFIG_AM43XX +	writel(ioregs->dt2ioctrl, &ioctrl_reg->dt2ioctrl); +	writel(ioregs->dt3ioctrl, &ioctrl_reg->dt3ioctrl); +	writel(ioregs->emif_sdram_config_ext, +	       &ioctrl_reg->emif_sdram_config_ext); +#endif  } |