Module Name: src Committed By: rkujawa Date: Thu Jan 31 11:57:07 UTC 2013
Modified Files: src/sys/dev/pci: tdvfb.c Log Message: - Map memory space with BUS_SPACE_MAP_LINEAR - Support WSDISPLAYIO_GET_FBINFO - Improve debugging To generate a diff of this commit: cvs rdiff -u -r1.4 -r1.5 src/sys/dev/pci/tdvfb.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/tdvfb.c diff -u src/sys/dev/pci/tdvfb.c:1.4 src/sys/dev/pci/tdvfb.c:1.5 --- src/sys/dev/pci/tdvfb.c:1.4 Sun Jul 29 20:31:53 2012 +++ src/sys/dev/pci/tdvfb.c Thu Jan 31 11:57:07 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: tdvfb.c,v 1.4 2012/07/29 20:31:53 rkujawa Exp $ */ +/* $NetBSD: tdvfb.c,v 1.5 2013/01/31 11:57:07 rkujawa Exp $ */ /* * Copyright (c) 2012 The NetBSD Foundation, Inc. @@ -49,7 +49,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: tdvfb.c,v 1.4 2012/07/29 20:31:53 rkujawa Exp $"); +__KERNEL_RCSID(0, "$NetBSD: tdvfb.c,v 1.5 2013/01/31 11:57:07 rkujawa Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -72,6 +72,7 @@ __KERNEL_RCSID(0, "$NetBSD: tdvfb.c,v 1. #include "opt_tdvfb.h" #define MAXLOOP 4096 +/* #define TDVFB_DEBUG 1 */ static int tdvfb_match(device_t, cfdata_t, void *); static void tdvfb_attach(device_t, device_t, void *); @@ -182,8 +183,9 @@ tdvfb_attach(device_t parent, device_t s pci_aprint_devinfo(pa, NULL); /* map the BAR */ - if (pci_mapreg_map(pa, TDV_MM_BAR, PCI_MAPREG_TYPE_MEM, 0, - &sc->sc_cvgt, &sc->sc_cvgh, &sc->sc_cvg_pa, 0) != 0 ) { + if (pci_mapreg_map(pa, TDV_MM_BAR, PCI_MAPREG_TYPE_MEM, + BUS_SPACE_MAP_LINEAR, &sc->sc_cvgt, &sc->sc_cvgh, + &sc->sc_cvg_pa, 0) != 0 ) { aprint_error_dev(sc->sc_dev, "unable to map CVG BAR"); return; } @@ -313,7 +315,10 @@ tdvfb_init_screen(void *cookie, struct v #endif #endif - ri->ri_bits = (char *) bus_space_vaddr(sc->sc_cvgt, sc->sc_fbh); + ri->ri_bits = (char *) bus_space_vaddr(sc->sc_cvgt, sc->sc_fbh); +#ifdef TDVFB_DEBUG + aprint_normal_dev(sc->sc_dev, "fb handle: %lx, ri_bits: %p\n", sc->sc_fbh, ri->ri_bits); +#endif /* TDVFB_DEBUG */ scr->scr_flags |= VCONS_DONT_READ; @@ -776,18 +781,18 @@ tdvfb_cvg_read(struct tdvfb_softc *sc, u { uint32_t rv; rv = bus_space_read_4(sc->sc_cvgt, sc->sc_cvgh, reg); -#ifdef TDVFB_DEBUG +#ifdef TDVFB_DEBUG_REGS aprint_normal("cvg_read val %x from reg %x\n", rv, reg); -#endif /* TDVFB_DEBUG */ +#endif /* TDVFB_DEBUG_REGS */ return rv; } static void tdvfb_cvg_write(struct tdvfb_softc *sc, uint32_t reg, uint32_t val) { -#ifdef TDVFB_DEBUG +#ifdef TDVFB_DEBUG_REGS aprint_normal("cvg_write val %x to reg %x\n", val, reg); -#endif /* TDVFB_DEBUG */ +#endif /* TDVFB_DEBUG_REGS */ bus_space_write_4(sc->sc_cvgt, sc->sc_cvgh, reg, val); } @@ -815,9 +820,9 @@ tdvfb_cvg_dac_read(struct tdvfb_softc *s tdvfb_cvg_dac_write(sc, reg, TDV_DAC_DATA_READ); rv = tdvfb_cvg_read(sc, TDV_OFF_DAC_READ); -#ifdef TDVFB_DEBUG +#ifdef TDVFB_DEBUG_REGS aprint_normal("cvg_dac_read val %x from reg %x\n", rv, reg); -#endif /* TDVFB_DEBUG */ +#endif /* TDVFB_DEBUG_REGS */ return rv & 0xFF; } @@ -828,10 +833,10 @@ tdvfb_cvg_dac_write(struct tdvfb_softc * wreg = ((reg & TDV_GENDAC_ADDRMASK) << 8) | val; -#ifdef TDVFB_DEBUG +#ifdef TDVFB_DEBUG_REGS aprint_normal("cvg_dac_write val %x to reg %x (%x)\n", val, reg, wreg); -#endif /* TDVFB_DEBUG */ +#endif /* TDVFB_DEBUG_REGS */ tdvfb_cvg_write(sc, TDV_OFF_DAC_DATA, wreg); tdvfb_wait(sc); @@ -973,6 +978,16 @@ tdvfb_ioctl(void *v, void *vs, u_long cm } return 0; } + case WSDISPLAYIO_GET_FBINFO: + { + struct wsdisplayio_fbinfo *fbi = data; + struct rasops_info *ri; + int ret; + + ri = &sc->vd.active->scr_ri; + ret = wsdisplayio_get_fbinfo(ri, fbi); + return ret; + } } return EPASSTHROUGH; }