[go: nahoru, domu]

1/*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * File: upc.h
20 *
21 * Purpose: Macros to access device
22 *
23 * Author: Tevin Chen
24 *
25 * Date: Mar 17, 1997
26 *
27 */
28
29#ifndef __UPC_H__
30#define __UPC_H__
31
32#include "device.h"
33#include "ttype.h"
34
35/*---------------------  Export Definitions -------------------------*/
36
37//
38//  For memory mapped IO
39//
40
41#define VNSvInPortB(dwIOAddress, pbyData)				\
42do {									\
43	*(pbyData) = ioread8(dwIOAddress);				\
44} while (0)
45
46#define VNSvInPortW(dwIOAddress, pwData)				\
47do {									\
48	*(pwData) = ioread16(dwIOAddress);				\
49} while (0)
50
51#define VNSvInPortD(dwIOAddress, pdwData)				\
52do {									\
53	*(pdwData) = ioread32(dwIOAddress);				\
54} while (0)
55
56#define VNSvOutPortB(dwIOAddress, byData)				\
57do {									\
58	iowrite8((u8)byData, dwIOAddress);				\
59} while (0)
60
61#define VNSvOutPortW(dwIOAddress, wData)				\
62do {									\
63	iowrite16((u16)wData, dwIOAddress);				\
64} while (0)
65
66#define VNSvOutPortD(dwIOAddress, dwData)				\
67do {									\
68	iowrite32((u32)dwData, dwIOAddress);				\
69} while (0)
70
71#define PCAvDelayByIO(uDelayUnit)				\
72do {								\
73	unsigned char byData;					\
74	unsigned long ii;					\
75								\
76	if (uDelayUnit <= 50) {					\
77		udelay(uDelayUnit);				\
78	} else {						\
79		for (ii = 0; ii < (uDelayUnit); ii++)		\
80			byData = inb(0x61);			\
81	}							\
82} while (0)
83
84/*---------------------  Export Classes  ----------------------------*/
85
86/*---------------------  Export Variables  --------------------------*/
87
88/*---------------------  Export Functions  --------------------------*/
89
90#endif // __UPC_H__
91