1 1.28 riastrad /* $NetBSD: genfbvar.h,v 1.28 2022/07/17 13:10:54 riastradh Exp $ */ 2 1.1 macallan 3 1.1 macallan /*- 4 1.1 macallan * Copyright (c) 2007 Michael Lorenz 5 1.1 macallan * All rights reserved. 6 1.1 macallan * 7 1.1 macallan * Redistribution and use in source and binary forms, with or without 8 1.1 macallan * modification, are permitted provided that the following conditions 9 1.1 macallan * are met: 10 1.1 macallan * 1. Redistributions of source code must retain the above copyright 11 1.1 macallan * notice, this list of conditions and the following disclaimer. 12 1.1 macallan * 2. Redistributions in binary form must reproduce the above copyright 13 1.1 macallan * notice, this list of conditions and the following disclaimer in the 14 1.1 macallan * documentation and/or other materials provided with the distribution. 15 1.1 macallan * 16 1.1 macallan * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17 1.1 macallan * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18 1.1 macallan * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 1.1 macallan * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20 1.1 macallan * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 1.1 macallan * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 1.1 macallan * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 1.1 macallan * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 1.1 macallan * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 1.1 macallan * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 1.1 macallan * POSSIBILITY OF SUCH DAMAGE. 27 1.1 macallan */ 28 1.1 macallan 29 1.1 macallan #ifndef GENFBVAR_H 30 1.1 macallan #define GENFBVAR_H 31 1.1 macallan 32 1.22 riastrad #ifdef _KERNEL_OPT 33 1.13 ahoka #include "opt_splash.h" 34 1.22 riastrad #endif 35 1.13 ahoka 36 1.1 macallan #include <sys/param.h> 37 1.1 macallan #include <sys/buf.h> 38 1.1 macallan #include <sys/conf.h> 39 1.1 macallan #include <sys/device.h> 40 1.1 macallan 41 1.5 ad #include <sys/bus.h> 42 1.2 macallan 43 1.1 macallan #include <dev/wscons/wsconsio.h> 44 1.1 macallan #include <dev/wscons/wsdisplayvar.h> 45 1.1 macallan #include <dev/rasops/rasops.h> 46 1.1 macallan 47 1.1 macallan #include <dev/wscons/wsdisplay_vconsvar.h> 48 1.22 riastrad #ifdef _KERNEL_OPT 49 1.15 macallan #include "opt_genfb.h" 50 1.22 riastrad #endif 51 1.1 macallan 52 1.13 ahoka #ifdef SPLASHSCREEN 53 1.13 ahoka #define GENFB_DISABLE_TEXT 54 1.13 ahoka #include <dev/splash/splash.h> 55 1.13 ahoka #endif 56 1.13 ahoka 57 1.26 macallan #if GENFB_GLYPHCACHE > 0 58 1.26 macallan #include <dev/wscons/wsdisplay_glyphcachevar.h> 59 1.26 macallan #endif 60 1.26 macallan 61 1.18 jmcneill struct genfb_softc; 62 1.18 jmcneill 63 1.1 macallan struct genfb_ops { 64 1.1 macallan int (*genfb_ioctl)(void *, void *, u_long, void *, int, struct lwp *); 65 1.1 macallan paddr_t (*genfb_mmap)(void *, void *, off_t, int); 66 1.8 jmcneill int (*genfb_borrow)(void *, bus_addr_t, bus_space_handle_t *); 67 1.24 riastrad int (*genfb_enable_polling)(void *); 68 1.24 riastrad int (*genfb_disable_polling)(void *); 69 1.1 macallan }; 70 1.1 macallan 71 1.3 macallan struct genfb_colormap_callback { 72 1.3 macallan void *gcc_cookie; 73 1.3 macallan void (*gcc_set_mapreg)(void *, int, int, int, int); 74 1.3 macallan }; 75 1.3 macallan 76 1.21 macallan /* 77 1.21 macallan * Integer parameter provider. Each callback shall return 0 on success, 78 1.21 macallan * and an error(2) number on failure. The gpc_upd_parameter callback is 79 1.21 macallan * optional (i.e. it can be NULL). 80 1.21 macallan * 81 1.21 macallan * This structure is used for backlight and brightness control. The 82 1.21 macallan * expected parameter range is: 83 1.21 macallan * 84 1.21 macallan * [0, 1] for backlight 85 1.21 macallan * [0, 255] for brightness 86 1.21 macallan */ 87 1.21 macallan struct genfb_parameter_callback { 88 1.16 macallan void *gpc_cookie; 89 1.21 macallan int (*gpc_get_parameter)(void *, int *); 90 1.21 macallan int (*gpc_set_parameter)(void *, int); 91 1.21 macallan int (*gpc_upd_parameter)(void *, int); 92 1.16 macallan }; 93 1.16 macallan 94 1.11 jmcneill struct genfb_pmf_callback { 95 1.14 dyoung bool (*gpc_suspend)(device_t, const pmf_qual_t *); 96 1.14 dyoung bool (*gpc_resume)(device_t, const pmf_qual_t *); 97 1.11 jmcneill }; 98 1.11 jmcneill 99 1.18 jmcneill struct genfb_mode_callback { 100 1.18 jmcneill bool (*gmc_setmode)(struct genfb_softc *, int); 101 1.18 jmcneill }; 102 1.18 jmcneill 103 1.1 macallan struct genfb_softc { 104 1.17 macallan device_t sc_dev; 105 1.28 riastrad struct genfb_private *sc_private; 106 1.1 macallan struct vcons_data vd; 107 1.11 jmcneill struct genfb_pmf_callback *sc_pmfcb; 108 1.4 macallan void *sc_fbaddr; /* kva */ 109 1.2 macallan bus_addr_t sc_fboffset; /* bus address */ 110 1.1 macallan int sc_width, sc_height, sc_stride, sc_depth; 111 1.1 macallan size_t sc_fbsize; 112 1.1 macallan }; 113 1.1 macallan 114 1.7 jmcneill void genfb_cnattach(void); 115 1.27 mlelstv int genfb_cndetach(void); 116 1.9 jmcneill void genfb_disable(void); 117 1.7 jmcneill int genfb_is_console(void); 118 1.9 jmcneill int genfb_is_enabled(void); 119 1.2 macallan void genfb_init(struct genfb_softc *); 120 1.1 macallan int genfb_attach(struct genfb_softc *, struct genfb_ops *); 121 1.8 jmcneill int genfb_borrow(bus_addr_t, bus_space_handle_t *); 122 1.11 jmcneill void genfb_restore_palette(struct genfb_softc *); 123 1.19 jmcneill void genfb_enable_polling(device_t); 124 1.19 jmcneill void genfb_disable_polling(device_t); 125 1.1 macallan 126 1.1 macallan #endif /* GENFBVAR_H */ 127