mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-25 22:20:45 +00:00
mtd: nand: mxs_nand: move structs into header file
Move structs into header file so we can use a separate compile unit for device tree support. Signed-off-by: Stefan Agner <stefan.agner@toradex.com>
This commit is contained in:
parent
502bdc6b4f
commit
68748340c8
2 changed files with 65 additions and 60 deletions
|
@ -13,12 +13,11 @@
|
|||
*/
|
||||
|
||||
#include <common.h>
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <dm.h>
|
||||
#include <linux/mtd/rawnand.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/types.h>
|
||||
#include <malloc.h>
|
||||
#include <nand.h>
|
||||
#include <linux/errno.h>
|
||||
#include <asm/io.h>
|
||||
#include <asm/arch/clock.h>
|
||||
|
@ -26,7 +25,6 @@
|
|||
#include <asm/mach-imx/regs-bch.h>
|
||||
#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
|
||||
|
@ -47,61 +45,6 @@
|
|||
|
||||
#define MXS_NAND_BCH_TIMEOUT 10000
|
||||
|
||||
/**
|
||||
* @gf_len: The length of Galois Field. (e.g., 13 or 14)
|
||||
* @ecc_strength: A number that describes the strength of the ECC
|
||||
* algorithm.
|
||||
* @ecc_chunk_size: The size, in bytes, of a single ECC chunk. Note
|
||||
* the first chunk in the page includes both data and
|
||||
* metadata, so it's a bit larger than this value.
|
||||
* @ecc_chunk_count: The number of ECC chunks in the page,
|
||||
* @block_mark_byte_offset: The byte offset in the ECC-based page view at
|
||||
* which the underlying physical block mark appears.
|
||||
* @block_mark_bit_offset: The bit offset into the ECC-based page view at
|
||||
* which the underlying physical block mark appears.
|
||||
*/
|
||||
struct bch_geometry {
|
||||
unsigned int gf_len;
|
||||
unsigned int ecc_strength;
|
||||
unsigned int ecc_chunk_size;
|
||||
unsigned int ecc_chunk_count;
|
||||
unsigned int block_mark_byte_offset;
|
||||
unsigned int block_mark_bit_offset;
|
||||
};
|
||||
|
||||
struct mxs_nand_info {
|
||||
struct nand_chip chip;
|
||||
unsigned int max_ecc_strength_supported;
|
||||
bool use_minimum_ecc;
|
||||
int cur_chip;
|
||||
|
||||
uint32_t cmd_queue_len;
|
||||
uint32_t data_buf_size;
|
||||
struct bch_geometry bch_geometry;
|
||||
|
||||
uint8_t *cmd_buf;
|
||||
uint8_t *data_buf;
|
||||
uint8_t *oob_buf;
|
||||
|
||||
uint8_t marking_block_bad;
|
||||
uint8_t raw_oob_mode;
|
||||
|
||||
struct mxs_gpmi_regs *gpmi_regs;
|
||||
struct mxs_bch_regs *bch_regs;
|
||||
|
||||
/* Functions with altered behaviour */
|
||||
int (*hooked_read_oob)(struct mtd_info *mtd,
|
||||
loff_t from, struct mtd_oob_ops *ops);
|
||||
int (*hooked_write_oob)(struct mtd_info *mtd,
|
||||
loff_t to, struct mtd_oob_ops *ops);
|
||||
int (*hooked_block_markbad)(struct mtd_info *mtd,
|
||||
loff_t ofs);
|
||||
|
||||
/* DMA descriptors */
|
||||
struct mxs_dma_desc **desc;
|
||||
uint32_t desc_index;
|
||||
};
|
||||
|
||||
struct nand_ecclayout fake_ecc_layout;
|
||||
|
||||
/*
|
||||
|
@ -1233,7 +1176,7 @@ int mxs_nand_init_spl(struct nand_chip *nand)
|
|||
return 0;
|
||||
}
|
||||
|
||||
int mxs_nand_init(struct mxs_nand_info *nand_info)
|
||||
int mxs_nand_init_ctrl(struct mxs_nand_info *nand_info)
|
||||
{
|
||||
struct mtd_info *mtd;
|
||||
struct nand_chip *nand;
|
||||
|
@ -1328,7 +1271,7 @@ void board_nand_init(void)
|
|||
nand_info->use_minimum_ecc = true;
|
||||
#endif
|
||||
|
||||
if (mxs_nand_init(nand_info) < 0)
|
||||
if (mxs_nand_init_ctrl(nand_info) < 0)
|
||||
goto err;
|
||||
|
||||
return;
|
||||
|
|
|
@ -7,5 +7,67 @@
|
|||
* Stefan Agner <stefan.agner@toradex.com>
|
||||
*/
|
||||
|
||||
#include <linux/mtd/mtd.h>
|
||||
#include <asm/cache.h>
|
||||
#include <nand.h>
|
||||
#include <asm/mach-imx/dma.h>
|
||||
|
||||
/**
|
||||
* @gf_len: The length of Galois Field. (e.g., 13 or 14)
|
||||
* @ecc_strength: A number that describes the strength of the ECC
|
||||
* algorithm.
|
||||
* @ecc_chunk_size: The size, in bytes, of a single ECC chunk. Note
|
||||
* the first chunk in the page includes both data and
|
||||
* metadata, so it's a bit larger than this value.
|
||||
* @ecc_chunk_count: The number of ECC chunks in the page,
|
||||
* @block_mark_byte_offset: The byte offset in the ECC-based page view at
|
||||
* which the underlying physical block mark appears.
|
||||
* @block_mark_bit_offset: The bit offset into the ECC-based page view at
|
||||
* which the underlying physical block mark appears.
|
||||
*/
|
||||
struct bch_geometry {
|
||||
unsigned int gf_len;
|
||||
unsigned int ecc_strength;
|
||||
unsigned int ecc_chunk_size;
|
||||
unsigned int ecc_chunk_count;
|
||||
unsigned int block_mark_byte_offset;
|
||||
unsigned int block_mark_bit_offset;
|
||||
};
|
||||
|
||||
struct mxs_nand_info {
|
||||
struct nand_chip chip;
|
||||
struct udevice *dev;
|
||||
unsigned int max_ecc_strength_supported;
|
||||
bool use_minimum_ecc;
|
||||
int cur_chip;
|
||||
|
||||
uint32_t cmd_queue_len;
|
||||
uint32_t data_buf_size;
|
||||
struct bch_geometry bch_geometry;
|
||||
|
||||
uint8_t *cmd_buf;
|
||||
uint8_t *data_buf;
|
||||
uint8_t *oob_buf;
|
||||
|
||||
uint8_t marking_block_bad;
|
||||
uint8_t raw_oob_mode;
|
||||
|
||||
struct mxs_gpmi_regs *gpmi_regs;
|
||||
struct mxs_bch_regs *bch_regs;
|
||||
|
||||
/* Functions with altered behaviour */
|
||||
int (*hooked_read_oob)(struct mtd_info *mtd,
|
||||
loff_t from, struct mtd_oob_ops *ops);
|
||||
int (*hooked_write_oob)(struct mtd_info *mtd,
|
||||
loff_t to, struct mtd_oob_ops *ops);
|
||||
int (*hooked_block_markbad)(struct mtd_info *mtd,
|
||||
loff_t ofs);
|
||||
|
||||
/* DMA descriptors */
|
||||
struct mxs_dma_desc **desc;
|
||||
uint32_t desc_index;
|
||||
};
|
||||
|
||||
int mxs_nand_init_ctrl(struct mxs_nand_info *nand_info);
|
||||
int mxs_nand_init_spl(struct nand_chip *nand);
|
||||
int mxs_nand_setup_ecc(struct mtd_info *mtd);
|
||||
|
|
Loading…
Reference in a new issue