Module Name:    src
Committed By:   jmcneill
Date:           Thu Dec  4 11:16:38 UTC 2014

Modified Files:
        src/sys/arch/arm/allwinner: awin_debe.c awin_fb.c awin_intr.h awin_io.c
            awin_var.h files.awin

Log Message:
Add awinmp(4) glue.

It won't compile (uses nonexistent ioctls) but adding this for posterity.
In my testing, 2D accel for solid fill and copy is considerably slower than
with software rendering, so no sense in turning this on.


To generate a diff of this commit:
cvs rdiff -u -r1.10 -r1.11 src/sys/arch/arm/allwinner/awin_debe.c
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/allwinner/awin_fb.c
cvs rdiff -u -r1.9 -r1.10 src/sys/arch/arm/allwinner/awin_intr.h
cvs rdiff -u -r1.28 -r1.29 src/sys/arch/arm/allwinner/awin_io.c
cvs rdiff -u -r1.26 -r1.27 src/sys/arch/arm/allwinner/awin_var.h \
    src/sys/arch/arm/allwinner/files.awin

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/allwinner/awin_debe.c
diff -u src/sys/arch/arm/allwinner/awin_debe.c:1.10 src/sys/arch/arm/allwinner/awin_debe.c:1.11
--- src/sys/arch/arm/allwinner/awin_debe.c:1.10	Sun Nov 30 20:04:57 2014
+++ src/sys/arch/arm/allwinner/awin_debe.c	Thu Dec  4 11:16:38 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_debe.c,v 1.10 2014/11/30 20:04:57 jmcneill Exp $ */
+/* $NetBSD: awin_debe.c,v 1.11 2014/12/04 11:16:38 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill <[email protected]>
@@ -28,6 +28,7 @@
 
 #include "opt_allwinner.h"
 #include "genfb.h"
+#include "awin_mp.h"
 
 #ifndef AWIN_DEBE_VIDEOMEM
 #define AWIN_DEBE_VIDEOMEM	(16 * 1024 * 1024)
@@ -36,7 +37,7 @@
 #define AWIN_DEBE_CURMAX	64
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: awin_debe.c,v 1.10 2014/11/30 20:04:57 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: awin_debe.c,v 1.11 2014/12/04 11:16:38 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -114,6 +115,9 @@ awin_debe_attach(device_t parent, device
 	struct awinio_attach_args * const aio = aux;
 	const struct awin_locators * const loc = &aio->aio_loc;
 	prop_dictionary_t cfg = device_properties(self);
+#if NAWIN_MP > 0
+	device_t mpdev;
+#endif
 	int error;
 
 	sc->sc_dev = self;
@@ -197,6 +201,16 @@ awin_debe_attach(device_t parent, device
 		    "couldn't allocate video memory, error = %d\n", error);
 		return;
 	}
+
+#if NAWIN_MP > 0
+	mpdev = device_find_by_driver_unit("awinmp", 0);
+	if (mpdev) {
+		paddr_t pa = sc->sc_dmamap->dm_segs[0].ds_addr;
+		if (pa >= AWIN_SDRAM_PBASE)
+			pa -= AWIN_SDRAM_PBASE;
+		awin_mp_setbase(mpdev, pa, sc->sc_dmasize);
+	}
+#endif
 }
 
 static int

Index: src/sys/arch/arm/allwinner/awin_fb.c
diff -u src/sys/arch/arm/allwinner/awin_fb.c:1.8 src/sys/arch/arm/allwinner/awin_fb.c:1.9
--- src/sys/arch/arm/allwinner/awin_fb.c:1.8	Sun Nov 30 20:25:54 2014
+++ src/sys/arch/arm/allwinner/awin_fb.c	Thu Dec  4 11:16:38 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_fb.c,v 1.8 2014/11/30 20:25:54 jmcneill Exp $ */
+/* $NetBSD: awin_fb.c,v 1.9 2014/12/04 11:16:38 jmcneill Exp $ */
 
 /*-
  * Copyright (c) 2014 Jared D. McNeill <[email protected]>
@@ -26,8 +26,10 @@
  * SUCH DAMAGE.
  */
 
