1 Index: git/hw/kdrive/w100/ati.c
2 ===================================================================
3 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
4 +++ git/hw/kdrive/w100/ati.c 2006-09-02 12:12:14.000000000 +0200
7 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
9 + * Permission to use, copy, modify, distribute, and sell this software and its
10 + * documentation for any purpose is hereby granted without fee, provided that
11 + * the above copyright notice appear in all copies and that both that
12 + * copyright notice and this permission notice appear in supporting
13 + * documentation, and that the name of Alberto Mardegan not be used in
14 + * advertising or publicity pertaining to distribution of the software without
15 + * specific, written prior permission. Alberto Mardegan makes no
16 + * representations about the suitability of this software for any purpose. It
17 + * is provided "as is" without express or implied warranty.
19 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
20 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
21 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
22 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
23 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
24 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
25 + * PERFORMANCE OF THIS SOFTWARE.
29 +#include <kdrive-config.h>
32 +#include "w100_regs.h"
35 +struct pci_id_entry ati_pci_ids[] = {
36 + {0x1002, 0x5644, 0, "ATI Imageon 3200"},
37 + {0x1002, 0x5741, 0, "ATI Imageon 100"},
38 + {0x1002, 0x5744, 0, "ATI Imageon 3220"},
44 +ATICardInit(KdCardInfo * card)
48 + Bool initialized = FALSE;
50 + atic = xcalloc(sizeof(ATICardInfo), 1);
55 + if (!initialized && fbdevInitialize(card, &atic->backend_priv.fbdev)) {
56 + atic->use_fbdev = TRUE;
58 + atic->backend_funcs.cardfini = fbdevCardFini;
59 + atic->backend_funcs.scrfini = fbdevScreenFini;
60 + atic->backend_funcs.initScreen = fbdevInitScreen;
61 + atic->backend_funcs.finishInitScreen = fbdevFinishInitScreen;
62 + atic->backend_funcs.createRes = fbdevCreateResources;
63 + atic->backend_funcs.preserve = fbdevPreserve;
64 + atic->backend_funcs.restore = fbdevRestore;
65 + atic->backend_funcs.dpms = fbdevDPMS;
66 + atic->backend_funcs.enable = fbdevEnable;
67 + atic->backend_funcs.disable = fbdevDisable;
68 + atic->backend_funcs.getColors = fbdevGetColors;
69 + atic->backend_funcs.putColors = fbdevPutColors;
71 + atic->backend_funcs.randrSetConfig = fbdevRandRSetConfig;
76 + if (!initialized && vesaInitialize(card, &atic->backend_priv.vesa)) {
77 + atic->use_vesa = TRUE;
79 + atic->backend_funcs.cardfini = vesaCardFini;
80 + atic->backend_funcs.scrfini = vesaScreenFini;
81 + atic->backend_funcs.initScreen = vesaInitScreen;
82 + atic->backend_funcs.finishInitScreen = vesaFinishInitScreen;
83 + atic->backend_funcs.createRes = vesaCreateResources;
84 + atic->backend_funcs.preserve = vesaPreserve;
85 + atic->backend_funcs.restore = vesaRestore;
86 + atic->backend_funcs.dpms = vesaDPMS;
87 + atic->backend_funcs.enable = vesaEnable;
88 + atic->backend_funcs.disable = vesaDisable;
89 + atic->backend_funcs.getColors = vesaGetColors;
90 + atic->backend_funcs.putColors = vesaPutColors;
92 + atic->backend_funcs.randrSetConfig = vesaRandRSetConfig;
97 + if (!initialized || !ATIMap(card, atic)) {
102 + card->driver = atic;
104 + for (i = 0; ati_pci_ids[i].name != NULL; i++) {
105 + if (ati_pci_ids[i].device == card->attr.deviceID) {
106 + atic->pci_id = &ati_pci_ids[i];
111 + ErrorF("Using ATI card: %s\n", atic->pci_id->name);
117 +ATICardFini(KdCardInfo * card)
119 + ATICardInfo *atic = (ATICardInfo *) card->driver;
121 + ATIUnmap(card, atic);
122 + atic->backend_funcs.cardfini(card);
126 + * Once screen->off_screen_base is set, this function
127 + * allocates the remaining memory appropriately
131 +ATISetOffscreen(KdScreenInfo * screen)
133 + ATICardInfo(screen);
135 + char *mmio = atic->reg_base;
137 + /* check (and adjust) pitch */
139 + int byteStride = screen->fb[0].byteStride;
142 + int bpp = screen->fb[0].bitsPerPixel;
145 + * Ensure frame buffer is correctly aligned
147 + if (byteStride & 0x3f) {
148 + byteStride = (byteStride + 0x3f) & ~0x3f;
149 + bitStride = byteStride * 8;
150 + pixelStride = bitStride / bpp;
152 + screen->fb[0].byteStride = byteStride;
153 + screen->fb[0].pixelStride = pixelStride;
157 + screen_size = screen->fb[0].byteStride * screen->height;
159 + screen->off_screen_base = screen_size;
164 +ATIScreenInit(KdScreenInfo * screen)
166 + ATIScreenInfo *atis;
167 + ATICardInfo(screen);
168 + Bool success = FALSE;
170 + atis = xcalloc(sizeof(ATIScreenInfo), 1);
175 + atis->screen = screen;
176 + screen->driver = atis;
178 + if (screen->fb[0].depth == 0)
179 + screen->fb[0].depth = 16;
181 + if (atic->use_fbdev) {
182 + success = fbdevScreenInitialize(screen, &atis->backend_priv.fbdev);
186 + if (atic->use_vesa) {
187 + success = vesaScreenInitialize(screen, &atis->backend_priv.vesa);
192 + screen->driver = NULL;
198 + ("Offscreen memory at offset %08x, memory base %08x, size %08x\n",
199 + screen->off_screen_base, screen->memory_base,
200 + screen->memory_size);
201 + ATISetOffscreen(screen);
208 +ATIRandRSetConfig(ScreenPtr pScreen,
209 + Rotation randr, int rate, RRScreenSizePtr pSize)
211 + KdScreenPriv(pScreen);
212 + KdScreenInfo *screen = pScreenPriv->screen;
213 + ATICardInfo *atic = screen->card->driver;
216 + ATIDrawDisable(pScreen);
217 + ret = atic->backend_funcs.randrSetConfig(pScreen, randr, rate, pSize);
218 + ATISetOffscreen(screen);
220 + * Set frame buffer mapping
222 + (*pScreen->ModifyPixmapHeader) (fbGetScreenPixmap(pScreen),
225 + screen->fb[0].depth,
226 + screen->fb[0].bitsPerPixel,
227 + screen->fb[0].byteStride,
228 + screen->fb[0].frameBuffer);
230 + ATIDrawEnable(pScreen);
235 +ATIRandRInit(ScreenPtr pScreen)
237 + rrScrPrivPtr pScrPriv;
239 + pScrPriv = rrGetScrPriv(pScreen);
240 + pScrPriv->rrSetConfig = ATIRandRSetConfig;
246 +ATIScreenFini(KdScreenInfo * screen)
248 + ATIScreenInfo *atis = (ATIScreenInfo *) screen->driver;
249 + ATICardInfo *atic = screen->card->driver;
251 + atic->backend_funcs.scrfini(screen);
253 + screen->driver = 0;
257 +ATIMap(KdCardInfo * card, ATICardInfo * atic)
259 + atic->mem_base = (CARD8 *) KdMapDevice(ATI_MEM_BASE(card),
260 + ATI_MEM_SIZE(card));
262 + if (atic->mem_base == NULL)
264 + atic->reg_base = atic->mem_base + 0x10000; /* XXX */
266 + KdSetMappedMode(ATI_MEM_BASE(card), ATI_MEM_SIZE(card),
267 + KD_MAPPED_MODE_REGISTERS);
273 +ATIUnmap(KdCardInfo * card, ATICardInfo * atic)
275 + if (atic->reg_base) {
276 + KdResetMappedMode(ATI_REG_BASE(card), ATI_REG_SIZE(card),
277 + KD_MAPPED_MODE_REGISTERS);
278 + KdUnmapDevice((void *) atic->reg_base, ATI_REG_SIZE(card));
279 + atic->reg_base = 0;
284 +ATIInitScreen(ScreenPtr pScreen)
286 + KdScreenPriv(pScreen);
287 + ATICardInfo(pScreenPriv);
289 + return atic->backend_funcs.initScreen(pScreen);
293 +ATIFinishInitScreen(ScreenPtr pScreen)
295 + KdScreenPriv(pScreen);
296 + ATICardInfo(pScreenPriv);
298 + if (!atic->backend_funcs.finishInitScreen(pScreen))
301 + if (!ATIRandRInit(pScreen))
308 +ATICreateResources(ScreenPtr pScreen)
310 + KdScreenPriv(pScreen);
311 + ATICardInfo(pScreenPriv);
313 + return atic->backend_funcs.createRes(pScreen);
317 +ATIPreserve(KdCardInfo * card)
319 + ATICardInfo *atic = card->driver;
321 + atic->backend_funcs.preserve(card);
325 +ATIRestore(KdCardInfo * card)
327 + ATICardInfo *atic = card->driver;
329 + ATIUnmap(card, atic);
331 + atic->backend_funcs.restore(card);
335 +ATIDPMS(ScreenPtr pScreen, int mode)
337 + KdScreenPriv(pScreen);
338 + ATICardInfo(pScreenPriv);
340 + return atic->backend_funcs.dpms(pScreen, mode);
344 +ATIEnable(ScreenPtr pScreen)
346 + KdScreenPriv(pScreen);
347 + ATICardInfo(pScreenPriv);
348 + mc_ext_mem_location_u eml;
351 + if (!atic->backend_funcs.enable(pScreen))
354 + if ((atic->reg_base == NULL)
355 + && !ATIMap(pScreenPriv->screen->card, atic))
358 + mmio = atic->reg_base;
359 + eml.val = MMIO_IN32(mmio, mmMC_EXT_MEM_LOCATION);
360 + atic->ext_mem_location = eml.f.mc_ext_mem_start << 8;
361 + ATISetOffscreen(pScreenPriv->screen);
367 +ATIDisable(ScreenPtr pScreen)
369 + KdScreenPriv(pScreen);
370 + ATICardInfo(pScreenPriv);
372 + ATIUnmap(pScreenPriv->card, atic);
374 + atic->backend_funcs.disable(pScreen);
378 +ATIGetColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
380 + KdScreenPriv(pScreen);
381 + ATICardInfo(pScreenPriv);
383 + atic->backend_funcs.getColors(pScreen, fb, n, pdefs);
387 +ATIPutColors(ScreenPtr pScreen, int fb, int n, xColorItem * pdefs)
389 + KdScreenPriv(pScreen);
390 + ATICardInfo(pScreenPriv);
392 + atic->backend_funcs.putColors(pScreen, fb, n, pdefs);
395 +/* Compute log base 2 of val. */
401 + for (bits = 0; val != 0; val >>= 1, ++bits);
407 +KdCardFuncs ATIFuncs = {
408 + ATICardInit, /* cardinit */
409 + ATIScreenInit, /* scrinit */
410 + ATIInitScreen, /* initScreen */
411 + ATIFinishInitScreen, /* finishInitScreen */
412 + ATICreateResources, /* createRes */
413 + ATIPreserve, /* preserve */
414 + ATIEnable, /* enable */
415 + ATIDPMS, /* dpms */
416 + ATIDisable, /* disable */
417 + ATIRestore, /* restore */
418 + ATIScreenFini, /* scrfini */
419 + ATICardFini, /* cardfini */
421 +#define ATICursorInit 0
422 +#define ATICursorEnable 0
423 +#define ATICursorDisable 0
424 +#define ATICursorFini 0
425 +#define ATIRecolorCursor 0
426 + ATICursorInit, /* initCursor */
427 + ATICursorEnable, /* enableCursor */
428 + ATICursorDisable, /* disableCursor */
429 + ATICursorFini, /* finiCursor */
430 + ATIRecolorCursor, /* recolorCursor */
432 + ATIDrawInit, /* initAccel */
433 + ATIDrawEnable, /* enableAccel */
434 + ATIDrawDisable, /* disableAccel */
435 + ATIDrawFini, /* finiAccel */
437 + ATIGetColors, /* getColors */
438 + ATIPutColors, /* putColors */
440 Index: git/hw/kdrive/w100/ati_cursor.c
441 ===================================================================
442 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
443 +++ git/hw/kdrive/w100/ati_cursor.c 2006-09-02 12:12:14.000000000 +0200
446 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
448 + * Permission to use, copy, modify, distribute, and sell this software and its
449 + * documentation for any purpose is hereby granted without fee, provided that
450 + * the above copyright notice appear in all copies and that both that
451 + * copyright notice and this permission notice appear in supporting
452 + * documentation, and that the name of Alberto Mardegan not be used in
453 + * advertising or publicity pertaining to distribution of the software without
454 + * specific, written prior permission. Alberto Mardegan makes no
455 + * representations about the suitability of this software for any purpose. It
456 + * is provided "as is" without express or implied warranty.
458 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
459 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
460 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
461 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
462 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
463 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
464 + * PERFORMANCE OF THIS SOFTWARE.
467 +#ifdef HAVE_CONFIG_H
468 +#include <kdrive-config.h>
471 +#include "cursorstr.h"
472 +#include "ati_draw.h"
475 +ATIMoveCursor(ScreenPtr pScreen, int x, int y)
481 +ATIRealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
488 +ATIUnrealizeCursor(ScreenPtr pScreen, CursorPtr pCursor)
495 +ATISetCursor(ScreenPtr pScreen, CursorPtr pCursor, int x, int y)
500 +miPointerSpriteFuncRec ATIPointerSpriteFuncs = {
502 + ATIUnrealizeCursor,
509 +ATICursorEnable(ScreenPtr pScreen)
515 +ATICursorDisable(ScreenPtr pScreen)
521 +ATICursorInit(ScreenPtr pScreen)
528 +ATIRecolorCursor(ScreenPtr pScreen, int ndef, xColorItem * pdef)
535 +ATICursorFini(ScreenPtr pScreen)
538 Index: git/hw/kdrive/w100/ati_dma.c
539 ===================================================================
540 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
541 +++ git/hw/kdrive/w100/ati_dma.c 2006-09-02 12:12:14.000000000 +0200
544 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
546 + * Permission to use, copy, modify, distribute, and sell this software and its
547 + * documentation for any purpose is hereby granted without fee, provided that
548 + * the above copyright notice appear in all copies and that both that
549 + * copyright notice and this permission notice appear in supporting
550 + * documentation, and that the name of Alberto Mardegan not be used in
551 + * advertising or publicity pertaining to distribution of the software without
552 + * specific, written prior permission. Alberto Mardegan makes no
553 + * representations about the suitability of this software for any purpose. It
554 + * is provided "as is" without express or implied warranty.
556 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
557 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
558 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
559 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
560 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
561 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
562 + * PERFORMANCE OF THIS SOFTWARE.
565 +#include <sys/time.h>
568 +#include "w100_regs.h"
569 +#include "w100_const.h"
570 +#include "ati_dma.h"
571 +#include "ati_draw.h"
574 +#define DEBUG_FIFO 0
576 +extern CARD32 w100_microcode[][2];
580 +ATIDebugFifo(ATIScreenInfo * atis)
582 + ATICardInfo *atic = atis->atic;
583 + char *mmio = atic->reg_base;
585 + ErrorF("mmCP_CSQ_CNTL: 0x%08x\n", MMIO_IN32(mmio, mmCP_CSQ_CNTL));
586 + ErrorF("mmCP_CSQ_STAT: 0x%08x\n", MMIO_IN32(mmio, mmCP_CSQ_STAT));
587 + ErrorF("mmRBBM_STATUS: 0x%08x\n", MMIO_IN32(mmio, mmRBBM_STATUS));
592 +ATIUploadMicrocode(ATIScreenInfo * atis)
594 + ATICardInfo *atic = atis->atic;
595 + char *mmio = atic->reg_base;
598 + MMIO_OUT32(mmio, mmCP_ME_RAM_ADDR, 0);
599 + for (i = 0; i < 256; i++) {
600 + MMIO_OUT32(mmio, mmCP_ME_RAM_DATAH, w100_microcode[i][1]);
601 + MMIO_OUT32(mmio, mmCP_ME_RAM_DATAL, w100_microcode[i][0]);
605 +/* Required when reading from video memory after acceleration to make sure all
606 + * data has been flushed to video memory from the pixel cache.
609 +ATIFlushPixelCache(ATIScreenInfo * atis)
611 + ATICardInfo *atic = atis->atic;
612 + char *mmio = atic->reg_base;
616 + WHILE_NOT_TIMEOUT(.2) {
617 + rs.val = MMIO_IN32(mmio, mmRBBM_STATUS);
618 + if (!rs.f.gui_active)
622 + ErrorF("Timeout flushing pixel cache.\n");
626 +ATIEngineReset(ATIScreenInfo * atis)
628 + ATICardInfo *atic = atis->atic;
629 + char *mmio = atic->reg_base;
632 + rbbm_soft_reset_u rsr;
635 + ErrorF("Engine Reset!\n");
636 + ATIDebugFifo(atis);
639 + ATIFlushPixelCache(atis);
641 + sc.val = sclk_cntl = MMIO_IN32(mmio, mmSCLK_CNTL);
642 + sc.f.sclk_force_e2 = sc.f.sclk_force_e3 = sc.f.sclk_force_idct = 1;
643 + MMIO_OUT32(mmio, mmSCLK_CNTL, sc.val);
646 + rsr.f.soft_reset_e2 = 1;
647 + MMIO_OUT32(mmio, mmRBBM_SOFT_RESET, rsr.val);
648 + MMIO_OUT32(mmio, mmRBBM_SOFT_RESET, 0);
650 + MMIO_OUT32(mmio, mmSCLK_CNTL, sclk_cntl);
654 +ATIWaitAvailMMIO(ATIScreenInfo * atis, int n)
656 + ATICardInfo *atic = atis->atic;
657 + char *mmio = atic->reg_base;
661 + if (atis->mmio_avail >= n) {
662 + atis->mmio_avail -= n;
665 + WHILE_NOT_TIMEOUT(.2) {
666 + rs.val = MMIO_IN32(mmio, mmRBBM_STATUS);
667 + atis->mmio_avail = rs.f.cmdfifo_avail;
668 + if (atis->mmio_avail >= n)
670 + ErrorF("Available %d slots.\n", atis->mmio_avail);
673 + ErrorF("Timeout waiting for %d MMIO slots.\n", n);
674 + ATIEngineReset(atis);
675 + ATIDrawSetup(atis->screen->pScreen);
677 + atis->mmio_avail -= n;
682 +ATIWaitIdle(ATIScreenInfo * atis)
684 + ATICardInfo *atic = atis->atic;
685 + char *mmio = atic->reg_base;
689 + /* Empty the fifo */
690 + ATIWaitAvailMMIO(atis, 16);
692 + WHILE_NOT_TIMEOUT(.2) {
693 + rs.val = MMIO_IN32(mmio, mmRBBM_STATUS);
694 + if (!rs.f.gui_active)
697 + ATIDebugFifo(atis);
699 + /* don't know if this is needed, but it's in aticore */
700 + MMIO_IN32(mmio, mmCP_RB_RPTR);
703 + ErrorF("Timeout idling accelerator, resetting...\n");
704 + ATIEngineReset(atis);
705 + ATIDrawSetup(atis->screen->pScreen);
708 + ATIFlushPixelCache(atis);
712 + ATIDebugFifo(atis);
718 +ATIDMAInit(ScreenPtr pScreen, Bool use_agp)
720 + KdScreenPriv(pScreen);
721 + ATIScreenInfo(pScreenPriv);
722 + ATICardInfo(pScreenPriv);
723 + char *mmio = atic->reg_base;
724 + int dma_offset, rbsize = 10;
725 + wrap_start_dir_u wsd;
731 + /* with rbsize = 10, DMA buffer will be of 0x2000 (8192) bytes */
732 + atis->ring_count = 1 << (rbsize + 1);
733 + atis->ring_mask = atis->ring_count - 1;
734 + atis->ring_len = atis->ring_count * 4;
735 + atis->dma_space = KdOffscreenAlloc(pScreen, atis->ring_len,
736 + 16, TRUE, NULL, NULL);
737 + if (atis->dma_space == NULL)
740 + wsd.val = MMIO_IN32(mmio, mmWRAP_START_DIR);
742 + (CARD32 *) (atic->mem_base + (wsd.f.start_addr << 1));
743 + dma_offset = atis->dma_space->offset;
745 + ATIUploadMicrocode(atis);
746 + ATIEngineReset(atis);
748 + atis->ring_read = 0;
749 + atis->ring_write = 0;
750 + atis->ring_free = atis->ring_count;
752 + mem_offset = atic->ext_mem_location + atis->dma_space->offset;
753 + MMIO_OUT32(mmio, mmCP_RB_BASE, mem_offset);
754 + MMIO_OUT32(mmio, mmCP_RB_WPTR, atis->ring_write);
755 + MMIO_OUT32(mmio, mmCP_RB_RPTR, atis->ring_read);
756 + MMIO_OUT32(mmio, mmCP_RB_RPTR_ADDR, 0);
759 + wba.f.offset_addr_a = mem_offset;
762 + wba.f.block_size_a = WB_BLOCK_SIZE_A_0;
765 + wba.f.block_size_a = WB_BLOCK_SIZE_A_1;
768 + wba.f.block_size_a = WB_BLOCK_SIZE_A_2;
771 + wba.f.block_size_a = WB_BLOCK_SIZE_A_3;
774 + wba.f.block_size_a = WB_BLOCK_SIZE_A_4;
777 + MMIO_OUT32(mmio, mmWRAP_BUF_A, wba.val);
780 + rc.f.rb_no_update = 1;
781 + rc.f.rb_bufsz = rbsize;
782 + MMIO_OUT32(mmio, mmCP_RB_CNTL, rc.val);
785 + cc.f.csq_mode = CSQ_CNTL_MODE_FREERUN;
786 + MMIO_OUT32(mmio, mmCP_CSQ_CNTL, cc.val);
792 +ATIDMAFini(ScreenPtr pScreen)
794 + KdScreenPriv(pScreen);
795 + ATIScreenInfo(pScreenPriv);
796 + ATICardInfo(pScreenPriv);
797 + char *mmio = atic->reg_base;
799 + MMIO_OUT32(mmio, mmCP_CSQ_CNTL, 0);
801 + ATIEngineReset(atis);
803 + //KdOffscreenFree(pScreen, atis->dma_space);
809 +ATIDMASetup(ScreenPtr pScreen)
811 + KdScreenPriv(pScreen);
812 + ATIScreenInfo(pScreenPriv);
814 + atis->using_dma = FALSE;
815 + atis->using_pio = FALSE;
816 + if (ATIDMAInit(pScreen, FALSE))
817 + atis->using_dma = TRUE;
819 + if (atis->using_dma)
820 + ErrorF("Initialized DMA\n");
824 +ATIDMATeardown(ScreenPtr pScreen)
826 + KdScreenPriv(pScreen);
827 + ATIScreenInfo(pScreenPriv);
831 + if (atis->using_dma)
832 + ATIDMAFini(pScreen);
834 + atis->using_pio = FALSE;
835 + atis->using_dma = FALSE;
840 +ATIRequestEntries(ATIScreenInfo * atis, int n)
842 + char *mmio = atis->atic->reg_base;
846 + WHILE_NOT_TIMEOUT(1) {
847 + if (atis->ring_free > n) {
848 + ptr = atis->ring_addr + atis->ring_write;
851 + atis->ring_read = MMIO_IN32(mmio, mmCP_RB_RPTR);
852 + atis->ring_write = MMIO_IN32(mmio, mmCP_RB_WPTR);
854 + if (atis->ring_read == atis->ring_write) {
855 + atis->ring_free = atis->ring_count;
858 + (atis->ring_count +
859 + atis->ring_read - atis->ring_write) & atis->ring_mask;
863 + ErrorF("Timeout waiting for %d entries.\n", n);
868 +ATISubmitEntries(ATIScreenInfo * atis, int n)
870 + char *mmio = atis->atic->reg_base;
871 + atis->ring_free -= n;
872 + atis->ring_write += n;
873 + atis->ring_write &= atis->ring_mask;
874 + MMIO_OUT32(mmio, mmCP_RB_WPTR, atis->ring_write);
876 Index: git/hw/kdrive/w100/ati_dma.h
877 ===================================================================
878 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
879 +++ git/hw/kdrive/w100/ati_dma.h 2006-09-02 12:12:14.000000000 +0200
882 + * Copyright © 2004 Eric Anholt
884 + * Permission to use, copy, modify, distribute, and sell this software and its
885 + * documentation for any purpose is hereby granted without fee, provided that
886 + * the above copyright notice appear in all copies and that both that
887 + * copyright notice and this permission notice appear in supporting
888 + * documentation, and that the name of Eric Anholt not be used in
889 + * advertising or publicity pertaining to distribution of the software without
890 + * specific, written prior permission. Eric Anholt makes no
891 + * representations about the suitability of this software for any purpose. It
892 + * is provided "as is" without express or implied warranty.
894 + * ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
895 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
896 + * EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
897 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
898 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
899 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
900 + * PERFORMANCE OF THIS SOFTWARE.
902 +/* $Header: /cvs/xserver/xserver/hw/kdrive/ati/ati_dma.h,v 1.5 2005-01-27 05:25:57 anholt Exp $ */
909 +/* CCE packet defines */
911 +#define ATI_CCE_PACKETTYPE_MASK 0xc0000000
912 +#define ATI_CCE_PACKET0 0x00000000
913 +#define ATI_CCE_PACKET0_COUNT_MASK 0x3fff0000
914 +#define ATI_CCE_PACKET0_ONE_REG_WR 0x00008000
915 +#define ATI_CCE_PACKET0_REG_MASK 0x000007ff
916 +#define ATI_CCE_PACKET1 0x40000000
917 +#define ATI_CCE_PACKET1_REG_1 0x000007ff
918 +#define ATI_CCE_PACKET1_REG_2 0x003ff800
919 +#define ATI_CCE_PACKET1_REG_2_SHIFT 10
920 +#define ATI_CCE_PACKET2 0x80000000
921 +#define ATI_CCE_PACKET3 0xc0000000
922 +#define ATI_CCE_PACKET3_COUNT_MASK 0x3fff0000
923 +#define ATI_CCE_PACKET3_IT_OPCODE_MASK 0x0000ff00
927 +#define DMA_PACKET0(reg, count) \
928 + (ATI_CCE_PACKET0 | (((count) - 1) << 16) | ((reg) >> 2))
930 +#define DMA_PACKET0(reg, count) \
931 + (__packet0count = (count), __reg = (reg), \
932 + ATI_CCE_PACKET0 | (((count) - 1) << 16) | ((reg) >> 2))
934 +#define DMA_PACKET1(reg1, reg2) \
935 + (ATI_CCE_PACKET1 | \
936 + (((reg2) >> 2) << ATI_CCE_PACKET1_REG_2_SHIFT) | ((reg1) >> 2))
937 +#define DMA_PACKET3(type, count) \
938 + ((type) | (((count) - 1) << 16))
946 +#define RING_LOCALS \
947 + CARD32 *__head; int __count
948 +#define BEGIN_DMA(n) \
950 + __head = ATIRequestEntries(atis, n); \
953 +#define END_DMA() do { \
954 + ATISubmitEntries(atis, __count); \
957 +#else /* CCE_DEBUG */
958 +#define RING_LOCALS \
959 + CARD32 *__head; int __count, __total, __reg, __packet0count
960 +#define BEGIN_DMA(n) \
962 + __head = ATIRequestEntries(atis, n); \
966 + __packet0count = 0; \
968 +#define END_DMA() do { \
969 + if (__count != __total) \
970 + FatalError("count != total (%d vs %d) at %s:%d\n", \
971 + __count, __total, __FILE__, __LINE__); \
972 + ATISubmitEntries(atis, __count); \
975 +#endif /* CCE_DEBUG */
977 +#define BEGIN_DMA_REG(n) BEGIN_DMA(n * 2)
978 +#define END_DMA_REG() END_DMA()
980 +#define OUT_REG(reg, val) \
982 + OUT_RING(DMA_PACKET0(reg, 1)); \
990 +#define RING_LOCALS char *__mmio = atis->atic->reg_base
991 +#define BEGIN_DMA_REG(n) \
993 + ATIWaitAvailMMIO(atis, n); \
995 +#define END_DMA_REG() do {} while (0)
996 +#define OUT_REG(reg, val) MMIO_OUT32(__mmio, reg, val)
997 +#endif /* USE_DMA */
1000 +#define OUT_RING(val) do { \
1001 + __head[__count++] = (val); \
1004 +#define OUT_RING_REG(reg, val) do { \
1005 + if (__reg != reg) \
1006 + FatalError("unexpected reg (0x%x vs 0x%x) at %s:%d\n", \
1007 + reg, __reg, __FILE__, __LINE__); \
1008 + if (__packet0count-- <= 0) \
1009 + FatalError("overrun of packet0 at %s:%d\n", \
1010 + __FILE__, __LINE__); \
1011 + __head[__count++] = (val); \
1015 +#define OUT_RING_F(x) OUT_RING(GET_FLOAT_BITS(x))
1017 +#define TIMEOUT_LOCALS struct timeval _target, _curtime
1020 +tv_le(struct timeval *tv1, struct timeval *tv2)
1022 + if (tv1->tv_sec < tv2->tv_sec ||
1023 + (tv1->tv_sec == tv2->tv_sec && tv1->tv_usec < tv2->tv_usec))
1029 +#define WHILE_NOT_TIMEOUT(_timeout) \
1030 + gettimeofday(&_target, NULL); \
1031 + _target.tv_usec += ((_timeout) * 1000000); \
1032 + _target.tv_sec += _target.tv_usec / 1000000; \
1033 + _target.tv_usec = _target.tv_usec % 1000000; \
1034 + while (gettimeofday(&_curtime, NULL), tv_le(&_curtime, &_target))
1036 +#define TIMEDOUT() (!tv_le(&_curtime, &_target))
1040 +ATIFlushIndirect(ATIScreenInfo *atis, Bool discard);
1043 +ATIDMASetup(ScreenPtr pScreen);
1046 +ATIDMATeardown(ScreenPtr pScreen);
1049 +ATIRequestEntries(ATIScreenInfo *atis, int n);
1052 +ATISubmitEntries(ATIScreenInfo *atis, int n);
1055 +ATIWaitAvailMMIO(ATIScreenInfo *atis, int n);
1056 +#endif /* _ATI_DMA_H_ */
1057 Index: git/hw/kdrive/w100/ati_draw.c
1058 ===================================================================
1059 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
1060 +++ git/hw/kdrive/w100/ati_draw.c 2006-09-02 12:12:14.000000000 +0200
1063 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
1065 + * Permission to use, copy, modify, distribute, and sell this software and its
1066 + * documentation for any purpose is hereby granted without fee, provided that
1067 + * the above copyright notice appear in all copies and that both that
1068 + * copyright notice and this permission notice appear in supporting
1069 + * documentation, and that the name of Alberto Mardegan not be used in
1070 + * advertising or publicity pertaining to distribution of the software without
1071 + * specific, written prior permission. Alberto Mardegan makes no
1072 + * representations about the suitability of this software for any purpose. It
1073 + * is provided "as is" without express or implied warranty.
1075 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1076 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1077 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
1078 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1079 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1080 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1081 + * PERFORMANCE OF THIS SOFTWARE.
1085 +#define DRAW_USING_PACKET3
1087 +#ifdef HAVE_CONFIG_H
1088 +#include <kdrive-config.h>
1091 +#include "w100_regs.h"
1092 +#include "w100_const.h"
1093 +#include "ati_dma.h"
1094 +#include "ati_draw.h"
1098 +CARD8 ATISolidRop[16] = {
1099 + /* GXclear */ 0x00,
1103 + /* GXandReverse */ 0x50,
1104 + /* src AND NOT dst */
1105 + /* GXcopy */ 0xf0,
1107 + /* GXandInverted */ 0x0a,
1108 + /* NOT src AND dst */
1109 + /* GXnoop */ 0xaa,
1116 + /* NOT src AND NOT dst */
1117 + /* GXequiv */ 0xa5,
1118 + /* NOT src XOR dst */
1119 + /* GXinvert */ 0x55,
1121 + /* GXorReverse */ 0xf5,
1122 + /* src OR NOT dst */
1123 + /* GXcopyInverted */ 0x0f,
1125 + /* GXorInverted */ 0xaf,
1126 + /* NOT src OR dst */
1127 + /* GXnand */ 0x5f,
1128 + /* NOT src OR NOT dst */
1133 +CARD8 ATIBltRop[16] = {
1134 + /* GXclear */ 0x00,
1138 + /* GXandReverse */ 0x44,
1139 + /* src AND NOT dst */
1140 + /* GXcopy */ 0xcc,
1142 + /* GXandInverted */ 0x22,
1143 + /* NOT src AND dst */
1144 + /* GXnoop */ 0xaa,
1151 + /* NOT src AND NOT dst */
1152 + /* GXequiv */ 0x99,
1153 + /* NOT src XOR dst */
1154 + /* GXinvert */ 0x55,
1156 + /* GXorReverse */ 0xdd,
1157 + /* src OR NOT dst */
1158 + /* GXcopyInverted */ 0x33,
1160 + /* GXorInverted */ 0xbb,
1161 + /* NOT src OR dst */
1162 + /* GXnand */ 0x77,
1163 + /* NOT src OR NOT dst */
1168 +static int copydx, copydy;
1169 +static ATIScreenInfo *accel_atis;
1170 +static char *accel_mmio;
1174 +ATIDrawSetup(ScreenPtr pScreen)
1176 + KdScreenPriv(pScreen);
1177 + ATIScreenInfo(pScreenPriv);
1178 + default_sc_bottom_right_u dsbr;
1182 + dsbr.f.default_sc_right = dsbr.f.default_sc_bottom = W100_MAXINT;
1185 + OUT_REG(mmDEFAULT_SC_BOTTOM_RIGHT, dsbr.val);
1186 + OUT_REG(mmSRC_SC_BOTTOM_RIGHT, dsbr.val);
1191 +ATIWaitMarker(ScreenPtr pScreen, int marker)
1193 + KdScreenPriv(pScreen);
1194 + ATIScreenInfo(pScreenPriv);
1197 + ATIWaitIdle(atis);
1204 +ATIEnterDraw(PixmapPtr pPix, const char *function)
1206 + if (pPix != NULL) {
1207 + KdScreenPriv(pPix->drawable.pScreen);
1210 + offset = ((CARD8 *) pPix->devPrivate.ptr -
1211 + pScreenPriv->screen->memory_base);
1213 + ErrorF("Enter %s 0x%x (%dx%dx%d/%d)\n", function, offset,
1214 + pPix->drawable.width, pPix->drawable.height,
1215 + pPix->drawable.depth, pPix->drawable.bitsPerPixel);
1217 + ErrorF("Enter %s\n", function);
1221 +ATILeaveDraw(PixmapPtr pPix, const char *function)
1223 + if (pPix != NULL) {
1224 + KdScreenPriv(pPix->drawable.pScreen);
1227 + offset = ((CARD8 *) pPix->devPrivate.ptr -
1228 + pScreenPriv->screen->memory_base);
1230 + ErrorF("Leave %s 0x%x\n", function, offset);
1232 + ErrorF("Leave %s\n", function);
1236 +/* Assumes that depth 15 and 16 can be used as depth 16, which is okay since we
1237 + * require src and dest datatypes to be equal.
1240 +ATIGetDatatypeBpp(int bpp, CARD32 * type)
1244 + *type = DATATYPE_8BPP;
1247 + *type = DATATYPE_ARGB1555;
1250 + ATI_FALLBACK(("Unsupported bpp: %d\n", bpp));
1257 +ATIGetPixmapOffsetPitch(PixmapPtr pPix, CARD32 * pitch, CARD32 * offset)
1259 + KdScreenPriv(pPix->drawable.pScreen);
1260 + ATICardInfo(pScreenPriv);
1262 + /* XXX this only works for surfaces allocated in external memory */
1263 + *offset = ((CARD8 *) pPix->devPrivate.ptr -
1264 + pScreenPriv->screen->memory_base) + atic->ext_mem_location;
1265 + *pitch = pPix->devKind >> 1;
1272 +ATIPrepareSolid(PixmapPtr pPix, int alu, Pixel pm, Pixel fg)
1274 + KdScreenPriv(pPix->drawable.pScreen);
1275 + ATIScreenInfo(pScreenPriv);
1276 + ATICardInfo(pScreenPriv);
1277 + CARD32 datatype, dst_pitch, dst_offset;
1278 + dp_gui_master_cntl_u gmc;
1279 + dp_cntl_u dp_cntl;
1282 + accel_atis = atis;
1283 + accel_mmio = atic->reg_base;
1285 + if (!ATIGetDatatypeBpp(pPix->drawable.bitsPerPixel, &datatype))
1287 + if (!ATIGetPixmapOffsetPitch(pPix, &dst_pitch, &dst_offset))
1293 + gmc.f.gmc_dst_pitch_offset_cntl = 1;
1294 + gmc.f.gmc_dst_clipping = 1;
1295 + gmc.f.gmc_brush_datatype = BRUSH_SOLIDCOLOR;
1296 + gmc.f.gmc_dst_datatype = datatype;
1297 + gmc.f.gmc_src_datatype = datatype;
1298 + gmc.f.gmc_byte_pix_order = 1;
1299 + gmc.f.gmc_rop3 = ATISolidRop[alu];
1300 + gmc.f.gmc_dp_src_source = SOURCE_MEM_RECTANGULAR;
1301 + gmc.f.gmc_clr_cmp_fcn_dis = 1;
1302 + gmc.f.gmc_dp_op = OP_ROP;
1305 + dp_cntl.f.dst_x_dir = 1;
1306 + dp_cntl.f.dst_y_dir = 1;
1309 + OUT_REG(mmDST_PITCH, dst_pitch);
1310 + OUT_REG(mmDST_OFFSET, dst_offset);
1311 + OUT_REG(mmDP_GUI_MASTER_CNTL, gmc.val);
1312 + OUT_REG(mmDP_BRUSH_FRGD_CLR, fg);
1313 + OUT_REG(mmDP_WRITE_MSK, pm);
1314 + OUT_REG(mmDP_CNTL, dp_cntl.val);
1322 +ATISolid(int x1, int y1, int x2, int y2)
1325 + ATIScreenInfo *atis = accel_atis;
1328 +#ifdef DRAW_USING_PACKET3
1330 + OUT_RING(DMA_PACKET3(W100_CCE_PACKET3_PAINT_MULTI, 2));
1331 + OUT_RING((x1 << 16) | y1);
1332 + OUT_RING(((x2 - x1) << 16) | (y2 - y1));
1334 +#elif defined DRAW_USING_PACKET0
1336 + OUT_RING(DMA_PACKET0(mmDST_Y_X, 2));
1337 + OUT_RING_REG(mmDST_Y_X, (y1 << 16) | x1);
1338 + OUT_RING_REG(mmDST_HEIGHT_WIDTH, ((y2 - y1) << 16) | (x2 - x1));
1342 + OUT_REG(mmDST_Y_X, (y1 << 16) | x1);
1343 + OUT_REG(mmDST_HEIGHT_WIDTH, ((y2 - y1) << 16) | (x2 - x1));
1359 +ATIPrepareCopy(PixmapPtr pSrc, PixmapPtr pDst, int dx, int dy, int alu,
1362 + KdScreenPriv(pDst->drawable.pScreen);
1363 + ATIScreenInfo(pScreenPriv);
1364 + ATICardInfo(pScreenPriv);
1365 + CARD32 datatype, src_pitch, src_offset, dst_pitch, dst_offset;
1366 + dp_gui_master_cntl_u gmc;
1367 + dp_cntl_u dp_cntl;
1368 + dp_datatype_u dpdt;
1371 + accel_mmio = atic->reg_base;
1374 + accel_atis = atis;
1376 + if (!ATIGetDatatypeBpp(pDst->drawable.bitsPerPixel, &datatype))
1378 + if (!ATIGetPixmapOffsetPitch(pSrc, &src_pitch, &src_offset))
1380 + if (!ATIGetPixmapOffsetPitch(pDst, &dst_pitch, &dst_offset))
1386 + gmc.f.gmc_src_pitch_offset_cntl = 1;
1387 + gmc.f.gmc_dst_pitch_offset_cntl = 1;
1388 + gmc.f.gmc_src_clipping = 1;
1389 + gmc.f.gmc_dst_clipping = 1;
1390 + gmc.f.gmc_brush_datatype = BRUSH_NONE;
1391 + gmc.f.gmc_dst_datatype = datatype;
1392 + gmc.f.gmc_src_datatype = datatype;
1393 + gmc.f.gmc_byte_pix_order = 1;
1394 + gmc.f.gmc_rop3 = ATIBltRop[alu];
1395 + gmc.f.gmc_dp_src_source = SOURCE_MEM_RECTANGULAR;
1396 + gmc.f.gmc_clr_cmp_fcn_dis = 1;
1397 + gmc.f.gmc_dp_op = OP_ROP;
1401 + dp_cntl.f.dst_x_dir = 1;
1403 + dp_cntl.f.dst_y_dir = 1;
1406 + dpdt.f.dp_dst_datatype = datatype;
1407 + dpdt.f.dp_src_datatype = datatype;
1408 + dpdt.f.dp_byte_pix_order = 1;
1411 + OUT_REG(mmSRC_PITCH, src_pitch);
1412 + OUT_REG(mmSRC_OFFSET, src_offset);
1413 + OUT_REG(mmDST_PITCH, dst_pitch);
1414 + OUT_REG(mmDST_OFFSET, dst_offset);
1415 + OUT_REG(mmDP_GUI_MASTER_CNTL, gmc.val);
1416 + OUT_REG(mmDP_WRITE_MSK, pm);
1417 + OUT_REG(mmDP_CNTL, dp_cntl.val);
1418 + OUT_REG(mmDP_DATATYPE, dpdt.val);
1426 +ATICopy(int srcX, int srcY, int dstX, int dstY, int w, int h)
1428 + ATIScreenInfo *atis = accel_atis;
1432 +#ifndef DRAW_USING_PACKET3
1443 +#ifdef DRAW_USING_PACKET3
1445 + OUT_RING(DMA_PACKET3(W100_CCE_PACKET3_BITBLT_MULTI, 3));
1446 + OUT_RING((srcX << 16) | srcY);
1447 + OUT_RING((dstX << 16) | dstY);
1448 + OUT_RING((w << 16) | h);
1450 +#elif defined DRAW_USING_PACKET0
1452 + OUT_RING(DMA_PACKET0(mmSRC_Y_X, 3));
1453 + OUT_RING_REG(mmSRC_Y_X, (srcY << 16) | srcX);
1454 + OUT_RING_REG(mmDST_Y_X, (dstY << 16) | dstX);
1455 + OUT_RING_REG(mmDST_HEIGHT_WIDTH, (h << 16) | w);
1459 + OUT_REG(mmSRC_Y_X, (srcY << 16) | srcX);
1460 + OUT_REG(mmDST_Y_X, (dstY << 16) | dstX);
1461 + OUT_REG(mmDST_HEIGHT_WIDTH, (h << 16) | w);
1477 +ATIDrawInit(ScreenPtr pScreen)
1479 + KdScreenPriv(pScreen);
1480 + ATIScreenInfo(pScreenPriv);
1482 + ErrorF("Screen: %d/%d depth/bpp\n", pScreenPriv->screen->fb[0].depth,
1483 + pScreenPriv->screen->fb[0].bitsPerPixel);
1485 + memset(&atis->kaa, 0, sizeof(KaaScreenInfoRec));
1486 + atis->kaa.waitMarker = ATIWaitMarker;
1487 + atis->kaa.PrepareSolid = ATIPrepareSolid;
1488 + atis->kaa.Solid = ATISolid;
1489 + atis->kaa.DoneSolid = ATIDoneSolid;
1490 + atis->kaa.PrepareCopy = ATIPrepareCopy;
1491 + atis->kaa.Copy = ATICopy;
1492 + atis->kaa.DoneCopy = ATIDoneCopy;
1493 + /* XXX if this flag isn't specified, Kdrive crashes in kaaPixmapUseMemory
1494 + * or kaaPixmapUseScreen. But this is probably caused by some bug in this
1496 + atis->kaa.flags |= KAA_OFFSCREEN_PIXMAPS;
1497 + if (!kaaDrawInit(pScreen, &atis->kaa))
1505 +ATIDrawEnable(ScreenPtr pScreen)
1507 + KdScreenPriv(pScreen);
1508 + ATIScreenInfo(pScreenPriv);
1510 + ATIDMASetup(pScreen);
1511 + ATIDrawSetup(pScreen);
1513 + atis->scratch_area = NULL;
1514 + atis->kaa.PrepareBlend = NULL;
1515 + atis->kaa.Blend = NULL;
1516 + atis->kaa.DoneBlend = NULL;
1517 + atis->kaa.CheckComposite = NULL;
1518 + atis->kaa.PrepareComposite = NULL;
1519 + atis->kaa.Composite = NULL;
1520 + atis->kaa.DoneComposite = NULL;
1521 + atis->kaa.UploadToScreen = NULL;
1522 + atis->kaa.UploadToScratch = NULL;
1525 + kaaMarkSync(pScreen);
1529 +ATIDrawDisable(ScreenPtr pScreen)
1531 + ATIDMATeardown(pScreen);
1535 +ATIDrawFini(ScreenPtr pScreen)
1537 + kaaDrawFini(pScreen);
1539 Index: git/hw/kdrive/w100/ati_draw.h
1540 ===================================================================
1541 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
1542 +++ git/hw/kdrive/w100/ati_draw.h 2006-09-02 12:12:14.000000000 +0200
1545 + * Copyright © 2004 Eric Anholt
1547 + * Permission to use, copy, modify, distribute, and sell this software and its
1548 + * documentation for any purpose is hereby granted without fee, provided that
1549 + * the above copyright notice appear in all copies and that both that
1550 + * copyright notice and this permission notice appear in supporting
1551 + * documentation, and that the name of Eric Anholt not be used in
1552 + * advertising or publicity pertaining to distribution of the software without
1553 + * specific, written prior permission. Eric Anholt makes no
1554 + * representations about the suitability of this software for any purpose. It
1555 + * is provided "as is" without express or implied warranty.
1557 + * ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1558 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1559 + * EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
1560 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1561 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1562 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1563 + * PERFORMANCE OF THIS SOFTWARE.
1565 +/* $Header: /cvs/xserver/xserver/hw/kdrive/ati/ati_draw.h,v 1.9 2005-02-21 03:44:10 anholt Exp $ */
1567 +#ifndef _ATI_DRAW_H_
1568 +#define _ATI_DRAW_H_
1570 +Bool ATIGetOffsetPitch(ATIScreenInfo *atis, int bpp, CARD32 *pitch_offset,
1571 + int offset, int pitch);
1572 +Bool ATIGetPixmapOffsetPitch(PixmapPtr pPix, CARD32 *pitch, CARD32 *offset);
1574 +Bool R128CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
1575 + PicturePtr pDstPicture);
1576 +Bool R128PrepareComposite(int op, PicturePtr pSrcPicture,
1577 + PicturePtr pMaskPicture, PicturePtr pDstPicture, PixmapPtr pSrc,
1578 + PixmapPtr pMask, PixmapPtr pDst);
1579 +void R128Composite(int srcX, int srcY, int maskX, int maskY, int dstX, int dstY,
1581 +void R128DoneComposite(void);
1583 +Bool R128PrepareTrapezoids(PicturePtr pDstPicture, PixmapPtr pDst);
1584 +void R128Trapezoids(KaaTrapezoid *traps, int ntraps);
1585 +void R128DoneTrapezoids(void);
1587 +Bool R100CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
1588 + PicturePtr pDstPicture);
1589 +Bool R100PrepareComposite(int op, PicturePtr pSrcPicture,
1590 + PicturePtr pMaskPicture, PicturePtr pDstPicture, PixmapPtr pSrc,
1591 + PixmapPtr pMask, PixmapPtr pDst);
1592 +Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskPicture,
1593 + PicturePtr pDstPicture);
1594 +Bool R200PrepareComposite(int op, PicturePtr pSrcPicture,
1595 + PicturePtr pMaskPicture, PicturePtr pDstPicture, PixmapPtr pSrc,
1596 + PixmapPtr pMask, PixmapPtr pDst);
1597 +void RadeonComposite(int srcX, int srcY, int maskX, int maskY, int dstX,
1598 + int dstY, int w, int h);
1599 +void RadeonDoneComposite(void);
1601 +Bool RadeonPrepareTrapezoids(PicturePtr pDstPicture, PixmapPtr pDst);
1602 +void RadeonTrapezoids(KaaTrapezoid *traps, int ntraps);
1603 +void RadeonDoneTrapezoids(void);
1605 +void RadeonSwitchTo2D(ATIScreenInfo *atis);
1606 +void RadeonSwitchTo3D(ATIScreenInfo *atis);
1607 +void ATIWaitIdle(ATIScreenInfo *atis);
1609 +#define ATI_TRACE_FALL 0
1610 +#define ATI_TRACE_DRAW 1
1613 +#define ATI_FALLBACK(x) \
1615 + ErrorF("%s: ", __FUNCTION__); \
1620 +#define ATI_FALLBACK(x) return FALSE
1624 +#define ENTER_DRAW(pix) ATIEnterDraw(pix, __FUNCTION__)
1625 +#define LEAVE_DRAW(pix) ATILeaveDraw(pix, __FUNCTION__)
1628 +ATIEnterDraw (PixmapPtr pPixmap, const char *function);
1631 +ATILeaveDraw (PixmapPtr pPixmap, const char *function);
1632 +#else /* ATI_TRACE */
1633 +#define ENTER_DRAW(pix)
1634 +#define LEAVE_DRAW(pix)
1635 +#endif /* !ATI_TRACE */
1638 +/* if DMA is not going to be used, drawing using PACKET3 or PACKET0 won't
1640 +#ifdef DRAW_USING_PACKET3
1641 +#undef DRAW_USING_PACKET3
1644 +#ifdef DRAW_USING_PACKET0
1645 +#undef DRAW_USING_PACKET0
1648 +#endif /* USE_DMA */
1650 +#endif /* _ATI_DRAW_H_ */
1651 Index: git/hw/kdrive/w100/ati.h
1652 ===================================================================
1653 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
1654 +++ git/hw/kdrive/w100/ati.h 2006-09-02 12:12:14.000000000 +0200
1657 + * $Id: ati.h,v 1.18 2005-06-10 02:14:44 anholt Exp $
1659 + * Copyright © 2003 Eric Anholt
1661 + * Permission to use, copy, modify, distribute, and sell this software and its
1662 + * documentation for any purpose is hereby granted without fee, provided that
1663 + * the above copyright notice appear in all copies and that both that
1664 + * copyright notice and this permission notice appear in supporting
1665 + * documentation, and that the name of Eric Anholt not be used in
1666 + * advertising or publicity pertaining to distribution of the software without
1667 + * specific, written prior permission. Eric Anholt makes no
1668 + * representations about the suitability of this software for any purpose. It
1669 + * is provided "as is" without express or implied warranty.
1671 + * ERIC ANHOLT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1672 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1673 + * EVENT SHALL ERIC ANHOLT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
1674 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1675 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1676 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1677 + * PERFORMANCE OF THIS SOFTWARE.
1679 +/* $Header: /cvs/xserver/xserver/hw/kdrive/ati/ati.h,v 1.18 2005-06-10 02:14:44 anholt Exp $ */
1684 +#ifdef HAVE_CONFIG_H
1685 +#include <kdrive-config.h>
1698 +#define ATI_MEM_BASE(c) (0x08000000)
1699 +#define ATI_MEM_SIZE(c) (0x01000000)
1700 +#define ATI_REG_BASE(c) (ATI_MEM_BASE(c) + 0x10000) /* the 0x08000000 must be obtained from /proc/iomem, the 0x10000 from ReadCfgReg(cfgREG_BASE) << 16) & 0xff0000 */
1701 +#define ATI_REG_SIZE(c) (0x2000)
1705 +static __inline__ void
1706 +MMIO_OUT32(__volatile__ void *base, const unsigned long offset,
1707 + const unsigned int val)
1709 + __asm__ __volatile__(
1710 + "stwbrx %1,%2,%3\n\t"
1712 + : "=m" (*((volatile unsigned char *)base+offset))
1713 + : "r" (val), "b" (base), "r" (offset));
1716 +static __inline__ CARD32
1717 +MMIO_IN32(__volatile__ void *base, const unsigned long offset)
1719 + register unsigned int val;
1720 + __asm__ __volatile__(
1721 + "lwbrx %0,%1,%2\n\t"
1724 + : "b" (base), "r" (offset),
1725 + "m" (*((volatile unsigned char *)base+offset)));
1731 +#define MMIO_OUT32(mmio, a, v) (*(VOL32 *)((mmio) + (a)) = (v))
1732 +#define MMIO_IN32(mmio, a) (*(VOL32 *)((mmio) + (a)))
1736 +#define MMIO_OUT8(mmio, a, v) (*(VOL8 *)((mmio) + (a)) = (v))
1737 +#define MMIO_IN8(mmio, a, v) (*(VOL8 *)((mmio) + (a)))
1740 +typedef volatile CARD8 VOL8;
1741 +typedef volatile CARD16 VOL16;
1742 +typedef volatile CARD32 VOL32;
1744 +struct pci_id_entry {
1751 +struct backend_funcs {
1752 + void (*cardfini)(KdCardInfo *);
1753 + void (*scrfini)(KdScreenInfo *);
1754 + Bool (*initScreen)(ScreenPtr);
1755 + Bool (*finishInitScreen)(ScreenPtr pScreen);
1756 + Bool (*createRes)(ScreenPtr);
1757 + void (*preserve)(KdCardInfo *);
1758 + void (*restore)(KdCardInfo *);
1759 + Bool (*dpms)(ScreenPtr, int);
1760 + Bool (*enable)(ScreenPtr);
1761 + void (*disable)(ScreenPtr);
1762 + void (*getColors)(ScreenPtr, int, int, xColorItem *);
1763 + void (*putColors)(ScreenPtr, int, int, xColorItem *);
1765 + Bool (*randrSetConfig) (ScreenPtr, Rotation, int, RRScreenSizePtr);
1769 +typedef struct _ATICardInfo {
1775 + VesaCardPrivRec vesa;
1778 + struct backend_funcs backend_funcs;
1780 + struct pci_id_entry *pci_id;
1783 + CARD32 fb_location;
1784 + CARD32 ext_mem_location;
1785 + Bool use_fbdev, use_vesa;
1788 +#define getATICardInfo(kd) ((ATICardInfo *) ((kd)->card->driver))
1789 +#define ATICardInfo(kd) ATICardInfo *atic = getATICardInfo(kd)
1791 +typedef struct _ATICursor {
1792 + int width, height;
1796 + CursorPtr pCursor;
1797 + Pixel source, mask;
1798 + KdOffscreenArea *area;
1801 +typedef struct _ATIPortPriv {
1806 + KdOffscreenArea *off_screen;
1807 + DrawablePtr pDraw;
1808 + PixmapPtr pPixmap;
1810 + CARD32 src_offset;
1815 + int src_x1, src_y1, src_x2, src_y2;
1816 + int dst_x1, dst_y1, dst_x2, dst_y2;
1817 + int src_w, src_h, dst_w, dst_h;
1818 +} ATIPortPrivRec, *ATIPortPrivPtr;
1820 +typedef struct _ATIScreenInfo {
1823 + FbdevScrPriv fbdev;
1826 + VesaScreenPrivRec vesa;
1829 + KaaScreenInfoRec kaa;
1831 + ATICardInfo *atic;
1832 + KdScreenInfo *screen;
1834 + int scratch_offset;
1836 + KdOffscreenArea *scratch_area;
1840 + KdVideoAdaptorPtr pAdaptor;
1841 + int num_texture_ports;
1843 + Bool using_pio; /* If we use decode DMA packets to MMIO. */
1844 + Bool using_dma; /* If we use non-DRI DMA to submit packets. */
1846 + KdOffscreenArea *dma_space; /* For "DMA" from framebuffer. */
1847 + CARD32 *ring_addr; /* Beginning of ring buffer. */
1848 + int ring_write; /* Index of write ptr in ring. */
1849 + int ring_read; /* Index of read ptr in ring. */
1859 +#define getATIScreenInfo(kd) ((ATIScreenInfo *) ((kd)->screen->driver))
1860 +#define ATIScreenInfo(kd) ATIScreenInfo *atis = getATIScreenInfo(kd)
1862 +typedef union { float f; CARD32 i; } fi_type;
1867 +ATIMap(KdCardInfo *card, ATICardInfo *atic);
1870 +ATIUnmap(KdCardInfo *card, ATICardInfo *atic);
1874 +ATIDrawSetup(ScreenPtr pScreen);
1877 +ATIDrawInit(ScreenPtr pScreen);
1880 +ATIDrawEnable(ScreenPtr pScreen);
1883 +ATIDrawDisable(ScreenPtr pScreen);
1886 +ATIDrawFini(ScreenPtr pScreen);
1891 +ATICursorInit(ScreenPtr pScreen);
1894 +ATICursorEnable(ScreenPtr pScreen);
1897 +ATICursorDisable(ScreenPtr pScreen);
1900 +ATICursorFini(ScreenPtr pScreen);
1903 +ATIRecolorCursor(ScreenPtr pScreen, int ndef, xColorItem *pdef);
1909 +extern KdCardFuncs ATIFuncs;
1911 +#endif /* _ATI_H_ */
1912 Index: git/hw/kdrive/w100/ati_microcode.c
1913 ===================================================================
1914 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
1915 +++ git/hw/kdrive/w100/ati_microcode.c 2006-09-02 12:12:14.000000000 +0200
1918 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
1920 + * Permission to use, copy, modify, distribute, and sell this software and its
1921 + * documentation for any purpose is hereby granted without fee, provided that
1922 + * the above copyright notice appear in all copies and that both that
1923 + * copyright notice and this permission notice appear in supporting
1924 + * documentation, and that the name of Alberto Mardegan not be used in
1925 + * advertising or publicity pertaining to distribution of the software without
1926 + * specific, written prior permission. Alberto Mardegan makes no
1927 + * representations about the suitability of this software for any purpose. It
1928 + * is provided "as is" without express or implied warranty.
1930 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
1931 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
1932 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
1933 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
1934 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
1935 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1936 + * PERFORMANCE OF THIS SOFTWARE.
1939 +/* CCE microcode (from ATI) */
1944 +CARD32 w100_microcode[][2] = {
1945 + {0x21007000, 0x00000000}
1947 + {0x20007000, 0x00000000}
1949 + {0x00000098, 0x00000004}
1951 + {0x0000009c, 0x00000004}
1953 + {0x66544a49, 0x00000000}
1955 + {0x49494174, 0x00000000}
1957 + {0x54517d83, 0x00000000}
1959 + {0x498d8b64, 0x00000000}
1961 + {0x49494949, 0x00000000}
1963 + {0x49b6493c, 0x00000000}
1965 + {0x49494949, 0x00000000}
1967 + {0x49494949, 0x00000000}
1969 + {0x49490d10, 0x00000000}
1971 + {0x000f0000, 0x00000016}
1973 + {0x30292027, 0x00000000}
1975 + {0x00000012, 0x00000004}
1977 + {0x000f0000, 0x00000016}
1979 + {0x30292427, 0x00000000}
1981 + {0x0000730f, 0x00000002}
1982 + , /* mmIDCT_CONTROL */
1983 + {0x00061000, 0x00000002}
1985 + {0x0000001d, 0x0000001a}
1987 + {0x00004000, 0x0000001e}
1989 + {0x00061000, 0x00000002}
1991 + {0x0000001d, 0x0000001a}
1993 + {0x00004000, 0x0000001e}
1995 + {0x00061000, 0x00000002}
1997 + {0x0000001d, 0x0000001a}
1999 + {0x00004000, 0x0000001e}
2001 + {0x00000013, 0x00000004}
2003 + {0x0003803a, 0x00000002}
2005 + {0x04006300, 0x00000002}
2006 + , /* mmIDCT_RUNS */
2007 + {0x00000013, 0x00000004}
2009 + {0x00007300, 0x00000002}
2010 + , /* mmIDCT_RUNS */
2011 + {0x00065000, 0x00000002}
2013 + {0x00003301, 0x00000002}
2014 + , /* mmIDCT_LEVELS */
2015 + {0x04006301, 0x00000006}
2016 + , /* mmIDCT_LEVELS */
2017 + {0x00007300, 0x00000002}
2018 + , /* mmIDCT_RUNS */
2019 + {0x00007301, 0x00000002}
2020 + , /* mmIDCT_LEVELS */
2021 + {0x00007301, 0x00000006}
2022 + , /* mmIDCT_LEVELS */
2023 + {0x0003803a, 0x00000002}
2025 + {0x04006300, 0x00000006}
2026 + , /* mmIDCT_RUNS */
2027 + {0x00a05000, 0x00000002}
2029 + {0x00000039, 0x0000000c}
2031 + {0x00000000, 0x00000002}
2033 + {0x00007300, 0x00000002}
2034 + , /* mmIDCT_RUNS */
2035 + {0x00007301, 0x00000002}
2036 + , /* mmIDCT_LEVELS */
2037 + {0x00007301, 0x00000002}
2038 + , /* mmIDCT_LEVELS */
2039 + {0x0060002a, 0x00000004}
2041 + {0x00007488, 0x00000002}
2042 + , /* mmE2_ARITHMETIC_CNTL */
2043 + {0x0003803b, 0x00000002}
2045 + {0x00098000, 0x00000002}
2047 + {0x00200000, 0x00000002}
2049 + {0x00000039, 0x0000000c}
2051 + {0x00007465, 0x00000002}
2053 + {0x00007464, 0x00000002}
2055 + {0x00007478, 0x00000002}
2056 + , /* mmMVC_CNTL_START */
2057 + {0x00600034, 0x00000004}
2059 + {0x00000000, 0x00000006}
2061 + {0xffffffff, 0x00000000}
2063 + {0x00000006, 0x00000000}
2065 + {0x01605000, 0x00000002}
2067 + {0x00065000, 0x00000002}
2069 + {0x00098000, 0x00000002}
2071 + {0x00061000, 0x00000002}
2073 + {0x64c0603d, 0x00000004}
2075 + {0x00080000, 0x00000016}
2077 + {0x00000000, 0x00000000}
2079 + {0x0400241d, 0x00000002}
2080 + , /* mmBRUSH_Y_X */
2081 + {0x00007424, 0x00000002}
2082 + , /* mmDST_LINE_START */
2083 + {0x00067425, 0x00000002}
2084 + , /* mmDST_LINE_END */
2085 + {0x04002424, 0x00000002}
2086 + , /* mmDST_LINE_START */
2087 + {0x00067425, 0x00000002}
2088 + , /* mmDST_LINE_END */
2089 + {0x00000046, 0x00000004}
2091 + {0x00005000, 0x00000000}
2093 + {0x00061000, 0x00000002}
2095 + {0x0000740e, 0x00000002}
2097 + {0x00019000, 0x00000002}
2099 + {0x00011050, 0x00000014}
2101 + {0x00000050, 0x00000012}
2103 + {0x0400240f, 0x00000002}
2104 + , /* mmDST_HEIGHT_WIDTH */
2105 + {0x0000504a, 0x00000004}
2107 + {0x00007465, 0x00000002}
2109 + {0x00007466, 0x00000002}
2110 + , /* mmDST_WIDTH_HEIGHT */
2111 + {0x00000051, 0x00000004}
2113 + {0x01e65473, 0x00000002}
2114 + , /* mmDP_CNTL_DST_DIR */
2115 + {0x4401b0b9, 0x00000002}
2117 + {0x01c110b9, 0x00000002}
2119 + {0x2666705d, 0x00000018}
2121 + {0x040c2465, 0x00000002}
2123 + {0x0000005d, 0x00000018}
2125 + {0x04002464, 0x00000002}
2127 + {0x00007466, 0x00000002}
2128 + , /* mmDST_WIDTH_HEIGHT */
2129 + {0x00000054, 0x00000004}
2131 + {0x00401060, 0x00000008}
2133 + {0x00101000, 0x00000002}
2135 + {0x000d80ff, 0x00000002}
2137 + {0x00800063, 0x00000008}
2139 + {0x000f9000, 0x00000002}
2141 + {0x000e00ff, 0x00000002}
2143 + {0x00000000, 0x00000006}
2145 + {0x00000080, 0x00000018}
2147 + {0x00000054, 0x00000004}
2149 + {0x00007490, 0x00000002}
2150 + , /* mmDP_SRC_FRGD_CLR */
2151 + {0x00065000, 0x00000002}
2153 + {0x00009000, 0x00000002}
2155 + {0x00041000, 0x00000002}
2157 + {0x0c00340e, 0x00000002}
2159 + {0x00049000, 0x00000002}
2161 + {0x00051000, 0x00000002}
2163 + {0x01e784f8, 0x00000002}
2165 + {0x00200000, 0x00000002}
2167 + {0x00600073, 0x0000000c}
2169 + {0x00007463, 0x00000002}
2170 + , /* mmDST_HEIGHT_WIDTH_8 */
2171 + {0x006074f0, 0x00000021}
2172 + , /* mmHOST_DATA0 */
2173 + {0x20007068, 0x00000004}
2175 + {0x00005068, 0x00000004}
2177 + {0x00007490, 0x00000002}
2178 + , /* mmDP_SRC_FRGD_CLR */
2179 + {0x00007491, 0x00000002}
2180 + , /* mmDP_SRC_BKGD_CLR */
2181 + {0x0000740e, 0x00000002}
2183 + {0x0000740f, 0x00000002}
2184 + , /* mmDST_HEIGHT_WIDTH */
2185 + {0x00a05000, 0x00000002}
2187 + {0x00600076, 0x0000000c}
2189 + {0x006074f0, 0x00000021}
2190 + , /* mmHOST_DATA0 */
2191 + {0x000074f8, 0x00000002}
2192 + , /* mmHOST_DATA_LAST */
2193 + {0x00000076, 0x00000004}
2195 + {0x000a740e, 0x00000002}
2197 + {0x0020740f, 0x00000002}
2198 + , /* mmDST_HEIGHT_WIDTH */
2199 + {0x00600079, 0x00000004}
2201 + {0x0000748c, 0x00000002}
2202 + , /* mmCLR_CMP_CNTL */
2203 + {0x0000748d, 0x00000002}
2204 + , /* mmCLR_CMP_CLR_SRC */
2205 + {0x0000748e, 0x00000006}
2206 + , /* mmCLR_CMP_CLR_DST */
2207 + {0x00005000, 0x00000002}
2209 + {0x00a05000, 0x00000002}
2211 + {0x00007468, 0x00000002}
2212 + , /* mmDST_HEIGHT_Y */
2213 + {0x00061000, 0x00000002}
2215 + {0x00000084, 0x0000000c}
2217 + {0x00058000, 0x00000002}
2219 + {0x0c607462, 0x00000002}
2220 + , /* mmDST_WIDTH_X */
2221 + {0x00000086, 0x00000004}
2223 + {0x00600085, 0x00000004}
2225 + {0x400070ba, 0x00000000}
2227 + {0x000380ba, 0x00000002}
2229 + {0x00000093, 0x0000001c}
2231 + {0x00065095, 0x00000018}
2233 + {0x0400246f, 0x00000002}
2234 + , /* mmSC_TOP_LEFT */
2235 + {0x00061096, 0x00000018}
2237 + {0x04007470, 0x00000000}
2238 + , /* mmSC_BOTTOM_RIGHT */
2239 + {0x0000746f, 0x00000002}
2240 + , /* mmSC_TOP_LEFT */
2241 + {0x00007470, 0x00000000}
2242 + , /* mmSC_BOTTOM_RIGHT */
2243 + {0x00090000, 0x00000006}
2245 + {0x00090000, 0x00000002}
2247 + {0x000d8002, 0x00000006}
2249 + {0x01200000, 0x00000002}
2251 + {0x20077000, 0x00000002}
2253 + {0x01200000, 0x00000002}
2255 + {0x20007000, 0x00000002}
2257 + {0x00061000, 0x00000002}
2259 + {0x0120741b, 0x00000002}
2260 + , /* mmDP_GUI_MASTER_CNTL */
2261 + {0x8040740a, 0x00000002}
2262 + , /* mmSRC_PITCH_OFFSET */
2263 + {0x8040740b, 0x00000002}
2264 + , /* mmDST_PITCH_OFFSET */
2265 + {0x00110000, 0x00000002}
2267 + {0x000380ba, 0x00000002}
2269 + {0x000000aa, 0x0000001c}
2271 + {0x00061096, 0x00000018}
2273 + {0x84407471, 0x00000002}
2274 + , /* mmSRC_SC_BOTTOM_RIGHT */
2275 + {0x00061095, 0x00000018}
2277 + {0x8400746f, 0x00000002}
2278 + , /* mmSC_TOP_LEFT */
2279 + {0x00061096, 0x00000018}
2281 + {0x84407470, 0x00000002}
2282 + , /* mmSC_BOTTOM_RIGHT */
2283 + {0x000000ad, 0x00000004}
2285 + {0x80407471, 0x00000002}
2286 + , /* mmSRC_SC_BOTTOM_RIGHT */
2287 + {0x8000746f, 0x00000002}
2288 + , /* mmSC_TOP_LEFT */
2289 + {0x80407470, 0x00000002}
2290 + , /* mmSC_BOTTOM_RIGHT */
2291 + {0x00108000, 0x00000002}
2293 + {0x01400000, 0x00000002}
2295 + {0x006000b1, 0x0000000c}
2297 + {0x20c07000, 0x00000020}
2299 + {0x000000b3, 0x00000012}
2301 + {0x00800000, 0x00000006}
2303 + {0x0080741d, 0x00000006}
2304 + , /* mmBRUSH_Y_X */
2305 + {0x00000000, 0x00000000}
2307 + {0x00000001, 0x00000000}
2309 + {0x000380b5, 0x00000002}
2311 + {0x04002054, 0x00000002}
2312 + , /* mmNQWAIT_UNTIL */
2313 + {0x00005000, 0x00000000}
2315 + {0x00000000, 0x00000000}
2317 + {0x00000000, 0x00000000}
2319 + {0x00000000, 0x00000000}
2321 + {0x00000000, 0x00000000}
2323 + {0x00000000, 0x00000000}
2325 + {0x00000000, 0x00000000}
2327 + {0x00000000, 0x00000000}
2329 Index: git/hw/kdrive/w100/ati_stub.c
2330 ===================================================================
2331 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
2332 +++ git/hw/kdrive/w100/ati_stub.c 2006-09-02 12:12:14.000000000 +0200
2335 + * Copyright © 2006 Alberto Mardegan <mardy@users.sourceforge.net>
2337 + * Permission to use, copy, modify, distribute, and sell this software and its
2338 + * documentation for any purpose is hereby granted without fee, provided that
2339 + * the above copyright notice appear in all copies and that both that
2340 + * copyright notice and this permission notice appear in supporting
2341 + * documentation, and that the name of Alberto Mardegan not be used in
2342 + * advertising or publicity pertaining to distribution of the software without
2343 + * specific, written prior permission. Alberto Mardegan makes no
2344 + * representations about the suitability of this software for any purpose. It
2345 + * is provided "as is" without express or implied warranty.
2347 + * ALBERTO MARDEGAN DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
2348 + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
2349 + * EVENT SHALL ALBERTO MARDEGAN BE LIABLE FOR ANY SPECIAL, INDIRECT OR
2350 + * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
2351 + * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
2352 + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
2353 + * PERFORMANCE OF THIS SOFTWARE.
2356 +#ifdef HAVE_CONFIG_H
2357 +#include <kdrive-config.h>
2360 +#include "w100_regs.h"
2361 +#include "klinux.h"
2363 +extern struct pci_id_entry ati_pci_ids[];
2366 +FindW100(CARD16 vendor, CARD16 device, CARD32 count, KdCardAttr * attr)
2370 + Bool found = FALSE;
2372 + mmio = KdMapDevice(ATI_REG_BASE(0), ATI_REG_SIZE(0));
2373 + KdSetMappedMode((CARD32) mmio, ATI_REG_SIZE(0),
2374 + KD_MAPPED_MODE_REGISTERS);
2376 + chip_id = MMIO_IN32(mmio, mmCHIP_ID);
2377 + if ((vendor | (device << 16)) == chip_id) {
2378 + ErrorF("Found Chip ID: %08x\n\n", chip_id);
2379 + attr->deviceID = device;
2380 + attr->vendorID = vendor;
2383 + KdUnmapDevice(mmio, ATI_REG_SIZE(0));
2389 +InitCard(char *name)
2391 + struct pci_id_entry *id;
2394 + for (id = ati_pci_ids; id->name != NULL; id++) {
2396 + if (FindW100(id->vendor, id->device, j++, &attr))
2397 + KdCardInfoAdd(&ATIFuncs, &attr, 0);
2402 +InitOutput(ScreenInfo * pScreenInfo, int argc, char **argv)
2404 + KdInitOutput(pScreenInfo, argc, argv);
2408 +InitInput(int argc, char **argv)
2410 + KdInitInput(&LinuxMouseFuncs, &LinuxKeyboardFuncs);
2412 + KdAddMouseDriver(&TsFuncs);
2426 +ddxProcessArgument(int argc, char **argv, int i)
2431 + if (!(ret = vesaProcessArgument(argc, argv, i)))
2433 + ret = KdProcessArgument(argc, argv, i);
2437 Index: git/hw/kdrive/w100/Makefile.am
2438 ===================================================================
2439 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
2440 +++ git/hw/kdrive/w100/Makefile.am 2006-09-02 12:42:38.000000000 +0200
2443 +FBDEV_INCLUDES =-I$(top_srcdir)/hw/kdrive/fbdev
2444 +FBDEV_LIBS = $(top_builddir)/hw/kdrive/fbdev/libfbdev.a
2448 +VESA_INCLUDES = -I$(top_srcdir)/hw/kdrive/vesa
2449 +VESA_LIBS = $(top_builddir)/hw/kdrive/vesa/libvesa.a
2454 + $(FBDEV_INCLUDES) \
2455 + $(VESA_INCLUDES) \
2458 +bin_PROGRAMS = Xw100
2464 +noinst_LIBRARIES = libw100.a
2466 +libw100_a_SOURCES = \
2494 +Xw100_DEPENDENCIES = \
2498 Index: git/hw/kdrive/w100/w100_const.h
2499 ===================================================================
2500 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
2501 +++ git/hw/kdrive/w100/w100_const.h 2006-09-02 12:12:14.000000000 +0200
2503 +#define CSQ_CNTL_MODE_FREERUN 0x8
2505 +#define WB_BLOCK_SIZE_A_0 0
2506 +#define WB_BLOCK_SIZE_A_1 1
2507 +#define WB_BLOCK_SIZE_A_2 2
2508 +#define WB_BLOCK_SIZE_A_3 3
2509 +#define WB_BLOCK_SIZE_A_4 4
2511 +#define DATATYPE_8BPP 2
2512 +#define DATATYPE_ARGB1555 3
2513 +#define DATATYPE_ARGB4444 5
2515 +#define BRUSH_SOLIDCOLOR 13
2516 +#define BRUSH_NONE 15
2519 +#define OP_ARITHMETIC 1
2521 +#define SOURCE_MEM_RECTANGULAR 2
2523 +#define W100_MAXINT 0x1fff
2525 +#define W100_CCE_PACKET3_PAINT_MULTI 0xc0001a00
2526 +#define W100_CCE_PACKET3_BITBLT_MULTI 0xc0001b00
2528 Index: git/hw/kdrive/w100/w100_regs.h
2529 ===================================================================
2530 --- /dev/null 1970-01-01 00:00:00.000000000 +0000
2531 +++ git/hw/kdrive/w100/w100_regs.h 2006-09-02 12:12:14.000000000 +0200
2533 +#ifndef _W100_REGS_H_
2534 +#define _W100_REGS_H_
2536 +/* Block CIF Start: */
2537 +#define mmCHIP_ID 0x0000
2538 +#define mmREVISION_ID 0x0004
2539 +#define mmWRAP_BUF_A 0x0008
2540 +#define mmWRAP_BUF_B 0x000C
2541 +#define mmWRAP_TOP_DIR 0x0010
2542 +#define mmWRAP_START_DIR 0x0014
2543 +#define mmCIF_CNTL 0x0018
2544 +#define mmCFGREG_BASE 0x001C
2545 +#define mmCIF_IO 0x0020
2546 +#define mmCIF_READ_DBG 0x0024
2547 +#define mmCIF_WRITE_DBG 0x0028
2548 +#define cfgIND_ADDR_A_0 0x0000
2549 +#define cfgIND_ADDR_A_1 0x0001
2550 +#define cfgIND_ADDR_A_2 0x0002
2551 +#define cfgIND_DATA_A 0x0003
2552 +#define cfgREG_BASE 0x0004
2553 +#define cfgINTF_CNTL 0x0005
2554 +#define cfgSTATUS 0x0006
2555 +#define cfgCPU_DEFAULTS 0x0007
2556 +#define cfgIND_ADDR_B_0 0x0008
2557 +#define cfgIND_ADDR_B_1 0x0009
2558 +#define cfgIND_ADDR_B_2 0x000A
2559 +#define cfgIND_DATA_B 0x000B
2560 +#define cfgPM4_RPTR 0x000C
2561 +#define cfgSCRATCH 0x000D
2562 +#define cfgPM4_WRPTR_0 0x000E
2563 +#define cfgPM4_WRPTR_1 0x000F
2564 +/* Block CIF End: */
2566 +/* Block CP Start: */
2567 +#define mmCP_RB_CNTL 0x0210
2568 +#define mmCP_RB_BASE 0x0214
2569 +#define mmCP_RB_RPTR_ADDR 0x0218
2570 +#define mmCP_RB_RPTR 0x021C
2571 +#define mmCP_RB_RPTR_WR 0x02F8
2572 +#define mmCP_RB_WPTR 0x0220
2573 +#define mmCP_IB_BASE 0x0228
2574 +#define mmCP_IB_BUFSZ 0x022C
2575 +#define mmCP_CSQ_CNTL 0x0230
2576 +#define mmCP_CSQ_APER_PRIMARY 0x0300
2577 +#define mmCP_CSQ_APER_INDIRECT 0x0340
2578 +#define mmCP_ME_CNTL 0x0240
2579 +#define mmCP_ME_RAM_ADDR 0x0244
2580 +#define mmCP_ME_RAM_RADDR 0x0248
2581 +#define mmCP_ME_RAM_DATAH 0x024C
2582 +#define mmCP_ME_RAM_DATAL 0x0250
2583 +#define mmCP_DEBUG 0x025C
2584 +#define mmSCRATCH_REG0 0x0260
2585 +#define mmSCRATCH_REG1 0x0264
2586 +#define mmSCRATCH_REG2 0x0268
2587 +#define mmSCRATCH_REG3 0x026C
2588 +#define mmSCRATCH_REG4 0x0270
2589 +#define mmSCRATCH_REG5 0x0274
2590 +#define mmSCRATCH_UMSK 0x0280
2591 +#define mmSCRATCH_ADDR 0x0284
2592 +#define mmCP_CSQ_ADDR 0x02E4
2593 +#define mmCP_CSQ_DATA 0x02E8
2594 +#define mmCP_CSQ_STAT 0x02EC
2595 +#define mmCP_STAT 0x02F0
2596 +#define mmGEN_INT_CNTL 0x0200
2597 +#define mmGEN_INT_STATUS 0x0204
2598 +/* Block CP End: */
2600 +/* Block DISPLAY Start: */
2601 +#define mmLCD_FORMAT 0x0410
2602 +#define mmGRAPHIC_CTRL 0x0414
2603 +#define mmGRAPHIC_OFFSET 0x0418
2604 +#define mmGRAPHIC_PITCH 0x041C
2605 +#define mmCRTC_TOTAL 0x0420
2606 +#define mmACTIVE_H_DISP 0x0424
2607 +#define mmACTIVE_V_DISP 0x0428
2608 +#define mmGRAPHIC_H_DISP 0x042C
2609 +#define mmGRAPHIC_V_DISP 0x0430
2610 +#define mmVIDEO_CTRL 0x0434
2611 +#define mmGRAPHIC_KEY 0x0438
2612 +#define mmVIDEO_Y_OFFSET 0x043C
2613 +#define mmVIDEO_Y_PITCH 0x0440
2614 +#define mmVIDEO_U_OFFSET 0x0444
2615 +#define mmVIDEO_U_PITCH 0x0448
2616 +#define mmVIDEO_V_OFFSET 0x044C
2617 +#define mmVIDEO_V_PITCH 0x0450
2618 +#define mmVIDEO_H_POS 0x0454
2619 +#define mmVIDEO_V_POS 0x0458
2620 +#define mmBRIGHTNESS_CNTL 0x045C
2621 +#define mmCURSOR1_OFFSET 0x0460
2622 +#define mmCURSOR1_H_POS 0x0464
2623 +#define mmCURSOR1_V_POS 0x0468
2624 +#define mmCURSOR1_COLOR0 0x046C
2625 +#define mmCURSOR1_COLOR1 0x0470
2626 +#define mmCURSOR2_OFFSET 0x0474
2627 +#define mmCURSOR2_H_POS 0x0478
2628 +#define mmCURSOR2_V_POS 0x047C
2629 +#define mmCURSOR2_COLOR0 0x0480
2630 +#define mmCURSOR2_COLOR1 0x0484
2631 +#define mmDISP_INT_CNTL 0x0488
2632 +#define mmCRTC_SS 0x048C
2633 +#define mmCRTC_LS 0x0490
2634 +#define mmCRTC_REV 0x0494
2635 +#define mmCRTC_DCLK 0x049C
2636 +#define mmCRTC_GS 0x04A0
2637 +#define mmCRTC_VPOS_GS 0x04A4
2638 +#define mmCRTC_GCLK 0x04A8
2639 +#define mmCRTC_GOE 0x04AC
2640 +#define mmCRTC_FRAME 0x04B0
2641 +#define mmCRTC_FRAME_VPOS 0x04B4
2642 +#define mmGPIO_DATA 0x04B8
2643 +#define mmGPIO_CNTL1 0x04BC
2644 +#define mmGPIO_CNTL2 0x04C0
2645 +#define mmLCDD_CNTL1 0x04C4
2646 +#define mmLCDD_CNTL2 0x04C8
2647 +#define mmGENLCD_CNTL1 0x04CC
2648 +#define mmGENLCD_CNTL2 0x04D0
2649 +#define mmDISP_DEBUG 0x04D4
2650 +#define mmDISP_DB_BUF_CNTL 0x04D8
2651 +#define mmDISP_CRC_SIG 0x04DC
2652 +#define mmCRTC_DEFAULT_COUNT 0x04E0
2653 +#define mmLCD_BACKGROUND_COLOR 0x04E4
2654 +#define mmCRTC_PS2 0x04E8
2655 +#define mmCRTC_PS2_VPOS 0x04EC
2656 +#define mmCRTC_PS1_ACTIVE 0x04F0
2657 +#define mmCRTC_PS1_NACTIVE 0x04F4
2658 +#define mmCRTC_GCLK_EXT 0x04F8
2659 +#define mmCRTC_ALW 0x04FC
2660 +#define mmCRTC_ALW_VPOS 0x0500
2661 +#define mmCRTC_PSK 0x0504
2662 +#define mmCRTC_PSK_HPOS 0x0508
2663 +#define mmCRTC_CV4_START 0x050C
2664 +#define mmCRTC_CV4_END 0x0510
2665 +#define mmCRTC_CV4_HPOS 0x0514
2666 +#define mmCRTC_ECK 0x051C
2667 +#define mmREFRESH_CNTL 0x0520
2668 +#define mmGENLCD_CNTL3 0x0524
2669 +#define mmGPIO_DATA2 0x0528
2670 +#define mmGPIO_CNTL3 0x052C
2671 +#define mmGPIO_CNTL4 0x0530
2672 +#define mmCHIP_STRAP 0x0534
2673 +#define mmDISP_DEBUG2 0x0538
2674 +#define mmDEBUG_BUS_CNTL 0x053C
2675 +#define mmGAMMA_VALUE1 0x0540
2676 +#define mmGAMMA_VALUE2 0x0544
2677 +#define mmGAMMA_SLOPE 0x0548
2678 +#define mmGEN_STATUS 0x054C
2679 +#define mmHW_INT 0x0550
2680 +/* Block DISPLAY End: */
2682 +/* Block GFX Start: */
2683 +#define mmDST_OFFSET 0x1004
2684 +#define mmDST_PITCH 0x1008
2685 +#define mmDST_PITCH_OFFSET 0x102C
2686 +#define mmDST_X 0x101C
2687 +#define mmDST_Y 0x1020
2688 +#define mmDST_X_Y 0x1194
2689 +#define mmDST_Y_X 0x1038
2690 +#define mmDST_WIDTH 0x100C
2691 +#define mmDST_HEIGHT 0x1010
2692 +#define mmDST_WIDTH_HEIGHT 0x1198
2693 +#define mmDST_HEIGHT_WIDTH 0x103C
2694 +#define mmDST_HEIGHT_WIDTH_8 0x118C
2695 +#define mmDST_HEIGHT_Y 0x11A0
2696 +#define mmDST_WIDTH_X 0x1188
2697 +#define mmDST_WIDTH_X_INCY 0x119C
2698 +#define mmDST_LINE_START 0x1090
2699 +#define mmDST_LINE_END 0x1094
2700 +#define mmBRUSH_OFFSET 0x108C
2701 +#define mmBRUSH_Y_X 0x1074
2702 +#define mmDP_BRUSH_FRGD_CLR 0x107C
2703 +#define mmDP_BRUSH_BKGD_CLR 0x1078
2704 +#define mmSRC2_OFFSET 0x1060
2705 +#define mmSRC2_PITCH 0x1064
2706 +#define mmSRC2_PITCH_OFFSET 0x1068
2707 +#define mmSRC2_X 0x1050
2708 +#define mmSRC2_Y 0x1054
2709 +#define mmSRC2_X_Y 0x1058
2710 +#define mmSRC2_WIDTH 0x1080
2711 +#define mmSRC2_HEIGHT 0x1084
2712 +#define mmSRC2_INC 0x1088
2713 +#define mmSRC_OFFSET 0x11AC
2714 +#define mmSRC_PITCH 0x11B0
2715 +#define mmSRC_PITCH_OFFSET 0x1028
2716 +#define mmSRC_X 0x1014
2717 +#define mmSRC_Y 0x1018
2718 +#define mmSRC_X_Y 0x1190
2719 +#define mmSRC_Y_X 0x1034
2720 +#define mmSRC_WIDTH 0x1040
2721 +#define mmSRC_HEIGHT 0x1044
2722 +#define mmSRC_INC 0x1048
2723 +#define mmHOST_DATA0 0x13C0
2724 +#define mmHOST_DATA1 0x13C4
2725 +#define mmHOST_DATA2 0x13C8
2726 +#define mmHOST_DATA3 0x13CC
2727 +#define mmHOST_DATA4 0x13D0
2728 +#define mmHOST_DATA5 0x13D4
2729 +#define mmHOST_DATA6 0x13D8
2730 +#define mmHOST_DATA7 0x13DC
2731 +#define mmHOST_DATA_LAST 0x13E0
2732 +#define mmDP_SRC_FRGD_CLR 0x1240
2733 +#define mmDP_SRC_BKGD_CLR 0x1244
2734 +#define mmSC_LEFT 0x1140
2735 +#define mmSC_RIGHT 0x1144
2736 +#define mmSC_TOP 0x1148
2737 +#define mmSC_BOTTOM 0x114C
2738 +#define mmSRC_SC_RIGHT 0x1154
2739 +#define mmSRC_SC_BOTTOM 0x115C
2740 +#define mmDP_CNTL 0x11C8
2741 +#define mmDP_CNTL_DST_DIR 0x11CC
2742 +#define mmDP_DATATYPE 0x12C4
2743 +#define mmDP_MIX 0x12C8
2744 +#define mmDP_WRITE_MSK 0x12CC
2745 +#define mmCLR_CMP_CLR_SRC 0x1234
2746 +#define mmCLR_CMP_CLR_DST 0x1238
2747 +#define mmCLR_CMP_CNTL 0x1230
2748 +#define mmCLR_CMP_MSK 0x123C
2749 +#define mmDEFAULT_PITCH_OFFSET 0x10A0
2750 +#define mmDEFAULT_SC_BOTTOM_RIGHT 0x10A8
2751 +#define mmDEFAULT2_SC_BOTTOM_RIGHT 0x10AC
2752 +#define mmREF1_PITCH_OFFSET 0x10B8
2753 +#define mmREF2_PITCH_OFFSET 0x10BC
2754 +#define mmREF3_PITCH_OFFSET 0x10C0
2755 +#define mmREF4_PITCH_OFFSET 0x10C4
2756 +#define mmREF5_PITCH_OFFSET 0x10C8
2757 +#define mmREF6_PITCH_OFFSET 0x10CC
2758 +#define mmDP_GUI_MASTER_CNTL 0x106C
2759 +#define mmSC_TOP_LEFT 0x11BC
2760 +#define mmSC_BOTTOM_RIGHT 0x11C0
2761 +#define mmSRC_SC_BOTTOM_RIGHT 0x11C4
2762 +#define mmGLOBAL_ALPHA 0x1210
2763 +#define mmFILTER_COEF 0x1214
2764 +#define mmMVC_CNTL_START 0x11E0
2765 +#define mmE2_ARITHMETIC_CNTL 0x1220
2766 +#define mmDEBUG0 0x1280
2767 +#define mmDEBUG1 0x1284
2768 +#define mmDEBUG2 0x1288
2769 +#define mmDEBUG3 0x128C
2770 +#define mmDEBUG4 0x1290
2771 +#define mmDEBUG5 0x1294
2772 +#define mmDEBUG6 0x1298
2773 +#define mmDEBUG7 0x129C
2774 +#define mmDEBUG8 0x12A0
2775 +#define mmDEBUG9 0x12A4
2776 +#define mmDEBUG10 0x12A8
2777 +#define mmDEBUG11 0x12AC
2778 +#define mmDEBUG12 0x12B0
2779 +#define mmDEBUG13 0x12B4
2780 +#define mmDEBUG14 0x12B8
2781 +#define mmDEBUG15 0x12BC
2782 +#define mmENG_CNTL 0x13E8
2783 +#define mmENG_PERF_CNT 0x13F0
2784 +/* Block GFX End: */
2786 +/* Block IDCT Start: */
2787 +#define mmIDCT_RUNS 0x0C00
2788 +#define mmIDCT_LEVELS 0x0C04
2789 +#define mmIDCT_CONTROL 0x0C3C
2790 +#define mmIDCT_AUTH_CONTROL 0x0C08
2791 +#define mmIDCT_AUTH 0x0C0C
2792 +/* Block IDCT End: */
2794 +/* Block MC Start: */
2795 +#define mmMEM_CNTL 0x0180
2796 +#define mmMEM_ARB 0x0184
2797 +#define mmMC_FB_LOCATION 0x0188
2798 +#define mmMEM_EXT_CNTL 0x018C
2799 +#define mmMC_EXT_MEM_LOCATION 0x0190
2800 +#define mmMEM_EXT_TIMING_CNTL 0x0194
2801 +#define mmMEM_SDRAM_MODE_REG 0x0198
2802 +#define mmMEM_IO_CNTL 0x019C
2803 +#define mmMC_DEBUG 0x01A0
2804 +#define mmMC_BIST_CTRL 0x01A4
2805 +#define mmMC_BIST_COLLAR_READ 0x01A8
2806 +#define mmTC_MISMATCH 0x01AC
2807 +#define mmMC_PERF_MON_CNTL 0x01B0
2808 +#define mmMC_PERF_COUNTERS 0x01B4
2809 +/* Block MC End: */
2811 +/* Block RBBM Start: */
2812 +#define mmWAIT_UNTIL 0x1400
2813 +#define mmISYNC_CNTL 0x1404
2814 +#define mmRBBM_GUICNTL 0x1408
2815 +#define mmRBBM_STATUS 0x0140
2816 +#define mmRBBM_STATUS_alt_1 0x140C
2817 +#define mmRBBM_CNTL 0x0144
2818 +#define mmRBBM_SOFT_RESET 0x0148
2819 +#define mmNQWAIT_UNTIL 0x0150
2820 +#define mmRBBM_DEBUG 0x016C
2821 +#define mmRBBM_CMDFIFO_ADDR 0x0170
2822 +#define mmRBBM_CMDFIFO_DATAL 0x0174
2823 +#define mmRBBM_CMDFIFO_DATAH 0x0178
2824 +#define mmRBBM_CMDFIFO_STAT 0x017C
2825 +/* Block RBBM End: */
2827 +/* Block CG Start: */
2828 +#define mmCLK_PIN_CNTL 0x0080
2829 +#define mmPLL_REF_FB_DIV 0x0084
2830 +#define mmPLL_CNTL 0x0088
2831 +#define mmSCLK_CNTL 0x008C
2832 +#define mmPCLK_CNTL 0x0090
2833 +#define mmCLK_TEST_CNTL 0x0094
2834 +#define mmPWRMGT_CNTL 0x0098
2835 +#define mmPWRMGT_STATUS 0x009C
2836 +/* Block CG End: */
2839 +/* data structure definitions */
2841 +typedef struct _chip_id_t {
2842 + unsigned long vendor_id : 16;
2843 + unsigned long device_id : 16;
2847 + unsigned long val : 32;
2851 +typedef struct _revision_id_t {
2852 + unsigned long minor_rev_id : 4;
2853 + unsigned long major_rev_id : 4;
2854 + unsigned long : 24;
2858 + unsigned long val : 32;
2862 +typedef struct _wrap_buf_a_t {
2863 + unsigned long offset_addr_a : 24;
2864 + unsigned long block_size_a : 3;
2865 + unsigned long : 5;
2869 + unsigned long val : 32;
2873 +typedef struct _wrap_buf_b_t {
2874 + unsigned long offset_addr_b : 24;
2875 + unsigned long block_size_b : 3;
2876 + unsigned long : 5;
2880 + unsigned long val : 32;
2884 +typedef struct _wrap_top_dir_t {
2885 + unsigned long top_addr : 23;
2886 + unsigned long : 9;
2890 + unsigned long val : 32;
2894 +typedef struct _wrap_start_dir_t {
2895 + unsigned long start_addr : 23;
2896 + unsigned long : 9;
2897 + } wrap_start_dir_t;
2900 + unsigned long val : 32;
2901 + wrap_start_dir_t f;
2902 +} wrap_start_dir_u;
2904 +typedef struct _cif_cntl_t {
2905 + unsigned long swap_reg : 2;
2906 + unsigned long swap_fbuf_1 : 2;
2907 + unsigned long swap_fbuf_2 : 2;
2908 + unsigned long swap_fbuf_3 : 2;
2909 + unsigned long pmi_int_disable : 1;
2910 + unsigned long pmi_schmen_disable : 1;
2911 + unsigned long intb_oe : 1;
2912 + unsigned long en_wait_to_compensate_dq_prop_dly : 1;
2913 + unsigned long compensate_wait_rd_size : 2;
2914 + unsigned long wait_asserted_timeout_val : 2;
2915 + unsigned long wait_masked_val : 2;
2916 + unsigned long en_wait_timeout : 1;
2917 + unsigned long en_one_clk_setup_before_wait : 1;
2918 + unsigned long interrupt_active_high : 1;
2919 + unsigned long en_overwrite_straps : 1;
2920 + unsigned long strap_wait_active_hi : 1;
2921 + unsigned long lat_busy_count : 2;
2922 + unsigned long lat_rd_pm4_sclk_busy : 1;
2923 + unsigned long dis_system_bits : 1;
2924 + unsigned long dis_mr : 1;
2925 + unsigned long cif_spare_1 : 4;
2929 + unsigned long val : 32;
2933 +typedef struct _cfgreg_base_t {
2934 + unsigned long cfgreg_base : 24;
2935 + unsigned long : 8;
2939 + unsigned long val : 32;
2943 +typedef struct _cif_io_t {
2944 + unsigned long dq_srp : 1;
2945 + unsigned long dq_srn : 1;
2946 + unsigned long dq_sp : 4;
2947 + unsigned long dq_sn : 4;
2948 + unsigned long waitb_srp : 1;
2949 + unsigned long waitb_srn : 1;
2950 + unsigned long waitb_sp : 4;
2951 + unsigned long waitb_sn : 4;
2952 + unsigned long intb_srp : 1;
2953 + unsigned long intb_srn : 1;
2954 + unsigned long intb_sp : 4;
2955 + unsigned long intb_sn : 4;
2956 + unsigned long : 2;
2960 + unsigned long val : 32;
2964 +typedef struct _cif_read_dbg_t {
2965 + unsigned long unpacker_pre_fetch_trig_gen : 2;
2966 + unsigned long dly_second_rd_fetch_trig : 1;
2967 + unsigned long rst_rd_burst_id : 1;
2968 + unsigned long dis_rd_burst_id : 1;
2969 + unsigned long en_block_rd_when_packer_is_not_emp : 1;
2970 + unsigned long dis_pre_fetch_cntl_sm : 1;
2971 + unsigned long rbbm_chrncy_dis : 1;
2972 + unsigned long rbbm_rd_after_wr_lat : 2;
2973 + unsigned long dis_be_during_rd : 1;
2974 + unsigned long one_clk_invalidate_pulse : 1;
2975 + unsigned long dis_chnl_priority : 1;
2976 + unsigned long rst_read_path_a_pls : 1;
2977 + unsigned long rst_read_path_b_pls : 1;
2978 + unsigned long dis_reg_rd_fetch_trig : 1;
2979 + unsigned long dis_rd_fetch_trig_from_ind_addr : 1;
2980 + unsigned long dis_rd_same_byte_to_trig_fetch : 1;
2981 + unsigned long dis_dir_wrap : 1;
2982 + unsigned long dis_ring_buf_to_force_dec : 1;
2983 + unsigned long dis_addr_comp_in_16bit : 1;
2984 + unsigned long clr_w : 1;
2985 + unsigned long err_rd_tag_is_3 : 1;
2986 + unsigned long err_load_when_ful_a : 1;
2987 + unsigned long err_load_when_ful_b : 1;
2988 + unsigned long : 7;
2992 + unsigned long val : 32;
2996 +typedef struct _cif_write_dbg_t {
2997 + unsigned long packer_timeout_count : 2;
2998 + unsigned long en_upper_load_cond : 1;
2999 + unsigned long en_chnl_change_cond : 1;
3000 + unsigned long dis_addr_comp_cond : 1;
3001 + unsigned long dis_load_same_byte_addr_cond : 1;
3002 + unsigned long dis_timeout_cond : 1;
3003 + unsigned long dis_timeout_during_rbbm : 1;
3004 + unsigned long dis_packer_ful_during_rbbm_timeout : 1;
3005 + unsigned long en_dword_split_to_rbbm : 1;
3006 + unsigned long en_dummy_val : 1;
3007 + unsigned long dummy_val_sel : 1;
3008 + unsigned long mask_pm4_wrptr_dec : 1;
3009 + unsigned long dis_mc_clean_cond : 1;
3010 + unsigned long err_two_reqi_during_ful : 1;
3011 + unsigned long err_reqi_during_idle_clk : 1;
3012 + unsigned long err_global : 1;
3013 + unsigned long en_wr_buf_dbg_load : 1;
3014 + unsigned long en_wr_buf_dbg_path : 1;
3015 + unsigned long sel_wr_buf_byte : 3;
3016 + unsigned long dis_rd_flush_wr : 1;
3017 + unsigned long dis_packer_ful_cond : 1;
3018 + unsigned long dis_invalidate_by_ops_chnl : 1;
3019 + unsigned long en_halt_when_reqi_err : 1;
3020 + unsigned long cif_spare_2 : 5;
3021 + unsigned long : 1;
3022 + } cif_write_dbg_t;
3025 + unsigned long val : 32;
3026 + cif_write_dbg_t f;
3029 +typedef struct _ind_addr_a_0_t {
3030 + unsigned char ind_addr_a_0 : 8;
3034 + unsigned char val : 8;
3038 +typedef struct _ind_addr_a_1_t {
3039 + unsigned char ind_addr_a_1 : 8;
3043 + unsigned char val : 8;
3047 +typedef struct _ind_addr_a_2_t {
3048 + unsigned char ind_addr_a_2 : 8;
3052 + unsigned char val : 8;
3056 +typedef struct _ind_data_a_t {
3057 + unsigned char ind_data_a : 8;
3061 + unsigned char val : 8;
3065 +typedef struct _reg_base_t {
3066 + unsigned char reg_base : 8;
3070 + unsigned char val : 8;
3074 +typedef struct _intf_cntl_t {
3075 + unsigned char ad_inc_a : 1;
3076 + unsigned char ring_buf_a : 1;
3077 + unsigned char rd_fetch_trigger_a : 1;
3078 + unsigned char rd_data_rdy_a : 1;
3079 + unsigned char ad_inc_b : 1;
3080 + unsigned char ring_buf_b : 1;
3081 + unsigned char rd_fetch_trigger_b : 1;
3082 + unsigned char rd_data_rdy_b : 1;
3086 + unsigned char val : 8;
3090 +typedef struct _status_t {
3091 + unsigned char wr_fifo_available_space : 2;
3092 + unsigned char fbuf_wr_pipe_emp : 1;
3093 + unsigned char soft_reset : 1;
3094 + unsigned char system_pwm_mode : 2;
3095 + unsigned char mem_access_dis : 1;
3096 + unsigned char en_pre_fetch : 1;
3100 + unsigned char val : 8;
3104 +typedef struct _cpu_defaults_t {
3105 + unsigned char unpack_rd_data : 1;
3106 + unsigned char access_ind_addr_a : 1;
3107 + unsigned char access_ind_addr_b : 1;
3108 + unsigned char access_scratch_reg : 1;
3109 + unsigned char pack_wr_data : 1;
3110 + unsigned char transition_size : 1;
3111 + unsigned char en_read_buf_mode : 1;
3112 + unsigned char rd_fetch_scratch : 1;
3116 + unsigned char val : 8;
3120 +typedef struct _ind_addr_b_0_t {
3121 + unsigned char ind_addr_b_0 : 8;
3125 + unsigned char val : 8;
3129 +typedef struct _ind_addr_b_1_t {
3130 + unsigned char ind_addr_b_1 : 8;
3134 + unsigned char val : 8;
3138 +typedef struct _ind_addr_b_2_t {
3139 + unsigned char ind_addr_b_2 : 8;
3143 + unsigned char val : 8;
3147 +typedef struct _ind_data_b_t {
3148 + unsigned char ind_data_b : 8;
3152 + unsigned char val : 8;
3156 +typedef struct _pm4_rptr_t {
3157 + unsigned char pm4_rptr : 8;
3161 + unsigned char val : 8;
3165 +typedef struct _scratch_t {
3166 + unsigned char scratch : 8;
3170 + unsigned char val : 8;
3174 +typedef struct _pm4_wrptr_0_t {
3175 + unsigned char pm4_wrptr_0 : 8;
3179 + unsigned char val : 8;
3183 +typedef struct _pm4_wrptr_1_t {
3184 + unsigned char pm4_wrptr_1 : 6;
3185 + unsigned char rd_fetch_pm4_rptr : 1;
3186 + unsigned char wrptr_atomic_update_w : 1;
3190 + unsigned char val : 8;
3194 +typedef struct _cp_rb_cntl_t {
3195 + unsigned long rb_bufsz : 6;
3196 + unsigned long : 2;
3197 + unsigned long rb_blksz : 6;
3198 + unsigned long : 2;
3199 + unsigned long buf_swap : 2;
3200 + unsigned long max_fetch : 2;
3201 + unsigned long : 7;
3202 + unsigned long rb_no_update : 1;
3203 + unsigned long : 3;
3204 + unsigned long rb_rptr_wr_ena : 1;
3208 + unsigned long val : 32;
3212 +typedef struct _cp_rb_base_t {
3213 + unsigned long : 2;
3214 + unsigned long rb_base : 22;
3215 + unsigned long : 8;
3219 + unsigned long val : 32;
3223 +typedef struct _cp_rb_rptr_addr_t {
3224 + unsigned long rb_rptr_swap : 2;
3225 + unsigned long rb_rptr_addr : 22;
3226 + unsigned long : 8;
3227 + } cp_rb_rptr_addr_t;
3230 + unsigned long val : 32;
3231 + cp_rb_rptr_addr_t f;
3232 +} cp_rb_rptr_addr_u;
3234 +typedef struct _cp_rb_rptr_t {
3235 + unsigned long rb_rptr : 23;
3236 + unsigned long : 9;
3240 + unsigned long val : 32;
3244 +typedef struct _cp_rb_rptr_wr_t {
3245 + unsigned long rb_rptr_wr : 23;
3246 + unsigned long : 9;
3247 + } cp_rb_rptr_wr_t;
3250 + unsigned long val : 32;
3251 + cp_rb_rptr_wr_t f;
3254 +typedef struct _cp_rb_wptr_t {
3255 + unsigned long rb_wptr : 23;
3256 + unsigned long : 9;
3260 + unsigned long val : 32;
3264 +typedef struct _cp_ib_base_t {
3265 + unsigned long : 2;
3266 + unsigned long ib_base : 22;
3267 + unsigned long : 8;
3271 + unsigned long val : 32;
3275 +typedef struct _cp_ib_bufsz_t {
3276 + unsigned long ib_bufsz : 23;
3277 + unsigned long : 9;
3281 + unsigned long val : 32;
3285 +typedef struct _cp_csq_cntl_t {
3286 + unsigned long csq_cnt_primary : 8;
3287 + unsigned long csq_cnt_indirect : 8;
3288 + unsigned long : 12;
3289 + unsigned long csq_mode : 4;
3293 + unsigned long val : 32;
3297 +typedef struct _cp_csq_aper_primary_t {
3298 + unsigned long cp_csq_aper_primary : 32;
3299 + } cp_csq_aper_primary_t;
3302 + unsigned long val : 32;
3303 + cp_csq_aper_primary_t f;
3304 +} cp_csq_aper_primary_u;
3306 +typedef struct _cp_csq_aper_indirect_t {
3307 + unsigned long cp_csq_aper_indirect : 32;
3308 + } cp_csq_aper_indirect_t;
3311 + unsigned long val : 32;
3312 + cp_csq_aper_indirect_t f;
3313 +} cp_csq_aper_indirect_u;
3315 +typedef struct _cp_me_cntl_t {
3316 + unsigned long me_stat : 16;
3317 + unsigned long me_statmux : 5;
3318 + unsigned long : 8;
3319 + unsigned long me_busy : 1;
3320 + unsigned long me_mode : 1;
3321 + unsigned long me_step : 1;
3325 + unsigned long val : 32;
3329 +typedef struct _cp_me_ram_addr_t {
3330 + unsigned long me_ram_addr : 8;
3331 + unsigned long : 24;
3332 + } cp_me_ram_addr_t;
3335 + unsigned long val : 32;
3336 + cp_me_ram_addr_t f;
3337 +} cp_me_ram_addr_u;
3339 +typedef struct _cp_me_ram_raddr_t {
3340 + unsigned long me_ram_raddr : 8;
3341 + unsigned long : 24;
3342 + } cp_me_ram_raddr_t;
3345 + unsigned long val : 32;
3346 + cp_me_ram_raddr_t f;
3347 +} cp_me_ram_raddr_u;
3349 +typedef struct _cp_me_ram_datah_t {
3350 + unsigned long me_ram_datah : 6;
3351 + unsigned long : 26;
3352 + } cp_me_ram_datah_t;
3355 + unsigned long val : 32;
3356 + cp_me_ram_datah_t f;
3357 +} cp_me_ram_datah_u;
3359 +typedef struct _cp_me_ram_datal_t {
3360 + unsigned long me_ram_datal : 32;
3361 + } cp_me_ram_datal_t;
3364 + unsigned long val : 32;
3365 + cp_me_ram_datal_t f;
3366 +} cp_me_ram_datal_u;
3368 +typedef struct _cp_debug_t {
3369 + unsigned long cp_debug : 32;
3373 + unsigned long val : 32;
3377 +typedef struct _scratch_reg0_t {
3378 + unsigned long scratch_reg0 : 32;
3382 + unsigned long val : 32;
3386 +typedef struct _scratch_reg1_t {
3387 + unsigned long scratch_reg1 : 32;
3391 + unsigned long val : 32;
3395 +typedef struct _scratch_reg2_t {
3396 + unsigned long scratch_reg2 : 32;
3400 + unsigned long val : 32;
3404 +typedef struct _scratch_reg3_t {
3405 + unsigned long scratch_reg3 : 32;
3409 + unsigned long val : 32;
3413 +typedef struct _scratch_reg4_t {
3414 + unsigned long scratch_reg4 : 32;
3418 + unsigned long val : 32;
3422 +typedef struct _scratch_reg5_t {
3423 + unsigned long scratch_reg5 : 32;
3427 + unsigned long val : 32;
3431 +typedef struct _scratch_umsk_t {
3432 + unsigned long scratch_umsk : 6;
3433 + unsigned long : 10;
3434 + unsigned long scratch_swap : 2;
3435 + unsigned long : 14;
3439 + unsigned long val : 32;
3443 +typedef struct _scratch_addr_t {
3444 + unsigned long : 5;
3445 + unsigned long scratch_addr : 27;
3449 + unsigned long val : 32;
3453 +typedef struct _cp_csq_addr_t {
3454 + unsigned long : 2;
3455 + unsigned long csq_addr : 8;
3456 + unsigned long : 22;
3460 + unsigned long val : 32;
3464 +typedef struct _cp_csq_data_t {
3465 + unsigned long csq_data : 32;
3469 + unsigned long val : 32;
3473 +typedef struct _cp_csq_stat_t {
3474 + unsigned long csq_rptr_primary : 8;
3475 + unsigned long csq_wptr_primary : 8;
3476 + unsigned long csq_rptr_indirect : 8;
3477 + unsigned long csq_wptr_indirect : 8;
3481 + unsigned long val : 32;
3485 +typedef struct _cp_stat_t {
3486 + unsigned long mru_busy : 1;
3487 + unsigned long mwu_busy : 1;
3488 + unsigned long rsiu_busy : 1;
3489 + unsigned long rciu_busy : 1;
3490 + unsigned long : 5;
3491 + unsigned long csf_primary_busy : 1;
3492 + unsigned long csf_indirect_busy : 1;
3493 + unsigned long csq_primary_busy : 1;
3494 + unsigned long csq_indirect_busy : 1;
3495 + unsigned long csi_busy : 1;
3496 + unsigned long : 14;
3497 + unsigned long guidma_busy : 1;
3498 + unsigned long viddma_busy : 1;
3499 + unsigned long cmdstrm_busy : 1;
3500 + unsigned long cp_busy : 1;
3504 + unsigned long val : 32;
3508 +typedef struct _gen_int_cntl_t {
3509 + unsigned long crtc_vblank_mask : 1;
3510 + unsigned long crtc_vline_mask : 1;
3511 + unsigned long crtc_hwint1_mask : 1;
3512 + unsigned long crtc_hwint2_mask : 1;
3513 + unsigned long : 15;
3514 + unsigned long gui_idle_mask : 1;
3515 + unsigned long : 8;
3516 + unsigned long pm4_idle_int_mask : 1;
3517 + unsigned long dvi_i2c_int_mask : 1;
3518 + unsigned long : 2;
3522 + unsigned long val : 32;
3526 +typedef struct _gen_int_status_rd_t {
3527 + unsigned long crtc_vblank_stat : 1;
3528 + unsigned long crtc_vline_stat : 1;
3529 + unsigned long crtc_hwint1_stat : 1;
3530 + unsigned long crtc_hwint2_stat : 1;
3531 + unsigned long : 15;
3532 + unsigned long gui_idle_stat : 1;
3533 + unsigned long : 8;
3534 + unsigned long pm4_idle_int_stat : 1;
3535 + unsigned long dvi_i2c_int_stat : 1;
3536 + unsigned long : 2;
3537 + } gen_int_status_rd_t;
3540 + unsigned long val : 32;
3541 + gen_int_status_rd_t f;
3542 +} gen_int_status_rd_u;
3544 +typedef struct _gen_int_status_wr_t {
3545 + unsigned long crtc_vblank_stat_ak : 1;
3546 + unsigned long crtc_vline_stat_ak : 1;
3547 + unsigned long crtc_hwint1_stat_ak : 1;
3548 + unsigned long crtc_hwint2_stat_ak : 1;
3549 + unsigned long : 15;
3550 + unsigned long gui_idle_stat_ak : 1;
3551 + unsigned long : 8;
3552 + unsigned long pm4_idle_int_ak : 1;
3553 + unsigned long dvi_i2c_int_ak : 1;
3554 + unsigned long : 2;
3555 + } gen_int_status_wr_t;
3558 + unsigned long val : 32;
3559 + gen_int_status_wr_t f;
3560 +} gen_int_status_wr_u;
3562 +typedef struct _lcd_format_t {
3563 + unsigned long lcd_type : 4;
3564 + unsigned long color_to_mono : 1;
3565 + unsigned long data_inv : 1;
3566 + unsigned long stn_fm : 2;
3567 + unsigned long tft_fm : 2;
3568 + unsigned long scan_lr_en : 1;
3569 + unsigned long scan_ud_en : 1;
3570 + unsigned long pol_inv : 1;
3571 + unsigned long rst_fm : 1;
3572 + unsigned long yuv_to_rgb : 1;
3573 + unsigned long hr_tft : 1;
3574 + unsigned long ulc_panel : 1;
3575 + unsigned long : 15;
3579 + unsigned long val : 32;
3583 +typedef struct _graphic_ctrl_t {
3584 + unsigned long color_depth : 3;
3585 + unsigned long portrait_mode : 2;
3586 + unsigned long low_power_on : 1;
3587 + unsigned long req_freq : 4;
3588 + unsigned long en_crtc : 1;
3589 + unsigned long en_graphic_req : 1;
3590 + unsigned long en_graphic_crtc : 1;
3591 + unsigned long total_req_graphic : 9;
3592 + unsigned long lcd_pclk_on : 1;
3593 + unsigned long lcd_sclk_on : 1;
3594 + unsigned long pclk_running : 1;
3595 + unsigned long sclk_running : 1;
3596 + unsigned long : 6;
3600 + unsigned long val : 32;
3604 +typedef struct _graphic_offset_t {
3605 + unsigned long graphic_offset : 24;
3606 + unsigned long : 8;
3607 + } graphic_offset_t;
3610 + unsigned long val : 32;
3611 + graphic_offset_t f;
3612 +} graphic_offset_u;
3614 +typedef struct _graphic_pitch_t {
3615 + unsigned long graphic_pitch : 11;
3616 + unsigned long : 21;
3617 + } graphic_pitch_t;
3620 + unsigned long val : 32;
3621 + graphic_pitch_t f;
3624 +typedef struct _crtc_total_t {
3625 + unsigned long crtc_h_total : 10;
3626 + unsigned long : 6;
3627 + unsigned long crtc_v_total : 10;
3628 + unsigned long : 6;
3632 + unsigned long val : 32;
3636 +typedef struct _active_h_disp_t {
3637 + unsigned long active_h_start : 10;
3638 + unsigned long : 6;
3639 + unsigned long active_h_end : 10;
3640 + unsigned long : 6;
3641 + } active_h_disp_t;
3644 + unsigned long val : 32;
3645 + active_h_disp_t f;
3648 +typedef struct _active_v_disp_t {
3649 + unsigned long active_v_start : 10;
3650 + unsigned long : 6;
3651 + unsigned long active_v_end : 10;
3652 + unsigned long : 6;
3653 + } active_v_disp_t;
3656 + unsigned long val : 32;
3657 + active_v_disp_t f;
3660 +typedef struct _graphic_h_disp_t {
3661 + unsigned long graphic_h_start : 10;
3662 + unsigned long : 6;
3663 + unsigned long graphic_h_end : 10;
3664 + unsigned long : 6;
3665 + } graphic_h_disp_t;
3668 + unsigned long val : 32;
3669 + graphic_h_disp_t f;
3670 +} graphic_h_disp_u;
3672 +typedef struct _graphic_v_disp_t {
3673 + unsigned long graphic_v_start : 10;
3674 + unsigned long : 6;
3675 + unsigned long graphic_v_end : 10;
3676 + unsigned long : 6;
3677 + } graphic_v_disp_t;
3680 + unsigned long val : 32;
3681 + graphic_v_disp_t f;
3682 +} graphic_v_disp_u;
3684 +typedef struct _video_ctrl_t {
3685 + unsigned long video_mode : 1;
3686 + unsigned long keyer_en : 1;
3687 + unsigned long en_video_req : 1;
3688 + unsigned long en_graphic_req_video : 1;
3689 + unsigned long en_video_crtc : 1;
3690 + unsigned long video_hor_exp : 2;
3691 + unsigned long video_ver_exp : 2;
3692 + unsigned long uv_combine : 1;
3693 + unsigned long total_req_video : 9;
3694 + unsigned long video_ch_sel : 1;
3695 + unsigned long video_portrait : 2;
3696 + unsigned long yuv2rgb_en : 1;
3697 + unsigned long yuv2rgb_option : 1;
3698 + unsigned long video_inv_hor : 1;
3699 + unsigned long video_inv_ver : 1;
3700 + unsigned long gamma_sel : 2;
3701 + unsigned long dis_limit : 1;
3702 + unsigned long en_uv_hblend : 1;
3703 + unsigned long rgb_gamma_sel : 2;
3707 + unsigned long val : 32;
3711 +typedef struct _graphic_key_t {
3712 + unsigned long keyer_color : 16;
3713 + unsigned long keyer_mask : 16;
3717 + unsigned long val : 32;
3721 +typedef struct _video_y_offset_t {
3722 + unsigned long y_offset : 24;
3723 + unsigned long : 8;
3724 + } video_y_offset_t;
3727 + unsigned long val : 32;
3728 + video_y_offset_t f;
3729 +} video_y_offset_u;
3731 +typedef struct _video_y_pitch_t {
3732 + unsigned long y_pitch : 11;
3733 + unsigned long : 21;
3734 + } video_y_pitch_t;
3737 + unsigned long val : 32;
3738 + video_y_pitch_t f;
3741 +typedef struct _video_u_offset_t {
3742 + unsigned long u_offset : 24;
3743 + unsigned long : 8;
3744 + } video_u_offset_t;
3747 + unsigned long val : 32;
3748 + video_u_offset_t f;
3749 +} video_u_offset_u;
3751 +typedef struct _video_u_pitch_t {
3752 + unsigned long u_pitch : 11;
3753 + unsigned long : 21;
3754 + } video_u_pitch_t;
3757 + unsigned long val : 32;
3758 + video_u_pitch_t f;
3761 +typedef struct _video_v_offset_t {
3762 + unsigned long v_offset : 24;
3763 + unsigned long : 8;
3764 + } video_v_offset_t;
3767 + unsigned long val : 32;
3768 + video_v_offset_t f;
3769 +} video_v_offset_u;
3771 +typedef struct _video_v_pitch_t {
3772 + unsigned long v_pitch : 11;
3773 + unsigned long : 21;
3774 + } video_v_pitch_t;
3777 + unsigned long val : 32;
3778 + video_v_pitch_t f;
3781 +typedef struct _video_h_pos_t {
3782 + unsigned long video_h_start : 10;
3783 + unsigned long : 6;
3784 + unsigned long video_h_end : 10;
3785 + unsigned long : 6;
3789 + unsigned long val : 32;
3793 +typedef struct _video_v_pos_t {
3794 + unsigned long video_v_start : 10;
3795 + unsigned long : 6;
3796 + unsigned long video_v_end : 10;
3797 + unsigned long : 6;
3801 + unsigned long val : 32;
3805 +typedef struct _brightness_cntl_t {
3806 + unsigned long brightness : 7;
3807 + unsigned long : 25;
3808 + } brightness_cntl_t;
3811 + unsigned long val : 32;
3812 + brightness_cntl_t f;
3813 +} brightness_cntl_u;
3815 +typedef struct _cursor1_offset_t {
3816 + unsigned long cur1_offset : 24;
3817 + unsigned long cur1_x_offset : 4;
3818 + unsigned long cur1_y_offset : 4;
3819 + } cursor1_offset_t;
3822 + unsigned long val : 32;
3823 + cursor1_offset_t f;
3824 +} cursor1_offset_u;
3826 +typedef struct _cursor1_h_pos_t {
3827 + unsigned long cur1_h_start : 10;
3828 + unsigned long : 6;
3829 + unsigned long cur1_h_end : 10;
3830 + unsigned long : 5;
3831 + unsigned long cur1_en : 1;
3832 + } cursor1_h_pos_t;
3835 + unsigned long val : 32;
3836 + cursor1_h_pos_t f;
3839 +typedef struct _cursor1_v_pos_t {
3840 + unsigned long cur1_v_start : 10;
3841 + unsigned long : 6;
3842 + unsigned long cur1_v_end : 10;
3843 + unsigned long : 6;
3844 + } cursor1_v_pos_t;
3847 + unsigned long val : 32;
3848 + cursor1_v_pos_t f;
3851 +typedef struct _cursor1_color0_t {
3852 + unsigned long cur1_color0_r : 8;
3853 + unsigned long cur1_color0_g : 8;
3854 + unsigned long cur1_color0_b : 8;
3855 + unsigned long : 8;
3856 + } cursor1_color0_t;
3859 + unsigned long val : 32;
3860 + cursor1_color0_t f;
3861 +} cursor1_color0_u;
3863 +typedef struct _cursor1_color1_t {
3864 + unsigned long cur1_color1_r : 8;
3865 + unsigned long cur1_color1_g : 8;
3866 + unsigned long cur1_color1_b : 8;
3867 + unsigned long : 8;
3868 + } cursor1_color1_t;
3871 + unsigned long val : 32;
3872 + cursor1_color1_t f;
3873 +} cursor1_color1_u;
3875 +typedef struct _cursor2_offset_t {
3876 + unsigned long cur2_offset : 24;
3877 + unsigned long cur2_x_offset : 4;
3878 + unsigned long cur2_y_offset : 4;
3879 + } cursor2_offset_t;
3882 + unsigned long val : 32;
3883 + cursor2_offset_t f;
3884 +} cursor2_offset_u;
3886 +typedef struct _cursor2_h_pos_t {
3887 + unsigned long cur2_h_start : 10;
3888 + unsigned long : 6;
3889 + unsigned long cur2_h_end : 10;
3890 + unsigned long : 5;
3891 + unsigned long cur2_en : 1;
3892 + } cursor2_h_pos_t;
3895 + unsigned long val : 32;
3896 + cursor2_h_pos_t f;
3899 +typedef struct _cursor2_v_pos_t {
3900 + unsigned long cur2_v_start : 10;
3901 + unsigned long : 6;
3902 + unsigned long cur2_v_end : 10;
3903 + unsigned long : 6;
3904 + } cursor2_v_pos_t;
3907 + unsigned long val : 32;
3908 + cursor2_v_pos_t f;
3911 +typedef struct _cursor2_color0_t {
3912 + unsigned long cur2_color0_r : 8;
3913 + unsigned long cur2_color0_g : 8;
3914 + unsigned long cur2_color0_b : 8;
3915 + unsigned long : 8;
3916 + } cursor2_color0_t;
3919 + unsigned long val : 32;
3920 + cursor2_color0_t f;
3921 +} cursor2_color0_u;
3923 +typedef struct _cursor2_color1_t {
3924 + unsigned long cur2_color1_r : 8;
3925 + unsigned long cur2_color1_g : 8;
3926 + unsigned long cur2_color1_b : 8;
3927 + unsigned long : 8;
3928 + } cursor2_color1_t;
3931 + unsigned long val : 32;
3932 + cursor2_color1_t f;
3933 +} cursor2_color1_u;
3935 +typedef struct _disp_int_cntl_t {
3936 + unsigned long vline_int_pos : 10;
3937 + unsigned long : 6;
3938 + unsigned long hpos_int_pos : 10;
3939 + unsigned long : 4;
3940 + unsigned long vblank_int_pol : 1;
3941 + unsigned long frame_int_pol : 1;
3942 + } disp_int_cntl_t;
3945 + unsigned long val : 32;
3946 + disp_int_cntl_t f;
3949 +typedef struct _crtc_ss_t {
3950 + unsigned long ss_start : 10;
3951 + unsigned long : 6;
3952 + unsigned long ss_end : 10;
3953 + unsigned long : 2;
3954 + unsigned long ss_align : 1;
3955 + unsigned long ss_pol : 1;
3956 + unsigned long ss_run_mode : 1;
3957 + unsigned long ss_en : 1;
3961 + unsigned long val : 32;
3965 +typedef struct _crtc_ls_t {
3966 + unsigned long ls_start : 10;
3967 + unsigned long : 6;
3968 + unsigned long ls_end : 10;
3969 + unsigned long : 2;
3970 + unsigned long ls_align : 1;
3971 + unsigned long ls_pol : 1;
3972 + unsigned long ls_run_mode : 1;
3973 + unsigned long ls_en : 1;
3977 + unsigned long val : 32;
3981 +typedef struct _crtc_rev_t {
3982 + unsigned long rev_pos : 10;
3983 + unsigned long : 6;
3984 + unsigned long rev_align : 1;
3985 + unsigned long rev_freq_nref : 5;
3986 + unsigned long rev_en : 1;
3987 + unsigned long : 9;
3991 + unsigned long val : 32;
3995 +typedef struct _crtc_dclk_t {
3996 + unsigned long dclk_start : 10;
3997 + unsigned long : 6;
3998 + unsigned long dclk_end : 10;
3999 + unsigned long : 1;
4000 + unsigned long dclk_run_mode : 2;
4001 + unsigned long dclk_pol : 1;
4002 + unsigned long dclk_align : 1;
4003 + unsigned long dclk_en : 1;
4007 + unsigned long val : 32;
4011 +typedef struct _crtc_gs_t {
4012 + unsigned long gs_start : 10;
4013 + unsigned long : 6;
4014 + unsigned long gs_end : 10;
4015 + unsigned long : 3;
4016 + unsigned long gs_align : 1;
4017 + unsigned long gs_pol : 1;
4018 + unsigned long gs_en : 1;
4022 + unsigned long val : 32;
4026 +typedef struct _crtc_vpos_gs_t {
4027 + unsigned long gs_vpos_start : 10;
4028 + unsigned long : 6;
4029 + unsigned long gs_vpos_end : 10;
4030 + unsigned long : 6;
4034 + unsigned long val : 32;
4038 +typedef struct _crtc_gclk_t {
4039 + unsigned long gclk_start : 10;
4040 + unsigned long : 6;
4041 + unsigned long gclk_end : 10;
4042 + unsigned long : 3;
4043 + unsigned long gclk_align : 1;
4044 + unsigned long gclk_pol : 1;
4045 + unsigned long gclk_en : 1;
4049 + unsigned long val : 32;
4053 +typedef struct _crtc_goe_t {
4054 + unsigned long goe_start : 10;
4055 + unsigned long : 6;
4056 + unsigned long goe_end : 10;
4057 + unsigned long : 3;
4058 + unsigned long goe_align : 1;
4059 + unsigned long goe_pol : 1;
4060 + unsigned long goe_en : 1;
4064 + unsigned long val : 32;
4068 +typedef struct _crtc_frame_t {
4069 + unsigned long crtc_fr_start : 10;
4070 + unsigned long : 6;
4071 + unsigned long crtc_fr_end : 10;
4072 + unsigned long : 4;
4073 + unsigned long crtc_frame_en : 1;
4074 + unsigned long crtc_frame_align : 1;
4078 + unsigned long val : 32;
4082 +typedef struct _crtc_frame_vpos_t {
4083 + unsigned long crtc_fr_vpos : 10;
4084 + unsigned long : 22;
4085 + } crtc_frame_vpos_t;
4088 + unsigned long val : 32;
4089 + crtc_frame_vpos_t f;
4090 +} crtc_frame_vpos_u;
4092 +typedef struct _gpio_data_t {
4093 + unsigned long gio_out : 16;
4094 + unsigned long gio_in : 16;
4098 + unsigned long val : 32;
4102 +typedef struct _gpio_cntl1_t {
4103 + unsigned long gio_pd : 16;
4104 + unsigned long gio_schmen : 16;
4108 + unsigned long val : 32;
4112 +typedef struct _gpio_cntl2_t {
4113 + unsigned long gio_oe : 16;
4114 + unsigned long gio_srp : 1;
4115 + unsigned long gio_srn : 1;
4116 + unsigned long gio_sp : 4;
4117 + unsigned long gio_sn : 4;
4118 + unsigned long : 6;
4122 + unsigned long val : 32;
4126 +typedef struct _lcdd_cntl1_t {
4127 + unsigned long lcdd_pd : 18;
4128 + unsigned long lcdd_srp : 1;
4129 + unsigned long lcdd_srn : 1;
4130 + unsigned long lcdd_sp : 4;
4131 + unsigned long lcdd_sn : 4;
4132 + unsigned long lcdd_align : 1;
4133 + unsigned long : 3;
4137 + unsigned long val : 32;
4141 +typedef struct _lcdd_cntl2_t {
4142 + unsigned long lcdd_oe : 18;
4143 + unsigned long : 14;
4147 + unsigned long val : 32;
4151 +typedef struct _genlcd_cntl1_t {
4152 + unsigned long dclk_oe : 1;
4153 + unsigned long dclk_pd : 1;
4154 + unsigned long dclk_srp : 1;
4155 + unsigned long dclk_srn : 1;
4156 + unsigned long dclk_sp : 4;
4157 + unsigned long dclk_sn : 4;
4158 + unsigned long ss_oe : 1;
4159 + unsigned long ss_pd : 1;
4160 + unsigned long ls_oe : 1;
4161 + unsigned long ls_pd : 1;
4162 + unsigned long gs_oe : 1;
4163 + unsigned long gs_pd : 1;
4164 + unsigned long goe_oe : 1;
4165 + unsigned long goe_pd : 1;
4166 + unsigned long rev_oe : 1;
4167 + unsigned long rev_pd : 1;
4168 + unsigned long frame_oe : 1;
4169 + unsigned long frame_pd : 1;
4170 + unsigned long : 8;
4174 + unsigned long val : 32;
4178 +typedef struct _genlcd_cntl2_t {
4179 + unsigned long gclk_oe : 1;
4180 + unsigned long gclk_pd : 1;
4181 + unsigned long gclk_srp : 1;
4182 + unsigned long gclk_srn : 1;
4183 + unsigned long gclk_sp : 4;
4184 + unsigned long gclk_sn : 4;
4185 + unsigned long genlcd_srp : 1;
4186 + unsigned long genlcd_srn : 1;
4187 + unsigned long genlcd_sp : 4;
4188 + unsigned long genlcd_sn : 4;
4189 + unsigned long : 10;
4193 + unsigned long val : 32;
4197 +typedef struct _disp_debug_t {
4198 + unsigned long disp_debug : 32;
4202 + unsigned long val : 32;
4206 +typedef struct _disp_db_buf_cntl_rd_t {
4207 + unsigned long en_db_buf : 1;
4208 + unsigned long update_db_buf_done : 1;
4209 + unsigned long db_buf_cntl : 6;
4210 + unsigned long : 24;
4211 + } disp_db_buf_cntl_rd_t;
4214 + unsigned long val : 32;
4215 + disp_db_buf_cntl_rd_t f;
4216 +} disp_db_buf_cntl_rd_u;
4218 +typedef struct _disp_db_buf_cntl_wr_t {
4219 + unsigned long en_db_buf : 1;
4220 + unsigned long update_db_buf : 1;
4221 + unsigned long db_buf_cntl : 6;
4222 + unsigned long : 24;
4223 + } disp_db_buf_cntl_wr_t;
4226 + unsigned long val : 32;
4227 + disp_db_buf_cntl_wr_t f;
4228 +} disp_db_buf_cntl_wr_u;
4230 +typedef struct _disp_crc_sig_t {
4231 + unsigned long crc_sig_r : 6;
4232 + unsigned long crc_sig_g : 6;
4233 + unsigned long crc_sig_b : 6;
4234 + unsigned long crc_cont_en : 1;
4235 + unsigned long crc_en : 1;
4236 + unsigned long crc_mask_en : 1;
4237 + unsigned long crc_sig_cntl : 6;
4238 + unsigned long : 5;
4242 + unsigned long val : 32;
4246 +typedef struct _crtc_default_count_t {
4247 + unsigned long crtc_hcount_def : 10;
4248 + unsigned long : 6;
4249 + unsigned long crtc_vcount_def : 10;
4250 + unsigned long : 6;
4251 + } crtc_default_count_t;
4254 + unsigned long val : 32;
4255 + crtc_default_count_t f;
4256 +} crtc_default_count_u;
4258 +typedef struct _lcd_background_color_t {
4259 + unsigned long lcd_bg_red : 8;
4260 + unsigned long lcd_bg_green : 8;
4261 + unsigned long lcd_bg_blue : 8;
4262 + unsigned long : 8;
4263 + } lcd_background_color_t;
4266 + unsigned long val : 32;
4267 + lcd_background_color_t f;
4268 +} lcd_background_color_u;
4270 +typedef struct _crtc_ps2_t {
4271 + unsigned long ps2_start : 10;
4272 + unsigned long : 6;
4273 + unsigned long ps2_end : 10;
4274 + unsigned long : 4;
4275 + unsigned long ps2_pol : 1;
4276 + unsigned long ps2_en : 1;
4280 + unsigned long val : 32;
4284 +typedef struct _crtc_ps2_vpos_t {
4285 + unsigned long ps2_vpos_start : 10;
4286 + unsigned long : 6;
4287 + unsigned long ps2_vpos_end : 10;
4288 + unsigned long : 6;
4289 + } crtc_ps2_vpos_t;
4292 + unsigned long val : 32;
4293 + crtc_ps2_vpos_t f;
4296 +typedef struct _crtc_ps1_active_t {
4297 + unsigned long ps1_h_start : 10;
4298 + unsigned long : 6;
4299 + unsigned long ps1_h_end : 10;
4300 + unsigned long : 3;
4301 + unsigned long ps1_pol : 1;
4302 + unsigned long ps1_en : 1;
4303 + unsigned long ps1_use_nactive : 1;
4304 + } crtc_ps1_active_t;
4307 + unsigned long val : 32;
4308 + crtc_ps1_active_t f;
4309 +} crtc_ps1_active_u;
4311 +typedef struct _crtc_ps1_nactive_t {
4312 + unsigned long ps1_h_start_na : 10;
4313 + unsigned long : 6;
4314 + unsigned long ps1_h_end_na : 10;
4315 + unsigned long : 5;
4316 + unsigned long ps1_en_na : 1;
4317 + } crtc_ps1_nactive_t;
4320 + unsigned long val : 32;
4321 + crtc_ps1_nactive_t f;
4322 +} crtc_ps1_nactive_u;
4324 +typedef struct _crtc_gclk_ext_t {
4325 + unsigned long gclk_alter_start : 10;
4326 + unsigned long : 6;
4327 + unsigned long gclk_alter_width : 2;
4328 + unsigned long gclk_en_alter : 1;
4329 + unsigned long gclk_db_width : 2;
4330 + unsigned long : 11;
4331 + } crtc_gclk_ext_t;
4334 + unsigned long val : 32;
4335 + crtc_gclk_ext_t f;
4338 +typedef struct _crtc_alw_t {
4339 + unsigned long alw_hstart : 10;
4340 + unsigned long : 6;
4341 + unsigned long alw_hend : 10;
4342 + unsigned long : 4;
4343 + unsigned long alw_delay : 1;
4344 + unsigned long alw_en : 1;
4348 + unsigned long val : 32;
4352 +typedef struct _crtc_alw_vpos_t {
4353 + unsigned long alw_vstart : 10;
4354 + unsigned long : 6;
4355 + unsigned long alw_vend : 10;
4356 + unsigned long : 6;
4357 + } crtc_alw_vpos_t;
4360 + unsigned long val : 32;
4361 + crtc_alw_vpos_t f;
4364 +typedef struct _crtc_psk_t {
4365 + unsigned long psk_vstart : 10;
4366 + unsigned long : 6;
4367 + unsigned long psk_vend : 10;
4368 + unsigned long : 4;
4369 + unsigned long psk_pol : 1;
4370 + unsigned long psk_en : 1;
4374 + unsigned long val : 32;
4378 +typedef struct _crtc_psk_hpos_t {
4379 + unsigned long psk_hstart : 10;
4380 + unsigned long : 6;
4381 + unsigned long psk_hend : 10;
4382 + unsigned long : 6;
4383 + } crtc_psk_hpos_t;
4386 + unsigned long val : 32;
4387 + crtc_psk_hpos_t f;
4390 +typedef struct _crtc_cv4_start_t {
4391 + unsigned long cv4_vstart : 10;
4392 + unsigned long : 20;
4393 + unsigned long cv4_pol : 1;
4394 + unsigned long cv4_en : 1;
4395 + } crtc_cv4_start_t;
4398 + unsigned long val : 32;
4399 + crtc_cv4_start_t f;
4400 +} crtc_cv4_start_u;
4402 +typedef struct _crtc_cv4_end_t {
4403 + unsigned long cv4_vend1 : 10;
4404 + unsigned long : 6;
4405 + unsigned long cv4_vend2 : 10;
4406 + unsigned long : 6;
4410 + unsigned long val : 32;
4414 +typedef struct _crtc_cv4_hpos_t {
4415 + unsigned long cv4_hstart : 10;
4416 + unsigned long : 6;
4417 + unsigned long cv4_hend : 10;
4418 + unsigned long : 6;
4419 + } crtc_cv4_hpos_t;
4422 + unsigned long val : 32;
4423 + crtc_cv4_hpos_t f;
4426 +typedef struct _crtc_eck_t {
4427 + unsigned long eck_freq1 : 3;
4428 + unsigned long eck_en : 1;
4429 + unsigned long : 28;
4433 + unsigned long val : 32;
4437 +typedef struct _refresh_cntl_t {
4438 + unsigned long ref_frame : 3;
4439 + unsigned long nref_frame : 5;
4440 + unsigned long ref_cntl : 1;
4441 + unsigned long stop_sm_nref : 1;
4442 + unsigned long stop_req_nref : 1;
4443 + unsigned long : 21;
4447 + unsigned long val : 32;
4451 +typedef struct _genlcd_cntl3_t {
4452 + unsigned long ps1_oe : 1;
4453 + unsigned long ps1_pd : 1;
4454 + unsigned long ps2_oe : 1;
4455 + unsigned long ps2_pd : 1;
4456 + unsigned long rev2_oe : 1;
4457 + unsigned long rev2_pd : 1;
4458 + unsigned long awl_oe : 1;
4459 + unsigned long awl_pd : 1;
4460 + unsigned long dinv_oe : 1;
4461 + unsigned long dinv_pd : 1;
4462 + unsigned long psk_out : 1;
4463 + unsigned long psd_out : 1;
4464 + unsigned long eck_out : 1;
4465 + unsigned long cv4_out : 1;
4466 + unsigned long ps1_out : 1;
4467 + unsigned long ps2_out : 1;
4468 + unsigned long rev_out : 1;
4469 + unsigned long rev2_out : 1;
4470 + unsigned long : 14;
4474 + unsigned long val : 32;
4478 +typedef struct _gpio_data2_t {
4479 + unsigned long gio2_out : 16;
4480 + unsigned long gio2_in : 16;
4484 + unsigned long val : 32;
4488 +typedef struct _gpio_cntl3_t {
4489 + unsigned long gio2_pd : 16;
4490 + unsigned long gio2_schmen : 16;
4494 + unsigned long val : 32;
4498 +typedef struct _gpio_cntl4_t {
4499 + unsigned long gio2_oe : 16;
4500 + unsigned long : 16;
4504 + unsigned long val : 32;
4508 +typedef struct _chip_strap_t {
4509 + unsigned long config_strap : 8;
4510 + unsigned long pkg_strap : 1;
4511 + unsigned long : 23;
4515 + unsigned long val : 32;
4519 +typedef struct _disp_debug2_t {
4520 + unsigned long disp_debug2 : 32;
4524 + unsigned long val : 32;
4528 +typedef struct _debug_bus_cntl_t {
4529 + unsigned long debug_testmux : 4;
4530 + unsigned long debug_testsel : 4;
4531 + unsigned long debug_gioa_sel : 2;
4532 + unsigned long debug_giob_sel : 2;
4533 + unsigned long debug_clk_sel : 1;
4534 + unsigned long debug_clk_inv : 1;
4535 + unsigned long : 2;
4536 + unsigned long debug_bus : 16;
4537 + } debug_bus_cntl_t;
4540 + unsigned long val : 32;
4541 + debug_bus_cntl_t f;
4542 +} debug_bus_cntl_u;
4544 +typedef struct _gamma_value1_t {
4545 + unsigned long gamma1 : 8;
4546 + unsigned long gamma2 : 8;
4547 + unsigned long gamma3 : 8;
4548 + unsigned long gamma4 : 8;
4552 + unsigned long val : 32;
4556 +typedef struct _gamma_value2_t {
4557 + unsigned long gamma5 : 8;
4558 + unsigned long gamma6 : 8;
4559 + unsigned long gamma7 : 8;
4560 + unsigned long gamma8 : 8;
4564 + unsigned long val : 32;
4568 +typedef struct _gamma_slope_t {
4569 + unsigned long slope1 : 3;
4570 + unsigned long slope2 : 3;
4571 + unsigned long slope3 : 3;
4572 + unsigned long slope4 : 3;
4573 + unsigned long slope5 : 3;
4574 + unsigned long slope6 : 3;
4575 + unsigned long slope7 : 3;
4576 + unsigned long slope8 : 3;
4577 + unsigned long : 8;
4581 + unsigned long val : 32;
4585 +typedef struct _gen_status_t {
4586 + unsigned long status : 16;
4587 + unsigned long : 16;
4591 + unsigned long val : 32;
4595 +typedef struct _hw_int_t {
4596 + unsigned long hwint1_pos : 5;
4597 + unsigned long hwint2_pos : 5;
4598 + unsigned long hwint1_pol : 1;
4599 + unsigned long hwint2_pol : 1;
4600 + unsigned long hwint1_en_db : 1;
4601 + unsigned long hwint2_en_db : 1;
4602 + unsigned long : 18;
4606 + unsigned long val : 32;
4610 +typedef struct _dst_offset_t {
4611 + unsigned long dst_offset : 24;
4612 + unsigned long : 8;
4616 + unsigned long val : 32;
4620 +typedef struct _dst_pitch_t {
4621 + unsigned long dst_pitch : 14;
4622 + unsigned long mc_dst_pitch_mul : 2;
4623 + unsigned long : 16;
4627 + unsigned long val : 32;
4631 +typedef struct _dst_pitch_offset_t {
4632 + unsigned long dst_offset : 20;
4633 + unsigned long dst_pitch : 10;
4634 + unsigned long mc_dst_pitch_mul : 2;
4635 + } dst_pitch_offset_t;
4638 + unsigned long val : 32;
4639 + dst_pitch_offset_t f;
4640 +} dst_pitch_offset_u;
4642 +typedef struct _dst_x_t {
4643 + unsigned long dst_x : 14;
4644 + unsigned long : 18;
4648 + unsigned long val : 32;
4652 +typedef struct _dst_y_t {
4653 + unsigned long dst_y : 14;
4654 + unsigned long : 18;
4658 + unsigned long val : 32;
4662 +typedef struct _dst_x_y_t {
4663 + unsigned long dst_y : 14;
4664 + unsigned long : 2;
4665 + unsigned long dst_x : 14;
4666 + unsigned long : 2;
4670 + unsigned long val : 32;
4674 +typedef struct _dst_y_x_t {
4675 + unsigned long dst_x : 14;
4676 + unsigned long : 2;
4677 + unsigned long dst_y : 14;
4678 + unsigned long : 2;
4682 + unsigned long val : 32;
4686 +typedef struct _dst_width_t {
4687 + unsigned long dst_width_b0 : 8;
4688 + unsigned long dst_width_b1 : 6;
4689 + unsigned long : 18;
4693 + unsigned long val : 32;
4697 +typedef struct _dst_height_t {
4698 + unsigned long dst_height : 14;
4699 + unsigned long : 18;
4703 + unsigned long val : 32;
4707 +typedef struct _dst_width_height_t {
4708 + unsigned long dst_height : 14;
4709 + unsigned long : 2;
4710 + unsigned long dst_width_b0 : 8;
4711 + unsigned long dst_width_b1 : 6;
4712 + unsigned long : 2;
4713 + } dst_width_height_t;
4716 + unsigned long val : 32;
4717 + dst_width_height_t f;
4718 +} dst_width_height_u;
4720 +typedef struct _dst_height_width_t {
4721 + unsigned long dst_width_b0 : 8;
4722 + unsigned long dst_width_b1 : 6;
4723 + unsigned long : 2;
4724 + unsigned long dst_height : 14;
4725 + unsigned long : 2;
4726 + } dst_height_width_t;
4729 + unsigned long val : 32;
4730 + dst_height_width_t f;
4731 +} dst_height_width_u;
4733 +typedef struct _dst_height_width_8_t {
4734 + unsigned long : 16;
4735 + unsigned long dst_width_b0 : 8;
4736 + unsigned long dst_height : 8;
4737 + } dst_height_width_8_t;
4740 + unsigned long val : 32;
4741 + dst_height_width_8_t f;
4742 +} dst_height_width_8_u;
4744 +typedef struct _dst_height_y_t {
4745 + unsigned long dst_y : 14;
4746 + unsigned long : 2;
4747 + unsigned long dst_height : 14;
4748 + unsigned long : 2;
4752 + unsigned long val : 32;
4756 +typedef struct _dst_width_x_t {
4757 + unsigned long dst_x : 14;
4758 + unsigned long : 2;
4759 + unsigned long dst_width_b0 : 8;
4760 + unsigned long dst_width_b1 : 6;
4761 + unsigned long : 2;
4765 + unsigned long val : 32;
4769 +typedef struct _dst_width_x_incy_t {
4770 + unsigned long dst_x : 14;
4771 + unsigned long : 2;
4772 + unsigned long dst_width_b0 : 8;
4773 + unsigned long dst_width_b1 : 6;
4774 + unsigned long : 2;
4775 + } dst_width_x_incy_t;
4778 + unsigned long val : 32;
4779 + dst_width_x_incy_t f;
4780 +} dst_width_x_incy_u;
4782 +typedef struct _dst_line_start_t {
4783 + unsigned long dst_start_x : 14;
4784 + unsigned long : 2;
4785 + unsigned long dst_start_y : 14;
4786 + unsigned long : 2;
4787 + } dst_line_start_t;
4790 + unsigned long val : 32;
4791 + dst_line_start_t f;
4792 +} dst_line_start_u;
4794 +typedef struct _dst_line_end_t {
4795 + unsigned long dst_end_x : 14;
4796 + unsigned long : 2;
4797 + unsigned long dst_end_y_b0 : 8;
4798 + unsigned long dst_end_y_b1 : 6;
4799 + unsigned long : 2;
4803 + unsigned long val : 32;
4807 +typedef struct _brush_offset_t {
4808 + unsigned long brush_offset : 24;
4809 + unsigned long : 8;
4813 + unsigned long val : 32;
4817 +typedef struct _brush_y_x_t {
4818 + unsigned long brush_x : 5;
4819 + unsigned long : 3;
4820 + unsigned long brush_y : 3;
4821 + unsigned long : 21;
4825 + unsigned long val : 32;
4829 +typedef struct _dp_brush_frgd_clr_t {
4830 + unsigned long dp_brush_frgd_clr : 32;
4831 + } dp_brush_frgd_clr_t;
4834 + unsigned long val : 32;
4835 + dp_brush_frgd_clr_t f;
4836 +} dp_brush_frgd_clr_u;
4838 +typedef struct _dp_brush_bkgd_clr_t {
4839 + unsigned long dp_brush_bkgd_clr : 32;
4840 + } dp_brush_bkgd_clr_t;
4843 + unsigned long val : 32;
4844 + dp_brush_bkgd_clr_t f;
4845 +} dp_brush_bkgd_clr_u;
4847 +typedef struct _src2_offset_t {
4848 + unsigned long src2_offset : 24;
4849 + unsigned long : 8;
4853 + unsigned long val : 32;
4857 +typedef struct _src2_pitch_t {
4858 + unsigned long src2_pitch : 14;
4859 + unsigned long src2_pitch_mul : 2;
4860 + unsigned long : 16;
4864 + unsigned long val : 32;
4868 +typedef struct _src2_pitch_offset_t {
4869 + unsigned long src2_offset : 20;
4870 + unsigned long : 2;
4871 + unsigned long src2_pitch : 8;
4872 + unsigned long src2_pitch_mul : 2;
4873 + } src2_pitch_offset_t;
4876 + unsigned long val : 32;
4877 + src2_pitch_offset_t f;
4878 +} src2_pitch_offset_u;
4880 +typedef struct _src2_x_t {
4881 + unsigned long src_x : 14;
4882 + unsigned long : 18;
4886 + unsigned long val : 32;
4890 +typedef struct _src2_y_t {
4891 + unsigned long src_y : 14;
4892 + unsigned long : 18;
4896 + unsigned long val : 32;
4900 +typedef struct _src2_x_y_t {
4901 + unsigned long src_y : 14;
4902 + unsigned long : 2;
4903 + unsigned long src_x : 14;
4904 + unsigned long : 2;
4908 + unsigned long val : 32;
4912 +typedef struct _src2_width_t {
4913 + unsigned long src2_width : 14;
4914 + unsigned long : 18;
4918 + unsigned long val : 32;
4922 +typedef struct _src2_height_t {
4923 + unsigned long src2_height : 14;
4924 + unsigned long : 18;
4928 + unsigned long val : 32;
4932 +typedef struct _src2_inc_t {
4933 + unsigned long src2_xinc : 6;
4934 + unsigned long : 2;
4935 + unsigned long src2_yinc : 6;
4936 + unsigned long : 18;
4940 + unsigned long val : 32;
4944 +typedef struct _src_offset_t {
4945 + unsigned long src_offset : 24;
4946 + unsigned long : 8;
4950 + unsigned long val : 32;
4954 +typedef struct _src_pitch_t {
4955 + unsigned long src_pitch : 14;
4956 + unsigned long src_pitch_mul : 2;
4957 + unsigned long : 16;
4961 + unsigned long val : 32;
4965 +typedef struct _src_pitch_offset_t {
4966 + unsigned long src_offset : 20;
4967 + unsigned long src_pitch : 10;
4968 + unsigned long src_pitch_mul : 2;
4969 + } src_pitch_offset_t;
4972 + unsigned long val : 32;
4973 + src_pitch_offset_t f;
4974 +} src_pitch_offset_u;
4976 +typedef struct _src_x_t {
4977 + unsigned long src_x : 14;
4978 + unsigned long : 18;
4982 + unsigned long val : 32;
4986 +typedef struct _src_y_t {
4987 + unsigned long src_y : 14;
4988 + unsigned long : 18;
4992 + unsigned long val : 32;
4996 +typedef struct _src_x_y_t {
4997 + unsigned long src_y : 14;
4998 + unsigned long : 2;
4999 + unsigned long src_x : 14;
5000 + unsigned long : 2;
5004 + unsigned long val : 32;
5008 +typedef struct _src_y_x_t {
5009 + unsigned long src_x : 14;
5010 + unsigned long : 2;
5011 + unsigned long src_y : 14;
5012 + unsigned long : 2;
5016 + unsigned long val : 32;
5020 +typedef struct _src_width_t {
5021 + unsigned long src_width : 14;
5022 + unsigned long : 18;
5026 + unsigned long val : 32;
5030 +typedef struct _src_height_t {
5031 + unsigned long src_height : 14;
5032 + unsigned long : 18;
5036 + unsigned long val : 32;
5040 +typedef struct _src_inc_t {
5041 + unsigned long src_xinc : 6;
5042 + unsigned long : 2;
5043 + unsigned long src_yinc : 6;
5044 + unsigned long : 18;
5048 + unsigned long val : 32;
5052 +typedef struct _host_data0_t {
5053 + unsigned long host_data : 32;
5057 + unsigned long val : 32;
5061 +typedef struct _host_data1_t {
5062 + unsigned long host_data : 32;
5066 + unsigned long val : 32;
5070 +typedef struct _host_data2_t {
5071 + unsigned long host_data : 32;
5075 + unsigned long val : 32;
5079 +typedef struct _host_data3_t {
5080 + unsigned long host_data : 32;
5084 + unsigned long val : 32;
5088 +typedef struct _host_data4_t {
5089 + unsigned long host_data : 32;
5093 + unsigned long val : 32;
5097 +typedef struct _host_data5_t {
5098 + unsigned long host_data : 32;
5102 + unsigned long val : 32;
5106 +typedef struct _host_data6_t {
5107 + unsigned long host_data : 32;
5111 + unsigned long val : 32;
5115 +typedef struct _host_data7_t {
5116 + unsigned long host_data : 32;
5120 + unsigned long val : 32;
5124 +typedef struct _host_data_last_t {
5125 + unsigned long host_data_last : 32;
5126 + } host_data_last_t;
5129 + unsigned long val : 32;
5130 + host_data_last_t f;
5131 +} host_data_last_u;
5133 +typedef struct _dp_src_frgd_clr_t {
5134 + unsigned long dp_src_frgd_clr : 32;
5135 + } dp_src_frgd_clr_t;
5138 + unsigned long val : 32;
5139 + dp_src_frgd_clr_t f;
5140 +} dp_src_frgd_clr_u;
5142 +typedef struct _dp_src_bkgd_clr_t {
5143 + unsigned long dp_src_bkgd_clr : 32;
5144 + } dp_src_bkgd_clr_t;
5147 + unsigned long val : 32;
5148 + dp_src_bkgd_clr_t f;
5149 +} dp_src_bkgd_clr_u;
5151 +typedef struct _sc_left_t {
5152 + unsigned long sc_left : 14;
5153 + unsigned long : 18;
5157 + unsigned long val : 32;
5161 +typedef struct _sc_right_t {
5162 + unsigned long sc_right : 14;
5163 + unsigned long : 18;
5167 + unsigned long val : 32;
5171 +typedef struct _sc_top_t {
5172 + unsigned long sc_top : 14;
5173 + unsigned long : 18;
5177 + unsigned long val : 32;
5181 +typedef struct _sc_bottom_t {
5182 + unsigned long sc_bottom : 14;
5183 + unsigned long : 18;
5187 + unsigned long val : 32;
5191 +typedef struct _src_sc_right_t {
5192 + unsigned long sc_right : 14;
5193 + unsigned long : 18;
5197 + unsigned long val : 32;
5201 +typedef struct _src_sc_bottom_t {
5202 + unsigned long sc_bottom : 14;
5203 + unsigned long : 18;
5204 + } src_sc_bottom_t;
5207 + unsigned long val : 32;
5208 + src_sc_bottom_t f;
5211 +typedef struct _dp_cntl_t {
5212 + unsigned long dst_x_dir : 1;
5213 + unsigned long dst_y_dir : 1;
5214 + unsigned long src_x_dir : 1;
5215 + unsigned long src_y_dir : 1;
5216 + unsigned long dst_major_x : 1;
5217 + unsigned long src_major_x : 1;
5218 + unsigned long : 26;
5222 + unsigned long val : 32;
5226 +typedef struct _dp_cntl_dst_dir_t {
5227 + unsigned long : 15;
5228 + unsigned long dst_y_dir : 1;
5229 + unsigned long : 15;
5230 + unsigned long dst_x_dir : 1;
5231 + } dp_cntl_dst_dir_t;
5234 + unsigned long val : 32;
5235 + dp_cntl_dst_dir_t f;
5236 +} dp_cntl_dst_dir_u;
5238 +typedef struct _dp_datatype_t {
5239 + unsigned long dp_dst_datatype : 4;
5240 + unsigned long : 4;
5241 + unsigned long dp_brush_datatype : 4;
5242 + unsigned long dp_src2_type : 1;
5243 + unsigned long dp_src2_datatype : 3;
5244 + unsigned long dp_src_datatype : 3;
5245 + unsigned long : 11;
5246 + unsigned long dp_byte_pix_order : 1;
5247 + unsigned long : 1;
5251 + unsigned long val : 32;
5255 +typedef struct _dp_mix_t {
5256 + unsigned long : 8;
5257 + unsigned long dp_src_source : 3;
5258 + unsigned long dp_src2_source : 3;
5259 + unsigned long : 2;
5260 + unsigned long dp_rop3 : 8;
5261 + unsigned long dp_op : 1;
5262 + unsigned long : 7;
5266 + unsigned long val : 32;
5270 +typedef struct _dp_write_msk_t {
5271 + unsigned long dp_write_msk : 32;
5275 + unsigned long val : 32;
5279 +typedef struct _clr_cmp_clr_src_t {
5280 + unsigned long clr_cmp_clr_src : 32;
5281 + } clr_cmp_clr_src_t;
5284 + unsigned long val : 32;
5285 + clr_cmp_clr_src_t f;
5286 +} clr_cmp_clr_src_u;
5288 +typedef struct _clr_cmp_clr_dst_t {
5289 + unsigned long clr_cmp_clr_dst : 32;
5290 + } clr_cmp_clr_dst_t;
5293 + unsigned long val : 32;
5294 + clr_cmp_clr_dst_t f;
5295 +} clr_cmp_clr_dst_u;
5297 +typedef struct _clr_cmp_cntl_t {
5298 + unsigned long clr_cmp_fcn_src : 3;
5299 + unsigned long : 5;
5300 + unsigned long clr_cmp_fcn_dst : 3;
5301 + unsigned long : 13;
5302 + unsigned long clr_cmp_src : 2;
5303 + unsigned long : 6;
5307 + unsigned long val : 32;
5311 +typedef struct _clr_cmp_msk_t {
5312 + unsigned long clr_cmp_msk : 32;
5316 + unsigned long val : 32;
5320 +typedef struct _default_pitch_offset_t {
5321 + unsigned long default_offset : 20;
5322 + unsigned long default_pitch : 10;
5323 + unsigned long : 2;
5324 + } default_pitch_offset_t;
5327 + unsigned long val : 32;
5328 + default_pitch_offset_t f;
5329 +} default_pitch_offset_u;
5331 +typedef struct _default_sc_bottom_right_t {
5332 + unsigned long default_sc_right : 14;
5333 + unsigned long : 2;
5334 + unsigned long default_sc_bottom : 14;
5335 + unsigned long : 2;
5336 + } default_sc_bottom_right_t;
5339 + unsigned long val : 32;
5340 + default_sc_bottom_right_t f;
5341 +} default_sc_bottom_right_u;
5343 +typedef struct _default2_sc_bottom_right_t {
5344 + unsigned long default_sc_right : 14;
5345 + unsigned long : 2;
5346 + unsigned long default_sc_bottom : 14;
5347 + unsigned long : 2;
5348 + } default2_sc_bottom_right_t;
5351 + unsigned long val : 32;
5352 + default2_sc_bottom_right_t f;
5353 +} default2_sc_bottom_right_u;
5355 +typedef struct _ref1_pitch_offset_t {
5356 + unsigned long offset : 20;
5357 + unsigned long : 2;
5358 + unsigned long pitch : 8;
5359 + unsigned long : 2;
5360 + } ref1_pitch_offset_t;
5363 + unsigned long val : 32;
5364 + ref1_pitch_offset_t f;
5365 +} ref1_pitch_offset_u;
5367 +typedef struct _ref2_pitch_offset_t {
5368 + unsigned long offset : 20;
5369 + unsigned long : 2;
5370 + unsigned long pitch : 8;
5371 + unsigned long : 2;
5372 + } ref2_pitch_offset_t;
5375 + unsigned long val : 32;
5376 + ref2_pitch_offset_t f;
5377 +} ref2_pitch_offset_u;
5379 +typedef struct _ref3_pitch_offset_t {
5380 + unsigned long offset : 20;
5381 + unsigned long : 2;
5382 + unsigned long pitch : 8;
5383 + unsigned long : 2;
5384 + } ref3_pitch_offset_t;
5387 + unsigned long val : 32;
5388 + ref3_pitch_offset_t f;
5389 +} ref3_pitch_offset_u;
5391 +typedef struct _ref4_pitch_offset_t {
5392 + unsigned long offset : 20;
5393 + unsigned long : 2;
5394 + unsigned long pitch : 8;
5395 + unsigned long : 2;
5396 + } ref4_pitch_offset_t;
5399 + unsigned long val : 32;
5400 + ref4_pitch_offset_t f;
5401 +} ref4_pitch_offset_u;
5403 +typedef struct _ref5_pitch_offset_t {
5404 + unsigned long offset : 20;
5405 + unsigned long : 2;
5406 + unsigned long pitch : 8;
5407 + unsigned long : 2;
5408 + } ref5_pitch_offset_t;
5411 + unsigned long val : 32;
5412 + ref5_pitch_offset_t f;
5413 +} ref5_pitch_offset_u;
5415 +typedef struct _ref6_pitch_offset_t {
5416 + unsigned long offset : 20;
5417 + unsigned long : 2;
5418 + unsigned long pitch : 8;
5419 + unsigned long : 2;
5420 + } ref6_pitch_offset_t;
5423 + unsigned long val : 32;
5424 + ref6_pitch_offset_t f;
5425 +} ref6_pitch_offset_u;
5427 +typedef struct _dp_gui_master_cntl_t {
5428 + unsigned long gmc_src_pitch_offset_cntl : 1;
5429 + unsigned long gmc_dst_pitch_offset_cntl : 1;
5430 + unsigned long gmc_src_clipping : 1;
5431 + unsigned long gmc_dst_clipping : 1;
5432 + unsigned long gmc_brush_datatype : 4;
5433 + unsigned long gmc_dst_datatype : 4;
5434 + unsigned long gmc_src_datatype : 3;
5435 + unsigned long gmc_byte_pix_order : 1;
5436 + unsigned long gmc_default_sel : 1;
5437 + unsigned long gmc_rop3 : 8;
5438 + unsigned long gmc_dp_src_source : 3;
5439 + unsigned long gmc_clr_cmp_fcn_dis : 1;
5440 + unsigned long : 1;
5441 + unsigned long gmc_wr_msk_dis : 1;
5442 + unsigned long gmc_dp_op : 1;
5443 + } dp_gui_master_cntl_t;
5446 + unsigned long val : 32;
5447 + dp_gui_master_cntl_t f;
5448 +} dp_gui_master_cntl_u;
5450 +typedef struct _sc_top_left_t {
5451 + unsigned long sc_left : 14;
5452 + unsigned long : 2;
5453 + unsigned long sc_top : 14;
5454 + unsigned long : 2;
5458 + unsigned long val : 32;
5462 +typedef struct _sc_bottom_right_t {
5463 + unsigned long sc_right : 14;
5464 + unsigned long : 2;
5465 + unsigned long sc_bottom : 14;
5466 + unsigned long : 2;
5467 + } sc_bottom_right_t;
5470 + unsigned long val : 32;
5471 + sc_bottom_right_t f;
5472 +} sc_bottom_right_u;
5474 +typedef struct _src_sc_top_left_t {
5475 + unsigned short sc_left;
5476 + unsigned short sc_top;
5477 +} src_sc_top_left_t;
5480 + unsigned long val : 32;
5481 + src_sc_top_left_t f;
5482 +} src_sc_top_left_u;
5484 +typedef struct _src_sc_bottom_right_t {
5485 + unsigned long sc_right : 14;
5486 + unsigned long : 2;
5487 + unsigned long sc_bottom : 14;
5488 + unsigned long : 2;
5489 + } src_sc_bottom_right_t;
5492 + unsigned long val : 32;
5493 + src_sc_bottom_right_t f;
5494 +} src_sc_bottom_right_u;
5496 +typedef struct _global_alpha_t {
5497 + unsigned long alpha_r : 8;
5498 + unsigned long alpha_g : 8;
5499 + unsigned long alpha_b : 8;
5500 + unsigned long alpha_a : 8;
5504 + unsigned long val : 32;
5508 +typedef struct _filter_coef_t {
5509 + unsigned long c_4 : 4;
5510 + unsigned long c_3 : 4;
5511 + unsigned long c_2 : 4;
5512 + unsigned long c_1 : 4;
5513 + unsigned long c1 : 4;
5514 + unsigned long c2 : 4;
5515 + unsigned long c3 : 4;
5516 + unsigned long c4 : 4;
5520 + unsigned long val : 32;
5524 +typedef struct _mvc_cntl_start_t {
5525 + unsigned long mc_cntl_src_1_index : 4;
5526 + unsigned long mc_cntl_dst_offset : 20;
5527 + unsigned long mc_dst_pitch_mul : 2;
5528 + unsigned long mc_cntl_src_2_index : 3;
5529 + unsigned long mc_cntl_width_height_sel : 3;
5530 +} mvc_cntl_start_t;
5533 + unsigned long val : 32;
5534 + mvc_cntl_start_t f;
5535 +} mvc_cntl_start_u;
5537 +typedef struct _e2_arithmetic_cntl_t {
5538 + unsigned long opcode : 5;
5539 + unsigned long shiftright : 4;
5540 + unsigned long clamp : 1;
5541 + unsigned long rounding : 2;
5542 + unsigned long filter_n : 3;
5543 + unsigned long : 1;
5544 + unsigned long srcblend_inv : 1;
5545 + unsigned long srcblend : 4;
5546 + unsigned long : 3;
5547 + unsigned long dstblend_inv : 1;
5548 + unsigned long dstblend : 4;
5549 + unsigned long dst_signed : 1;
5550 + unsigned long autoinc : 1;
5551 + unsigned long : 1;
5552 +} e2_arithmetic_cntl_t;
5555 + unsigned long val : 32;
5556 + e2_arithmetic_cntl_t f;
5557 +} e2_arithmetic_cntl_u;
5559 +typedef struct _debug0_t {
5560 + unsigned long debug0_r : 8;
5561 + unsigned long : 8;
5562 + unsigned long debug0_rw : 8;
5563 + unsigned long : 8;
5567 + unsigned long val : 32;
5571 +typedef struct _debug1_t {
5572 + unsigned long debug1_r : 8;
5573 + unsigned long : 8;
5574 + unsigned long debug1_rw : 8;
5575 + unsigned long : 8;
5579 + unsigned long val : 32;
5583 +typedef struct _debug2_t {
5584 + unsigned long debug2_r : 8;
5585 + unsigned long : 8;
5586 + unsigned long debug2_rw : 8;
5587 + unsigned long : 8;
5591 + unsigned long val : 32;
5595 +typedef struct _debug3_t {
5596 + unsigned long : 32;
5600 + unsigned long val : 32;
5604 +typedef struct _debug4_t {
5605 + unsigned long : 32;
5609 + unsigned long val : 32;
5613 +typedef struct _debug5_t {
5614 + unsigned long : 32;
5618 + unsigned long val : 32;
5622 +typedef struct _debug6_t {
5623 + unsigned long : 32;
5627 + unsigned long val : 32;
5631 +typedef struct _debug7_t {
5632 + unsigned long : 32;
5636 + unsigned long val : 32;
5640 +typedef struct _debug8_t {
5641 + unsigned long : 32;
5645 + unsigned long val : 32;
5649 +typedef struct _debug9_t {
5650 + unsigned long : 32;
5654 + unsigned long val : 32;
5658 +typedef struct _debug10_t {
5659 + unsigned long : 32;
5663 + unsigned long val : 32;
5667 +typedef struct _debug11_t {
5668 + unsigned long : 32;
5672 + unsigned long val : 32;
5676 +typedef struct _debug12_t {
5677 + unsigned long : 32;
5681 + unsigned long val : 32;
5685 +typedef struct _debug13_t {
5686 + unsigned long : 32;
5690 + unsigned long val : 32;
5694 +typedef struct _debug14_t {
5695 + unsigned long : 32;
5699 + unsigned long val : 32;
5703 +typedef struct _debug15_t {
5704 + unsigned long : 32;
5708 + unsigned long val : 32;
5712 +typedef struct _eng_cntl_t {
5713 + unsigned long erc_reg_rd_ws : 1;
5714 + unsigned long erc_reg_wr_ws : 1;
5715 + unsigned long erc_idle_reg_wr : 1;
5716 + unsigned long dis_engine_triggers : 1;
5717 + unsigned long dis_rop_src_uses_dst_w_h : 1;
5718 + unsigned long dis_src_uses_dst_dirmaj : 1;
5719 + unsigned long : 6;
5720 + unsigned long force_3dclk_when_2dclk : 1;
5721 + unsigned long : 19;
5725 + unsigned long val : 32;
5729 +typedef struct _eng_perf_cnt_t {
5730 + unsigned long perf_cnt : 20;
5731 + unsigned long perf_sel : 4;
5732 + unsigned long perf_en : 1;
5733 + unsigned long : 3;
5734 + unsigned long perf_clr : 1;
5735 + unsigned long : 3;
5739 + unsigned long val : 32;
5743 +typedef struct _idct_runs_t {
5744 + unsigned long idct_runs_3 : 8;
5745 + unsigned long idct_runs_2 : 8;
5746 + unsigned long idct_runs_1 : 8;
5747 + unsigned long idct_runs_0 : 8;
5751 + unsigned long val : 32;
5755 +typedef struct _idct_levels_t {
5756 + unsigned long idct_level_hi : 16;
5757 + unsigned long idct_level_lo : 16;
5761 + unsigned long val : 32;
5765 +typedef struct _idct_control_t {
5766 + unsigned long idct_ctl_luma_rd_format : 2;
5767 + unsigned long idct_ctl_chroma_rd_format : 2;
5768 + unsigned long idct_ctl_scan_pattern : 1;
5769 + unsigned long idct_ctl_intra : 1;
5770 + unsigned long idct_ctl_flush : 1;
5771 + unsigned long idct_ctl_passthru : 1;
5772 + unsigned long idct_ctl_sw_reset : 1;
5773 + unsigned long idct_ctl_constreq : 1;
5774 + unsigned long idct_ctl_scramble : 1;
5775 + unsigned long idct_ctl_alt_scan : 1;
5776 + unsigned long : 20;
5780 + unsigned long val : 32;
5784 +typedef struct _idct_auth_control_t {
5785 + unsigned long control_bits : 32;
5786 + } idct_auth_control_t;
5789 + unsigned long val : 32;
5790 + idct_auth_control_t f;
5791 +} idct_auth_control_u;
5793 +typedef struct _idct_auth_t {
5794 + unsigned long auth : 32;
5798 + unsigned long val : 32;
5802 +typedef struct _mem_cntl_t {
5803 + unsigned long : 1;
5804 + unsigned long en_mem_ch1 : 1;
5805 + unsigned long en_mem_ch2 : 1;
5806 + unsigned long int_mem_mapping : 1;
5807 + unsigned long : 28;
5811 + unsigned long val : 32;
5815 +typedef struct _mem_arb_t {
5816 + unsigned long disp_time_slot : 4;
5817 + unsigned long disp_timer : 4;
5818 + unsigned long arb_option : 1;
5819 + unsigned long : 23;
5823 + unsigned long val : 32;
5827 +typedef struct _mc_fb_location_t {
5828 + unsigned long mc_fb_start : 16;
5829 + unsigned long mc_fb_top : 16;
5830 + } mc_fb_location_t;
5833 + unsigned long val : 32;
5834 + mc_fb_location_t f;
5835 +} mc_fb_location_u;
5837 +typedef struct _mem_ext_cntl_t {
5838 + unsigned long mem_ext_enable : 1;
5839 + unsigned long mem_ap_enable : 1;
5840 + unsigned long mem_addr_mapping : 2;
5841 + unsigned long mem_wdoe_cntl : 2;
5842 + unsigned long mem_wdoe_extend : 1;
5843 + unsigned long : 1;
5844 + unsigned long mem_page_timer : 8;
5845 + unsigned long mem_dynamic_cke : 1;
5846 + unsigned long mem_sdram_tri_en : 1;
5847 + unsigned long mem_self_refresh_en : 1;
5848 + unsigned long mem_power_down : 1;
5849 + unsigned long mem_hw_power_down_en : 1;
5850 + unsigned long mem_power_down_stat : 1;
5851 + unsigned long : 3;
5852 + unsigned long mem_pd_mck : 1;
5853 + unsigned long mem_pd_ma : 1;
5854 + unsigned long mem_pd_mdq : 1;
5855 + unsigned long mem_tristate_mck : 1;
5856 + unsigned long mem_tristate_ma : 1;
5857 + unsigned long mem_tristate_mcke : 1;
5858 + unsigned long mem_invert_mck : 1;
5862 + unsigned long val : 32;
5866 +typedef struct _mc_ext_mem_location_t {
5867 + unsigned long mc_ext_mem_start : 16;
5868 + unsigned long mc_ext_mem_top : 16;
5869 + } mc_ext_mem_location_t;
5872 + unsigned long val : 32;
5873 + mc_ext_mem_location_t f;
5874 +} mc_ext_mem_location_u;
5876 +typedef struct _mem_ext_timing_cntl_t {
5877 + unsigned long mem_trp : 2;
5878 + unsigned long mem_trcd : 2;
5879 + unsigned long mem_tras : 3;
5880 + unsigned long : 1;
5881 + unsigned long mem_trrd : 2;
5882 + unsigned long mem_tr2w : 2;
5883 + unsigned long mem_twr : 2;
5884 + unsigned long : 4;
5885 + unsigned long mem_twr_mode : 1;
5886 + unsigned long : 1;
5887 + unsigned long mem_refresh_dis : 1;
5888 + unsigned long : 3;
5889 + unsigned long mem_refresh_rate : 8;
5890 + } mem_ext_timing_cntl_t;
5893 + unsigned long val : 32;
5894 + mem_ext_timing_cntl_t f;
5895 +} mem_ext_timing_cntl_u;
5897 +typedef struct _mem_sdram_mode_reg_t {
5898 + unsigned long mem_mode_reg : 14;
5899 + unsigned long : 2;
5900 + unsigned long mem_read_latency : 2;
5901 + unsigned long mem_schmen_latency : 2;
5902 + unsigned long mem_cas_latency : 2;
5903 + unsigned long mem_schmen_extend : 1;
5904 + unsigned long : 8;
5905 + unsigned long mem_sdram_reset : 1;
5906 + } mem_sdram_mode_reg_t;
5909 + unsigned long val : 32;
5910 + mem_sdram_mode_reg_t f;
5911 +} mem_sdram_mode_reg_u;
5913 +typedef struct _mem_io_cntl_t {
5914 + unsigned long mem_sn_mck : 4;
5915 + unsigned long mem_sn_ma : 4;
5916 + unsigned long mem_sn_mdq : 4;
5917 + unsigned long mem_srn_mck : 1;
5918 + unsigned long mem_srn_ma : 1;
5919 + unsigned long mem_srn_mdq : 1;
5920 + unsigned long : 1;
5921 + unsigned long mem_sp_mck : 4;
5922 + unsigned long mem_sp_ma : 4;
5923 + unsigned long mem_sp_mdq : 4;
5924 + unsigned long mem_srp_mck : 1;
5925 + unsigned long mem_srp_ma : 1;
5926 + unsigned long mem_srp_mdq : 1;
5927 + unsigned long : 1;
5931 + unsigned long val : 32;
5935 +typedef struct _mc_debug_t {
5936 + unsigned long mc_debug : 32;
5940 + unsigned long val : 32;
5944 +typedef struct _mc_bist_ctrl_t {
5945 + unsigned long mc_bist_ctrl : 32;
5949 + unsigned long val : 32;
5953 +typedef struct _mc_bist_collar_read_t {
5954 + unsigned long mc_bist_collar_read : 32;
5955 + } mc_bist_collar_read_t;
5958 + unsigned long val : 32;
5959 + mc_bist_collar_read_t f;
5960 +} mc_bist_collar_read_u;
5962 +typedef struct _tc_mismatch_t {
5963 + unsigned long tc_mismatch : 24;
5964 + unsigned long : 8;
5968 + unsigned long val : 32;
5972 +typedef struct _mc_perf_mon_cntl_t {
5973 + unsigned long clr_perf : 1;
5974 + unsigned long en_perf : 1;
5975 + unsigned long : 2;
5976 + unsigned long perf_op_a : 2;
5977 + unsigned long perf_op_b : 2;
5978 + unsigned long : 8;
5979 + unsigned long monitor_period : 8;
5980 + unsigned long perf_count_a_overflow : 1;
5981 + unsigned long perf_count_b_overflow : 1;
5982 + unsigned long : 6;
5983 + } mc_perf_mon_cntl_t;
5986 + unsigned long val : 32;
5987 + mc_perf_mon_cntl_t f;
5988 +} mc_perf_mon_cntl_u;
5990 +typedef struct _mc_perf_counters_t {
5991 + unsigned long mc_perf_counter_a : 16;
5992 + unsigned long mc_perf_counter_b : 16;
5993 + } mc_perf_counters_t;
5996 + unsigned long val : 32;
5997 + mc_perf_counters_t f;
5998 +} mc_perf_counters_u;
6000 +typedef struct _wait_until_t {
6001 + unsigned long wait_crtc_pflip : 1;
6002 + unsigned long wait_re_crtc_vline : 1;
6003 + unsigned long wait_fe_crtc_vline : 1;
6004 + unsigned long wait_crtc_vline : 1;
6005 + unsigned long wait_dma_viph0_idle : 1;
6006 + unsigned long wait_dma_viph1_idle : 1;
6007 + unsigned long wait_dma_viph2_idle : 1;
6008 + unsigned long wait_dma_viph3_idle : 1;
6009 + unsigned long wait_dma_vid_idle : 1;
6010 + unsigned long wait_dma_gui_idle : 1;
6011 + unsigned long wait_cmdfifo : 1;
6012 + unsigned long wait_ov0_flip : 1;
6013 + unsigned long wait_ov0_slicedone : 1;
6014 + unsigned long : 1;
6015 + unsigned long wait_2d_idle : 1;
6016 + unsigned long wait_3d_idle : 1;
6017 + unsigned long wait_2d_idleclean : 1;
6018 + unsigned long wait_3d_idleclean : 1;
6019 + unsigned long wait_host_idleclean : 1;
6020 + unsigned long wait_extern_sig : 1;
6021 + unsigned long cmdfifo_entries : 7;
6022 + unsigned long : 3;
6023 + unsigned long wait_both_crtc_pflip : 1;
6024 + unsigned long eng_display_select : 1;
6028 + unsigned long val : 32;
6032 +typedef struct _isync_cntl_t {
6033 + unsigned long isync_any2d_idle3d : 1;
6034 + unsigned long isync_any3d_idle2d : 1;
6035 + unsigned long isync_trig2d_idle3d : 1;
6036 + unsigned long isync_trig3d_idle2d : 1;
6037 + unsigned long isync_wait_idlegui : 1;
6038 + unsigned long isync_cpscratch_idlegui : 1;
6039 + unsigned long : 26;
6043 + unsigned long val : 32;
6047 +typedef struct _rbbm_guicntl_t {
6048 + unsigned long host_data_swap : 2;
6049 + unsigned long : 30;
6053 + unsigned long val : 32;
6057 +typedef struct _rbbm_status_t {
6058 + unsigned long cmdfifo_avail : 7;
6059 + unsigned long : 1;
6060 + unsigned long hirq_on_rbb : 1;
6061 + unsigned long cprq_on_rbb : 1;
6062 + unsigned long cfrq_on_rbb : 1;
6063 + unsigned long hirq_in_rtbuf : 1;
6064 + unsigned long cprq_in_rtbuf : 1;
6065 + unsigned long cfrq_in_rtbuf : 1;
6066 + unsigned long cf_pipe_busy : 1;
6067 + unsigned long eng_ev_busy : 1;
6068 + unsigned long cp_cmdstrm_busy : 1;
6069 + unsigned long e2_busy : 1;
6070 + unsigned long rb2d_busy : 1;
6071 + unsigned long rb3d_busy : 1;
6072 + unsigned long se_busy : 1;
6073 + unsigned long re_busy : 1;
6074 + unsigned long tam_busy : 1;
6075 + unsigned long tdm_busy : 1;
6076 + unsigned long pb_busy : 1;
6077 + unsigned long : 6;
6078 + unsigned long gui_active : 1;
6082 + unsigned long val : 32;
6086 +typedef struct _rbbm_cntl_t {
6087 + unsigned long rb_settle : 4;
6088 + unsigned long abortclks_hi : 3;
6089 + unsigned long : 1;
6090 + unsigned long abortclks_cp : 3;
6091 + unsigned long : 1;
6092 + unsigned long abortclks_cfifo : 3;
6093 + unsigned long : 2;
6094 + unsigned long cpq_data_swap : 1;
6095 + unsigned long : 3;
6096 + unsigned long no_abort_idct : 1;
6097 + unsigned long no_abort_bios : 1;
6098 + unsigned long no_abort_fb : 1;
6099 + unsigned long no_abort_cp : 1;
6100 + unsigned long no_abort_hi : 1;
6101 + unsigned long no_abort_hdp : 1;
6102 + unsigned long no_abort_mc : 1;
6103 + unsigned long no_abort_aic : 1;
6104 + unsigned long no_abort_vip : 1;
6105 + unsigned long no_abort_disp : 1;
6106 + unsigned long no_abort_cg : 1;
6110 + unsigned long val : 32;
6114 +typedef struct _rbbm_soft_reset_t {
6115 + unsigned long soft_reset_cp : 1;
6116 + unsigned long soft_reset_hi : 1;
6117 + unsigned long reserved3 : 3;
6118 + unsigned long soft_reset_e2 : 1;
6119 + unsigned long reserved2 : 2;
6120 + unsigned long soft_reset_mc : 1;
6121 + unsigned long reserved1 : 2;
6122 + unsigned long soft_reset_disp : 1;
6123 + unsigned long soft_reset_cg : 1;
6124 + unsigned long : 19;
6125 + } rbbm_soft_reset_t;
6128 + unsigned long val : 32;
6129 + rbbm_soft_reset_t f;
6130 +} rbbm_soft_reset_u;
6132 +typedef struct _nqwait_until_t {
6133 + unsigned long wait_gui_idle : 1;
6134 + unsigned long : 31;
6138 + unsigned long val : 32;
6142 +typedef struct _rbbm_debug_t {
6143 + unsigned long rbbm_debug : 32;
6147 + unsigned long val : 32;
6151 +typedef struct _rbbm_cmdfifo_addr_t {
6152 + unsigned long cmdfifo_addr : 6;
6153 + unsigned long : 26;
6154 + } rbbm_cmdfifo_addr_t;
6157 + unsigned long val : 32;
6158 + rbbm_cmdfifo_addr_t f;
6159 +} rbbm_cmdfifo_addr_u;
6161 +typedef struct _rbbm_cmdfifo_datal_t {
6162 + unsigned long cmdfifo_datal : 32;
6163 + } rbbm_cmdfifo_datal_t;
6166 + unsigned long val : 32;
6167 + rbbm_cmdfifo_datal_t f;
6168 +} rbbm_cmdfifo_datal_u;
6170 +typedef struct _rbbm_cmdfifo_datah_t {
6171 + unsigned long cmdfifo_datah : 12;
6172 + unsigned long : 20;
6173 + } rbbm_cmdfifo_datah_t;
6176 + unsigned long val : 32;
6177 + rbbm_cmdfifo_datah_t f;
6178 +} rbbm_cmdfifo_datah_u;
6180 +typedef struct _rbbm_cmdfifo_stat_t {
6181 + unsigned long cmdfifo_rptr : 6;
6182 + unsigned long : 2;
6183 + unsigned long cmdfifo_wptr : 6;
6184 + unsigned long : 18;
6185 + } rbbm_cmdfifo_stat_t;
6188 + unsigned long val : 32;
6189 + rbbm_cmdfifo_stat_t f;
6190 +} rbbm_cmdfifo_stat_u;
6192 +typedef struct _clk_pin_cntl_t {
6193 + unsigned long osc_en : 1;
6194 + unsigned long osc_gain : 5;
6195 + unsigned long dont_use_xtalin : 1;
6196 + unsigned long xtalin_pm_en : 1;
6197 + unsigned long xtalin_dbl_en : 1;
6198 + unsigned long : 7;
6199 + unsigned long cg_debug : 16;
6203 + unsigned long val : 32;
6207 +typedef struct _pll_ref_fb_div_t {
6208 + unsigned long pll_ref_div : 4;
6209 + unsigned long : 4;
6210 + unsigned long pll_fb_div_int : 6;
6211 + unsigned long : 2;
6212 + unsigned long pll_fb_div_frac : 3;
6213 + unsigned long : 1;
6214 + unsigned long pll_reset_time : 4;
6215 + unsigned long pll_lock_time : 8;
6216 + } pll_ref_fb_div_t;
6219 + unsigned long val : 32;
6220 + pll_ref_fb_div_t f;
6221 +} pll_ref_fb_div_u;
6223 +typedef struct _pll_cntl_t {
6224 + unsigned long pll_pwdn : 1;
6225 + unsigned long pll_reset : 1;
6226 + unsigned long pll_pm_en : 1;
6227 + unsigned long pll_mode : 1;
6228 + unsigned long pll_refclk_sel : 1;
6229 + unsigned long pll_fbclk_sel : 1;
6230 + unsigned long pll_tcpoff : 1;
6231 + unsigned long pll_pcp : 3;
6232 + unsigned long pll_pvg : 3;
6233 + unsigned long pll_vcofr : 1;
6234 + unsigned long pll_ioffset : 2;
6235 + unsigned long pll_pecc_mode : 2;
6236 + unsigned long pll_pecc_scon : 2;
6237 + unsigned long pll_dactal : 4;
6238 + unsigned long pll_cp_clip : 2;
6239 + unsigned long pll_conf : 3;
6240 + unsigned long pll_mbctrl : 2;
6241 + unsigned long pll_ring_off : 1;
6245 + unsigned long val : 32;
6249 +typedef struct _sclk_cntl_t {
6250 + unsigned long sclk_src_sel : 2;
6251 + unsigned long : 2;
6252 + unsigned long sclk_post_div_fast : 4;
6253 + unsigned long sclk_clkon_hys : 3;
6254 + unsigned long sclk_post_div_slow : 4;
6255 + unsigned long disp_cg_ok2switch_en : 1;
6256 + unsigned long sclk_force_reg : 1;
6257 + unsigned long sclk_force_disp : 1;
6258 + unsigned long sclk_force_mc : 1;
6259 + unsigned long sclk_force_extmc : 1;
6260 + unsigned long sclk_force_cp : 1;
6261 + unsigned long sclk_force_e2 : 1;
6262 + unsigned long sclk_force_e3 : 1;
6263 + unsigned long sclk_force_idct : 1;
6264 + unsigned long sclk_force_bist : 1;
6265 + unsigned long busy_extend_cp : 1;
6266 + unsigned long busy_extend_e2 : 1;
6267 + unsigned long busy_extend_e3 : 1;
6268 + unsigned long busy_extend_idct : 1;
6269 + unsigned long : 3;
6273 + unsigned long val : 32;
6277 +typedef struct _pclk_cntl_t {
6278 + unsigned long pclk_src_sel : 2;
6279 + unsigned long : 2;
6280 + unsigned long pclk_post_div : 4;
6281 + unsigned long : 8;
6282 + unsigned long pclk_force_disp : 1;
6283 + unsigned long : 15;
6287 + unsigned long val : 32;
6291 +typedef struct _clk_test_cntl_t {
6292 + unsigned long testclk_sel : 4;
6293 + unsigned long : 3;
6294 + unsigned long start_check_freq : 1;
6295 + unsigned long tstcount_rst : 1;
6296 + unsigned long : 15;
6297 + unsigned long test_count : 8;
6298 + } clk_test_cntl_t;
6301 + unsigned long val : 32;
6302 + clk_test_cntl_t f;
6305 +typedef struct _pwrmgt_cntl_t {
6306 + unsigned long pwm_enable : 1;
6307 + unsigned long : 1;
6308 + unsigned long pwm_mode_req : 2;
6309 + unsigned long pwm_wakeup_cond : 2;
6310 + unsigned long pwm_fast_noml_hw_en : 1;
6311 + unsigned long pwm_noml_fast_hw_en : 1;
6312 + unsigned long pwm_fast_noml_cond : 4;
6313 + unsigned long pwm_noml_fast_cond : 4;
6314 + unsigned long pwm_idle_timer : 8;
6315 + unsigned long pwm_busy_timer : 8;
6319 + unsigned long val : 32;
6323 +typedef struct _pwrmgt_status_t {
6324 + unsigned long pwm_mode : 2;
6325 + unsigned long : 30;
6326 + } pwrmgt_status_t;
6329 + unsigned long val : 32;
6330 + pwrmgt_status_t f;
6334 +#endif //_W100_REGS_H_
6335 Index: git/hw/kdrive/Makefile.am
6336 ===================================================================
6337 --- git.orig/hw/kdrive/Makefile.am 2006-09-02 12:12:13.000000000 +0200
6338 +++ git/hw/kdrive/Makefile.am 2006-09-02 12:12:14.000000000 +0200
6340 FBDEV_SUBDIRS = fbdev epson
6344 +W100_SUBDIRS = w100
6358 Index: git/configure.ac
6359 ===================================================================
6360 --- git.orig/configure.ac 2006-09-02 12:12:14.000000000 +0200
6361 +++ git/configure.ac 2006-09-02 12:12:14.000000000 +0200
6363 AC_ARG_ENABLE(kdrive, AS_HELP_STRING([--enable-kdrive], [Build kdrive servers (default: no)]), [KDRIVE=$enableval], [KDRIVE=no])
6364 AC_ARG_ENABLE(xephyr, AS_HELP_STRING([--enable-xephyr], [Build the kdrive Xephyr server (default: auto)]), [XEPHYR=$enableval], [XEPHYR=auto])
6365 AC_ARG_ENABLE(xsdl, AS_HELP_STRING([--enable-xsdl], [Build the kdrive Xsdl server (default: auto)]), [XSDL=$enableval], [XSDL=auto])
6366 +AC_ARG_ENABLE(w100, AS_HELP_STRING([--enable-w100], [Build the kdrive Xw100 server (default: no)]), [KDRIVEW100=$enableval], [KDRIVEW100=no])
6368 AC_ARG_ENABLE(freetype, AS_HELP_STRING([ --enable-freetype], [Build Xprint FreeType backend (default: yes)]), [XP_USE_FREETYPE=$enableval],[XP_USE_FREETYPE=no])
6369 AC_ARG_WITH(freetype-config, AS_HELP_STRING([ --with-freetype-config=PROG], [Use FreeType configuration program PROG (default: auto)]), freetype_config=$withval, freetype_config=auto)
6370 @@ -1519,6 +1520,10 @@
6371 AC_SUBST([XSDL_LIBS])
6372 AC_SUBST([XSDL_INCS])
6374 +AM_CONDITIONAL(KDRIVEW100, [test "x$KDRIVEW100" = xyes])
6375 +if test "x$KDRIVEW100" = xyes; then
6376 + AC_DEFINE(KDRIVEW100, 1, [Build Xw100 server])
6379 dnl these only go in xkb-config.h (which is shared by the Xorg and Xnest servers)
6380 AC_DEFINE(__XKBDEFRULES__, "xorg", [Default XKB rules])
6381 @@ -1753,6 +1758,7 @@
6382 hw/kdrive/epson/Makefile
6383 hw/kdrive/fake/Makefile
6384 hw/kdrive/fbdev/Makefile
6385 +hw/kdrive/w100/Makefile
6386 hw/kdrive/i810/Makefile
6387 hw/kdrive/linux/Makefile
6388 hw/kdrive/mach64/Makefile