1 /*****************************************************************************\
2 * Tseng Labs ET6000, ET6100 and ET6300 graphics driver for BeOS 5.
3 * Copyright (c) 2003-2004, Evgeniy Vladimirovich Bobkov.
4 \*****************************************************************************/
6 #ifndef _DRIVERINTERFACE_H_
7 #define _DRIVERINTERFACE_H_
9 #include <Accelerant.h>
15 #if defined(__cplusplus)
20 * This is the info that needs to be shared between the kernel driver and
21 * the accelerant for the et6000 driver.
24 /*****************************************************************************/
30 #define INIT_BEN(x) x.sem = create_sem(0, "ET6000 "#x" benaphore"); x.ben = 0;
31 #define AQUIRE_BEN(x) if((atomic_add(&(x.ben), 1)) >= 1) acquire_sem(x.sem);
32 #define RELEASE_BEN(x) if((atomic_add(&(x.ben), -1)) > 1) release_sem(x.sem);
33 #define DELETE_BEN(x) delete_sem(x.sem);
34 /*****************************************************************************/
35 #define ET6000_PRIVATE_DATA_MAGIC 0x100CC001
36 /*****************************************************************************/
37 #define ET6000_HANDLER_INSTALLED 0x80000000
38 /*****************************************************************************/
40 * How many bytes of memory the accelerator (ACL) takes from the off-screen
41 * part of the adapter onboard memory to perform some of its operations.
43 #define ET6000_ACL_NEEDS_MEMORY 4
44 /*****************************************************************************/
46 ET6000_GET_PRIVATE_DATA
= B_DEVICE_OP_CODES_END
+ 1,
50 ET6000_PROPOSE_DISPLAY_MODE
,
51 ET6000_SET_DISPLAY_MODE
53 /*****************************************************************************/
55 uint16 vendor_id
; /* PCI vendor ID, from pci_info */
56 uint16 device_id
; /* PCI device ID, from pci_info */
57 uint8 revision
; /* PCI device revsion, from pci_info */
58 area_id memoryArea
; /* Onboard memory's area_id. The addresses
59 * are shared with all teams. */
60 void *framebuffer
; /* Start of the mapped framebuffer */
61 void *physFramebuffer
; /* Physical address of start of framebuffer */
62 void *memory
; /* Start of the mapped adapter onboard memory */
63 void *physMemory
; /* Physical address of start of onboard memory */
64 uint32 memSize
; /* Size of available onboard memory, bytes. */
65 uint16 pciConfigSpace
; /* PCI header base I/O address */
66 void *mmRegs
; /* memory mapped registers */
67 void *emRegs
; /* external mapped registers */
68 area_id modesArea
; /* Contains the list of display modes the driver supports */
69 uint32 modesNum
; /* Number of display modes in the list */
72 display_mode dm
; /* current display mode configuration */
73 uint8 bytesPerPixel
; /* bytes(!) per pixel at current display mode */
74 frame_buffer_config fbc
; /* bytes_per_row and start of frame buffer */
77 uint64 count
; /* last fifo slot used */
78 uint64 lastIdle
; /* last fifo slot we *know* the engine was idle after */
79 benaphore lock
; /* for serializing access to the acceleration engine */
82 uint32 pixelClockMax16
; /* The maximum speed the pixel clock should run */
83 uint32 pixelClockMax24
; /* at for a given pixel width. Usually a function */
84 /* of memory and DAC bandwidths. */
86 /*****************************************************************************/
87 /* Read or write a value in PCI configuration space */
89 uint32 magic
; /* magic number to make sure the caller groks us */
90 uint32 offset
; /* Offset to read/write */
91 uint32 size
; /* Number of bytes to transfer */
92 uint32 value
; /* The value read or written */
94 /*****************************************************************************/
95 /* Retrieve the area_id of the kernel/accelerant shared info */
97 uint32 magic
; /* magic number to make sure the caller groks us */
98 area_id sharedInfoArea
; /* area_id containing the shared information */
99 } ET6000GetPrivateData
;
100 /*****************************************************************************/
102 * Retrieve the device name. Usefull for when we have a file handle, but
103 * want to know the device name (like when we are cloning the accelerant).
106 uint32 magic
; /* magic number to make sure the caller groks us */
107 char *name
; /* The name of the device, less the /dev root */
109 /*****************************************************************************/
111 uint32 magic
; /* magic number to make sure the caller groks us */
112 display_mode mode
; /* Proposed mode or mode to set */
113 uint16 pciConfigSpace
; /* For setting the mode */
114 uint32 memSize
; /* For proposing the mode */
116 /*****************************************************************************/
118 #if defined(__cplusplus)
123 #endif /* _DRIVERINTERFACE_H_ */