Home | History | Annotate | Line # | Download | only in pci
      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