mtd: nand: omap: bring in gpmc nand macros

Bring onto driver the macros defined in gpmc.h that are
not necessary outside driver, helps in removing inclusion
of gpmc.h too. Also remove GPMC prefix on those macros to
make clear it's independence with gpmc header.

Signed-off-by: Afzal Mohammed <afzal@ti.com>
This commit is contained in:
Afzal Mohammed 2012-09-29 18:20:11 +05:30
parent bc3668ea04
commit 47f88af4ed
1 changed files with 13 additions and 8 deletions

View File

@ -110,6 +110,11 @@
#define ECC1RESULTSIZE 0x1 #define ECC1RESULTSIZE 0x1
#define ECCCLEAR 0x100 #define ECCCLEAR 0x100
#define ECC1 0x1 #define ECC1 0x1
#define PREFETCH_FIFOTHRESHOLD_MAX 0x40
#define PREFETCH_FIFOTHRESHOLD(val) ((val) << 8)
#define PREFETCH_STATUS_COUNT(val) (val & 0x00003fff)
#define PREFETCH_STATUS_FIFO_CNT(val) ((val >> 24) & 0x7F)
#define STATUS_BUFF_EMPTY 0x00000001
/* oob info generated runtime depending on ecc algorithm and layout selected */ /* oob info generated runtime depending on ecc algorithm and layout selected */
static struct nand_ecclayout omap_oobinfo; static struct nand_ecclayout omap_oobinfo;
@ -269,7 +274,7 @@ static void omap_write_buf8(struct mtd_info *mtd, const u_char *buf, int len)
/* wait until buffer is available for write */ /* wait until buffer is available for write */
do { do {
status = readl(info->reg.gpmc_status) & status = readl(info->reg.gpmc_status) &
GPMC_STATUS_BUFF_EMPTY; STATUS_BUFF_EMPTY;
} while (!status); } while (!status);
} }
} }
@ -307,7 +312,7 @@ static void omap_write_buf16(struct mtd_info *mtd, const u_char * buf, int len)
/* wait until buffer is available for write */ /* wait until buffer is available for write */
do { do {
status = readl(info->reg.gpmc_status) & status = readl(info->reg.gpmc_status) &
GPMC_STATUS_BUFF_EMPTY; STATUS_BUFF_EMPTY;
} while (!status); } while (!status);
} }
} }
@ -348,7 +353,7 @@ static void omap_read_buf_pref(struct mtd_info *mtd, u_char *buf, int len)
} else { } else {
do { do {
r_count = readl(info->reg.gpmc_prefetch_status); r_count = readl(info->reg.gpmc_prefetch_status);
r_count = GPMC_PREFETCH_STATUS_FIFO_CNT(r_count); r_count = PREFETCH_STATUS_FIFO_CNT(r_count);
r_count = r_count >> 2; r_count = r_count >> 2;
ioread32_rep(info->nand.IO_ADDR_R, p, r_count); ioread32_rep(info->nand.IO_ADDR_R, p, r_count);
p += r_count; p += r_count;
@ -395,7 +400,7 @@ static void omap_write_buf_pref(struct mtd_info *mtd,
} else { } else {
while (len) { while (len) {
w_count = readl(info->reg.gpmc_prefetch_status); w_count = readl(info->reg.gpmc_prefetch_status);
w_count = GPMC_PREFETCH_STATUS_FIFO_CNT(w_count); w_count = PREFETCH_STATUS_FIFO_CNT(w_count);
w_count = w_count >> 1; w_count = w_count >> 1;
for (i = 0; (i < w_count) && len; i++, len -= 2) for (i = 0; (i < w_count) && len; i++, len -= 2)
iowrite16(*p++, info->nand.IO_ADDR_W); iowrite16(*p++, info->nand.IO_ADDR_W);
@ -407,7 +412,7 @@ static void omap_write_buf_pref(struct mtd_info *mtd,
do { do {
cpu_relax(); cpu_relax();
val = readl(info->reg.gpmc_prefetch_status); val = readl(info->reg.gpmc_prefetch_status);
val = GPMC_PREFETCH_STATUS_COUNT(val); val = PREFETCH_STATUS_COUNT(val);
} while (val && (tim++ < limit)); } while (val && (tim++ < limit));
/* disable and stop the PFPW engine */ /* disable and stop the PFPW engine */
@ -493,7 +498,7 @@ static inline int omap_nand_dma_transfer(struct mtd_info *mtd, void *addr,
do { do {
cpu_relax(); cpu_relax();
val = readl(info->reg.gpmc_prefetch_status); val = readl(info->reg.gpmc_prefetch_status);
val = GPMC_PREFETCH_STATUS_COUNT(val); val = PREFETCH_STATUS_COUNT(val);
} while (val && (tim++ < limit)); } while (val && (tim++ < limit));
/* disable and stop the PFPW engine */ /* disable and stop the PFPW engine */
@ -556,7 +561,7 @@ static irqreturn_t omap_nand_irq(int this_irq, void *dev)
u32 bytes; u32 bytes;
bytes = readl(info->reg.gpmc_prefetch_status); bytes = readl(info->reg.gpmc_prefetch_status);
bytes = GPMC_PREFETCH_STATUS_FIFO_CNT(bytes); bytes = PREFETCH_STATUS_FIFO_CNT(bytes);
bytes = bytes & 0xFFFC; /* io in multiple of 4 bytes */ bytes = bytes & 0xFFFC; /* io in multiple of 4 bytes */
if (info->iomode == OMAP_NAND_IO_WRITE) { /* checks for write io */ if (info->iomode == OMAP_NAND_IO_WRITE) { /* checks for write io */
if (this_irq == info->gpmc_irq_count) if (this_irq == info->gpmc_irq_count)
@ -682,7 +687,7 @@ static void omap_write_buf_irq_pref(struct mtd_info *mtd,
limit = (loops_per_jiffy * msecs_to_jiffies(OMAP_NAND_TIMEOUT_MS)); limit = (loops_per_jiffy * msecs_to_jiffies(OMAP_NAND_TIMEOUT_MS));
do { do {
val = readl(info->reg.gpmc_prefetch_status); val = readl(info->reg.gpmc_prefetch_status);
val = GPMC_PREFETCH_STATUS_COUNT(val); val = PREFETCH_STATUS_COUNT(val);
cpu_relax(); cpu_relax();
} while (val && (tim++ < limit)); } while (val && (tim++ < limit));