mtd: nand: mxs_nand: introduce SPL specific init
In preparation to convert the driver to use NAND self init provide a new minimal init for SPL builds. As a side effect this also reduces size of SPL by about 4KiB. Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
This commit is contained in:
parent
51f957adf7
commit
9345943b2b
@ -25,6 +25,7 @@
|
||||
#include <asm/mach-imx/regs-gpmi.h>
|
||||
#include <asm/arch/sys_proto.h>
|
||||
#include <asm/mach-imx/dma.h>
|
||||
#include "mxs_nand.h"
|
||||
|
||||
#define MXS_NAND_DMA_DESCRIPTOR_COUNT 4
|
||||
|
||||
@ -1149,6 +1150,48 @@ err1:
|
||||
return ret;
|
||||
}
|
||||
|
||||
int mxs_nand_init_spl(struct nand_chip *nand)
|
||||
{
|
||||
struct mxs_nand_info *nand_info;
|
||||
int err;
|
||||
|
||||
nand_info = malloc(sizeof(struct mxs_nand_info));
|
||||
if (!nand_info) {
|
||||
printf("MXS NAND: Failed to allocate private data\n");
|
||||
return -ENOMEM;
|
||||
}
|
||||
memset(nand_info, 0, sizeof(struct mxs_nand_info));
|
||||
|
||||
err = mxs_nand_alloc_buffers(nand_info);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
err = mxs_nand_init(nand_info);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
nand_set_controller_data(nand, nand_info);
|
||||
|
||||
nand->options |= NAND_NO_SUBPAGE_WRITE;
|
||||
|
||||
nand->cmd_ctrl = mxs_nand_cmd_ctrl;
|
||||
nand->dev_ready = mxs_nand_device_ready;
|
||||
nand->select_chip = mxs_nand_select_chip;
|
||||
nand->scan_bbt = mxs_nand_scan_bbt;
|
||||
|
||||
nand->read_byte = mxs_nand_read_byte;
|
||||
nand->read_buf = mxs_nand_read_buf;
|
||||
|
||||
nand->ecc.read_page = mxs_nand_ecc_read_page;
|
||||
|
||||
nand->ecc.mode = NAND_ECC_HW;
|
||||
nand->ecc.bytes = 9;
|
||||
nand->ecc.size = 512;
|
||||
nand->ecc.strength = 8;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*!
|
||||
* This function is called during the driver binding process.
|
||||
*
|
||||
|
10
drivers/mtd/nand/mxs_nand.h
Normal file
10
drivers/mtd/nand/mxs_nand.h
Normal file
@ -0,0 +1,10 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ */
|
||||
/*
|
||||
* NXP GPMI NAND flash driver
|
||||
*
|
||||
* Copyright (C) 2018 Toradex
|
||||
* Authors:
|
||||
* Stefan Agner <stefan.agner@toradex.com>
|
||||
*/
|
||||
|
||||
int mxs_nand_init_spl(struct nand_chip *nand);
|
@ -6,6 +6,7 @@
|
||||
#include <common.h>
|
||||
#include <nand.h>
|
||||
#include <malloc.h>
|
||||
#include "mxs_nand.h"
|
||||
|
||||
static struct mtd_info *mtd;
|
||||
static struct nand_chip nand_chip;
|
||||
@ -145,7 +146,7 @@ static int mxs_nand_init(void)
|
||||
return 0;
|
||||
|
||||
/* init mxs nand driver */
|
||||
board_nand_init(&nand_chip);
|
||||
mxs_nand_init_spl(&nand_chip);
|
||||
mtd = nand_to_mtd(&nand_chip);
|
||||
/* set mtd functions */
|
||||
nand_chip.cmdfunc = mxs_nand_command;
|
||||
|
Loading…
Reference in New Issue
Block a user