Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/arch/arm support WSDISPLAYIO_GET_FBINFO



details:   https://anonhg.NetBSD.org/src/rev/10d543990b9c
branches:  trunk
changeset: 784532:10d543990b9c
user:      macallan <macallan%NetBSD.org@localhost>
date:      Thu Jan 31 11:00:07 2013 +0000

description:
support WSDISPLAYIO_GET_FBINFO

diffstat:

 sys/arch/arm/broadcom/bcm2835_genfb.c |  14 ++++++++++++--
 sys/arch/arm/omap/omapfb.c            |  34 +++++++++++++++++++++++++++++-----
 2 files changed, 41 insertions(+), 7 deletions(-)

diffs (105 lines):

diff -r 3d9c2369233a -r 10d543990b9c sys/arch/arm/broadcom/bcm2835_genfb.c
--- a/sys/arch/arm/broadcom/bcm2835_genfb.c     Thu Jan 31 10:58:22 2013 +0000
+++ b/sys/arch/arm/broadcom/bcm2835_genfb.c     Thu Jan 31 11:00:07 2013 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: bcm2835_genfb.c,v 1.3 2013/01/10 14:12:16 jmcneill Exp $ */
+/* $NetBSD: bcm2835_genfb.c,v 1.4 2013/01/31 11:00:44 macallan Exp $ */
 
 /*-
  * Copyright (c) 2013 Jared D. McNeill <jmcneill%invisible.ca@localhost>
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.3 2013/01/10 14:12:16 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: bcm2835_genfb.c,v 1.4 2013/01/31 11:00:44 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/types.h>
@@ -133,6 +133,16 @@
                busid = data;
                busid->bus_type = WSDISPLAYIO_BUS_SOC;
                return 0;
+       case WSDISPLAYIO_GET_FBINFO:
+               {
+                       struct wsdisplayio_fbinfo *fbi = data;
+                       struct rasops_info *ri = &sc->sc_gen.vd.active->scr_ri;
+                       int ret;
+
+                       ret = wsdisplayio_get_fbinfo(ri, fbi);
+                       fbi->fbi_flags |= WSFB_VRAM_IS_RAM;
+                       return ret;
+               }
        default:
                return EPASSTHROUGH;
        }
diff -r 3d9c2369233a -r 10d543990b9c sys/arch/arm/omap/omapfb.c
--- a/sys/arch/arm/omap/omapfb.c        Thu Jan 31 10:58:22 2013 +0000
+++ b/sys/arch/arm/omap/omapfb.c        Thu Jan 31 11:00:07 2013 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: omapfb.c,v 1.15 2013/01/21 16:08:30 macallan Exp $     */
+/*     $NetBSD: omapfb.c,v 1.16 2013/01/31 11:00:07 macallan Exp $     */
 
 /*
  * Copyright (c) 2010 Michael Lorenz
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: omapfb.c,v 1.15 2013/01/21 16:08:30 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: omapfb.c,v 1.16 2013/01/31 11:00:07 macallan Exp $");
 
 #include <sys/param.h>
 #include <sys/systm.h>
@@ -297,7 +297,7 @@
        bus_space_write_4(sc->sc_iot, sc->sc_regh, OMAPFB_DSS_SYSCONFIG, 
            OMAP_SYSCONF_AUTOIDLE);
        reg = bus_space_read_4(sc->sc_iot, sc->sc_regh, OMAPFB_DISPC_CONFIG);
-       reg = 0x8;
+       reg = OMAP_DISPC_CTRL_ACTIVE_MTRX;
        bus_space_write_4(sc->sc_iot, sc->sc_regh, OMAPFB_DISPC_CONFIG, reg);
        
        sc->sc_fbhwaddr = sc->sc_dmamem->ds_addr + 0x1000;
@@ -486,6 +486,30 @@
                                }
                        }
                        return 0;
+               case WSDISPLAYIO_GET_FBINFO:
+                       {
+                               struct wsdisplayio_fbinfo *fbi = data;
+
+                               fbi->fbi_width = sc->sc_width;
+                               fbi->fbi_height = sc->sc_height;
+                               fbi->fbi_stride = sc->sc_width << 2;
+                               fbi->fbi_bitsperpixel = 32;
+                               fbi->fbi_pixeltype = WSFB_RGB;
+                               fbi->fbi_subtype.fbi_rgbmasks.red_offset = 16;
+                               fbi->fbi_subtype.fbi_rgbmasks.red_size = 8;
+                               fbi->fbi_subtype.fbi_rgbmasks.green_offset = 8;
+                               fbi->fbi_subtype.fbi_rgbmasks.green_size = 8;
+                               fbi->fbi_subtype.fbi_rgbmasks.blue_offset = 0;
+                               fbi->fbi_subtype.fbi_rgbmasks.blue_size = 8;
+                               fbi->fbi_subtype.fbi_rgbmasks.alpha_offset = 0;
+                               fbi->fbi_subtype.fbi_rgbmasks.alpha_size = 0;
+                               fbi->fbi_flags = 0;
+                               fbi->fbi_fbsize = sc->sc_vramsize;
+                               fbi->fbi_fboffset = 0;
+                               fbi->fbi_flags = WSFB_VRAM_IS_RAM;
+
+                       }
+                       return 0;
        }
        return EPASSTHROUGH;
 }
@@ -498,9 +522,9 @@
        struct omapfb_softc *sc = vd->cookie;
 
        /* 'regular' framebuffer mmap()ing */
-       if (offset < (12 << 20)) {
+       if (offset < sc->sc_vramsize) {
                pa = bus_dmamem_mmap(sc->sc_dmat, sc->sc_dmamem, 1,
-                   offset + 0x1000, prot, BUS_DMA_COHERENT);
+                   offset + 0x1000, prot, BUS_DMA_PREFETCHABLE);
                return pa;
        }
        return pa;



Home | Main Index | Thread Index | Old Index