mtd: nand: mxs_nand: move structs into header file
authorStefan Agner <stefan.agner@toradex.com>
Fri, 22 Jun 2018 16:06:16 +0000 (18:06 +0200)
committerStefano Babic <sbabic@denx.de>
Wed, 27 Jun 2018 07:07:55 +0000 (09:07 +0200)
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>
drivers/mtd/nand/mxs_nand.c
drivers/mtd/nand/mxs_nand.h

index 3c9ee07be5af3940209541ea6f54b28215508bf1..8748c927c61a26789557d1363d58c32642a1942a 100644 (file)
  */
 
 #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
 
 #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;
index 379ed24f05a3c06af9209c02bab0dde1f0100dc6..4bd65cded94a6cc44d293fabe54ad9c1ce147ca5 100644 (file)
@@ -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);