veritefbio.h revision 1.1 1 1.1 rkujawa /* $NetBSD: veritefbio.h,v 1.1 2026/07/11 15:18:21 rkujawa Exp $ */
2 1.1 rkujawa
3 1.1 rkujawa /*
4 1.1 rkujawa * Copyright (c) 2026 The NetBSD Foundation, Inc.
5 1.1 rkujawa * All rights reserved.
6 1.1 rkujawa *
7 1.1 rkujawa * This code is derived from software contributed to The NetBSD Foundation
8 1.1 rkujawa * by Radoslaw Kujawa.
9 1.1 rkujawa *
10 1.1 rkujawa * Redistribution and use in source and binary forms, with or without
11 1.1 rkujawa * modification, are permitted provided that the following conditions
12 1.1 rkujawa * are met:
13 1.1 rkujawa * 1. Redistributions of source code must retain the above copyright
14 1.1 rkujawa * notice, this list of conditions and the following disclaimer.
15 1.1 rkujawa * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 rkujawa * notice, this list of conditions and the following disclaimer in the
17 1.1 rkujawa * documentation and/or other materials provided with the distribution.
18 1.1 rkujawa *
19 1.1 rkujawa * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
20 1.1 rkujawa * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
21 1.1 rkujawa * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
22 1.1 rkujawa * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
23 1.1 rkujawa * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
24 1.1 rkujawa * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 1.1 rkujawa * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 1.1 rkujawa * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 1.1 rkujawa * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
28 1.1 rkujawa * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 1.1 rkujawa */
30 1.1 rkujawa
31 1.1 rkujawa /*
32 1.1 rkujawa * veritefb RISC debug ioctl interface.
33 1.1 rkujawa *
34 1.1 rkujawa * Only available in kernels built with the VERITEFB_DEBUG.
35 1.1 rkujawa */
36 1.1 rkujawa
37 1.1 rkujawa #ifndef VERITEFBIO_H
38 1.1 rkujawa #define VERITEFBIO_H
39 1.1 rkujawa
40 1.1 rkujawa #include <sys/ioccom.h>
41 1.1 rkujawa
42 1.1 rkujawa #define VERITEFB_DIAG_RING 16
43 1.1 rkujawa
44 1.1 rkujawa struct veritefb_dbg_diag {
45 1.1 rkujawa uint32_t vd_accel; /* 0 off, 1 sw-degraded, 2 on */
46 1.1 rkujawa uint32_t vd_pc; /* sampled RISC program counter */
47 1.1 rkujawa uint32_t vd_fifoinfree;
48 1.1 rkujawa uint32_t vd_fifooutvalid;
49 1.1 rkujawa uint32_t vd_debugreg;
50 1.1 rkujawa uint32_t vd_heartbeat; /* 0 ok, 1 skipped, 2 failed */
51 1.1 rkujawa uint32_t vd_ringcount; /* total FIFO words ever written */
52 1.1 rkujawa uint32_t vd_ring[VERITEFB_DIAG_RING]; /* newest last */
53 1.1 rkujawa };
54 1.1 rkujawa
55 1.1 rkujawa struct veritefb_dbg_rw {
56 1.1 rkujawa uint32_t vr_addr; /* register index or address */
57 1.1 rkujawa uint32_t vr_val;
58 1.1 rkujawa };
59 1.1 rkujawa
60 1.1 rkujawa #define VERITEFB_DBG_DIAG _IOR('V', 100, struct veritefb_dbg_diag)
61 1.1 rkujawa #define VERITEFB_DBG_HOLD _IO('V', 101)
62 1.1 rkujawa #define VERITEFB_DBG_CONT _IO('V', 102)
63 1.1 rkujawa #define VERITEFB_DBG_RDREG _IOWR('V', 103, struct veritefb_dbg_rw)
64 1.1 rkujawa #define VERITEFB_DBG_RDMEM _IOWR('V', 104, struct veritefb_dbg_rw)
65 1.1 rkujawa #define VERITEFB_DBG_FAULT _IO('V', 105) /* wedge on purpose */
66 1.1 rkujawa #define VERITEFB_DBG_RESET _IOR('V', 106, int) /* reload + restart */
67 1.1 rkujawa
68 1.1 rkujawa /* accumulated per-op statistics */
69 1.1 rkujawa struct veritefb_dbg_stats {
70 1.1 rkujawa uint64_t vs_count[8];
71 1.1 rkujawa uint64_t vs_us[8];
72 1.1 rkujawa };
73 1.1 rkujawa #define VFB_STAT_FILL 0 /* eraserows/erasecols */
74 1.1 rkujawa #define VFB_STAT_BLT 1 /* copyrows/copycols */
75 1.1 rkujawa #define VFB_STAT_CHAR_SPACE 2 /* putchar: space rectfill */
76 1.1 rkujawa #define VFB_STAT_CHAR_HIT 3 /* putchar: glyphcache hit */
77 1.1 rkujawa #define VFB_STAT_CHAR_ADD 4 /* putchar: SW render + cache add */
78 1.1 rkujawa #define VFB_STAT_CHAR_SW 5 /* putchar: SW fallback */
79 1.1 rkujawa
80 1.1 rkujawa #define VERITEFB_DBG_STATS _IOR('V', 108, struct veritefb_dbg_stats)
81 1.1 rkujawa #define VERITEFB_DBG_STATCLR _IO('V', 109)
82 1.1 rkujawa
83 1.1 rkujawa /* raw byte access to the chip register window (offset < 0x100) */
84 1.1 rkujawa #define VERITEFB_DBG_IO_IOSPACE 0x1000 /* vr_addr flag: force the I/O BAR */
85 1.1 rkujawa #define VERITEFB_DBG_RDIO _IOWR('V', 110, struct veritefb_dbg_rw)
86 1.1 rkujawa #define VERITEFB_DBG_WRIO _IOW('V', 111, struct veritefb_dbg_rw)
87 1.1 rkujawa
88 1.1 rkujawa #endif /* VERITEFBIO_H */
89