+#include "awin_mp.h"
+
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: awin_fb.c,v 1.8 2014/11/30 20:25:54 jmcneill Exp $");
+__KERNEL_RCSID(0, "$NetBSD: awin_fb.c,v 1.9 2014/12/04 11:16:38 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -47,6 +49,7 @@ __KERNEL_RCSID(0, "$NetBSD: awin_fb.c,v 
 struct awin_fb_softc {
 	struct genfb_softc sc_gen;
 	device_t sc_debedev;
+	device_t sc_mpdev;
 
 	bus_dma_tag_t sc_dmat;
 	bus_dma_segment_t *sc_dmasegs;
@@ -87,6 +90,7 @@ awin_fb_attach(device_t parent, device_t
 	sc->sc_dmat = afb->afb_dmat;
 	sc->sc_dmasegs = afb->afb_dmasegs;
 	sc->sc_ndmasegs = afb->afb_ndmasegs;
+	sc->sc_mpdev = device_find_by_driver_unit("awinmp", 0);
 
 	prop_dictionary_set_uint32(cfg, "width", afb->afb_width);
 	prop_dictionary_set_uint32(cfg, "height", afb->afb_height);
@@ -146,6 +150,10 @@ awin_fb_ioctl(void *v, void *vs, u_long 
 		if (error == 0) {
 			fbi->fbi_flags |= WSFB_VRAM_IS_RAM;
 			fbi->fbi_fbsize = sc->sc_dmasegs[0].ds_len;
+#if NAWIN_MP > 0
+			if (sc->sc_mpdev)
+				fbi->fbi_flags |= WSFB_ACCEL;
+#endif
 		}
 		return error;
 	case WSDISPLAYIO_SVIDEO:
@@ -155,6 +163,14 @@ awin_fb_ioctl(void *v, void *vs, u_long 
 	case WSDISPLAYIO_GCURMAX:
 	case WSDISPLAYIO_SCURSOR:
 		return awin_debe_ioctl(sc->sc_debedev, cmd, data);
+#if NAWIN_MP > 0
+	case WSDISPLAYIO_FILL:
+	case WSDISPLAYIO_COPY:
+	case WSDISPLAYIO_SYNC:
+		if (sc->sc_mpdev == NULL)
+			return EPASSTHROUGH;
+		return awin_mp_ioctl(sc->sc_mpdev, cmd, data);
+#endif
 	default:
 		return EPASSTHROUGH;
 	}

Index: src/sys/arch/arm/allwinner/awin_intr.h
diff -u src/sys/arch/arm/allwinner/awin_intr.h:1.9 src/sys/arch/arm/allwinner/awin_intr.h:1.10
--- src/sys/arch/arm/allwinner/awin_intr.h:1.9	Sun Nov  2 23:55:06 2014
+++ src/sys/arch/arm/allwinner/awin_intr.h	Thu Dec  4 11:16:38 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_intr.h,v 1.9 2014/11/02 23:55:06 jmcneill Exp $ */
+/* $NetBSD: awin_intr.h,v 1.10 2014/12/04 11:16:38 jmcneill Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -161,6 +161,7 @@
 #define AWIN_A31_IRQ_USB3	106
 #define AWIN_A31_IRQ_USB4	108
 #define AWIN_A31_IRQ_GMAC	114
+#define AWIN_A31_IRQ_MP		115
 #define AWIN_A31_IRQ_HDMI	120
 
 #endif /* _ARM_ALLWINNER_AWIN_INTR_H_ */

Index: src/sys/arch/arm/allwinner/awin_io.c
diff -u src/sys/arch/arm/allwinner/awin_io.c:1.28 src/sys/arch/arm/allwinner/awin_io.c:1.29
--- src/sys/arch/arm/allwinner/awin_io.c:1.28	Tue Nov 11 17:00:59 2014
+++ src/sys/arch/arm/allwinner/awin_io.c	Thu Dec  4 11:16:38 2014
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 
-__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.28 2014/11/11 17:00:59 jmcneill Exp $");
+__KERNEL_RCSID(1, "$NetBSD: awin_io.c,v 1.29 2014/12/04 11:16:38 jmcneill Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -108,6 +108,7 @@ static const struct awin_locators awin_l
 	{ "com", OFFANDSIZE(UART6), 6, AWIN_IRQ_UART6, A10|A20 },
 	{ "com", OFFANDSIZE(UART7), 7, AWIN_IRQ_UART7, A10|A20 },
 	{ "com", OFFANDSIZE(UART0), 0, AWIN_A31_IRQ_UART0, A31 },
+	{ "awinmp", OFFANDSIZE(MP), NOPORT, AWIN_A31_IRQ_MP, A31 },
 	{ "awindebe", AWIN_DE_BE0_OFFSET, 0x1000, 0, NOINTR, AANY },
 	{ "awindebe", AWIN_DE_BE1_OFFSET, 0x1000, 1, NOINTR, AANY },
 	{ "awintcon", OFFANDSIZE(LCD0), 0, NOINTR, AANY },

Index: src/sys/arch/arm/allwinner/awin_var.h
diff -u src/sys/arch/arm/allwinner/awin_var.h:1.26 src/sys/arch/arm/allwinner/awin_var.h:1.27
--- src/sys/arch/arm/allwinner/awin_var.h:1.26	Sun Nov 23 23:04:58 2014
+++ src/sys/arch/arm/allwinner/awin_var.h	Thu Dec  4 11:16:38 2014
@@ -1,4 +1,4 @@
-/* $NetBSD: awin_var.h,v 1.26 2014/11/23 23:04:58 jmcneill Exp $ */
+/* $NetBSD: awin_var.h,v 1.27 2014/12/04 11:16:38 jmcneill Exp $ */
 /*-
  * Copyright (c) 2013 The NetBSD Foundation, Inc.
  * All rights reserved.
@@ -133,6 +133,8 @@ void	awin_tcon_enable(bool);
 void	awin_debe_set_videomode(const struct videomode *);
 void	awin_debe_enable(bool);
 int	awin_debe_ioctl(device_t, u_long, void *);
+int	awin_mp_ioctl(device_t, u_long, void *);
+void	awin_mp_setbase(device_t, paddr_t, size_t);
 
 struct awin_hdmi_info {
 	bool	display_connected;
Index: src/sys/arch/arm/allwinner/files.awin
diff -u src/sys/arch/arm/allwinner/files.awin:1.26 src/sys/arch/arm/allwinner/files.awin:1.27
--- src/sys/arch/arm/allwinner/files.awin:1.26	Tue Nov 18 01:53:53 2014
+++ src/sys/arch/arm/allwinner/files.awin	Thu Dec  4 11:16:38 2014
@@ -1,4 +1,4 @@
-#	$NetBSD: files.awin,v 1.26 2014/11/18 01:53:53 jmcneill Exp $
+#	$NetBSD: files.awin,v 1.27 2014/12/04 11:16:38 jmcneill Exp $
 #
 # Configuration info for Allwinner ARM Peripherals
 #
@@ -158,6 +158,11 @@ device	awindebe { }
 attach	awindebe at awinio with awin_debe
 file	arch/arm/allwinner/awin_debe.c		awin_debe | awin_hdmi
 
+# A10/A20/A31 Mixer processor (MP)
+device	awinmp
+attach	awinmp at awinio with awin_mp
+file	arch/arm/allwinner/awin_mp.c		awin_mp		needs-flag
+
 # Framebuffer
 attach	genfb at awindebe with awin_fb: edid
 file	arch/arm/allwinner/awin_fb.c		awin_fb		needs-flag

Reply via email to