agpdefs.h revision c4f91784e8e1661a861af87f7d98cbb9edc7314f
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * CDDL HEADER START
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * The contents of this file are subject to the terms of the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * Common Development and Distribution License (the "License").
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * You may not use this file except in compliance with the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * or http://www.opensolaris.org/os/licensing.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * See the License for the specific language governing permissions
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * and limitations under the License.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * When distributing Covered Code, include this CDDL HEADER in each
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * If applicable, add the following below this CDDL HEADER, with the
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * fields enclosed by brackets "[]" replaced with your own identifying
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * information: Portions Copyright [yyyy] [name of copyright owner]
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * CDDL HEADER END
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * Use is subject to license terms.
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy#pragma ident "%Z%%M% %I% %E% SMI"
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * This AGP memory type is required by some hardware like i810 video
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * card, which need physical contiguous pages to setup hardware cursor.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * Usually, several tens of kilo bytes are needed in this case.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * We use DDI DMA interfaces to allocate such memory in agpgart driver,
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * and it can not be exported to user applications directly by calling mmap
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * on agpgart driver. The typical usage scenario is as the following:
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * Firstly, Xserver get the memory physical address by calling AGPIOC_ALLOCATE
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * on agpgart driver. Secondly, Xserver use the physical address to mmap
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy * the memory to Xserver space area by xsvc driver.
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_PHYSICAL 2 /* Only used for i810, HW curosr */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy/* AGP space units */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_PAGE_SIZE (1 << AGP_PAGE_SHIFT)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_PAGE_OFFSET (AGP_PAGE_SIZE - 1)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_PAGES2BYTES(x) ((x) << AGP_PAGE_SHIFT)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_BYTES2PAGES(x) ((x) >> AGP_PAGE_SHIFT)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_ALIGNED(offset) (((offset) & AGP_PAGE_OFFSET) == 0)
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy/* stand pci register offset */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy/* macros for device types */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define DEVICE_IS_I810 11 /* intel i810 series video card */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define DEVICE_IS_I830 12 /* intel i830, i845, i855 series */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define DEVICE_IS_AGP 21 /* external AGP video card */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define CHIP_IS_INTEL 10 /* intel agp bridge */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define CHIP_IS_AMD 20 /* amd agp bridge */
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy/* AGP bridge device id */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define INTEL_BR_815 0x11308086 /* include 815G/EG/P/EP */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define INTEL_BR_845 0x25608086 /* include 845G/P */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define INTEL_BR_855GM 0x35808086 /* include 852GM/PM */
1d32ba663e202c24a5a1f2e5aef83fffb447cb7fJohn Wren Kennedy/* AGP common register offset in pci configuration space */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_CONF_STATUS 0x04 /* CAP + 0x4 */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_CONF_COMMAND 0x08 /* CAP + 0x8 */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy/* AGP target register and mask defines */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_CONF_CONTROL 0x10 /* CAP + 0x10 */
d583b39bfb4e2571d3e41097c5c357ffe353ad45John Wren Kennedy#define AGP_32_APERBASE_MASK 0xffc00000 /* 4M aligned */
#ifdef __cplusplus