Hi Stefano, Le Thu, 6 Sep 2012 10:04:57 +0200, Stefano Babic <sba...@denx.de> a écrit : > +#define RCSR_MEM_CTL_WEIM 0 > +#define RCSR_MEM_CTL_NAND 1 > +#define RCSR_MEM_CTL_SD 2 > +#define RCSR_MEM_TYPE_NOR 0 > +#define RCSR_MEM_TYPE_ONENAND 2 > +#define RCSR_MEM_TYPE_SD 0 > +#define RCSR_MEM_TYPE_I2C 2 > +#define RCSR_MEM_TYPE_SPI 3 > + > +u32 spl_boot_device(void) > +{ > + puts("spl_boot_device\n"); > + struct ccm_regs *ccm = > + (struct ccm_regs *)IMX_CCM_BASE; > + > +#if 1 > + return BOOT_DEVICE_MMC1; > +#endif
thisseems not clean and seems caused by the fact that the define RCSR_MEM_CTL_SD should be 3 and not 2 so in your tests the function spl_boot_device was not detecting the right boot mode. Also IMHO this define should be named RCSR_MEM_CTL_EXPANSION as in the app note AN3996 at end of page 3 (there is a typo in the reference manual which seems to be a copy'n paste from i.MX25 as it doesn't take in acount the ATA HDD case) : http://cache.freescale.com/files/dsp/doc/app_note/AN3996.pdf > + > + u32 rcsr = readl(&ccm->rcsr); > + u32 mem_type, mem_ctl; > + > + /* In external mode, no boot device is returned */ > + if ((rcsr >> 10) & 0x03) > + return BOOT_DEVICE_NONE; > + > + mem_ctl = (rcsr >> 25) & 0x03; > + mem_type = (rcsr >> 23) & 0x03; > + > + switch (mem_ctl) { > + case RCSR_MEM_CTL_WEIM: > + switch (mem_type) { > + case RCSR_MEM_TYPE_NOR: > + return BOOT_DEVICE_NOR; > + case RCSR_MEM_TYPE_ONENAND: > + return BOOT_DEVICE_ONE_NAND; > + default: > + return BOOT_DEVICE_NONE; > + } > + case RCSR_MEM_CTL_NAND: > + return BOOT_DEVICE_NAND; > + case RCSR_MEM_CTL_SD: > + switch (mem_type) { > + case RCSR_MEM_TYPE_SD: > + return BOOT_DEVICE_MMC1; > + case RCSR_MEM_TYPE_I2C: > + return BOOT_DEVICE_I2C; > + case RCSR_MEM_TYPE_SPI: > + return BOOT_DEVICE_SPI; > + default: > + return BOOT_DEVICE_NONE; > + } > + } > + > + return BOOT_DEVICE_NONE; > +} > + Eric _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot