11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Workbit NinjaSCSI-32Bi/UDE PCI/CardBus SCSI Host Bus Adapter driver 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * I/O routine 41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * 51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * This software may be used and distributed according to the terms of 61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the GNU General Public License. 71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _NSP32_IO_H 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _NSP32_IO_H 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_write1(unsigned int base, 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(val, (base + index)); 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp32_read1(unsigned int base, 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inb(base + index); 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_write2(unsigned int base, 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short val) 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outw(val, (base + index)); 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned short nsp32_read2(unsigned int base, 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inw(base + index); 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_write4(unsigned int base, 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long val) 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outl(val, (base + index)); 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned long nsp32_read4(unsigned int base, 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inl(base + index); 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*==============================================*/ 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_mmio_write1(unsigned long base, 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned char *ptr; 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned char *)(base + NSP32_MMIO_OFFSET + index); 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(val, ptr); 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp32_mmio_read1(unsigned long base, 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned char *ptr; 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned char *)(base + NSP32_MMIO_OFFSET + index); 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return readb(ptr); 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_mmio_write2(unsigned long base, 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short val) 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *ptr; 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + index); 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writew(cpu_to_le16(val), ptr); 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned short nsp32_mmio_read2(unsigned long base, 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *ptr; 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + index); 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return le16_to_cpu(readw(ptr)); 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_mmio_write4(unsigned long base, 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long val) 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned long *ptr; 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned long *)(base + NSP32_MMIO_OFFSET + index); 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writel(cpu_to_le32(val), ptr); 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned long nsp32_mmio_read4(unsigned long base, 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned long *ptr; 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds ptr = (unsigned long *)(base + NSP32_MMIO_OFFSET + index); 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return le32_to_cpu(readl(ptr)); 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*==============================================*/ 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp32_index_read1(unsigned int base, 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG); 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inb(base + DATA_REG_LOW); 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_index_write1(unsigned int base, 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG ); 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(val, base + DATA_REG_LOW); 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned short nsp32_index_read2(unsigned int base, 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG); 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inw(base + DATA_REG_LOW); 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_index_write2(unsigned int base, 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short val) 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG ); 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outw(val, base + DATA_REG_LOW); 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned long nsp32_index_read4(unsigned int base, 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long h,l; 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG); 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds l = inw(base + DATA_REG_LOW); 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds h = inw(base + DATA_REG_HI ); 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return ((h << 16) | l); 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_index_write4(unsigned int base, 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long val) 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long h,l; 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds h = (val & 0xffff0000) >> 16; 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds l = (val & 0x0000ffff) >> 0; 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(reg, base + INDEX_REG ); 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outw(l, base + DATA_REG_LOW); 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outw(h, base + DATA_REG_HI ); 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*==============================================*/ 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp32_mmio_index_read1(unsigned long base, 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *index_ptr, *data_ptr; 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds index_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + INDEX_REG); 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds data_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + DATA_REG_LOW); 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(reg, index_ptr); 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return readb(data_ptr); 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_mmio_index_write1(unsigned long base, 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *index_ptr, *data_ptr; 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds index_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + INDEX_REG); 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds data_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + DATA_REG_LOW); 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(reg, index_ptr); 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(val, data_ptr ); 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned short nsp32_mmio_index_read2(unsigned long base, 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *index_ptr, *data_ptr; 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds index_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + INDEX_REG); 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds data_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + DATA_REG_LOW); 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(reg, index_ptr); 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return le16_to_cpu(readw(data_ptr)); 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_mmio_index_write2(unsigned long base, 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned short val) 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds volatile unsigned short *index_ptr, *data_ptr; 2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds index_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + INDEX_REG); 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds data_ptr = (unsigned short *)(base + NSP32_MMIO_OFFSET + DATA_REG_LOW); 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(reg, index_ptr); 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writew(cpu_to_le16(val), data_ptr ); 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*==============================================*/ 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_multi_read4(unsigned int base, 2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds insl(base + reg, buf, count); 2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_fifo_read(unsigned int base, 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp32_multi_read4(base, FIFO_DATA_LOW, buf, count); 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_multi_write4(unsigned int base, 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outsl(base + reg, buf, count); 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp32_fifo_write(unsigned int base, 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp32_multi_write4(base, FIFO_DATA_LOW, buf, count); 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif /* _NSP32_IO_H */ 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* end */ 260