Merge tag 'mtd/for-5.3' of git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux
[platform/kernel/linux-rpi.git] / drivers / mtd / nand / raw / gpmi-nand / gpmi-nand.h
index a804a4a..fdc5ed7 100644 (file)
@@ -103,6 +103,14 @@ struct gpmi_nfc_hardware_timing {
        u32 ctrl1n;
 };
 
+#define GPMI_MAX_TRANSFERS     8
+
+struct gpmi_transfer {
+       u8 cmdbuf[8];
+       struct scatterlist sgl;
+       enum dma_data_direction direction;
+};
+
 struct gpmi_nand_data {
        /* Devdata */
        const struct gpmi_devdata *devdata;
@@ -126,25 +134,18 @@ struct gpmi_nand_data {
        struct boot_rom_geometry rom_geometry;
 
        /* MTD / NAND */
+       struct nand_controller  base;
        struct nand_chip        nand;
 
-       /* General-use Variables */
-       int                     current_chip;
-       unsigned int            command_length;
+       struct gpmi_transfer    transfers[GPMI_MAX_TRANSFERS];
+       int                     ntransfers;
 
-       struct scatterlist      cmd_sgl;
-       char                    *cmd_buffer;
+       bool                    bch;
+       uint32_t                bch_flashlayout0;
+       uint32_t                bch_flashlayout1;
 
-       struct scatterlist      data_sgl;
        char                    *data_buffer_dma;
 
-       void                    *page_buffer_virt;
-       dma_addr_t              page_buffer_phys;
-       unsigned int            page_buffer_size;
-
-       void                    *payload_virt;
-       dma_addr_t              payload_phys;
-
        void                    *auxiliary_virt;
        dma_addr_t              auxiliary_phys;
 
@@ -154,45 +155,8 @@ struct gpmi_nand_data {
 #define DMA_CHANS              8
        struct dma_chan         *dma_chans[DMA_CHANS];
        struct completion       dma_done;
-
-       /* private */
-       void                    *private;
 };
 
-/* Common Services */
-int common_nfc_set_geometry(struct gpmi_nand_data *);
-struct dma_chan *get_dma_chan(struct gpmi_nand_data *);
-bool prepare_data_dma(struct gpmi_nand_data *, const void *buf, int len,
-                     enum dma_data_direction dr);
-int start_dma_without_bch_irq(struct gpmi_nand_data *,
-                             struct dma_async_tx_descriptor *);
-int start_dma_with_bch_irq(struct gpmi_nand_data *,
-                          struct dma_async_tx_descriptor *);
-
-/* GPMI-NAND helper function library */
-int gpmi_init(struct gpmi_nand_data *);
-void gpmi_clear_bch(struct gpmi_nand_data *);
-void gpmi_dump_info(struct gpmi_nand_data *);
-int bch_set_geometry(struct gpmi_nand_data *);
-int gpmi_is_ready(struct gpmi_nand_data *, unsigned chip);
-int gpmi_send_command(struct gpmi_nand_data *);
-int gpmi_enable_clk(struct gpmi_nand_data *this);
-int gpmi_disable_clk(struct gpmi_nand_data *this);
-int gpmi_setup_data_interface(struct nand_chip *chip, int chipnr,
-                             const struct nand_data_interface *conf);
-void gpmi_nfc_apply_timings(struct gpmi_nand_data *this);
-int gpmi_read_data(struct gpmi_nand_data *, void *buf, int len);
-int gpmi_send_data(struct gpmi_nand_data *, const void *buf, int len);
-
-int gpmi_send_page(struct gpmi_nand_data *,
-                  dma_addr_t payload, dma_addr_t auxiliary);
-int gpmi_read_page(struct gpmi_nand_data *,
-                  dma_addr_t payload, dma_addr_t auxiliary);
-
-void gpmi_copy_bits(u8 *dst, size_t dst_bit_off,
-                   const u8 *src, size_t src_bit_off,
-                   size_t nbits);
-
 /* BCH : Status Block Completion Codes */
 #define STATUS_GOOD            0x00
 #define STATUS_ERASED          0xff