Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

ARM: OMAP: Change omap_cf.c and omap_nor.c to use omap_readw/writew instead of __REG

Change omap_cf.c and omap_nor.c to use omap_readw/writew instead of __REG.
This is needed for multi-omap in the future.

Cc: David Brownell <david-b@pacbell.net>
Cc: linux-pcmcia@lists.infradead.org
Cc: linux-mtd@lists.infradead.org
Signed-off-by: Tony Lindren <tony@atomide.com>

+42 -27
+10 -3
arch/arm/mach-omap1/board-osk.c
··· 267 267 268 268 static void __init osk_init_smc91x(void) 269 269 { 270 + u32 l; 271 + 270 272 if ((gpio_request(0, "smc_irq")) < 0) { 271 273 printk("Error requesting gpio 0 for smc91x irq\n"); 272 274 return; 273 275 } 274 276 275 277 /* Check EMIFS wait states to fix errors with SMC_GET_PKT_HDR */ 276 - EMIFS_CCS(1) |= 0x3; 278 + l = omap_readl(EMIFS_CCS(1)); 279 + l |= 0x3; 280 + omap_writel(l, EMIFS_CCS(1)); 277 281 } 278 282 279 283 static void __init osk_init_cf(void) ··· 530 526 531 527 static void __init osk_init(void) 532 528 { 529 + u32 l; 530 + 533 531 /* Workaround for wrong CS3 (NOR flash) timing 534 532 * There are some U-Boot versions out there which configure 535 533 * wrong CS3 memory timings. This mainly leads to CRC 536 534 * or similar errors if you use NOR flash (e.g. with JFFS2) 537 535 */ 538 - if (EMIFS_CCS(3) != EMIFS_CS3_VAL) 539 - EMIFS_CCS(3) = EMIFS_CS3_VAL; 536 + l = omap_readl(EMIFS_CCS(3)); 537 + if (l != EMIFS_CS3_VAL) 538 + omap_writel(EMIFS_CS3_VAL, EMIFS_CCS(3)); 540 539 541 540 osk_flash_resource.end = osk_flash_resource.start = omap_cs3_phys(); 542 541 osk_flash_resource.end += SZ_32M - 1;
+15 -6
drivers/mtd/maps/omap_nor.c
··· 60 60 static void omap_set_vpp(struct map_info *map, int enable) 61 61 { 62 62 static int count; 63 + u32 l; 63 64 64 - if (enable) { 65 - if (count++ == 0) 66 - OMAP_EMIFS_CONFIG_REG |= OMAP_EMIFS_CONFIG_WP; 67 - } else { 68 - if (count && (--count == 0)) 69 - OMAP_EMIFS_CONFIG_REG &= ~OMAP_EMIFS_CONFIG_WP; 65 + if (cpu_class_is_omap1()) { 66 + if (enable) { 67 + if (count++ == 0) { 68 + l = omap_readl(EMIFS_CONFIG); 69 + l |= OMAP_EMIFS_CONFIG_WP; 70 + omap_writel(l, EMIFS_CONFIG); 71 + } 72 + } else { 73 + if (count && (--count == 0)) { 74 + l = omap_readl(EMIFS_CONFIG); 75 + l &= ~OMAP_EMIFS_CONFIG_WP; 76 + omap_writel(l, EMIFS_CONFIG); 77 + } 78 + } 70 79 } 71 80 } 72 81
+13 -12
drivers/pcmcia/omap_cf.c
··· 38 38 #define CF_BASE 0xfffe2800 39 39 40 40 /* status; read after IRQ */ 41 - #define CF_STATUS_REG __REG16(CF_BASE + 0x00) 41 + #define CF_STATUS (CF_BASE + 0x00) 42 42 # define CF_STATUS_BAD_READ (1 << 2) 43 43 # define CF_STATUS_BAD_WRITE (1 << 1) 44 44 # define CF_STATUS_CARD_DETECT (1 << 0) 45 45 46 46 /* which chipselect (CS0..CS3) is used for CF (active low) */ 47 - #define CF_CFG_REG __REG16(CF_BASE + 0x02) 47 + #define CF_CFG (CF_BASE + 0x02) 48 48 49 49 /* card reset */ 50 - #define CF_CONTROL_REG __REG16(CF_BASE + 0x04) 50 + #define CF_CONTROL (CF_BASE + 0x04) 51 51 # define CF_CONTROL_RESET (1 << 0) 52 52 53 - #define omap_cf_present() (!(CF_STATUS_REG & CF_STATUS_CARD_DETECT)) 53 + #define omap_cf_present() (!(omap_readw(CF_STATUS) & CF_STATUS_CARD_DETECT)) 54 54 55 55 /*--------------------------------------------------------------------------*/ 56 56 ··· 139 139 return -EINVAL; 140 140 } 141 141 142 - control = CF_CONTROL_REG; 142 + control = omap_readw(CF_CONTROL); 143 143 if (s->flags & SS_RESET) 144 - CF_CONTROL_REG = CF_CONTROL_RESET; 144 + omap_writew(CF_CONTROL_RESET, CF_CONTROL); 145 145 else 146 - CF_CONTROL_REG = 0; 146 + omap_writew(0, CF_CONTROL); 147 147 148 148 pr_debug("%s: Vcc %d, io_irq %d, flags %04x csc %04x\n", 149 149 driver_name, s->Vcc, s->io_irq, s->flags, s->csc_mask); ··· 270 270 omap_cfg_reg(V10_1610_CF_IREQ); 271 271 omap_cfg_reg(W10_1610_CF_RESET); 272 272 273 - CF_CFG_REG = ~(1 << seg); 273 + omap_writew(~(1 << seg), CF_CFG); 274 274 275 275 pr_info("%s: cs%d on irq %d\n", driver_name, seg, irq); 276 276 ··· 279 279 * CF/PCMCIA variants... 280 280 */ 281 281 pr_debug("%s: cs%d, previous ccs %08x acs %08x\n", driver_name, 282 - seg, EMIFS_CCS(seg), EMIFS_ACS(seg)); 283 - EMIFS_CCS(seg) = 0x0004a1b3; /* synch mode 4 etc */ 284 - EMIFS_ACS(seg) = 0x00000000; /* OE hold/setup */ 282 + seg, omap_readl(EMIFS_CCS(seg)), omap_readl(EMIFS_ACS(seg))); 283 + omap_writel(0x0004a1b3, EMIFS_CCS(seg)); /* synch mode 4 etc */ 284 + omap_writel(0x00000000, EMIFS_ACS(seg)); /* OE hold/setup */ 285 285 286 286 /* CF uses armxor_ck, which is "always" available */ 287 287 288 288 pr_debug("%s: sts %04x cfg %04x control %04x %s\n", driver_name, 289 - CF_STATUS_REG, CF_CFG_REG, CF_CONTROL_REG, 289 + omap_readw(CF_STATUS), omap_readw(CF_CFG), 290 + omap_readw(CF_CONTROL), 290 291 omap_cf_present() ? "present" : "(not present)"); 291 292 292 293 cf->socket.owner = THIS_MODULE;
+4 -6
include/asm-arm/arch-omap/tc.h
··· 75 75 #ifndef __ASSEMBLER__ 76 76 77 77 /* EMIF Slow Interface Configuration Register */ 78 - #define OMAP_EMIFS_CONFIG_REG __REG32(EMIFS_CONFIG) 79 - 80 78 #define OMAP_EMIFS_CONFIG_FR (1 << 4) 81 79 #define OMAP_EMIFS_CONFIG_PDE (1 << 3) 82 80 #define OMAP_EMIFS_CONFIG_PWD_EN (1 << 2) 83 81 #define OMAP_EMIFS_CONFIG_BM (1 << 1) 84 82 #define OMAP_EMIFS_CONFIG_WP (1 << 0) 85 83 86 - #define EMIFS_CCS(n) __REG32(EMIFS_CS0_CONFIG + (4 * (n))) 87 - #define EMIFS_ACS(n) __REG32(EMIFS_ACS0 + (4 * (n))) 84 + #define EMIFS_CCS(n) (EMIFS_CS0_CONFIG + (4 * (n))) 85 + #define EMIFS_ACS(n) (EMIFS_ACS0 + (4 * (n))) 88 86 89 87 /* Almost all documentation for chip and board memory maps assumes 90 88 * BM is clear. Most devel boards have a switch to control booting ··· 91 93 */ 92 94 static inline u32 omap_cs0_phys(void) 93 95 { 94 - return (OMAP_EMIFS_CONFIG_REG & OMAP_EMIFS_CONFIG_BM) 96 + return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) 95 97 ? OMAP_CS3_PHYS : 0; 96 98 } 97 99 98 100 static inline u32 omap_cs3_phys(void) 99 101 { 100 - return (OMAP_EMIFS_CONFIG_REG & OMAP_EMIFS_CONFIG_BM) 102 + return (omap_readl(EMIFS_CONFIG) & OMAP_EMIFS_CONFIG_BM) 101 103 ? 0 : OMAP_CS3_PHYS; 102 104 } 103 105