1952d751a140e961f7ac67f743cf94d1a37c736e8Dave Airlie/* sis_drv.h -- Private header for sis driver -*- linux-c -*- */
2952d751a140e961f7ac67f743cf94d1a37c736e8Dave Airlie/*
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright 2000 VA Linux Systems, Inc., Sunnyvale, California.
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * All rights reserved.
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Permission is hereby granted, free of charge, to any person obtaining a
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * copy of this software and associated documentation files (the "Software"),
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * to deal in the Software without restriction, including without limitation
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * the rights to use, copy, modify, merge, publish, distribute, sublicense,
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * and/or sell copies of the Software, and to permit persons to whom the
121da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software is furnished to do so, subject to the following conditions:
13b5e89ed53ed8d24f83ba1941c07382af00ed238eDave Airlie *
141da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The above copyright notice and this permission notice (including the next
151da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * paragraph) shall be included in all copies or substantial portions of the
161da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Software.
17b5e89ed53ed8d24f83ba1941c07382af00ed238eDave Airlie *
181da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
191da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
201da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
211da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
221da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
231da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * DEALINGS IN THE SOFTWARE.
25b5e89ed53ed8d24f83ba1941c07382af00ed238eDave Airlie *
261da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
271da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
281da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#ifndef _SIS_DRV_H_
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define _SIS_DRV_H_
301da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
314f03b1fc1eb286b73d453c03cdb45a3827726a44Daniel Vetter#include <drm/drm_legacy.h>
324f03b1fc1eb286b73d453c03cdb45a3827726a44Daniel Vetter
331da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/* General customization:
341da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
351da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
36ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom#define DRIVER_AUTHOR		"SIS, Tungsten Graphics"
371da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DRIVER_NAME		"sis"
38ad5c980fdef0f339eb7c5888525acf9ce33855ecIan Romanick#define DRIVER_DESC		"SIS 300/630/540 and XGI V3XE/V5/V8"
39ad5c980fdef0f339eb7c5888525acf9ce33855ecIan Romanick#define DRIVER_DATE		"20070626"
401da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#define DRIVER_MAJOR		1
41ad5c980fdef0f339eb7c5888525acf9ce33855ecIan Romanick#define DRIVER_MINOR		3
42ad5c980fdef0f339eb7c5888525acf9ce33855ecIan Romanick#define DRIVER_PATCHLEVEL	0
431da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
447981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstromenum sis_family {
457981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom	SIS_OTHER = 0,
467981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom	SIS_CHIP_315 = 1,
477981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom};
487981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom
49760285e7e7ab282c25b5e90816f7c47000557f4fDavid Howells#include <drm/drm_mm.h>
501da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
519698b4dba42eb758ad98012c21e5fbdb372fe2d9Dave Airlie
527981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom#define SIS_BASE (dev_priv->mmio)
53497888cf69bf607ac1fe061a6437e0a670b0022fPhil Carmody#define SIS_READ(reg)         DRM_READ32(SIS_BASE, reg)
54497888cf69bf607ac1fe061a6437e0a670b0022fPhil Carmody#define SIS_WRITE(reg, val)   DRM_WRITE32(SIS_BASE, reg, val)
557981bf7d494a6c4d45e22c54b0da887e5a67e705Thomas Hellstrom
561da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvaldstypedef struct drm_sis_private {
57ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	drm_local_map_t *mmio;
58ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	unsigned int idle_fault;
59ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	unsigned int chipset;
60ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	int vram_initialized;
61ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	int agp_initialized;
62ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	unsigned long vram_offset;
63ce65a44de07f73ceda1749812b75086b7add408dThomas Hellstrom	unsigned long agp_offset;
64be2fb9da32cb88a1311350de3d1db8f9e461ae9fDaniel Vetter	struct drm_mm vram_mm;
65be2fb9da32cb88a1311350de3d1db8f9e461ae9fDaniel Vetter	struct drm_mm agp_mm;
666de8a748881f1cd9d795454da2b6db616d5ca3d7Daniel Vetter	/** Mapping of userspace keys to mm objects */
676de8a748881f1cd9d795454da2b6db616d5ca3d7Daniel Vetter	struct idr object_idr;
681da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds} drm_sis_private_t;
691da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
7084b1fd103dbbe01b5905db1444d3fc8afa9a7207Dave Airlieextern int sis_idle(struct drm_device *dev);
716c340eac0285f3d62406d2d902d0e96fbf2a5dc0Eric Anholtextern void sis_reclaim_buffers_locked(struct drm_device *dev,
726c340eac0285f3d62406d2d902d0e96fbf2a5dc0Eric Anholt				       struct drm_file *file_priv);
7384b1fd103dbbe01b5905db1444d3fc8afa9a7207Dave Airlieextern void sis_lastclose(struct drm_device *dev);
741da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
75baa7094355a10b432bbccacb925da4bdac861c8dRob Clarkextern const struct drm_ioctl_desc sis_ioctls[];
76b3a83639895a422b25f72eec0a5d1d88c3ac4e9eDave Airlieextern int sis_max_ioctl;
77b3a83639895a422b25f72eec0a5d1d88c3ac4e9eDave Airlie
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#endif
79