Lines Matching +full:1 +full:a
12 * we must use a trick to get the required behaviour.
14 * The trick employed here is to use long word stores to odd address -1. The
15 * glue logic picks this up as a "trick" access, and asserts the LSB of the
19 * Things get more interesting on the pass-1 EBSA110 - the PCMCIA controller
20 * wiring was screwed in such a way that it had limited memory space access.
34 u32 ret, a = (u32 __force) addr; in __isamem_convert_addr() local
39 * PCMCIA | 2 2 2 2 | 1 1 1 1 | 1 1 1 1 | 1 1 | | | in __isamem_convert_addr()
40 * | 3 2 1 0 | 9 8 7 6 | 5 4 3 2 | 1 0 9 8 | 7 6 5 4 | 3 2 1 0 | in __isamem_convert_addr()
42 * CPU | 2 2 2 2 | 2 1 1 1 | 1 1 1 1 | 1 1 1 | | | in __isamem_convert_addr()
43 * | 4 3 2 1 | 0 9 9 8 | 7 6 5 4 | 3 2 0 9 | 8 7 6 5 | 4 3 2 x | in __isamem_convert_addr()
47 * 0x*10000 -> 0x*1ffff in __isamem_convert_addr()
52 ret = (a & 0xf803fe) << 1; in __isamem_convert_addr()
53 ret |= (a & 0x03fc00) << 2; in __isamem_convert_addr()
57 if ((a & 0x20000) == (a & 0x40000) >> 1) in __isamem_convert_addr()
69 void __iomem *a = __isamem_convert_addr(addr); in __readb() local
72 if ((unsigned long)addr & 1) in __readb()
73 ret = __raw_readl(a); in __readb()
75 ret = __raw_readb(a); in __readb()
81 void __iomem *a = __isamem_convert_addr(addr); in __readw() local
83 if ((unsigned long)addr & 1) in __readw()
86 return __raw_readw(a); in __readw()
91 void __iomem *a = __isamem_convert_addr(addr); in __readl() local
97 ret = __raw_readw(a); in __readl()
98 ret |= __raw_readw(a + 4) << 16; in __readl()
108 void __iomem *a = __isamem_convert_addr(addr); in readsw() local
110 BUG_ON((unsigned long)addr & 1); in readsw()
112 __raw_readsw(a, data, len); in readsw()
118 void __iomem *a = __isamem_convert_addr(addr); in readsl() local
122 __raw_readsl(a, data, len); in readsl()
128 void __iomem *a = __isamem_convert_addr(addr); in __writeb() local
130 if ((unsigned long)addr & 1) in __writeb()
131 __raw_writel(val, a); in __writeb()
133 __raw_writeb(val, a); in __writeb()
138 void __iomem *a = __isamem_convert_addr(addr); in __writew() local
140 if ((unsigned long)addr & 1) in __writew()
143 __raw_writew(val, a); in __writew()
148 void __iomem *a = __isamem_convert_addr(addr); in __writel() local
153 __raw_writew(val, a); in __writel()
154 __raw_writew(val >> 16, a + 4); in __writel()
163 void __iomem *a = __isamem_convert_addr(addr); in writesw() local
165 BUG_ON((unsigned long)addr & 1); in writesw()
167 __raw_writesw(a, data, len); in writesw()
173 void __iomem *a = __isamem_convert_addr(addr); in writesl() local
177 __raw_writesl(a, data, len); in writesl()
182 * The EBSA110 has a weird "ISA IO" region:
192 * Region 1 (addr = 0xf0000000 + (io & ~1) << 1 + (io & 1))
220 void __iomem *a = (void __iomem *)ISAIO_BASE + ((port & ~1) << 1); in __inb8() local
225 if (port & 1) in __inb8()
226 ret = __raw_readl(a); in __inb8()
228 ret = __raw_readb(a); in __inb8()
234 * We're addressing a 16-bit peripheral which transfers odd
247 offset = (port & ~1) << 1 | (port & 1); in __inb16()
262 offset = port << 1; in __inw()
263 BUG_ON(port & 1); in __inw()
269 * Fake a 32-bit read with two 16-bit reads. Needed for 3c589.
273 void __iomem *a; in __inl() local
278 a = (void __iomem *)ISAIO_BASE + ((port & ~1) << 1); in __inl()
280 return __raw_readw(a) | __raw_readw(a + 4) << 16; in __inl()
296 void __iomem *a = (void __iomem *)ISAIO_BASE + ((port & ~1) << 1); in __outb8() local
301 if (port & 1) in __outb8()
302 __raw_writel(val, a); in __outb8()
304 __raw_writeb(val, a); in __outb8()
318 offset = (port & ~1) << 1 | (port & 1); in __outb16()
333 offset = port << 1; in __outw()
334 BUG_ON(port & 1); in __outw()
356 off = (port & ~1) << 1; in outsb()
357 if (port & 1) in outsb()
371 off = (port & ~1) << 1; in insb()
372 if (port & 1) in insb()
389 off = (port & ~1) << 1; in outsw()
390 if (port & 1) in outsw()
404 off = (port & ~1) << 1; in insw()
405 if (port & 1) in insw()
421 u32 off = port << 1; in outsl()
426 __raw_writesw((void __iomem *)ISAIO_BASE + off, from, len << 1); in outsl()
431 u32 off = port << 1; in insl()
436 __raw_readsw((void __iomem *)ISAIO_BASE + off, from, len << 1); in insl()