18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright (C) 2006 Micron Technology Inc. 48c2ecf20Sopenharmony_ci */ 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ci#ifndef _MTD_NAND_OMAP2_H 78c2ecf20Sopenharmony_ci#define _MTD_NAND_OMAP2_H 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <linux/mtd/partitions.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#define GPMC_BCH_NUM_REMAINDER 8 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_cienum nand_io { 148c2ecf20Sopenharmony_ci NAND_OMAP_PREFETCH_POLLED = 0, /* prefetch polled mode, default */ 158c2ecf20Sopenharmony_ci NAND_OMAP_POLLED, /* polled mode, without prefetch */ 168c2ecf20Sopenharmony_ci NAND_OMAP_PREFETCH_DMA, /* prefetch enabled sDMA mode */ 178c2ecf20Sopenharmony_ci NAND_OMAP_PREFETCH_IRQ /* prefetch enabled irq mode */ 188c2ecf20Sopenharmony_ci}; 198c2ecf20Sopenharmony_ci 208c2ecf20Sopenharmony_cienum omap_ecc { 218c2ecf20Sopenharmony_ci /* 228c2ecf20Sopenharmony_ci * 1-bit ECC: calculation and correction by SW 238c2ecf20Sopenharmony_ci * ECC stored at end of spare area 248c2ecf20Sopenharmony_ci */ 258c2ecf20Sopenharmony_ci OMAP_ECC_HAM1_CODE_SW = 0, 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci /* 288c2ecf20Sopenharmony_ci * 1-bit ECC: calculation by GPMC, Error detection by Software 298c2ecf20Sopenharmony_ci * ECC layout compatible with ROM code layout 308c2ecf20Sopenharmony_ci */ 318c2ecf20Sopenharmony_ci OMAP_ECC_HAM1_CODE_HW, 328c2ecf20Sopenharmony_ci /* 4-bit ECC calculation by GPMC, Error detection by Software */ 338c2ecf20Sopenharmony_ci OMAP_ECC_BCH4_CODE_HW_DETECTION_SW, 348c2ecf20Sopenharmony_ci /* 4-bit ECC calculation by GPMC, Error detection by ELM */ 358c2ecf20Sopenharmony_ci OMAP_ECC_BCH4_CODE_HW, 368c2ecf20Sopenharmony_ci /* 8-bit ECC calculation by GPMC, Error detection by Software */ 378c2ecf20Sopenharmony_ci OMAP_ECC_BCH8_CODE_HW_DETECTION_SW, 388c2ecf20Sopenharmony_ci /* 8-bit ECC calculation by GPMC, Error detection by ELM */ 398c2ecf20Sopenharmony_ci OMAP_ECC_BCH8_CODE_HW, 408c2ecf20Sopenharmony_ci /* 16-bit ECC calculation by GPMC, Error detection by ELM */ 418c2ecf20Sopenharmony_ci OMAP_ECC_BCH16_CODE_HW, 428c2ecf20Sopenharmony_ci}; 438c2ecf20Sopenharmony_ci 448c2ecf20Sopenharmony_cistruct gpmc_nand_regs { 458c2ecf20Sopenharmony_ci void __iomem *gpmc_nand_command; 468c2ecf20Sopenharmony_ci void __iomem *gpmc_nand_address; 478c2ecf20Sopenharmony_ci void __iomem *gpmc_nand_data; 488c2ecf20Sopenharmony_ci void __iomem *gpmc_prefetch_config1; 498c2ecf20Sopenharmony_ci void __iomem *gpmc_prefetch_config2; 508c2ecf20Sopenharmony_ci void __iomem *gpmc_prefetch_control; 518c2ecf20Sopenharmony_ci void __iomem *gpmc_prefetch_status; 528c2ecf20Sopenharmony_ci void __iomem *gpmc_ecc_config; 538c2ecf20Sopenharmony_ci void __iomem *gpmc_ecc_control; 548c2ecf20Sopenharmony_ci void __iomem *gpmc_ecc_size_config; 558c2ecf20Sopenharmony_ci void __iomem *gpmc_ecc1_result; 568c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result0[GPMC_BCH_NUM_REMAINDER]; 578c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result1[GPMC_BCH_NUM_REMAINDER]; 588c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result2[GPMC_BCH_NUM_REMAINDER]; 598c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result3[GPMC_BCH_NUM_REMAINDER]; 608c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result4[GPMC_BCH_NUM_REMAINDER]; 618c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result5[GPMC_BCH_NUM_REMAINDER]; 628c2ecf20Sopenharmony_ci void __iomem *gpmc_bch_result6[GPMC_BCH_NUM_REMAINDER]; 638c2ecf20Sopenharmony_ci}; 648c2ecf20Sopenharmony_ci#endif 65