1/* $NetBSD: sticvar.h,v 1.17 2008/04/28 20:23:58 martin Exp $ */ 2 3/*- 4 * Copyright (c) 1999, 2000, 2001 The NetBSD Foundation, Inc. 5 * All rights reserved. 6 * 7 * This code is derived from software contributed to The NetBSD Foundation 8 * by Andrew Doran. 9 * 10 * Redistribution and use in source and binary forms, with or without 11 * modification, are permitted provided that the following conditions 12 * are met: 13 * 1. Redistributions of source code must retain the above copyright 14 * notice, this list of conditions and the following disclaimer. 15 * 2. Redistributions in binary form must reproduce the above copyright 16 * notice, this list of conditions and the following disclaimer in the 17 * documentation and/or other materials provided with the distribution. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 * POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32#ifndef _TC_STICVAR_H_ 33#define _TC_STICVAR_H_ 34 35#if defined(pmax) 36#define STIC_KSEG_TO_PHYS(x) MIPS_KSEG0_TO_PHYS(x) 37#elif defined(alpha) 38#define STIC_KSEG_TO_PHYS(x) ALPHA_K0SEG_TO_PHYS((vaddr_t)x) 39#else 40#error No support for your architecture 41#endif 42 43#define STIC_MAXDV 5 44 45struct stic_hwcmap256 { 46#define CMAP_SIZE 256 /* 256 R/G/B entries */ 47 u_int8_t r[CMAP_SIZE]; 48 u_int8_t g[CMAP_SIZE]; 49 u_int8_t b[CMAP_SIZE]; 50}; 51 52struct stic_hwcursor64 { 53 struct wsdisplay_curpos cc_pos; 54 struct wsdisplay_curpos cc_hot; 55 struct wsdisplay_curpos cc_size; 56#define CURSOR_MAX_SIZE 64 57 u_int8_t cc_color[6]; 58 u_int64_t cc_image[CURSOR_MAX_SIZE]; 59 u_int64_t cc_mask[CURSOR_MAX_SIZE]; 60}; 61 62struct stic_screen { 63 struct stic_info *ss_si; 64 u_int16_t *ss_backing; 65 int ss_flags; 66 int ss_curx; 67 int ss_cury; 68}; 69 70#define SS_ALLOCED 0x01 71#define SS_ACTIVE 0x02 72#define SS_CURENB 0x04 73 74struct stic_info { 75 struct device *si_dv; 76 77 u_int32_t *si_stamp; 78 u_int32_t *si_buf; 79 u_int32_t *si_vdac; 80 u_int32_t *si_vdac_reset; 81 volatile struct stic_regs *si_stic; 82 volatile struct stic_xcomm *si_sxc; 83 84 u_int32_t *(*si_pbuf_get)(struct stic_info *); 85 int (*si_pbuf_post)(struct stic_info *, u_int32_t *); 86 int (*si_ioctl)(struct stic_info *, u_long, void *, int, 87 struct lwp *); 88 int si_pbuf_select; 89 int si_hwflags; 90 91 struct stic_screen *si_curscreen; 92 struct wsdisplay_font *si_font; 93 94 int si_consw; 95 int si_consh; 96 int si_fontw; 97 int si_fonth; 98 int si_stamph; 99 int si_stamphm; 100 int si_stampw; 101 int si_depth; 102 int si_disptype; 103 int si_dispmode; 104 int si_unit; 105 106 tc_addr_t si_slotbase; 107 paddr_t si_buf_phys; 108 size_t si_buf_size; 109 110 int si_flags; 111 struct stic_hwcursor64 si_cursor; 112 struct stic_hwcmap256 si_cmap; 113 114 struct callout si_switch_callout; 115 void (*si_switchcb)(void *, int, int); 116 void *si_switchcbarg; 117}; 118 119#define SI_CURENB_CHANGED 0x0001 120#define SI_CURCMAP_CHANGED 0x0002 121#define SI_CURSHAPE_CHANGED 0x0004 122#define SI_CMAP_CHANGED 0x0008 123#define SI_ALL_CHANGED 0x000f 124#define SI_DVOPEN 0x0010 125 126void stic_init(struct stic_info *); 127void stic_attach(device_t, struct stic_info *, int); 128void stic_cnattach(struct stic_info *); 129void stic_reset(struct stic_info *); 130void stic_flush(struct stic_info *); 131 132extern struct stic_info stic_consinfo; 133 134#endif /* !_TC_STICVAR_H_ */ 135