| /* SPDX-License-Identifier: GPL-2.0+ */ |
| /* |
| * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc. |
| * All rights reserved. |
| * |
| * Purpose: Macros to access device |
| * |
| * Author: Tevin Chen |
| * |
| * Date: Mar 17, 1997 |
| * |
| */ |
| |
| #ifndef __UPC_H__ |
| #define __UPC_H__ |
| |
| #include "device.h" |
| |
| /*--------------------- Export Definitions -------------------------*/ |
| |
| /* For memory mapped IO */ |
| |
| #define VNSvInPortB(dwIOAddress, pbyData) \ |
| (*(pbyData) = ioread8(dwIOAddress)) |
| |
| #define VNSvInPortW(dwIOAddress, pwData) \ |
| (*(pwData) = ioread16(dwIOAddress)) |
| |
| #define VNSvInPortD(dwIOAddress, pdwData) \ |
| (*(pdwData) = ioread32(dwIOAddress)) |
| |
| #define VNSvOutPortB(dwIOAddress, byData) \ |
| iowrite8((u8)(byData), dwIOAddress) |
| |
| #define VNSvOutPortW(dwIOAddress, wData) \ |
| iowrite16((u16)(wData), dwIOAddress) |
| |
| #define VNSvOutPortD(dwIOAddress, dwData) \ |
| iowrite32((u32)(dwData), dwIOAddress) |
| |
| #define PCAvDelayByIO(uDelayUnit) \ |
| do { \ |
| unsigned char __maybe_unused byData; \ |
| unsigned long ii; \ |
| \ |
| if (uDelayUnit <= 50) { \ |
| udelay(uDelayUnit); \ |
| } else { \ |
| for (ii = 0; ii < (uDelayUnit); ii++) \ |
| byData = inb(0x61); \ |
| } \ |
| } while (0) |
| |
| /*--------------------- Export Classes ----------------------------*/ |
| |
| /*--------------------- Export Variables --------------------------*/ |
| |
| /*--------------------- Export Functions --------------------------*/ |
| |
| #endif /* __UPC_H__ */ |