mirror of
https://gitlab.freedesktop.org/mesa/drm.git
synced 2026-05-14 08:48:05 +02:00
116 lines
3.7 KiB
C
116 lines
3.7 KiB
C
/* i810_dma.h -- DMA support for the i810 -*- linux-c -*-
|
|
*
|
|
* Copyright 1999 Precision Insight, Inc., Cedar Park, Texas.
|
|
* All Rights Reserved.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a
|
|
* copy of this software and associated documentation files (the "Software"),
|
|
* to deal in the Software without restriction, including without limitation
|
|
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
* and/or sell copies of the Software, and to permit persons to whom the
|
|
* Software is furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice (including the next
|
|
* paragraph) shall be included in all copies or substantial portions of the
|
|
* Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
|
* PRECISION INSIGHT AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
* OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
|
* DEALINGS IN THE SOFTWARE.
|
|
*
|
|
* Authors: Keith Whitwell <keithw@precisioninsight.com>
|
|
*
|
|
* $XFree86$
|
|
*
|
|
*/
|
|
|
|
|
|
#ifndef I810_DMA_H
|
|
#define I810_DMA_H
|
|
|
|
#include "i810_drm_public.h"
|
|
|
|
|
|
/* Copy the outstanding cliprects for every I810_DMA_VERTEX buffer.
|
|
* This can be fixed by emitting directly to the ringbuffer in the
|
|
* 'vertex_dma' ioctl.
|
|
*/
|
|
typedef struct {
|
|
int dma_type;
|
|
int age;
|
|
int vertex_real_idx;
|
|
int vertex_discard;
|
|
unsigned int nbox;
|
|
xf86drmClipRectRec boxes[I810_NR_SAREA_CLIPRECTS];
|
|
} drm_i810_buf_priv_t;
|
|
|
|
|
|
#define I810_DMA_GENERAL 0
|
|
#define I810_DMA_VERTEX 1
|
|
#define I810_DMA_DISCARD 2 /* not used */
|
|
|
|
|
|
|
|
#define I810_VERBOSE 0
|
|
|
|
|
|
int i810_dma_vertex(struct inode *inode, struct file *filp,
|
|
unsigned int cmd, unsigned long arg);
|
|
|
|
int i810_dma_general(struct inode *inode, struct file *filp,
|
|
unsigned int cmd, unsigned long arg);
|
|
|
|
|
|
#define GFX_OP_USER_INTERRUPT ((0<<29)|(2<<23))
|
|
#define GFX_OP_BREAKPOINT_INTERRUPT ((0<<29)|(1<<23))
|
|
#define CMD_REPORT_HEAD (7<<23)
|
|
#define CMD_STORE_DWORD_IDX ((0x21<<23) | 0x1)
|
|
#define CMD_OP_BATCH_BUFFER ((0x0<<29)|(0x30<<23)|0x1)
|
|
|
|
|
|
#define BB1_START_ADDR_MASK (~0x7)
|
|
#define BB1_PROTECTED (1<<0)
|
|
#define BB1_UNPROTECTED (0<<0)
|
|
#define BB2_END_ADDR_MASK (~0x7)
|
|
|
|
#define I810REG_HWSTAM 0x02098
|
|
#define I810REG_INT_IDENTITY_R 0x020a4
|
|
#define I810REG_INT_MASK_R 0x020a8
|
|
#define I810REG_INT_ENABLE_R 0x020a0
|
|
|
|
#define LP_RING 0x2030
|
|
#define HP_RING 0x2040
|
|
#define RING_TAIL 0x00
|
|
#define TAIL_ADDR 0x000FFFF8
|
|
#define RING_HEAD 0x04
|
|
#define HEAD_WRAP_COUNT 0xFFE00000
|
|
#define HEAD_WRAP_ONE 0x00200000
|
|
#define HEAD_ADDR 0x001FFFFC
|
|
#define RING_START 0x08
|
|
#define START_ADDR 0x00FFFFF8
|
|
#define RING_LEN 0x0C
|
|
#define RING_NR_PAGES 0x000FF000
|
|
#define RING_REPORT_MASK 0x00000006
|
|
#define RING_REPORT_64K 0x00000002
|
|
#define RING_REPORT_128K 0x00000004
|
|
#define RING_NO_REPORT 0x00000000
|
|
#define RING_VALID_MASK 0x00000001
|
|
#define RING_VALID 0x00000001
|
|
#define RING_INVALID 0x00000000
|
|
|
|
#define GFX_OP_SCISSOR ((0x3<<29)|(0x1c<<24)|(0x10<<19))
|
|
#define SC_UPDATE_SCISSOR (0x1<<1)
|
|
#define SC_ENABLE_MASK (0x1<<0)
|
|
#define SC_ENABLE (0x1<<0)
|
|
|
|
#define GFX_OP_SCISSOR_INFO ((0x3<<29)|(0x1d<<24)|(0x81<<16)|(0x1))
|
|
#define SCI_YMIN_MASK (0xffff<<16)
|
|
#define SCI_XMIN_MASK (0xffff<<0)
|
|
#define SCI_YMAX_MASK (0xffff<<16)
|
|
#define SCI_XMAX_MASK (0xffff<<0)
|
|
|
|
#endif
|