summaryrefslogtreecommitdiff
path: root/linux-core/mach64_drv.c
AgeCommit message (Expand)Author
2008-01-22Merge branch 'master' into vblank-rework, including mach64 supportJesse Barnes
2006-10-14remove config.h from build no longer exists kbuild does itDave Airlie
2005-11-11cleanup ioctl/max_ioctl to use header file for extern symbolsDave Airlie
2005-08-05Rename the driver hooks in the DRM to something a little moreEric Anholt
2004-11-09make linux-core build againJon Smirl
2004-11-06Convert more drivers for bsd-core, moving the ioctl definitions to sharedEric Anholt
2004-10-13Add a poll function that alternates between zero and normal poll return toJon Smirl
2004-10-12Breakout heads into their own data structures.Jon Smirl
2004-10-10Rename fn_tbl to driver. Core driver now uses pci_driver name whichJon Smirl
2004-09-30Lindent of core build. Drivers checked for no binary diffs. A few filesJon Smirl
2004-09-30Make fops per driver instead of global, remove default flush, poll, readJon Smirl
2004-09-27First check in for DRM that splits core from personality modulesJon Smirl
2004-09-231) switches from class_sysfs to drm sysfs implementation to allowJon Smirl
2004-08-24Merged drmfntbl-0-0-2Dave Airlie
2004-04-12more files for mach64Dave Airlie
> * * 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 NON-INFRINGEMENT. IN NO EVENT SHALL * VIA, S3 GRAPHICS, 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. */ #ifndef _via_ds_h_ #define _via_ds_h_ #include "drmP.h" /* Set Data Structure */ #define SET_SIZE 5000 typedef unsigned long ITEM_TYPE; typedef struct { ITEM_TYPE val; int alloc_next, free_next; } list_item_t; typedef struct { int alloc; int free; int trace; list_item_t list[SET_SIZE]; } set_t; set_t *via_setInit(void); int via_setAdd(set_t * set, ITEM_TYPE item); int via_setDel(set_t * set, ITEM_TYPE item); int via_setFirst(set_t * set, ITEM_TYPE * item); int via_setNext(set_t * set, ITEM_TYPE * item); int via_setDestroy(set_t * set); #endif #ifndef MM_INC #define MM_INC struct mem_block_t { struct mem_block_t *next; struct mem_block_t *heap; int ofs, size; int align; unsigned int free:1; unsigned int reserved:1; }; typedef struct mem_block_t TMemBlock; typedef struct mem_block_t *PMemBlock; /* a heap is just the first block in a chain */ typedef struct mem_block_t memHeap_t; static __inline__ int mmBlockSize(PMemBlock b) { return b->size; } static __inline__ int mmOffset(PMemBlock b) { return b->ofs; } static __inline__ void mmMarkReserved(PMemBlock b) { b->reserved = 1; } /* * input: total size in bytes * return: a heap pointer if OK, NULL if error */ memHeap_t *via_mmInit(int ofs, int size); PMemBlock via_mmAllocMem(memHeap_t * heap, int size, int align2, int startSearch); /* * Free block starts at offset * input: pointer to a block * return: 0 if OK, -1 if error */ int via_mmFreeMem(PMemBlock b); #endif