mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-10 04:26:19 -04:00
mxc_nand: Update driver to work with i.MX31.
Tested on i.MX31 Litekit. Signed-off-by: Magnus Lilja <lilja.magnus@gmail.com>
This commit is contained in:
parent
c816dcb118
commit
f6a9748e32
@ -149,6 +149,36 @@ static struct nand_ecclayout nand_soft_eccoob = {
|
|||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_MX27
|
||||||
|
static int is_16bit_nand(void)
|
||||||
|
{
|
||||||
|
struct system_control_regs *sc_regs =
|
||||||
|
(struct system_control_regs *)IMX_SYSTEM_CTL_BASE;
|
||||||
|
|
||||||
|
if (readl(&sc_regs->fmcr) & NF_16BIT_SEL)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#elif defined(CONFIG_MX31)
|
||||||
|
static int is_16bit_nand(void)
|
||||||
|
{
|
||||||
|
struct clock_control_regs *sc_regs =
|
||||||
|
(struct clock_control_regs *)CCM_BASE;
|
||||||
|
|
||||||
|
if (readl(&sc_regs->rcsr) & CCM_RCSR_NF16B)
|
||||||
|
return 1;
|
||||||
|
else
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#warning "8/16 bit NAND autodetection not supported"
|
||||||
|
static int is_16bit_nand(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
static uint32_t *mxc_nand_memcpy32(uint32_t *dest, uint32_t *source, size_t size)
|
static uint32_t *mxc_nand_memcpy32(uint32_t *dest, uint32_t *source, size_t size)
|
||||||
{
|
{
|
||||||
uint32_t *d = dest;
|
uint32_t *d = dest;
|
||||||
@ -808,8 +838,6 @@ static void mxc_nand_command(struct mtd_info *mtd, unsigned command,
|
|||||||
|
|
||||||
int board_nand_init(struct nand_chip *this)
|
int board_nand_init(struct nand_chip *this)
|
||||||
{
|
{
|
||||||
struct system_control_regs *sc_regs =
|
|
||||||
(struct system_control_regs *)IMX_SYSTEM_CTL_BASE;
|
|
||||||
struct mtd_info *mtd;
|
struct mtd_info *mtd;
|
||||||
uint16_t tmp;
|
uint16_t tmp;
|
||||||
int err = 0;
|
int err = 0;
|
||||||
@ -871,7 +899,7 @@ int board_nand_init(struct nand_chip *this)
|
|||||||
writew(0x4, &host->regs->nfc_wrprot);
|
writew(0x4, &host->regs->nfc_wrprot);
|
||||||
|
|
||||||
/* NAND bus width determines access funtions used by upper layer */
|
/* NAND bus width determines access funtions used by upper layer */
|
||||||
if (readl(&sc_regs->fmcr) & NF_16BIT_SEL)
|
if (is_16bit_nand())
|
||||||
this->options |= NAND_BUSWIDTH_16;
|
this->options |= NAND_BUSWIDTH_16;
|
||||||
|
|
||||||
host->pagesize_2k = 0;
|
host->pagesize_2k = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user