1/* $NetBSD: ffbvar.h,v 1.12 2011/10/31 08:28:46 jdc Exp $ */ 2/* $OpenBSD: creatorvar.h,v 1.6 2002/07/30 19:48:15 jason Exp $ */ 3 4/* 5 * Copyright (c) 2002 Jason L. Wright (jason@thought.net), 6 * Federico G. Schwindt (fgsch@openbsd.org) 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by Jason L. Wright 20 * 4. The name of the author may not be used to endorse or promote products 21 * derived from this software without specific prior written permission. 22 * 23 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 24 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 25 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 26 * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, 27 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 28 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 29 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 30 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 31 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 32 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 33 * POSSIBILITY OF SUCH DAMAGE. 34 */ 35 36#include <dev/wscons/wsdisplay_vconsvar.h> 37#include <dev/videomode/videomode.h> 38#include <dev/videomode/edidvar.h> 39#include <dev/videomode/edidreg.h> 40 41#include <dev/i2c/i2cvar.h> 42#include <dev/i2c/i2c_bitbang.h> 43 44#define FFB_CREATOR 0 45#define FFB_AFB 1 46 47#define FFB_CFFLAG_NOACCEL 0x1 48 49#define EDID_DATA_LEN 128 50 51struct ffb_softc { 52 device_t sc_dev; 53 struct fbdevice sc_fb; 54 bus_space_tag_t sc_bt; 55 bus_space_handle_t sc_dac_h; 56 bus_space_handle_t sc_fbc_h; 57 bus_space_handle_t sc_sfb32_h; 58 uint32_t *sc_sfb32; 59 bus_addr_t sc_addrs[FFB_NREGS]; 60 bus_size_t sc_sizes[FFB_NREGS]; 61 int sc_height, sc_width, sc_linebytes, sc_depth; 62 int sc_nscreens, sc_nreg; 63 int sc_console; 64 int sc_node; 65 int sc_type; 66 u_int sc_dacrev; 67 uint8_t sc_edid_data[EDID_DATA_LEN]; 68 struct edid_info sc_edid_info; 69 u_int sc_locked; 70 int sc_mode; 71 int sc_accel, sc_needredraw; 72 int32_t sc_fifo_cache, sc_fg_cache, sc_bg_cache; 73 const char *sc_conf; 74 75 /* I2C stuff */ 76 struct i2c_controller sc_i2c; 77 78 /* virtual console stuff */ 79 struct vcons_data vd; 80}; 81 82#define DAC_WRITE(sc,r,v) \ 83 bus_space_write_4((sc)->sc_bt, (sc)->sc_dac_h, (r), (v)) 84#define DAC_READ(sc,r) \ 85 bus_space_read_4((sc)->sc_bt, (sc)->sc_dac_h, (r)) 86#define FBC_WRITE(sc,r,v) \ 87 bus_space_write_4((sc)->sc_bt, (sc)->sc_fbc_h, (r), (v)) 88#define FBC_READ(sc,r) \ 89 bus_space_read_4((sc)->sc_bt, (sc)->sc_fbc_h, (r)) 90 91void ffb_attach(device_t); 92