summitreg.h revision 1.6 1 /* $NetBSD: summitreg.h,v 1.6 2024/11/28 12:29:55 macallan Exp $ */
2
3 /*
4 * Copyright (c) 2024 Michael Lorenz
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
20 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
22 * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
24 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
25 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
26 * THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29 /* HP Visualize FX 4 and related hardware, aka Summit */
30
31 /*
32 * register values, found by disassembling the ROM
33 * some found by Sven Schnelle
34 * ( see https://patchwork.kernel.org/project/linux-parisc/patch/20211031204952.25678-2-svens@stackframe.org/ )
35 * some by me
36 */
37
38 #ifndef SUMMITREG_H
39 #define SUMMITREG_H
40
41 #define VISFX_STATUS 0x641400 // zero when idle
42 #define VISFX_FIFO 0x641440
43 #define VISFX_VRAM_WRITE_MODE 0xa00808
44 #define VISFX_VRAM_READ_MODE 0xa0080c // this is a guess
45 #define VISFX_PIXEL_MASK 0xa0082c
46 #define VISFX_FG_COLOUR 0xa0083c
47 #define VISFX_BG_COLOUR 0xa00844
48 #define VISFX_PLANE_MASK 0xa0084c
49 /* this controls what we see in the FB aperture */
50 #define VISFX_APERTURE_ACCESS 0xa00858
51 #define VISFX_DEPTH_8 0xb0
52 #define VISFX_DEPTH_32 0xd0
53
54 #define VISFX_VRAM_WRITE_DATA_INCRX 0xa60000
55 #define VISFX_VRAM_WRITE_DATA_INCRY 0xa68000
56 #define VISFX_VRAM_WRITE_DEST 0xac1000
57
58 #define VISFX_CLIP_TL 0xac1050 /* clipping rect, top/left */
59 #define VISFX_CLIP_WH 0xac1054 /* clipping rect, w/h */
60
61 #define VISFX_WRITE_MODE_PLAIN 0x02000000
62 #define VISFX_WRITE_MODE_EXPAND 0x050004c0
63 #define VISFX_WRITE_MODE_FILL 0x050008c0
64 #define VISFX_WRITE_MODE_TRANSPARENT 0x00000800 /* bg is tansparent */
65 #define VISFX_WRITE_MODE_MASK 0x00000400 /* apply pixel mask */
66
67 #define VISFX_READ_MODE_COPY 0x02000400
68
69 /* fill */
70 #define VISFX_START 0xb3c000
71 #define VISFX_SIZE 0xb3c808 /* start, FX4 uses 0xb3c908 */
72
73 /* copy */
74 #define VISFX_COPY_SRC 0xb3c010
75 #define VISFX_COPY_WH 0xb3c008
76 #define VISFX_COPY_DST 0xb3cc00
77 /*
78 * looks like ORing 0x800 to the register address starts a command
79 * 0x100 and 0x400 seem to have functions as well
80 */
81
82 #define VISFX_COLOR_MASK 0x800018
83 #define VISFX_COLOR_INDEX 0x800020
84 #define VISFX_COLOR_VALUE 0x800024
85
86 #define VISFX_CURSOR_POS 0x400000
87 #define VISFX_CURSOR_INDEX 0x400004
88 #define VISFX_CURSOR_DATA 0x400008
89 #define VISFX_CURSOR_COLOR 0x400010
90 #define VISFX_CURSOR_ENABLE 0x80000000
91
92 #endif /* SUMMITREG_H */
93