11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* 21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds NinjaSCSI I/O funtions 31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds By: YOKOTA Hiroshi <yokota@netlab.is.tsukuba.ac.jp> 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 101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* $Id: nsp_io.h,v 1.3 2003/08/04 21:15:26 elca Exp $ */ 111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef __NSP_IO_H__ 131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define __NSP_IO_H__ 141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_write(unsigned int base, 161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val); 181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_read(unsigned int base, 191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index); 201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_index_write(unsigned int BaseAddr, 211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char Value); 231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_index_read(unsigned int BaseAddr, 241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register); 251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/******************************************************************* 271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Basic IO 281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_write(unsigned int base, 311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(val, (base + index)); 351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_read(unsigned int base, 381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inb(base + index); 411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/********************************************************************** 451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Indexed IO 461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_index_read(unsigned int BaseAddr, 481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register) 491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(Register, BaseAddr + INDEXREG); 511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return inb(BaseAddr + DATAREG); 521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_index_write(unsigned int BaseAddr, 551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char Value) 571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(Register, BaseAddr + INDEXREG); 591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outb(Value, BaseAddr + DATAREG); 601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/********************************************************************* 631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * fifo func 641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */ 651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* read 8 bit FIFO */ 671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_read_1(unsigned int BaseAddr, 681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds insb(BaseAddr + Register, buf, count); 731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo8_read(unsigned int base, 761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds /*nsp_dbg(NSP_DEBUG_DATA_IO, "buf=0x%p, count=0x%lx", buf, count);*/ 801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_read_1(base, FIFODATA, buf, count); 811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*--------------------------------------------------------------*/ 841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* read 16 bit FIFO */ 861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_read_2(unsigned int BaseAddr, 871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds insw(BaseAddr + Register, buf, count); 921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo16_read(unsigned int base, 951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "buf=0x%p, count=0x%lx*2", buf, count); 991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_read_2(base, FIFODATA, buf, count); 1001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*--------------------------------------------------------------*/ 1031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* read 32bit FIFO */ 1051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_read_4(unsigned int BaseAddr, 1061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 1071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds insl(BaseAddr + Register, buf, count); 1111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo32_read(unsigned int base, 1141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "buf=0x%p, count=0x%lx*4", buf, count); 1181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_read_4(base, FIFODATA, buf, count); 1191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*----------------------------------------------------------*/ 1221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* write 8bit FIFO */ 1241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_write_1(unsigned int BaseAddr, 1251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 1261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outsb(BaseAddr + Register, buf, count); 1301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo8_write(unsigned int base, 1331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_write_1(base, FIFODATA, buf, count); 1371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*---------------------------------------------------------*/ 1401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* write 16bit FIFO */ 1421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_write_2(unsigned int BaseAddr, 1431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 1441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outsw(BaseAddr + Register, buf, count); 1481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo16_write(unsigned int base, 1511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_write_2(base, FIFODATA, buf, count); 1551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*---------------------------------------------------------*/ 1581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* write 32bit FIFO */ 1601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_multi_write_4(unsigned int BaseAddr, 1611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 1621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds outsl(BaseAddr + Register, buf, count); 1661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_fifo32_write(unsigned int base, 1691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 1701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 1711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_multi_write_4(base, FIFODATA, buf, count); 1731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1751da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*====================================================================*/ 1771da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_write(unsigned long base, 1791da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index, 1801da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 1811da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1821da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index); 1831da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1841da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(val, ptr); 1851da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1861da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1871da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_mmio_read(unsigned long base, 1881da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int index) 1891da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 1901da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + index); 1911da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1921da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return readb(ptr); 1931da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 1941da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1951da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*-----------*/ 1961da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 1971da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline unsigned char nsp_mmio_index_read(unsigned long base, 1981da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg) 1991da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2001da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG); 2011da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG); 2021da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2031da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb((unsigned char)reg, index_ptr); 2041da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds return readb(data_ptr); 2051da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2061da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2071da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_index_write(unsigned long base, 2081da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int reg, 2091da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char val) 2101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *index_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + INDEXREG); 2121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned char *data_ptr = (unsigned char *)(base + NSP_MMIO_OFFSET + DATAREG); 2131da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb((unsigned char)reg, index_ptr); 2151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writeb(val, data_ptr); 2161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2171da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* read 32bit FIFO */ 2191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_multi_read_4(unsigned long base, 2201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 2211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long *ptr = (unsigned long *)(base + Register); 2251da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long *tmp = (unsigned long *)buf; 2261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int i; 2271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "base 0x%0lx ptr 0x%p",base,ptr); 2291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (i = 0; i < count; i++) { 2311da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *tmp = readl(ptr); 2321da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "<%d,%p,%p,%lx>", i, ptr, tmp, *tmp); 2331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tmp++; 2341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2361da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_fifo32_read(unsigned int base, 2381da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2391da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2411da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "buf=0x%p, count=0x%lx*4", buf, count); 2421da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_mmio_multi_read_4(base, FIFODATA, buf, count); 2431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2441da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2451da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_multi_write_4(unsigned long base, 2461da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned int Register, 2471da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2481da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2491da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long *ptr = (unsigned long *)(base + Register); 2511da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long *tmp = (unsigned long *)buf; 2521da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds int i; 2531da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2541da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "base 0x%0lx ptr 0x%p",base,ptr); 2551da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds for (i = 0; i < count; i++) { 2571da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds writel(*tmp, ptr); 2581da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "<%d,%p,%p,%lx>", i, ptr, tmp, *tmp); 2591da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds tmp++; 2601da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds } 2611da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2621da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2631da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldsstatic inline void nsp_mmio_fifo32_write(unsigned int base, 2641da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds void *buf, 2651da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds unsigned long count) 2661da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds{ 2671da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds //nsp_dbg(NSP_DEBUG_DATA_IO, "buf=0x%p, count=0x%lx*4", buf, count); 2681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds nsp_mmio_multi_write_4(base, FIFODATA, buf, count); 2691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} 2701da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds 2731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif 2741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* end */ 275