
On Fri, 2015-05-08 at 14:39 -0700, Tim Harvey wrote:
-int nand_spl_load_image(uint32_t offs, unsigned int size, void *buf) +int mtd_read(struct mtd_info *mtd, loff_t offs, size_t size, size_t *retlen,
uchar *buf)
{ struct nand_chip *chip; unsigned int page; unsigned int nand_page_per_block; unsigned int sz = 0;
- nand_info_t *info = &nand_info[0];
Any reason not to use the passed-in mtd pointer (and fix the nand_spl_load_image wrapper to pass in &nand_info[0])?
+/* setup mtd and nand structs and init mxs_nand driver */ +static int mxs_nand_init(void) +{
- nand_info_t *info = &nand_info[0];
- /* return if already initalized */
- if (nand_chip.numchips)
return 0;
- /* init mxs nand driver */
- board_nand_init(&nand_chip);
- info->priv = &nand_chip;
- /* set mtd functions */
- nand_chip.cmdfunc = mxs_nand_command;
- nand_chip.numchips = 1;
- /* identify flash device */
- puts("NAND : ");
- if (mxs_flash_ident(info)) {
printf("Failed to identify\n");
return -1;
- }
- /* allocate and initialize buffers */
- nand_chip.buffers = memalign(ARCH_DMA_MINALIGN,
sizeof(*nand_chip.buffers));
- nand_chip.oob_poi = nand_chip.buffers->databuf + info->writesize;
- /* setup flash layout (does not scan as we override that) */
- info->size = nand_chip.chipsize;
- nand_chip.scan_bbt(info);
- printf("%llu MiB\n", (info->size / (1024 * 1024)));
- return 0;
+}
Why did this function need to be moved?
+int nand_spl_load_image(uint32_t offs, unsigned int size, void *buf) +{
- return mtd_read(NULL, offs, size, NULL, buf);
+}
It'd be nice to keep the wrapper near the function it wraps.
I don't see any other such wrappers; is there no other driver that currently works with SPL env?
int nand_default_bbt(struct mtd_info *mtd) { return 0; @@ -223,6 +232,7 @@ int nand_default_bbt(struct mtd_info *mtd)
void nand_init(void) {
- mxs_nand_init();
}
Do you still need the "return if already initialized" check with this change? How is this change related to the rest?
-Scott