Ejemplo n.º 1
0
void configure_async_emif(int cs, struct async_emif_config *cfg)
{
	unsigned long tmp;

	if (cfg->mode == ASYNC_EMIF_MODE_NAND) {
		tmp = __raw_readl(&davinci_emif_regs->nandfcr);
		tmp |= (1 << cs);
		__raw_writel(tmp, &davinci_emif_regs->nandfcr);

	} else if (cfg->mode == ASYNC_EMIF_MODE_ONENAND) {
		tmp = __raw_readl(&davinci_emif_regs->one_nand_cr);
		tmp |= (1 << cs);
		__raw_writel(tmp, &davinci_emif_regs->one_nand_cr);
	}

	tmp = __raw_readl(&davinci_emif_regs->abncr[cs]);

	set_config_field(tmp, SELECT_STROBE,	cfg->select_strobe);
	set_config_field(tmp, EXTEND_WAIT,	cfg->extend_wait);
	set_config_field(tmp, WR_SETUP,		cfg->wr_setup);
	set_config_field(tmp, WR_STROBE,	cfg->wr_strobe);
	set_config_field(tmp, WR_HOLD,		cfg->wr_hold);
	set_config_field(tmp, RD_SETUP,		cfg->rd_setup);
	set_config_field(tmp, RD_STROBE,	cfg->rd_strobe);
	set_config_field(tmp, RD_HOLD,		cfg->rd_hold);
	set_config_field(tmp, TURN_AROUND,	cfg->turn_around);
	set_config_field(tmp, WIDTH,		cfg->width);

	__raw_writel(tmp, &davinci_emif_regs->abncr[cs]);
}
Ejemplo n.º 2
0
static void aemif_configure(int cs, struct aemif_config *cfg)
{
	unsigned long tmp;

	if (cfg->mode == AEMIF_MODE_NAND) {
		tmp = __raw_readl(AEMIF_NAND_CONTROL);
		tmp |= (1 << cs);
		__raw_writel(tmp, AEMIF_NAND_CONTROL);

	} else if (cfg->mode == AEMIF_MODE_ONENAND) {
		tmp = __raw_readl(AEMIF_ONENAND_CONTROL);
		tmp |= (1 << cs);
		__raw_writel(tmp, AEMIF_ONENAND_CONTROL);
	}

	tmp = __raw_readl(AEMIF_CONFIG(cs));

	set_config_field(tmp, SELECT_STROBE,	cfg->select_strobe);
	set_config_field(tmp, EXTEND_WAIT,	cfg->extend_wait);
	set_config_field(tmp, WR_SETUP,		cfg->wr_setup);
	set_config_field(tmp, WR_STROBE,	cfg->wr_strobe);
	set_config_field(tmp, WR_HOLD,		cfg->wr_hold);
	set_config_field(tmp, RD_SETUP,		cfg->rd_setup);
	set_config_field(tmp, RD_STROBE,	cfg->rd_strobe);
	set_config_field(tmp, RD_HOLD,		cfg->rd_hold);
	set_config_field(tmp, TURN_AROUND,	cfg->turn_around);
	set_config_field(tmp, WIDTH,		cfg->width);

	__raw_writel(tmp, AEMIF_CONFIG(cs));
}