1706f2543Smrg/* 2706f2543Smrg * SBUS bus-specific declarations 3706f2543Smrg * 4706f2543Smrg * Copyright (C) 2000 Jakub Jelinek (jakub@redhat.com) 5706f2543Smrg * 6706f2543Smrg * Permission is hereby granted, free of charge, to any person obtaining a copy 7706f2543Smrg * of this software and associated documentation files (the "Software"), to deal 8706f2543Smrg * in the Software without restriction, including without limitation the rights 9706f2543Smrg * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10706f2543Smrg * copies of the Software, and to permit persons to whom the Software is 11706f2543Smrg * furnished to do so, subject to the following conditions: 12706f2543Smrg * 13706f2543Smrg * The above copyright notice and this permission notice shall be included in 14706f2543Smrg * all copies or substantial portions of the Software. 15706f2543Smrg * 16706f2543Smrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17706f2543Smrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18706f2543Smrg * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19706f2543Smrg * JAKUB JELINEK BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 20706f2543Smrg * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 21706f2543Smrg * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22706f2543Smrg */ 23706f2543Smrg 24706f2543Smrg#ifndef _XF86_SBUSBUS_H 25706f2543Smrg#define _XF86_SBUSBUS_H 26706f2543Smrg 27706f2543Smrg#include "xf86str.h" 28706f2543Smrg 29706f2543Smrg#define SBUS_DEVICE_BW2 0x0001 30706f2543Smrg#define SBUS_DEVICE_CG2 0x0002 31706f2543Smrg#define SBUS_DEVICE_CG3 0x0003 32706f2543Smrg#define SBUS_DEVICE_CG4 0x0004 33706f2543Smrg#define SBUS_DEVICE_CG6 0x0005 34706f2543Smrg#define SBUS_DEVICE_CG8 0x0006 35706f2543Smrg#define SBUS_DEVICE_CG12 0x0007 36706f2543Smrg#define SBUS_DEVICE_CG14 0x0008 37706f2543Smrg#define SBUS_DEVICE_LEO 0x0009 38706f2543Smrg#define SBUS_DEVICE_TCX 0x000a 39706f2543Smrg#define SBUS_DEVICE_FFB 0x000b 40706f2543Smrg#define SBUS_DEVICE_GT 0x000c 41706f2543Smrg#define SBUS_DEVICE_MGX 0x000d 42706f2543Smrg#define SBUS_DEVICE_P9100 0x000e 43706f2543Smrg#define SBUS_DEVICE_AG10E 0x000f 44706f2543Smrg 45706f2543Smrgtypedef struct sbus_prom_node { 46706f2543Smrg int node; 47706f2543Smrg /* Because of misdesigned openpromio */ 48706f2543Smrg int cookie[2]; 49706f2543Smrg} sbusPromNode, *sbusPromNodePtr; 50706f2543Smrg 51706f2543Smrgtypedef struct sbus_device { 52706f2543Smrg int devId; 53706f2543Smrg int fbNum; 54706f2543Smrg int fd; 55706f2543Smrg int width, height, size; 56706f2543Smrg sbusPromNode node; 57706f2543Smrg char *descr; 58706f2543Smrg char *device; 59706f2543Smrg} sbusDevice, *sbusDevicePtr; 60706f2543Smrg 61706f2543Smrgstruct sbus_devtable { 62706f2543Smrg int devId; 63706f2543Smrg int fbType; 64706f2543Smrg char *promName; 65706f2543Smrg char *driverName; 66706f2543Smrg char *descr; 67706f2543Smrg}; 68706f2543Smrg 69706f2543Smrgextern _X_EXPORT void xf86SbusProbe(void); 70706f2543Smrgextern _X_EXPORT sbusDevicePtr *xf86SbusInfo; 71706f2543Smrgextern _X_EXPORT struct sbus_devtable sbusDeviceTable[]; 72706f2543Smrg 73706f2543Smrgextern _X_EXPORT int xf86MatchSbusInstances(const char *driverName, int sbusDevId, 74706f2543Smrg GDevPtr *devList, int numDevs, DriverPtr drvp, 75706f2543Smrg int **foundEntities); 76706f2543Smrgextern _X_EXPORT sbusDevicePtr xf86GetSbusInfoForEntity(int entityIndex); 77706f2543Smrgextern _X_EXPORT int xf86GetEntityForSbusInfo(sbusDevicePtr psdp); 78706f2543Smrgextern _X_EXPORT void xf86SbusUseBuiltinMode(ScrnInfoPtr pScrn, sbusDevicePtr psdp); 79706f2543Smrgextern _X_EXPORT pointer xf86MapSbusMem(sbusDevicePtr psdp, unsigned long offset, 80706f2543Smrg unsigned long size); 81706f2543Smrgextern _X_EXPORT void xf86UnmapSbusMem(sbusDevicePtr psdp, pointer addr, unsigned long size); 82706f2543Smrgextern _X_EXPORT void xf86SbusHideOsHwCursor(sbusDevicePtr psdp); 83706f2543Smrgextern _X_EXPORT void xf86SbusSetOsHwCursorCmap(sbusDevicePtr psdp, int bg, int fg); 84706f2543Smrgextern _X_EXPORT Bool xf86SbusHandleColormaps(ScreenPtr pScreen, sbusDevicePtr psdp); 85706f2543Smrg 86706f2543Smrgextern _X_EXPORT int promRootNode; 87706f2543Smrg 88706f2543Smrgextern _X_EXPORT int promGetSibling(int node); 89706f2543Smrgextern _X_EXPORT int promGetChild(int node); 90706f2543Smrgextern _X_EXPORT char * promGetProperty(const char *prop, int *lenp); 91706f2543Smrgextern _X_EXPORT int promGetBool(const char *prop); 92706f2543Smrg 93706f2543Smrgextern _X_EXPORT int sparcPromInit(void); 94706f2543Smrgextern _X_EXPORT void sparcPromClose(void); 95706f2543Smrgextern _X_EXPORT char * sparcPromGetProperty(sbusPromNodePtr pnode, const char *prop, int *lenp); 96706f2543Smrgextern _X_EXPORT int sparcPromGetBool(sbusPromNodePtr pnode, const char *prop); 97706f2543Smrgextern _X_EXPORT void sparcPromAssignNodes(void); 98706f2543Smrgextern _X_EXPORT char * sparcPromNode2Pathname(sbusPromNodePtr pnode); 99706f2543Smrgextern _X_EXPORT int sparcPromPathname2Node(const char *pathName); 100706f2543Smrgextern _X_EXPORT char *sparcDriverName(void); 101706f2543Smrg 102706f2543Smrgextern Bool xf86SbusConfigure(void *busData, sbusDevicePtr sBus); 103706f2543Smrgextern void xf86SbusConfigureNewDev(void *busData, sbusDevicePtr sBus, 104706f2543Smrg GDevRec *GDev); 105706f2543Smrg 106706f2543Smrg#endif /* _XF86_SBUSBUS_H */ 107