summitreg.h revision 1.2 1 /* $NetBSD: summitreg.h,v 1.2 2024/11/26 14:53:33 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 #define VISFX_VRAM_WRITE_DATA_INCRX 0xa60000
50 #define VISFX_VRAM_WRITE_DATA_INCRY 0xa68000
51 #define VISFX_VRAM_WRITE_DEST 0xac1000
52
53 #define VISFX_WRITE_MODE_PLAIN 0x02000000
54 #define VISFX_WRITE_MODE_EXPAND 0x050004c0
55 #define VISFX_WRITE_MODE_FILL 0x050008c0
56 #define VISFX_WRITE_MODE_TRANSPARENT 0x00000800
57
58 #define VISFX_READ_MODE_COPY 0x02000400
59
60 /* fill */
61 #define VISFX_START 0xb3c000
62 #define VISFX_SIZE 0xb3c808 /* start, FX4 uses 0xb3c908 */
63
64 /* copy */
65 #define VISFX_COPY_SRC 0xb3c010
66 #define VISFX_COPY_WH 0xb3c008
67 #define VISFX_COPY_DST 0xb3cc00
68 /*
69 * looks like ORing 0x800 to the register address starts a command
70 * 0x100 and 0x400 seem to have functions as well
71 */
72
73 #define VISFX_COLOR_MASK 0x800018
74 #define VISFX_COLOR_INDEX 0x800020
75 #define VISFX_COLOR_VALUE 0x800024
76
77 #define VISFX_CURSOR_POS 0x400000
78 #define VISFX_CURSOR_INDEX 0x400004
79 #define VISFX_CURSOR_DATA 0x400008
80 #define VISFX_CURSOR_COLOR 0x400010
81 #define VISFX_CURSOR_ENABLE 0x80000000
82
83 #endif