1/****************************************************************************** 2/ 3/ File: VIP.h 4/ 5/ Description: ATI Radeon Video Input Port (VIP) interface. 6/ 7/ Copyright 2001, Carlos Hasan 8/ 9*******************************************************************************/ 10 11#ifndef __VIP_PORT_H__ 12#define __VIP_PORT_H__ 13 14#include "Radeon.h" 15 16enum vip_port_device { 17 C_VIP_PORT_DEVICE_0 = 0, 18 C_VIP_PORT_DEVICE_1 = 1, 19 C_VIP_PORT_DEVICE_2 = 2, 20 C_VIP_PORT_DEVICE_3 = 3 21}; 22 23enum vip_port_register { 24 C_VIP_VENDOR_DEVICE_ID = 0x0000, 25 C_VIP_VENDOR_ID = BITS(15:0), 26 C_VIP_DEVICE_ID = BITS(31:16), 27 28 C_VIP_SUB_VENDOR_DEVICE_ID = 0x0004, 29 C_VIP_SUB_VENDOR_ID = BITS(15:0), 30 C_VIP_SUB_DEVICE_ID = BITS(31:16), 31 32 C_VIP_COMMAND_STATUS = 0x0008, 33 C_VIP_POWER_ST = BITS(1:0), 34 C_VIP_XHOST_ON = BITS(2:2), 35 C_VIP_P1_SUPPORT = BITS(16:16), 36 C_VIP_P2_SUPPORT = BITS(17:17), 37 C_VIP_HOST_CAP = BITS(19:18), 38 39 C_VIP_REVISION_ID = 0x000c, 40 C_VIP_REVISION_ID_MASK = BITS(15:0) 41}; 42 43class CVIPPort { 44public: 45 CVIPPort(CRadeon & radeon); 46 47 ~CVIPPort(); 48 49 status_t InitCheck() const; 50 51 CRadeon & Radeon(); 52 53 int Register(int device, int address) { 54 return fRadeon.VIPRegister( device, address ); 55 } 56 57 void SetRegister(int device, int address, int value) { 58 fRadeon.SetVIPRegister( device, address, value ); 59 } 60 61 int ReadFifo(int device, uint32 address, uint32 count, uint8 *buffer) { 62 return fRadeon.VIPReadFifo( device, address, count, buffer ); 63 } 64 65 int WriteFifo(int device, uint32 address, uint32 count, uint8 *buffer) { 66 return fRadeon.VIPWriteFifo( device, address, count, buffer ); 67 } 68 69 int FindVIPDevice( uint32 device_id ) { 70 return fRadeon.FindVIPDevice( device_id ); 71 } 72 73private: 74 CRadeon & fRadeon; 75}; 76 77#endif 78