Page MenuHomeFreeBSD

D34057.diff
No OneTemporary

D34057.diff

diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -52,6 +52,9 @@
# xargs -n1 | sort | uniq -d;
# done
+# 20220127: terasic_mtl.4 removed
+OLD_FILES+=usr/share/man/man4/terasic_mtl.4.gz
+
# 20211229: libc++ moved to /lib
MOVED_LIBS+=usr/lib/libc++.so.1
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -546,7 +546,6 @@
tcp.4 \
tcp_bbr.4 \
tdfx.4 \
- terasic_mtl.4 \
termios.4 \
textdump.4 \
ti.4 \
diff --git a/share/man/man4/terasic_mtl.4 b/share/man/man4/terasic_mtl.4
deleted file mode 100644
--- a/share/man/man4/terasic_mtl.4
+++ /dev/null
@@ -1,131 +0,0 @@
-.\"-
-.\" Copyright (c) 2012 Robert N. M. Watson
-.\" All rights reserved.
-.\"
-.\" This software was developed by SRI International and the University of
-.\" Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
-.\" ("CTSRD"), as part of the DARPA CRASH research programme.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\" notice, this list of conditions and the following disclaimer in the
-.\" documentation and/or other materials provided with the distribution.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
-.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
-.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-.\" SUCH DAMAGE.
-.\"
-.\" $FreeBSD$
-.\"
-.Dd August 18, 2012
-.Dt TERASIC_MTL 4
-.Os
-.Sh NAME
-.Nm terasic_mtl
-.Nd driver for the Terasic/Cambridge Multi-Touch LCD device
-.Sh SYNOPSIS
-.Cd "device terasic_mtl"
-.Pp
-In
-.Pa /boot/device.hints :
-.Cd hint.terasic_mtl.0.at="nexus0"
-.Cd hint.terasic_mtl.0.reg_maddr=0x70400000
-.Cd hint.terasic_mtl.0.reg_msize=0x1000
-.Cd hint.terasic_mtl.0.pixel_maddr=0x70000000
-.Cd hint.terasic_mtl.0.pixel_msize=0x177000
-.Cd hint.terasic_mtl.0.text_maddr=0x70177000
-.Cd hint.terasic_mtl.0.text_msize=0x2000
-.Sh DESCRIPTION
-The
-.Nm
-device driver provides support for the Terasic Multi-Touch LCD combined as
-controlled by a University of Cambridge's IP Core.
-Three device nodes are instantiated, representing various services supported
-by the device:
-.Bl -tag -width terasic_pixelX
-.It terasic_regX
-Memory-mapped register interface, including touch screen input.
-.It terasic_pixelX
-Memory-mapped pixel-oriented frame buffer.
-.It terasic_textX
-Memory-mapped text-oriented frame buffer.
-.El
-.Pp
-.Nm
-devices are also attached to the
-.Xr syscons 4
-framework, which implements a VT-compatible terminal connected to the
-.Xr tty 4
-framework.
-.Li ttyvX
-device nodes may be added to
-.Xr ttys 5
-in order to launch
-.Xr login 1
-sessions at boot.
-.Pp
-Register, text, and pixel devices may be accessed using
-.Xr read 2
-and
-.Xr write 2
-system calls, and also memory mapped using
-.Xr mmap 2 .
-.Sh SEE ALSO
-.Xr login 1 ,
-.Xr ioctl 2 ,
-.Xr mmap 2 ,
-.Xr poll 2 ,
-.Xr read 2 ,
-.Xr write 2 ,
-.Xr syscons 4 ,
-.Xr tty 4 ,
-.Xr ttys 5
-.Sh HISTORY
-The
-.Nm
-device driver first appeared in
-.Fx 10.0 .
-.Sh AUTHORS
-The
-.Nm
-device driver and this manual page were
-developed by SRI International and the University of Cambridge Computer
-Laboratory under DARPA/AFRL contract
-.Pq FA8750-10-C-0237
-.Pq Do CTSRD Dc ,
-as part of the DARPA CRASH research programme.
-This device driver was written by
-.An Robert N. M. Watson .
-.Sh BUGS
-The
-.Xr syscons 4
-attachment does not support the hardware cursor feature.
-.Pp
-A more structured interface to control registers using the
-.Xr ioctl 2
-system call, would sometimes be preferable to memory mapping.
-For touch screen input, it would be highly desirable to offer a streaming
-interface whose events can be managed using
-.Xr poll 2
-and related system calls, with the kernel performing polling rather than the
-userspace application.
-.Pp
-.Nm
-supports only a
-.Li nexus
-bus attachment, which is appropriate for system-on-chip busses such as
-Altera's Avalon bus.
-If the IP core is configured off of another bus type, then additional bus
-attachments will be required.
diff --git a/sys/dev/terasic/de4led/terasic_de4led.h b/sys/dev/terasic/de4led/terasic_de4led.h
deleted file mode 100644
--- a/sys/dev/terasic/de4led/terasic_de4led.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _DEV_TERASIC_DE4LED_H_
-#define _DEV_TERASIC_DE4LED_H_
-
-#define TERASIC_DE4LED_NUMLEDS 8
-struct terasic_de4led_softc {
- device_t tdl_dev;
- int tdl_unit;
- struct resource *tdl_res;
- int tdl_rid;
- struct mtx tdl_lock;
- uint8_t tdl_bits;
- struct cdev *tdl_leds[TERASIC_DE4LED_NUMLEDS];
-};
-
-#define TERASIC_DE4LED_LOCK(sc) mtx_lock(&(sc)->tdl_lock)
-#define TERASIC_DE4LED_LOCK_ASSERT(sc) mtx_assert(&(sc)->tdl_lock, MA_OWNED)
-#define TERASIC_DE4LED_LOCK_DESTROY(sc) mtx_destroy(&(sc)->tdl_lock)
-#define TERASIC_DE4LED_LOCK_INIT(sc) mtx_init(&(sc)->tdl_lock, \
- "terasic_de4led", NULL, MTX_DEF)
-#define TERASIC_DE4LED_UNLOCK(sc) mtx_unlock(&(sc)->tdl_lock)
-
-/*
- * Setting and clearing LEDs. tdl_bits is in the bit order preferred for I/O.
- * The LED elements are labelled 1..8 on the DE-4, so bit 0 is LED 1, and so
- * on.
- */
-#define TERASIC_DE4LED_CLEARBAR(sc) do { \
- (sc)->tdl_bits = 0; \
-} while (0)
-#define TERASIC_DE4LED_SETLED(sc, led, onoff) do { \
- (sc)->tdl_bits &= ~(1 << (led)); \
- (sc)->tdl_bits |= ((onoff != 0) ? 1 : 0) << (led); \
-} while (0)
-
-/*
- * Only one offset matters for this device -- 0.
- */
-#define TERASIC_DE4LED_OFF_LED 0
-
-void terasic_de4led_attach(struct terasic_de4led_softc *sc);
-void terasic_de4led_detach(struct terasic_de4led_softc *sc);
-
-extern devclass_t terasic_de4led_devclass;
-
-#endif /* _DEV_TERASIC_DE4LED_H_ */
diff --git a/sys/dev/terasic/de4led/terasic_de4led.c b/sys/dev/terasic/de4led/terasic_de4led.c
deleted file mode 100644
--- a/sys/dev/terasic/de4led/terasic_de4led.c
+++ /dev/null
@@ -1,192 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/led/led.h>
-#include <dev/terasic/de4led/terasic_de4led.h>
-
-devclass_t terasic_de4led_devclass;
-
-static void
-terasic_de4led_update(struct terasic_de4led_softc *sc)
-{
-
- TERASIC_DE4LED_LOCK_ASSERT(sc);
-
- bus_write_1(sc->tdl_res, TERASIC_DE4LED_OFF_LED, sc->tdl_bits);
-}
-
-static void
-led_update(struct terasic_de4led_softc *sc, int bit, int onoff)
-{
-
- TERASIC_DE4LED_LOCK(sc);
- TERASIC_DE4LED_SETLED(sc, bit, onoff);
- terasic_de4led_update(sc);
- TERASIC_DE4LED_UNLOCK(sc);
-}
-
-static void
-led_0(void *arg, int onoff)
-{
-
- led_update(arg, 0, onoff);
-}
-
-static void
-led_1(void *arg, int onoff)
-{
-
- led_update(arg, 1, onoff);
-}
-
-static void
-led_2(void *arg, int onoff)
-{
-
- led_update(arg, 2, onoff);
-}
-
-static void
-led_3(void *arg, int onoff)
-{
-
- led_update(arg, 3, onoff);
-}
-
-static void
-led_4(void *arg, int onoff)
-{
-
- led_update(arg, 4, onoff);
-}
-
-static void
-led_5(void *arg, int onoff)
-{
-
- led_update(arg, 5, onoff);
-}
-
-static void
-led_6(void *arg, int onoff)
-{
-
- led_update(arg, 6, onoff);
-}
-
-static void
-led_7(void *arg, int onoff)
-{
-
- led_update(arg, 7, onoff);
-}
-
-void
-terasic_de4led_attach(struct terasic_de4led_softc *sc)
-{
- const char *cmd;
-
- TERASIC_DE4LED_LOCK_INIT(sc);
-
- /*
- * Clear the LED array before we start.
- */
- TERASIC_DE4LED_LOCK(sc);
- TERASIC_DE4LED_CLEARBAR(sc);
- terasic_de4led_update(sc);
- TERASIC_DE4LED_UNLOCK(sc);
-
- /*
- * Register the LED array with led(4).
- */
- sc->tdl_leds[0] = led_create(led_0, sc, "de4led_0");
- sc->tdl_leds[1] = led_create(led_1, sc, "de4led_1");
- sc->tdl_leds[2] = led_create(led_2, sc, "de4led_2");
- sc->tdl_leds[3] = led_create(led_3, sc, "de4led_3");
- sc->tdl_leds[4] = led_create(led_4, sc, "de4led_4");
- sc->tdl_leds[5] = led_create(led_5, sc, "de4led_5");
- sc->tdl_leds[6] = led_create(led_6, sc, "de4led_6");
- sc->tdl_leds[7] = led_create(led_7, sc, "de4led_7");
-
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_0_cmd", &cmd) == 0)
- led_set("de4led_0", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_1_cmd", &cmd) == 0)
- led_set("de4led_1", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_2_cmd", &cmd) == 0)
- led_set("de4led_2", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_3_cmd", &cmd) == 0)
- led_set("de4led_3", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_4_cmd", &cmd) == 0)
- led_set("de4led_4", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_5_cmd", &cmd) == 0)
- led_set("de4led_5", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_6_cmd", &cmd) == 0)
- led_set("de4led_6", cmd);
- if (resource_string_value(device_get_name(sc->tdl_dev),
- sc->tdl_unit, "de4led_7_cmd", &cmd) == 0)
- led_set("de4led_7", cmd);
-}
-
-void
-terasic_de4led_detach(struct terasic_de4led_softc *sc)
-{
- int i;
-
- for (i = 0; i < 8; i++) {
- led_destroy(sc->tdl_leds[i]);
- sc->tdl_leds[i] = NULL;
- }
- TERASIC_DE4LED_LOCK(sc);
- TERASIC_DE4LED_CLEARBAR(sc);
- terasic_de4led_update(sc);
- TERASIC_DE4LED_UNLOCK(sc);
- TERASIC_DE4LED_LOCK_DESTROY(sc);
-}
diff --git a/sys/dev/terasic/de4led/terasic_de4led_fdt.c b/sys/dev/terasic/de4led/terasic_de4led_fdt.c
deleted file mode 100644
--- a/sys/dev/terasic/de4led/terasic_de4led_fdt.c
+++ /dev/null
@@ -1,123 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/condvar.h>
-#include <sys/conf.h>
-#include <sys/bio.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/fdt/fdt_common.h>
-#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_bus.h>
-#include <dev/ofw/ofw_bus_subr.h>
-
-#include <dev/terasic/de4led/terasic_de4led.h>
-
-/*
- * Nexus bus attachment for the 8-element LED on the Terasic DE-4 FPGA board,
- * which is hooked up to the processor via a memory-mapped Avalon bus.
- */
-static int
-terasic_de4led_fdt_probe(device_t dev)
-{
-
- if (!ofw_bus_status_okay(dev))
- return (ENXIO);
-
- if (ofw_bus_is_compatible(dev, "sri-cambridge,de4led")) {
- device_set_desc(dev, "Terasic DE4 8-element LED");
- return (BUS_PROBE_DEFAULT);
- }
- return (ENXIO);
-}
-
-static int
-terasic_de4led_fdt_attach(device_t dev)
-{
- struct terasic_de4led_softc *sc;
-
- sc = device_get_softc(dev);
- sc->tdl_dev = dev;
- sc->tdl_unit = device_get_unit(dev);
- sc->tdl_rid = 0;
- sc->tdl_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->tdl_rid, RF_ACTIVE);
- if (sc->tdl_res == NULL) {
- device_printf(dev, "couldn't map memory\n");
- return (ENXIO);
- }
- terasic_de4led_attach(sc);
- return (0);
-}
-
-static int
-terasic_de4led_fdt_detach(device_t dev)
-{
- struct terasic_de4led_softc *sc;
-
- sc = device_get_softc(dev);
- KASSERT(sc->tdl_res != NULL, ("%s: resources not allocated",
- __func__));
- terasic_de4led_detach(sc);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->tdl_rid, sc->tdl_res);
- return (0);
-}
-
-static device_method_t terasic_de4led_fdt_methods[] = {
- DEVMETHOD(device_probe, terasic_de4led_fdt_probe),
- DEVMETHOD(device_attach, terasic_de4led_fdt_attach),
- DEVMETHOD(device_detach, terasic_de4led_fdt_detach),
- { 0, 0 }
-};
-
-static driver_t terasic_de4led_fdt_driver = {
- "terasic_de4led",
- terasic_de4led_fdt_methods,
- sizeof(struct terasic_de4led_softc),
-};
-
-DRIVER_MODULE(terasic_de4led, simplebus, terasic_de4led_fdt_driver,
- terasic_de4led_devclass, 0, 0);
diff --git a/sys/dev/terasic/de4led/terasic_de4led_nexus.c b/sys/dev/terasic/de4led/terasic_de4led_nexus.c
deleted file mode 100644
--- a/sys/dev/terasic/de4led/terasic_de4led_nexus.c
+++ /dev/null
@@ -1,112 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/condvar.h>
-#include <sys/conf.h>
-#include <sys/bio.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/terasic/de4led/terasic_de4led.h>
-
-/*
- * Nexus bus attachment for the 8-element LED on the Terasic DE-4 FPGA board,
- * which is hooked up to the processor via a memory-mapped Avalon bus.
- */
-static int
-terasic_de4led_nexus_probe(device_t dev)
-{
-
- device_set_desc(dev, "Terasic DE4 8-element LED");
- return (BUS_PROBE_NOWILDCARD);
-}
-
-static int
-terasic_de4led_nexus_attach(device_t dev)
-{
- struct terasic_de4led_softc *sc;
-
- sc = device_get_softc(dev);
- sc->tdl_dev = dev;
- sc->tdl_unit = device_get_unit(dev);
- sc->tdl_rid = 0;
- sc->tdl_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->tdl_rid, RF_ACTIVE);
- if (sc->tdl_res == NULL) {
- device_printf(dev, "couldn't map memory\n");
- return (ENXIO);
- }
- terasic_de4led_attach(sc);
- return (0);
-}
-
-static int
-terasic_de4led_nexus_detach(device_t dev)
-{
- struct terasic_de4led_softc *sc;
-
- sc = device_get_softc(dev);
- KASSERT(sc->tdl_res != NULL, ("%s: resources not allocated",
- __func__));
- terasic_de4led_detach(sc);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->tdl_rid, sc->tdl_res);
- return (0);
-}
-
-static device_method_t terasic_de4led_nexus_methods[] = {
- DEVMETHOD(device_probe, terasic_de4led_nexus_probe),
- DEVMETHOD(device_attach, terasic_de4led_nexus_attach),
- DEVMETHOD(device_detach, terasic_de4led_nexus_detach),
- { 0, 0 }
-};
-
-static driver_t terasic_de4led_nexus_driver = {
- "terasic_de4led",
- terasic_de4led_nexus_methods,
- sizeof(struct terasic_de4led_softc),
-};
-
-DRIVER_MODULE(terasic_de4led, nexus, terasic_de4led_nexus_driver,
- terasic_de4led_devclass, 0, 0);
diff --git a/sys/dev/terasic/mtl/terasic_mtl.h b/sys/dev/terasic/mtl/terasic_mtl.h
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl.h
+++ /dev/null
@@ -1,235 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * $FreeBSD$
- */
-
-#ifndef _DEV_TERASIC_MTL_H_
-#define _DEV_TERASIC_MTL_H_
-
-#include "opt_syscons.h"
-
-struct terasic_mtl_softc {
-#if defined(DEV_SC)
- /*
- * syscons requires that its video_adapter_t be at the front of the
- * softc, so place syscons fields first, which we otherwise would
- * probably not do.
- */
- video_adapter_t mtl_va;
-#endif
-
- /*
- * Bus-related fields.
- */
- device_t mtl_dev;
- int mtl_unit;
-
- /*
- * The MTL driver doesn't require a lot of synchronisation; however,
- * the lock is used to protect read-modify-write operations on MTL
- * registers.
- */
- struct mtx mtl_lock;
-
- /*
- * Control register device -- mappable from userspace.
- */
- struct cdev *mtl_reg_cdev;
- struct resource *mtl_reg_res;
- int mtl_reg_rid;
-
- /*
- * Graphics frame buffer device -- mappable from userspace, and used
- * by the vt framebuffer interface.
- */
- struct cdev *mtl_pixel_cdev;
- struct resource *mtl_pixel_res;
- int mtl_pixel_rid;
-
- /*
- * Text frame buffer device -- mappable from userspace, and syscons
- * hookup.
- */
- struct cdev *mtl_text_cdev;
- struct resource *mtl_text_res;
- int mtl_text_rid;
- uint16_t *mtl_text_soft;
-
- /*
- * Framebuffer hookup for vt(4).
- */
- struct fb_info mtl_fb_info;
-};
-
-#define TERASIC_MTL_LOCK(sc) mtx_lock(&(sc)->mtl_lock)
-#define TERASIC_MTL_LOCK_ASSERT(sc) mtx_assert(&(sc)->mtl_lock, MA_OWNED)
-#define TERASIC_MTL_LOCK_DESTROY(sc) mtx_destroy(&(sc)->mtl_lock)
-#define TERASIC_MTL_LOCK_INIT(sc) mtx_init(&(sc)->mtl_lock, \
- "terasic_mtl", NULL, MTX_DEF)
-#define TERASIC_MTL_UNLOCK(sc) mtx_unlock(&(sc)->mtl_lock)
-
-/*
- * Constant properties of the MTL text frame buffer.
- */
-#define TERASIC_MTL_COLS 100
-#define TERASIC_MTL_ROWS 40
-
-/*
- * MTL control register offsets.
- */
-#define TERASIC_MTL_OFF_BLEND 0
-#define TERASIC_MTL_OFF_TEXTCURSOR 4
-#define TERASIC_MTL_OFF_TEXTFRAMEBUFADDR 8
-#define TERASIC_MTL_OFF_TOUCHPOINT_X1 12
-#define TERASIC_MTL_OFF_TOUCHPOINT_Y1 16
-#define TERASIC_MTL_OFF_TOUCHPOINT_X2 20
-#define TERASIC_MTL_OFF_TOUCHPOINT_Y2 24
-#define TERASIC_MTL_OFF_TOUCHGESTURE 28
-
-/*
- * Constants to help interpret various control registers.
- */
-#define TERASIC_MTL_BLEND_PIXEL_ENDIAN_SWAP 0x10000000
-#define TERASIC_MTL_BLEND_DEFAULT_MASK 0x0f000000
-#define TERASIC_MTL_BLEND_DEFAULT_SHIFT 24
-#define TERASIC_MTL_BLEND_PIXEL_MASK 0x00ff0000
-#define TERASIC_MTL_BLEND_PIXEL_SHIFT 16
-#define TERASIC_MTL_BLEND_TEXTFG_MASK 0x0000ff00
-#define TERASIC_MTL_BLEND_TEXTFG_SHIFT 8
-#define TERASIC_MTL_BLEND_TEXTBG_MASK 0x000000ff
-#define TERASIC_MTL_BLEND_TEXTBG_SHIFT 0
-#define TERASIC_MTL_TEXTCURSOR_COL_MASK 0xff00
-#define TERASIC_MTL_TEXTCURSOR_COL_SHIFT 8
-#define TERASIC_MTL_TEXTCURSOR_ROW_MASK 0xff
-
-/*
- * Colours used both by VGA-like text rendering, and for the default display
- * colour.
- */
-#define TERASIC_MTL_COLOR_BLACK 0
-#define TERASIC_MTL_COLOR_DARKBLUE 1
-#define TERASIC_MTL_COLOR_DARKGREEN 2
-#define TERASIC_MTL_COLOR_DARKCYAN 3
-#define TERASIC_MTL_COLOR_DARKRED 4
-#define TERASIC_MTL_COLOR_DARKMAGENTA 5
-#define TERASIC_MTL_COLOR_BROWN 6
-#define TERASIC_MTL_COLOR_LIGHTGREY 7
-#define TERASIC_MTL_COLOR_DARKGREY 8
-#define TERASIC_MTL_COLOR_LIGHTBLUE 9
-#define TERASIC_MTL_COLOR_LIGHTGREEN 10
-#define TERASIC_MTL_COLOR_LIGHTCYAN 11
-#define TERASIC_MTL_COLOR_LIGHTRED 12
-#define TERASIC_MTL_COLOR_LIGHTMAGENTA 13
-#define TERASIC_MTL_COLOR_LIGHTYELLOW 14
-#define TERASIC_MTL_COLOR_WHITE 15
-#define TERASIC_MTL_COLORMASK_BLINK 0x80
-
-/*
- * Constants to help interpret the text frame buffer.
- */
-#define TERASIC_MTL_TEXTFRAMEBUF_EXPECTED_ADDR 0x0177000
-#define TERASIC_MTL_TEXTFRAMEBUF_CHAR_SHIFT 0
-#define TERASIC_MTL_TEXTFRAMEBUF_ATTR_SHIFT 8
-
-/*
- * Framebuffer constants.
- */
-#define TERASIC_MTL_FB_WIDTH 800
-#define TERASIC_MTL_FB_HEIGHT 640
-
-/*
- * Alpha-blending constants.
- */
-#define TERASIC_MTL_ALPHA_TRANSPARENT 0
-#define TERASIC_MTL_ALPHA_OPAQUE 255
-
-/*
- * Driver setup routines from the bus attachment/teardown.
- */
-int terasic_mtl_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_detach(struct terasic_mtl_softc *sc);
-
-extern devclass_t terasic_mtl_devclass;
-
-/*
- * Sub-driver setup routines.
- */
-int terasic_mtl_fbd_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_fbd_detach(struct terasic_mtl_softc *sc);
-int terasic_mtl_pixel_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_pixel_detach(struct terasic_mtl_softc *sc);
-int terasic_mtl_reg_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_reg_detach(struct terasic_mtl_softc *sc);
-int terasic_mtl_syscons_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_syscons_detach(struct terasic_mtl_softc *sc);
-int terasic_mtl_text_attach(struct terasic_mtl_softc *sc);
-void terasic_mtl_text_detach(struct terasic_mtl_softc *sc);
-
-/*
- * Control register I/O routines.
- */
-void terasic_mtl_reg_blank(struct terasic_mtl_softc *sc);
-
-void terasic_mtl_reg_blend_get(struct terasic_mtl_softc *sc,
- uint32_t *blendp);
-void terasic_mtl_reg_blend_set(struct terasic_mtl_softc *sc,
- uint32_t blend);
-void terasic_mtl_reg_textcursor_get(struct terasic_mtl_softc *sc,
- uint8_t *colp, uint8_t *rowp);
-void terasic_mtl_reg_textcursor_set(struct terasic_mtl_softc *sc,
- uint8_t col, uint8_t row);
-void terasic_mtl_reg_textframebufaddr_get(struct terasic_mtl_softc *sc,
- uint32_t *addrp);
-void terasic_mtl_reg_textframebufaddr_set(struct terasic_mtl_softc *sc,
- uint32_t addr);
-
-/*
- * Read-modify-write updates of sub-bytes of the blend register.
- */
-void terasic_mtl_blend_default_set(struct terasic_mtl_softc *sc,
- uint8_t colour);
-void terasic_mtl_blend_pixel_set(struct terasic_mtl_softc *sc,
- uint8_t alpha);
-void terasic_mtl_blend_textfg_set(struct terasic_mtl_softc *sc,
- uint8_t alpha);
-void terasic_mtl_blend_textbg_set(struct terasic_mtl_softc *sc,
- uint8_t alpha);
-void terasic_mtl_reg_pixel_endian_set(struct terasic_mtl_softc *sc,
- int endian_swap);
-
-/*
- * Text frame buffer I/O routines.
- */
-void terasic_mtl_text_putc(struct terasic_mtl_softc *sc, u_int x, u_int y,
- uint8_t c, uint8_t a);
-
-#endif /* _DEV_TERASIC_MTL_H_ */
diff --git a/sys/dev/terasic/mtl/terasic_mtl.c b/sys/dev/terasic/mtl/terasic_mtl.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include "opt_syscons.h"
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/condvar.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/endian.h>
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-/*
- * Device driver for the Terasic Multitouch LCD (MTL). Three separate
- * sub-drivers that support, respectively, access to device control registers,
- * the pixel frame buffer, and the text frame buffer. The pixel frame buffer
- * is hooked up to vt(4), and the text frame buffer to syscons(4).
- *
- * Eventually, the frame buffer control registers and touch screen input FIFO
- * will end up being separate sub-drivers as well.
- *
- * Note: sub-driver detach routines must check whether or not they have
- * attached as they may be called even if the attach routine hasn't been, on
- * an error.
- */
-
-devclass_t terasic_mtl_devclass;
-
-int
-terasic_mtl_attach(struct terasic_mtl_softc *sc)
-{
- int error;
-
- error = terasic_mtl_reg_attach(sc);
- if (error)
- goto error;
- error = terasic_mtl_pixel_attach(sc);
- if (error)
- goto error;
- error = terasic_mtl_text_attach(sc);
- if (error)
- goto error;
- /*
- * XXXRW: Once we've attached syscons or vt, we can't detach it, so do
- * it last.
- */
-#if defined(DEV_VT)
- terasic_mtl_reg_pixel_endian_set(sc, BYTE_ORDER == BIG_ENDIAN);
- error = terasic_mtl_fbd_attach(sc);
- if (error)
- goto error;
- terasic_mtl_blend_pixel_set(sc, TERASIC_MTL_ALPHA_OPAQUE);
- terasic_mtl_blend_textfg_set(sc, TERASIC_MTL_ALPHA_TRANSPARENT);
- terasic_mtl_blend_textbg_set(sc, TERASIC_MTL_ALPHA_TRANSPARENT);
-#endif
-#if defined(DEV_SC)
- error = terasic_mtl_syscons_attach(sc);
- if (error)
- goto error;
- terasic_mtl_blend_pixel_set(sc, TERASIC_MTL_ALPHA_TRANSPARENT);
- terasic_mtl_blend_textfg_set(sc, TERASIC_MTL_ALPHA_OPAQUE);
- terasic_mtl_blend_textbg_set(sc, TERASIC_MTL_ALPHA_OPAQUE);
-#endif
- terasic_mtl_blend_default_set(sc, TERASIC_MTL_COLOR_BLACK);
- return (0);
-error:
- terasic_mtl_text_detach(sc);
- terasic_mtl_pixel_detach(sc);
- terasic_mtl_reg_detach(sc);
- return (error);
-}
-
-void
-terasic_mtl_detach(struct terasic_mtl_softc *sc)
-{
-
- /* XXXRW: syscons and vt can't detach, but try anyway, only to panic. */
-#if defined(DEV_SC)
- terasic_mtl_syscons_detach(sc);
-#endif
-#if defined(DEV_VT)
- terasic_mtl_fbd_detach(sc);
-#endif
-
- /* All other aspects of the driver can detach just fine. */
- terasic_mtl_text_detach(sc);
- terasic_mtl_pixel_detach(sc);
- terasic_mtl_reg_detach(sc);
-}
diff --git a/sys/dev/terasic/mtl/terasic_mtl_fdt.c b/sys/dev/terasic/mtl/terasic_mtl_fdt.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_fdt.c
+++ /dev/null
@@ -1,217 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012-2013 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/condvar.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/fdt/fdt_common.h>
-#include <dev/ofw/openfirm.h>
-#include <dev/ofw/ofw_bus.h>
-#include <dev/ofw/ofw_bus_subr.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-#include "fb_if.h"
-
-static int
-terasic_mtl_fdt_probe(device_t dev)
-{
-
- if (!ofw_bus_status_okay(dev))
- return (ENXIO);
-
- if (ofw_bus_is_compatible(dev, "sri-cambridge,mtl")) {
- device_set_desc(dev, "Terasic Multi-touch LCD (MTL)");
- return (BUS_PROBE_DEFAULT);
- }
- return (ENXIO);
-}
-
-static int
-terasic_mtl_fdt_attach(device_t dev)
-{
- struct terasic_mtl_softc *sc;
- int error;
-
- sc = device_get_softc(dev);
- sc->mtl_dev = dev;
- sc->mtl_unit = device_get_unit(dev);
-
- /*
- * FDT allows multiple memory resources to be defined for a device;
- * query them in the order registers, pixel buffer, text buffer.
- * However, we need to sanity-check that they are page-aligned and
- * page-sized, so we may still abort.
- */
- sc->mtl_reg_rid = 0;
- sc->mtl_reg_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->mtl_reg_rid, RF_ACTIVE);
- if (sc->mtl_reg_res == NULL) {
- device_printf(dev, "couldn't map register memory\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_start(sc->mtl_reg_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper register address\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_size(sc->mtl_reg_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper register size\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "registers at mem %p-%p\n",
- (void *)rman_get_start(sc->mtl_reg_res),
- (void *)(rman_get_start(sc->mtl_reg_res) +
- rman_get_size(sc->mtl_reg_res)));
-
- sc->mtl_pixel_rid = 1;
- sc->mtl_pixel_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->mtl_pixel_rid, RF_ACTIVE);
- if (sc->mtl_pixel_res == NULL) {
- device_printf(dev, "couldn't map pixel memory\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_start(sc->mtl_pixel_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper pixel address\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_size(sc->mtl_pixel_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper pixel size\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "pixel frame buffer at mem %p-%p\n",
- (void *)rman_get_start(sc->mtl_pixel_res),
- (void *)(rman_get_start(sc->mtl_pixel_res) +
- rman_get_size(sc->mtl_pixel_res)));
-
- sc->mtl_text_rid = 2;
- sc->mtl_text_res = bus_alloc_resource_any(dev, SYS_RES_MEMORY,
- &sc->mtl_text_rid, RF_ACTIVE);
- if (sc->mtl_text_res == NULL) {
- device_printf(dev, "couldn't map text memory\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_start(sc->mtl_text_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper text address\n");
- error = ENXIO;
- goto error;
- }
- if (rman_get_size(sc->mtl_text_res) % PAGE_SIZE != 0) {
- device_printf(dev, "improper text size\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "text frame buffer at mem %p-%p\n",
- (void *)rman_get_start(sc->mtl_text_res),
- (void *)(rman_get_start(sc->mtl_text_res) +
- rman_get_size(sc->mtl_text_res)));
-
- error = terasic_mtl_attach(sc);
- if (error == 0)
- return (0);
-error:
- if (sc->mtl_text_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_text_rid,
- sc->mtl_text_res);
- if (sc->mtl_pixel_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_pixel_rid,
- sc->mtl_pixel_res);
- if (sc->mtl_reg_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_reg_rid,
- sc->mtl_reg_res);
- return (error);
-}
-
-static int
-terasic_mtl_fdt_detach(device_t dev)
-{
- struct terasic_mtl_softc *sc;
-
- sc = device_get_softc(dev);
- terasic_mtl_detach(sc);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_text_rid,
- sc->mtl_text_res);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_pixel_rid,
- sc->mtl_pixel_res);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_reg_rid,
- sc->mtl_reg_res);
- return (0);
-}
-
-static struct fb_info *
-terasic_mtl_fb_getinfo(device_t dev)
-{
- struct terasic_mtl_softc *sc;
-
- sc = device_get_softc(dev);
- return (&sc->mtl_fb_info);
-}
-
-static device_method_t terasic_mtl_fdt_methods[] = {
- DEVMETHOD(device_probe, terasic_mtl_fdt_probe),
- DEVMETHOD(device_attach, terasic_mtl_fdt_attach),
- DEVMETHOD(device_detach, terasic_mtl_fdt_detach),
- DEVMETHOD(fb_getinfo, terasic_mtl_fb_getinfo),
- { 0, 0 }
-};
-
-static driver_t terasic_mtl_fdt_driver = {
- "terasic_mtl",
- terasic_mtl_fdt_methods,
- sizeof(struct terasic_mtl_softc),
-};
-
-DRIVER_MODULE(mtl, simplebus, terasic_mtl_fdt_driver, terasic_mtl_devclass, 0,
- 0);
diff --git a/sys/dev/terasic/mtl/terasic_mtl_nexus.c b/sys/dev/terasic/mtl/terasic_mtl_nexus.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_nexus.c
+++ /dev/null
@@ -1,208 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/condvar.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/module.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-#include "fb_if.h"
-
-static int
-terasic_mtl_nexus_probe(device_t dev)
-{
-
- device_set_desc(dev, "Terasic Multi-touch LCD (MTL)");
- return (BUS_PROBE_NOWILDCARD);
-}
-
-static int
-terasic_mtl_nexus_attach(device_t dev)
-{
- struct terasic_mtl_softc *sc;
- u_long pixel_maddr, text_maddr, reg_maddr;
- u_long pixel_msize, text_msize, reg_msize;
- int error;
-
- sc = device_get_softc(dev);
- sc->mtl_dev = dev;
- sc->mtl_unit = device_get_unit(dev);
-
- /*
- * Query non-standard hints to find the locations of our two memory
- * regions. Enforce certain alignment and size requirements.
- */
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "reg_maddr", &reg_maddr) != 0 || (reg_maddr % PAGE_SIZE != 0)) {
- device_printf(dev, "improper register address\n");
- return (ENXIO);
- }
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "reg_msize", &reg_msize) != 0 || (reg_msize % PAGE_SIZE != 0)) {
- device_printf(dev, "improper register size\n");
- return (ENXIO);
- }
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "pixel_maddr", &pixel_maddr) != 0 ||
- (pixel_maddr % PAGE_SIZE != 0)) {
- device_printf(dev, "improper pixel frame buffer address\n");
- return (ENXIO);
- }
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "pixel_msize", &pixel_msize) != 0 ||
- (pixel_msize % PAGE_SIZE != 0)) {
- device_printf(dev, "improper pixel frame buffer size\n");
- return (ENXIO);
- }
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "text_maddr", &text_maddr) != 0 ||
- (text_maddr % PAGE_SIZE != 0)) {
- device_printf(dev, "improper text frame buffer address\n");
- return (ENXIO);
- }
- if (resource_long_value(device_get_name(dev), device_get_unit(dev),
- "text_msize", &text_msize) != 0 ||
- (text_msize % PAGE_SIZE != 0)) {
- device_printf(dev, "improper text frame buffer size\n");
- return (ENXIO);
- }
-
- /*
- * Allocate resources.
- */
- sc->mtl_reg_rid = 0;
- sc->mtl_reg_res = bus_alloc_resource(dev, SYS_RES_MEMORY,
- &sc->mtl_reg_rid, reg_maddr, reg_maddr + reg_msize - 1,
- reg_msize, RF_ACTIVE);
- if (sc->mtl_reg_res == NULL) {
- device_printf(dev, "couldn't map register memory\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "registers at mem %p-%p\n",
- (void *)reg_maddr, (void *)(reg_maddr + reg_msize));
- sc->mtl_pixel_rid = 0;
- sc->mtl_pixel_res = bus_alloc_resource(dev, SYS_RES_MEMORY,
- &sc->mtl_pixel_rid, pixel_maddr, pixel_maddr + pixel_msize - 1,
- pixel_msize, RF_ACTIVE);
- if (sc->mtl_pixel_res == NULL) {
- device_printf(dev, "couldn't map pixel memory\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "pixel frame buffer at mem %p-%p\n",
- (void *)pixel_maddr, (void *)(pixel_maddr + pixel_msize));
- sc->mtl_text_rid = 0;
- sc->mtl_text_res = bus_alloc_resource(dev, SYS_RES_MEMORY,
- &sc->mtl_text_rid, text_maddr, text_maddr + text_msize - 1,
- text_msize, RF_ACTIVE);
- if (sc->mtl_text_res == NULL) {
- device_printf(dev, "couldn't map text memory\n");
- error = ENXIO;
- goto error;
- }
- device_printf(sc->mtl_dev, "text frame buffer at mem %p-%p\n",
- (void *)text_maddr, (void *)(text_maddr + text_msize));
- error = terasic_mtl_attach(sc);
- if (error == 0)
- return (0);
-error:
- if (sc->mtl_text_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_text_rid,
- sc->mtl_text_res);
- if (sc->mtl_pixel_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_pixel_rid,
- sc->mtl_pixel_res);
- if (sc->mtl_reg_res != NULL)
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_reg_rid,
- sc->mtl_reg_res);
- return (error);
-}
-
-static int
-terasic_mtl_nexus_detach(device_t dev)
-{
- struct terasic_mtl_softc *sc;
-
- sc = device_get_softc(dev);
- terasic_mtl_detach(sc);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_text_rid,
- sc->mtl_text_res);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_pixel_rid,
- sc->mtl_pixel_res);
- bus_release_resource(dev, SYS_RES_MEMORY, sc->mtl_reg_rid,
- sc->mtl_reg_res);
- return (0);
-}
-
-static struct fb_info *
-terasic_mtl_fb_getinfo(device_t dev)
-{
- struct terasic_mtl_softc *sc;
-
- sc = device_get_softc(dev);
- return (&sc->mtl_fb_info);
-}
-
-static device_method_t terasic_mtl_nexus_methods[] = {
- DEVMETHOD(device_probe, terasic_mtl_nexus_probe),
- DEVMETHOD(device_attach, terasic_mtl_nexus_attach),
- DEVMETHOD(device_detach, terasic_mtl_nexus_detach),
- DEVMETHOD(fb_getinfo, terasic_mtl_fb_getinfo),
- { 0, 0 }
-};
-
-static driver_t terasic_mtl_nexus_driver = {
- "terasic_mtl",
- terasic_mtl_nexus_methods,
- sizeof(struct terasic_mtl_softc),
-};
-
-DRIVER_MODULE(mtl, nexus, terasic_mtl_nexus_driver, terasic_mtl_devclass, 0,
- 0);
diff --git a/sys/dev/terasic/mtl/terasic_mtl_pixel.c b/sys/dev/terasic/mtl/terasic_mtl_pixel.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_pixel.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/uio.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <machine/vm.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-static d_mmap_t terasic_mtl_pixel_mmap;
-static d_read_t terasic_mtl_pixel_read;
-static d_write_t terasic_mtl_pixel_write;
-
-static struct cdevsw mtl_pixel_cdevsw = {
- .d_version = D_VERSION,
- .d_mmap = terasic_mtl_pixel_mmap,
- .d_read = terasic_mtl_pixel_read,
- .d_write = terasic_mtl_pixel_write,
- .d_name = "terasic_mtl_pixel",
-};
-
-/*
- * All I/O to/from the MTL pixel device must be 32-bit, and aligned to 32-bit.
- */
-static int
-terasic_mtl_pixel_read(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint32_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 4 != 0 ||
- uio->uio_resid % 4 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_pixel_res);
- error = 0;
- if ((uio->uio_offset + uio->uio_resid < 0) ||
- (uio->uio_offset + uio->uio_resid > size))
- return (ENODEV);
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- v = bus_read_4(sc->mtl_pixel_res, offset);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- }
- return (error);
-}
-
-static int
-terasic_mtl_pixel_write(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint32_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 4 != 0 ||
- uio->uio_resid % 4 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_pixel_res);
- error = 0;
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- bus_write_4(sc->mtl_pixel_res, offset, v);
- }
- return (error);
-}
-
-static int
-terasic_mtl_pixel_mmap(struct cdev *dev, vm_ooffset_t offset,
- vm_paddr_t *paddr, int nprot, vm_memattr_t *memattr)
-{
- struct terasic_mtl_softc *sc;
- int error;
-
- sc = dev->si_drv1;
- error = 0;
- if (trunc_page(offset) == offset &&
- rman_get_size(sc->mtl_pixel_res) >= offset + PAGE_SIZE) {
- *paddr = rman_get_start(sc->mtl_pixel_res) + offset;
- *memattr = VM_MEMATTR_UNCACHEABLE;
- } else
- error = ENODEV;
- return (error);
-}
-
-int
-terasic_mtl_pixel_attach(struct terasic_mtl_softc *sc)
-{
-
- sc->mtl_pixel_cdev = make_dev(&mtl_pixel_cdevsw, sc->mtl_unit,
- UID_ROOT, GID_WHEEL, 0400, "mtl_pixel%d", sc->mtl_unit);
- if (sc->mtl_pixel_cdev == NULL) {
- device_printf(sc->mtl_dev, "%s: make_dev failed\n", __func__);
- return (ENXIO);
- }
- /* XXXRW: Slight race between make_dev(9) and here. */
- sc->mtl_pixel_cdev->si_drv1 = sc;
- return (0);
-}
-
-void
-terasic_mtl_pixel_detach(struct terasic_mtl_softc *sc)
-{
-
- if (sc->mtl_pixel_cdev != NULL)
- destroy_dev(sc->mtl_pixel_cdev);
-}
diff --git a/sys/dev/terasic/mtl/terasic_mtl_reg.c b/sys/dev/terasic/mtl/terasic_mtl_reg.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_reg.c
+++ /dev/null
@@ -1,296 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/endian.h>
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <machine/vm.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-static d_mmap_t terasic_mtl_reg_mmap;
-static d_read_t terasic_mtl_reg_read;
-static d_write_t terasic_mtl_reg_write;
-
-static struct cdevsw terasic_mtl_reg_cdevsw = {
- .d_version = D_VERSION,
- .d_mmap = terasic_mtl_reg_mmap,
- .d_read = terasic_mtl_reg_read,
- .d_write = terasic_mtl_reg_write,
- .d_name = "terasic_mtl_reg",
-};
-
-/*
- * All I/O to/from the MTL register device must be 32-bit, and aligned to
- * 32-bit.
- */
-static int
-terasic_mtl_reg_read(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint32_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 4 != 0 ||
- uio->uio_resid % 4 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_reg_res);
- error = 0;
- if ((uio->uio_offset + uio->uio_resid < 0) ||
- (uio->uio_offset + uio->uio_resid > size))
- return (ENODEV);
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- v = bus_read_4(sc->mtl_reg_res, offset);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- }
- return (error);
-}
-
-static int
-terasic_mtl_reg_write(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint32_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 4 != 0 ||
- uio->uio_resid % 4 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_reg_res);
- error = 0;
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- bus_write_4(sc->mtl_reg_res, offset, v);
- }
- return (error);
-}
-
-static int
-terasic_mtl_reg_mmap(struct cdev *dev, vm_ooffset_t offset, vm_paddr_t *paddr,
- int nprot, vm_memattr_t *memattr)
-{
- struct terasic_mtl_softc *sc;
- int error;
-
- sc = dev->si_drv1;
- error = 0;
- if (trunc_page(offset) == offset &&
- offset + PAGE_SIZE > offset &&
- rman_get_size(sc->mtl_reg_res) >= offset + PAGE_SIZE) {
- *paddr = rman_get_start(sc->mtl_reg_res) + offset;
- *memattr = VM_MEMATTR_UNCACHEABLE;
- } else
- error = ENODEV;
- return (error);
-}
-
-void
-terasic_mtl_reg_blend_get(struct terasic_mtl_softc *sc, uint32_t *blendp)
-{
-
- *blendp = le32toh(bus_read_4(sc->mtl_reg_res, TERASIC_MTL_OFF_BLEND));
-}
-
-void
-terasic_mtl_reg_blend_set(struct terasic_mtl_softc *sc, uint32_t blend)
-{
-
- bus_write_4(sc->mtl_reg_res, TERASIC_MTL_OFF_BLEND, htole32(blend));
-}
-
-void
-terasic_mtl_blend_default_set(struct terasic_mtl_softc *sc, uint8_t colour)
-{
- uint32_t v;
-
- TERASIC_MTL_LOCK(sc);
- terasic_mtl_reg_blend_get(sc, &v);
- v &= ~TERASIC_MTL_BLEND_DEFAULT_MASK;
- v |= colour << TERASIC_MTL_BLEND_DEFAULT_SHIFT;
- terasic_mtl_reg_blend_set(sc, v);
- TERASIC_MTL_UNLOCK(sc);
-}
-
-void
-terasic_mtl_blend_pixel_set(struct terasic_mtl_softc *sc, uint8_t alpha)
-{
- uint32_t v;
-
- TERASIC_MTL_LOCK(sc);
- terasic_mtl_reg_blend_get(sc, &v);
- v &= ~TERASIC_MTL_BLEND_PIXEL_MASK;
- v |= alpha << TERASIC_MTL_BLEND_PIXEL_SHIFT;
- terasic_mtl_reg_blend_set(sc, v);
- TERASIC_MTL_UNLOCK(sc);
-}
-
-void
-terasic_mtl_blend_textfg_set(struct terasic_mtl_softc *sc, uint8_t alpha)
-{
- uint32_t v;
-
- TERASIC_MTL_LOCK(sc);
- terasic_mtl_reg_blend_get(sc, &v);
- v &= ~TERASIC_MTL_BLEND_TEXTFG_MASK;
- v |= alpha << TERASIC_MTL_BLEND_TEXTFG_SHIFT;
- terasic_mtl_reg_blend_set(sc, v);
- TERASIC_MTL_UNLOCK(sc);
-}
-
-void
-terasic_mtl_blend_textbg_set(struct terasic_mtl_softc *sc, uint8_t alpha)
-{
- uint32_t v;
-
- TERASIC_MTL_LOCK(sc);
- terasic_mtl_reg_blend_get(sc, &v);
- v &= ~TERASIC_MTL_BLEND_TEXTBG_MASK;
- v |= alpha << TERASIC_MTL_BLEND_TEXTBG_SHIFT;
- terasic_mtl_reg_blend_set(sc, v);
- TERASIC_MTL_UNLOCK(sc);
-}
-
-void
-terasic_mtl_reg_pixel_endian_set(struct terasic_mtl_softc *sc, int endian_swap)
-{
- uint32_t v;
-
- TERASIC_MTL_LOCK(sc);
- terasic_mtl_reg_blend_get(sc, &v);
- if (endian_swap)
- v |= TERASIC_MTL_BLEND_PIXEL_ENDIAN_SWAP;
- else
- v &= ~TERASIC_MTL_BLEND_PIXEL_ENDIAN_SWAP;
- terasic_mtl_reg_blend_set(sc, v);
- TERASIC_MTL_UNLOCK(sc);
-}
-
-void
-terasic_mtl_reg_textcursor_get(struct terasic_mtl_softc *sc, uint8_t *colp,
- uint8_t *rowp)
-{
- uint32_t v;
-
- v = bus_read_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTCURSOR);
- v = le32toh(v);
- *colp = (v & TERASIC_MTL_TEXTCURSOR_COL_MASK) >>
- TERASIC_MTL_TEXTCURSOR_COL_SHIFT;
- *rowp = (v & TERASIC_MTL_TEXTCURSOR_ROW_MASK);
-}
-
-void
-terasic_mtl_reg_textcursor_set(struct terasic_mtl_softc *sc, uint8_t col,
- uint8_t row)
-{
- uint32_t v;
-
- v = (col << TERASIC_MTL_TEXTCURSOR_COL_SHIFT) | row;
- v = htole32(v);
- bus_write_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTCURSOR, v);
-}
-
-void
-terasic_mtl_reg_blank(struct terasic_mtl_softc *sc)
-{
-
- device_printf(sc->mtl_dev, "%s: not yet\n", __func__);
-}
-
-void
-terasic_mtl_reg_textframebufaddr_get(struct terasic_mtl_softc *sc,
- uint32_t *addrp)
-{
- uint32_t addr;
-
- addr = bus_read_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTFRAMEBUFADDR);
- *addrp = le32toh(addr);
-}
-
-void
-terasic_mtl_reg_textframebufaddr_set(struct terasic_mtl_softc *sc,
- uint32_t addr)
-{
-
- addr = htole32(addr);
- bus_write_4(sc->mtl_reg_res, TERASIC_MTL_OFF_TEXTFRAMEBUFADDR, addr);
-}
-
-int
-terasic_mtl_reg_attach(struct terasic_mtl_softc *sc)
-{
-
- sc->mtl_reg_cdev = make_dev(&terasic_mtl_reg_cdevsw, sc->mtl_unit,
- UID_ROOT, GID_WHEEL, 0400, "mtl_reg%d", sc->mtl_unit);
- if (sc->mtl_reg_cdev == NULL) {
- device_printf(sc->mtl_dev, "%s: make_dev failed\n", __func__);
- return (ENXIO);
- }
- /* XXXRW: Slight race between make_dev(9) and here. */
- sc->mtl_reg_cdev->si_drv1 = sc;
- return (0);
-}
-
-void
-terasic_mtl_reg_detach(struct terasic_mtl_softc *sc)
-{
-
- if (sc->mtl_reg_cdev != NULL)
- destroy_dev(sc->mtl_reg_cdev);
-}
diff --git a/sys/dev/terasic/mtl/terasic_mtl_syscons.c b/sys/dev/terasic/mtl/terasic_mtl_syscons.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_syscons.c
+++ /dev/null
@@ -1,476 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/consio.h>
-#include <sys/fbio.h>
-#include <sys/kbio.h>
-#include <sys/kernel.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/module.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <machine/vm.h>
-
-#include <dev/fb/fbreg.h>
-
-#include <dev/kbd/kbdreg.h>
-
-#include <dev/syscons/syscons.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-/*
- * Terasic Multitouch LCD (MTL) syscons driver. Implement syscons(4)'s
- * video_switch_t KPI using MTL's text frame buffer. In principle, we could
- * actually implement sc_rndr_sw_t, since the MTL text frame buffer implements
- * a VGA-like memory mapping. However, this requires a lot more book-keeping
- * with only minor performance improvements (avoiding indirection), as well as
- * introducing potential endianness issues. Instead we accept one additional
- * memory copy between a software frame buffer and the hardware frame buffer
- * and the generic frame buffer (gfb) framework.
- */
-
-MALLOC_DEFINE(M_TERASIC_MTL, "mtl_syscons", "MTL syscons frame buffer");
-
-/*
- * Run early so that boot-time console support can be initialised before
- * newbus gets around to configuring syscons.
- *
- * XXXRW: We may need to do more here in order to see earlier boot messages.
- */
-static int
-terasic_mtl_syscons_configure(int flags)
-{
-
- printf("%s: not yet\n", __func__);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_probe(int unit, video_adapter_t **adp, void *args,
- int flags)
-{
-
- printf("%s: not yet\n", __func__);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_init(int unit, video_adapter_t *adp, int flags)
-{
- struct terasic_mtl_softc *sc;
- video_info_t *vi;
-
- sc = (struct terasic_mtl_softc *)adp;
-
- vi = &adp->va_info;
- vid_init_struct(adp, "terasic_mtl_syscons", -1, unit);
-
- vi->vi_width = TERASIC_MTL_COLS;
- if (vi->vi_width > COL)
- vi->vi_width = COL;
- vi->vi_height = TERASIC_MTL_ROWS;
- if (vi->vi_height > ROW)
- vi->vi_height = ROW;
-
- /*
- * XXXRW: It's not quite clear how these should be initialised.
- */
- vi->vi_cwidth = 0;
- vi->vi_cheight = 0;
- vi->vi_flags = V_INFO_COLOR;
- vi->vi_mem_model = V_INFO_MM_OTHER;
-
- /*
- * Software text frame buffer from which we update the actual MTL
- * frame buffer when asked to.
- */
- adp->va_window = (vm_offset_t)sc->mtl_text_soft;
-
- /*
- * Declare video adapter capabilities -- at this point, simply color
- * support, as MTL doesn't support screen borders, font loading, or
- * mode changes.
- *
- * XXXRW: It's unclear if V_ADP_INITIALIZED is needed here; other
- * syscons(4) drivers are inconsistent about this and
- * V_ADP_REGISTERED.
- */
- adp->va_flags |= V_ADP_COLOR | V_ADP_INITIALIZED;
- if (vid_register(adp) < 0) {
- device_printf(sc->mtl_dev, "%s: vid_register failed\n",
- __func__);
- return (ENXIO);
- }
- adp->va_flags |= V_ADP_REGISTERED;
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_get_info(video_adapter_t *adp, int mode, video_info_t *info)
-{
-
- bcopy(&adp->va_info, info, sizeof(*info));
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_query_mode(video_adapter_t *adp, video_info_t *info)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_set_mode(video_adapter_t *adp, int mode)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_save_font(video_adapter_t *adp, int page, int size,
- int width, u_char *data, int c, int count)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_load_font(video_adapter_t *adp, int page, int size,
- int width, u_char *data, int c, int count)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_show_font(video_adapter_t *adp, int page)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_save_palette(video_adapter_t *adp, u_char *palette)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_load_palette(video_adapter_t *adp, u_char *palette)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_set_border(video_adapter_t *adp, int border)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_save_state(video_adapter_t *adp, void *p, size_t size)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_load_state(video_adapter_t *adp, void *p)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_set_win_org(video_adapter_t *adp, off_t offset)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_read_hw_cursor(video_adapter_t *adp, int *colp, int *rowp)
-{
- struct terasic_mtl_softc *sc;
- uint8_t col, row;
-
- sc = (struct terasic_mtl_softc *)adp;
- terasic_mtl_reg_textcursor_get(sc, &col, &row);
- *colp = col;
- *rowp = row;
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_set_hw_cursor(video_adapter_t *adp, int col, int row)
-{
- struct terasic_mtl_softc *sc;
-
- sc = (struct terasic_mtl_softc *)adp;
- terasic_mtl_reg_textcursor_set(sc, col, row);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_set_hw_cursor_shape(video_adapter_t *adp, int base,
- int height, int celsize, int blink)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_blank_display(video_adapter_t *adp, int mode)
-{
- struct terasic_mtl_softc *sc;
-
- sc = (struct terasic_mtl_softc *)adp;
- terasic_mtl_reg_blank(sc);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_mmap(video_adapter_t *adp, vm_ooffset_t offset,
- vm_paddr_t *paddr, int prot, vm_memattr_t *memattr)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_ioctl(video_adapter_t *adp, u_long cmd, caddr_t data)
-{
-
- return (fb_commonioctl(adp, cmd, data));
-}
-
-static int
-terasic_mtl_vidsw_clear(video_adapter_t *adp)
-{
- struct terasic_mtl_softc *sc;
-
- sc = (struct terasic_mtl_softc *)adp;
- printf("%s: not yet terasic_mtl_io_clear(sc);\n", __func__);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_fill_rect(video_adapter_t *adp, int val, int x, int y,
- int cx, int cy)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_bitblt(video_adapter_t *adp, ...)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_diag(video_adapter_t *adp, int level)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_save_cursor_palette(video_adapter_t *adp, u_char *palette)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_load_cursor_palette(video_adapter_t *adp, u_char *palette)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_copy(video_adapter_t *adp, vm_offset_t src, vm_offset_t dst,
- int n)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_putp(video_adapter_t *adp, vm_offset_t off, uint32_t p,
- uint32_t a, int size, int bpp, int bit_ltor, int byte_ltor)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-static int
-terasic_mtl_vidsw_putc(video_adapter_t *adp, vm_offset_t off, uint8_t c,
- uint8_t a)
-{
- struct terasic_mtl_softc *sc;
- u_int col, row;
-
- sc = (struct terasic_mtl_softc *)adp;
- col = (off % adp->va_info.vi_width);
- row = (off / adp->va_info.vi_width);
- terasic_mtl_text_putc(sc, col, row, c, a);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_puts(video_adapter_t *adp, vm_offset_t off, u_int16_t *s,
- int len)
-{
- int i;
-
- for (i = 0; i < len; i++)
- vidd_putc(adp, off + i, s[i] & 0xff, (s[i] & 0xff00) >> 8);
- return (0);
-}
-
-static int
-terasic_mtl_vidsw_putm(video_adapter_t *adp, int x, int y,
- uint8_t *pixel_image, uint32_t pixel_mask, int size, int width)
-{
-
- printf("%s: not yet\n", __func__);
- return (ENODEV);
-}
-
-int
-terasic_mtl_syscons_attach(struct terasic_mtl_softc *sc)
-{
- int error;
-
- sc->mtl_text_soft =
- malloc(sizeof(uint16_t) * TERASIC_MTL_ROWS * TERASIC_MTL_COLS,
- M_TERASIC_MTL, M_WAITOK | M_ZERO);
- error = terasic_mtl_vidsw_init(0, &sc->mtl_va, 0);
- if (error)
- goto out;
- error = sc_attach_unit(sc->mtl_unit, device_get_flags(sc->mtl_dev) |
- SC_AUTODETECT_KBD);
- if (error)
- device_printf(sc->mtl_dev, "%s: sc_attach_unit failed (%d)\n",
- __func__, error);
-out:
- if (error)
- free(sc->mtl_text_soft, M_TERASIC_MTL);
- return (error);
-}
-
-void
-terasic_mtl_syscons_detach(struct terasic_mtl_softc *sc)
-{
-
- free(sc->mtl_text_soft, M_TERASIC_MTL);
- panic("%s: not supported by syscons", __func__);
-}
-
-static video_switch_t terasic_mtl_vidsw = {
- .probe = terasic_mtl_vidsw_probe,
- .init = terasic_mtl_vidsw_init,
- .get_info = terasic_mtl_vidsw_get_info,
- .query_mode = terasic_mtl_vidsw_query_mode,
- .set_mode = terasic_mtl_vidsw_set_mode,
- .save_font = terasic_mtl_vidsw_save_font,
- .load_font = terasic_mtl_vidsw_load_font,
- .show_font = terasic_mtl_vidsw_show_font,
- .save_palette = terasic_mtl_vidsw_save_palette,
- .load_palette = terasic_mtl_vidsw_load_palette,
- .set_border = terasic_mtl_vidsw_set_border,
- .save_state = terasic_mtl_vidsw_save_state,
- .load_state = terasic_mtl_vidsw_load_state,
- .set_win_org = terasic_mtl_vidsw_set_win_org,
- .read_hw_cursor = terasic_mtl_vidsw_read_hw_cursor,
- .set_hw_cursor = terasic_mtl_vidsw_set_hw_cursor,
- .set_hw_cursor_shape = terasic_mtl_vidsw_set_hw_cursor_shape,
- .blank_display = terasic_mtl_vidsw_blank_display,
- .mmap = terasic_mtl_vidsw_mmap,
- .ioctl = terasic_mtl_vidsw_ioctl,
- .clear = terasic_mtl_vidsw_clear,
- .fill_rect = terasic_mtl_vidsw_fill_rect,
- .bitblt = terasic_mtl_vidsw_bitblt,
- .diag = terasic_mtl_vidsw_diag,
- .save_cursor_palette = terasic_mtl_vidsw_save_cursor_palette,
- .load_cursor_palette = terasic_mtl_vidsw_load_cursor_palette,
- .copy = terasic_mtl_vidsw_copy,
- .putp = terasic_mtl_vidsw_putp,
- .putc = terasic_mtl_vidsw_putc,
- .puts = terasic_mtl_vidsw_puts,
- .putm = terasic_mtl_vidsw_putm,
-};
-VIDEO_DRIVER(terasic_mtl_syscons, terasic_mtl_vidsw,
- terasic_mtl_syscons_configure);
-extern sc_rndr_sw_t txtrndrsw;
-RENDERER(terasic_mtl_syscons, 0, txtrndrsw, gfb_set);
-RENDERER_MODULE(terasic_mtl_syscons, gfb_set);
diff --git a/sys/dev/terasic/mtl/terasic_mtl_text.c b/sys/dev/terasic/mtl/terasic_mtl_text.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_text.c
+++ /dev/null
@@ -1,196 +0,0 @@
-/*-
- * SPDX-License-Identifier: BSD-2-Clause-FreeBSD
- *
- * Copyright (c) 2012 Robert N. M. Watson
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/conf.h>
-#include <sys/consio.h> /* struct vt_mode */
-#include <sys/endian.h>
-#include <sys/fbio.h> /* video_adapter_t */
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/rman.h>
-#include <sys/systm.h>
-#include <sys/uio.h>
-
-#include <machine/bus.h>
-#include <machine/resource.h>
-#include <machine/vm.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-static d_mmap_t terasic_mtl_text_mmap;
-static d_read_t terasic_mtl_text_read;
-static d_write_t terasic_mtl_text_write;
-
-static struct cdevsw terasic_mtl_text_cdevsw = {
- .d_version = D_VERSION,
- .d_mmap = terasic_mtl_text_mmap,
- .d_read = terasic_mtl_text_read,
- .d_write = terasic_mtl_text_write,
- .d_name = "terasic_mtl_text",
-};
-
-/*
- * All I/O to/from the mtl device must be 16-bit, and aligned to 16-bit.
- */
-static int
-terasic_mtl_text_read(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint16_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 2 != 0 ||
- uio->uio_resid % 2 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_text_res);
- error = 0;
- if ((uio->uio_offset + uio->uio_resid < 0) ||
- (uio->uio_offset + uio->uio_resid > size))
- return (ENODEV);
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- v = bus_read_2(sc->mtl_text_res, offset);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- }
- return (error);
-}
-
-static int
-terasic_mtl_text_write(struct cdev *dev, struct uio *uio, int flag)
-{
- struct terasic_mtl_softc *sc;
- u_long offset, size;
- uint16_t v;
- int error;
-
- if (uio->uio_offset < 0 || uio->uio_offset % 2 != 0 ||
- uio->uio_resid % 2 != 0)
- return (ENODEV);
- sc = dev->si_drv1;
- size = rman_get_size(sc->mtl_text_res);
- error = 0;
- while (uio->uio_resid > 0) {
- offset = uio->uio_offset;
- if (offset + sizeof(v) > size)
- return (ENODEV);
- error = uiomove(&v, sizeof(v), uio);
- if (error)
- return (error);
- bus_write_2(sc->mtl_text_res, offset, v);
- }
- return (error);
-}
-
-static int
-terasic_mtl_text_mmap(struct cdev *dev, vm_ooffset_t offset,
- vm_paddr_t *paddr, int nprot, vm_memattr_t *memattr)
-{
- struct terasic_mtl_softc *sc;
- int error;
-
- sc = dev->si_drv1;
- error = 0;
- if (trunc_page(offset) == offset &&
- offset + PAGE_SIZE > offset &&
- rman_get_size(sc->mtl_text_res) >= offset + PAGE_SIZE) {
- *paddr = rman_get_start(sc->mtl_text_res) + offset;
- *memattr = VM_MEMATTR_UNCACHEABLE;
- } else
- error = ENODEV;
- return (error);
-}
-
-void
-terasic_mtl_text_putc(struct terasic_mtl_softc *sc, u_int x, u_int y,
- uint8_t c, uint8_t a)
-{
- u_int offset;
- uint16_t v;
-
- KASSERT(x < TERASIC_MTL_COLS, ("%s: TERASIC_MTL_COLS", __func__));
- KASSERT(y < TERASIC_MTL_ROWS, ("%s: TERASIC_MTL_ROWS", __func__));
-
- offset = sizeof(uint16_t) * (x + y * TERASIC_MTL_COLS);
- v = (c << TERASIC_MTL_TEXTFRAMEBUF_CHAR_SHIFT) |
- (a << TERASIC_MTL_TEXTFRAMEBUF_ATTR_SHIFT);
- v = htole16(v);
- bus_write_2(sc->mtl_text_res, offset, v);
-}
-
-int
-terasic_mtl_text_attach(struct terasic_mtl_softc *sc)
-{
- uint32_t v;
- u_int offset;
-
- terasic_mtl_reg_textframebufaddr_get(sc, &v);
- if (v != TERASIC_MTL_TEXTFRAMEBUF_EXPECTED_ADDR) {
- device_printf(sc->mtl_dev, "%s: unexpected text frame buffer "
- "address (%08x); cannot attach\n", __func__, v);
- return (ENXIO);
- }
- for (offset = 0; offset < rman_get_size(sc->mtl_text_res);
- offset += sizeof(uint16_t))
- bus_write_2(sc->mtl_text_res, offset, 0);
-
- sc->mtl_text_cdev = make_dev(&terasic_mtl_text_cdevsw, sc->mtl_unit,
- UID_ROOT, GID_WHEEL, 0400, "mtl_text%d", sc->mtl_unit);
- if (sc->mtl_text_cdev == NULL) {
- device_printf(sc->mtl_dev, "%s: make_dev failed\n", __func__);
- return (ENXIO);
- }
- /* XXXRW: Slight race between make_dev(9) and here. */
- TERASIC_MTL_LOCK_INIT(sc);
- sc->mtl_text_cdev->si_drv1 = sc;
- return (0);
-}
-
-void
-terasic_mtl_text_detach(struct terasic_mtl_softc *sc)
-{
-
- if (sc->mtl_text_cdev != NULL) {
- destroy_dev(sc->mtl_text_cdev);
- TERASIC_MTL_LOCK_DESTROY(sc);
- }
-}
diff --git a/sys/dev/terasic/mtl/terasic_mtl_vt.c b/sys/dev/terasic/mtl/terasic_mtl_vt.c
deleted file mode 100644
--- a/sys/dev/terasic/mtl/terasic_mtl_vt.c
+++ /dev/null
@@ -1,133 +0,0 @@
-/*-
- * Copyright (c) 2014 Ed Maste
- * All rights reserved.
- *
- * This software was developed by SRI International and the University of
- * Cambridge Computer Laboratory under DARPA/AFRL contract (FA8750-10-C-0237)
- * ("CTSRD"), as part of the DARPA CRASH research programme.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/param.h>
-#include <sys/bus.h>
-#include <sys/fbio.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/rman.h>
-
-#include <dev/fdt/fdt_common.h>
-#include <dev/ofw/ofw_bus.h>
-#include <dev/ofw/ofw_bus_subr.h>
-
-#include <dev/terasic/mtl/terasic_mtl.h>
-
-#include <dev/vt/colors/vt_termcolors.h>
-
-/*
- * Terasic Multitouch LCD (MTL) vt(4) framebuffer driver.
- */
-
-#include <vm/vm.h>
-#include <vm/pmap.h>
-
-static int
-terasic_mtl_fbd_panel_info(struct terasic_mtl_softc *sc, struct fb_info *info)
-{
- phandle_t node;
- pcell_t dts_value[2];
- int len;
-
- if ((node = ofw_bus_get_node(sc->mtl_dev)) == -1)
- return (ENXIO);
-
- /* panel size */
- if ((len = OF_getproplen(node, "panel-size")) != sizeof(dts_value))
- return (ENXIO);
- OF_getencprop(node, "panel-size", dts_value, len);
- info->fb_width = dts_value[0];
- info->fb_height = dts_value[1];
- info->fb_bpp = info->fb_depth = 32;
- info->fb_stride = info->fb_width * (info->fb_depth / 8);
-
- /*
- * Safety belt to ensure framebuffer params are as expected. May be
- * removed when we have full confidence in fdt / hints params.
- */
- if (info->fb_width != TERASIC_MTL_FB_WIDTH ||
- info->fb_height != TERASIC_MTL_FB_HEIGHT ||
- info->fb_stride != 3200 ||
- info->fb_bpp != 32 || info->fb_depth != 32) {
- device_printf(sc->mtl_dev,
- "rejecting invalid panel params width=%u height=%u\n",
- (unsigned)info->fb_width, (unsigned)info->fb_height);
- return (EINVAL);
- }
-
- return (0);
-}
-
-int
-terasic_mtl_fbd_attach(struct terasic_mtl_softc *sc)
-{
- struct fb_info *info;
- device_t fbd;
-
- info = &sc->mtl_fb_info;
- info->fb_name = device_get_nameunit(sc->mtl_dev);
- info->fb_pbase = rman_get_start(sc->mtl_pixel_res);
- info->fb_size = rman_get_size(sc->mtl_pixel_res);
- info->fb_vbase = (intptr_t)pmap_mapdev(info->fb_pbase, info->fb_size);
- if (terasic_mtl_fbd_panel_info(sc, info) != 0) {
- device_printf(sc->mtl_dev, "using default panel params\n");
- info->fb_bpp = info->fb_depth = 32;
- info->fb_width = 800;
- info->fb_height = 480;
- info->fb_stride = info->fb_width * (info->fb_depth / 8);
- }
-
- fbd = device_add_child(sc->mtl_dev, "fbd",
- device_get_unit(sc->mtl_dev));
- if (fbd == NULL) {
- device_printf(sc->mtl_dev, "Failed to attach fbd child\n");
- return (ENXIO);
- }
- if (device_probe_and_attach(fbd) != 0) {
- device_printf(sc->mtl_dev,
- "Failed to attach fbd device\n");
- return (ENXIO);
- }
- return (0);
-}
-
-void
-terasic_mtl_fbd_detach(struct terasic_mtl_softc *sc)
-{
- panic("%s: detach not implemented", __func__);
-}
-
-extern device_t fbd_driver;
-extern devclass_t fbd_devclass;
-DRIVER_MODULE(fbd, terasic_mtl, fbd_driver, fbd_devclass, 0, 0);

File Metadata

Mime Type
text/plain
Expires
Sat, Nov 9, 12:57 AM (7 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14546874
Default Alt Text
D34057.diff (83 KB)

Event Timeline