aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/memory
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/memory')
-rw-r--r--drivers/memory/omap-gpmc.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/drivers/memory/omap-gpmc.c b/drivers/memory/omap-gpmc.c
index 24696f59215b..10eb4ac4d324 100644
--- a/drivers/memory/omap-gpmc.c
+++ b/drivers/memory/omap-gpmc.c
@@ -153,6 +153,15 @@
153#define GPMC_CONFIG1_FCLK_DIV4 (GPMC_CONFIG1_FCLK_DIV(3)) 153#define GPMC_CONFIG1_FCLK_DIV4 (GPMC_CONFIG1_FCLK_DIV(3))
154#define GPMC_CONFIG7_CSVALID (1 << 6) 154#define GPMC_CONFIG7_CSVALID (1 << 6)
155 155
156#define GPMC_CONFIG7_BASEADDRESS_MASK 0x3f
157#define GPMC_CONFIG7_CSVALID_MASK BIT(6)
158#define GPMC_CONFIG7_MASKADDRESS_OFFSET 8
159#define GPMC_CONFIG7_MASKADDRESS_MASK (0xf << GPMC_CONFIG7_MASKADDRESS_OFFSET)
160/* All CONFIG7 bits except reserved bits */
161#define GPMC_CONFIG7_MASK (GPMC_CONFIG7_BASEADDRESS_MASK | \
162 GPMC_CONFIG7_CSVALID_MASK | \
163 GPMC_CONFIG7_MASKADDRESS_MASK)
164
156#define GPMC_DEVICETYPE_NOR 0 165#define GPMC_DEVICETYPE_NOR 0
157#define GPMC_DEVICETYPE_NAND 2 166#define GPMC_DEVICETYPE_NAND 2
158#define GPMC_CONFIG_WRITEPROTECT 0x00000010 167#define GPMC_CONFIG_WRITEPROTECT 0x00000010
@@ -586,12 +595,15 @@ static int gpmc_cs_set_memconf(int cs, u32 base, u32 size)
586 if (base & (size - 1)) 595 if (base & (size - 1))
587 return -EINVAL; 596 return -EINVAL;
588 597
598 base >>= GPMC_CHUNK_SHIFT;
589 mask = (1 << GPMC_SECTION_SHIFT) - size; 599 mask = (1 << GPMC_SECTION_SHIFT) - size;
600 mask >>= GPMC_CHUNK_SHIFT;
601 mask <<= GPMC_CONFIG7_MASKADDRESS_OFFSET;
602
590 l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG7); 603 l = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG7);
591 l &= ~0x3f; 604 l &= ~GPMC_CONFIG7_MASK;
592 l = (base >> GPMC_CHUNK_SHIFT) & 0x3f; 605 l |= base & GPMC_CONFIG7_BASEADDRESS_MASK;
593 l &= ~(0x0f << 8); 606 l |= mask & GPMC_CONFIG7_MASKADDRESS_MASK;
594 l |= ((mask >> GPMC_CHUNK_SHIFT) & 0x0f) << 8;
595 l |= GPMC_CONFIG7_CSVALID; 607 l |= GPMC_CONFIG7_CSVALID;
596 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG7, l); 608 gpmc_cs_write_reg(cs, GPMC_CS_CONFIG7, l);
597 609