[U-Boot] IMX27 NAND Probe Problem

Alessandro Chies alessandro.chies at libero.it
Wed Jan 14 23:25:38 CET 2009


Hello again, I would like to add more infos on my problem:

When I try to register the device nand0, the call stack arrives to the
function in the file nand-imx.c in uboot v2.

 

static int __init imxnd_probe(struct device_d *dev)

{

                struct nand_chip *this;

                struct mtd_info *mtd;

                struct imx_nand_platform_data *pdata = dev->platform_data;

                struct imx_nand_host *host;

                u16 tmp;

                int err = 0;

#ifdef CONFIG_ARCH_MX27

                PCCR1 |= PCCR1_NFC_BAUDEN;

#endif

                /* Allocate memory for MTD device structure and private data
*/

                host = kzalloc(sizeof(struct imx_nand_host), GFP_KERNEL);

                if (!host)

                               return -ENOMEM;

 

                host->dev = dev;

                /* structures must be linked */

                this = &host->nand;

                mtd = &host->mtd;

                mtd->priv = this;

 

                /* 50 us command delay time */

                this->chip_delay = 5;

 

                this->priv = host;

                this->dev_ready = imx_nand_dev_ready;

                this->cmdfunc = imx_nand_command;

                this->select_chip = imx_nand_select_chip;

                this->read_byte = imx_nand_read_byte;

                this->read_word = imx_nand_read_word;

                this->write_buf = imx_nand_write_buf;

                this->read_buf = imx_nand_read_buf;

                this->verify_buf = imx_nand_verify_buf;

#if 0

                host->clk = clk_get(&pdev->dev, "nfc_clk");

                if (IS_ERR(host->clk))

                               goto eclk;

 

                clk_enable(host->clk);

#endif

 

                host->regs = (void __iomem *)dev->map_base;

 

                tmp = readw(host->regs + NFC_CONFIG1);

                tmp |= NFC_INT_MSK;

                writew(tmp, host->regs + NFC_CONFIG1);

 

.

 

And it locks at tmp = readw(host->regs + NFC_CONFIG1);

 

If I exclude the nand, UBoot boots up very well from RAM but If I try

 

Md 0xd8000e1a+0x2 

 

I receive a value that is not real (most of the times, the result of the
previous md instruction).

 

Please, can someone give me any type of help on what is happening?

 

Best regards

Alessandro



More information about the U-Boot mailing list