mirror of
https://github.com/Ysurac/openmptcprouter-feeds.git
synced 2025-03-09 15:40:03 +00:00
Add lcd4linux support
This commit is contained in:
parent
a90df1a0b3
commit
242a9523d9
11 changed files with 3768 additions and 1 deletions
11
lcd4linux/patches/120-remove-as-needed-linker-option.patch
Normal file
11
lcd4linux/patches/120-remove-as-needed-linker-option.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -18,7 +18,7 @@ ACLOCAL_AMFLAGS=-I m4
|
||||
# use this for lots of warnings
|
||||
#AM_CFLAGS = -D_GNU_SOURCE -std=c99 -m64 -Wall -W -pedantic -Wno-variadic-macros -fno-strict-aliasing
|
||||
|
||||
-lcd4linux_LDFLAGS ="-Wl,--as-needed"
|
||||
+lcd4linux_LDFLAGS =
|
||||
lcd4linux_LDADD = @DRIVERS@ @PLUGINS@ @DRVLIBS@ @PLUGINLIBS@
|
||||
lcd4linux_DEPENDENCIES = @DRIVERS@ @PLUGINS@
|
||||
|
22
lcd4linux/patches/140-no_repnop_T6963.patch
Normal file
22
lcd4linux/patches/140-no_repnop_T6963.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
--- a/drv_T6963.c
|
||||
+++ b/drv_T6963.c
|
||||
@@ -114,7 +114,9 @@ static void drv_T6_status1(void)
|
||||
/* wait for STA0=1 and STA1=1 */
|
||||
n = 0;
|
||||
do {
|
||||
+#if 0
|
||||
rep_nop();
|
||||
+#endif
|
||||
if (++n > 1000) {
|
||||
debug("hang in status1");
|
||||
bug = 1;
|
||||
@@ -150,7 +152,9 @@ static void drv_T6_status2(void)
|
||||
/* wait for STA3=1 */
|
||||
n = 0;
|
||||
do {
|
||||
+#if 0
|
||||
rep_nop();
|
||||
+#endif
|
||||
if (++n > 1000) {
|
||||
debug("hang in status2");
|
||||
bug = 1;
|
2624
lcd4linux/patches/150-addlibmpdclient.patch
Normal file
2624
lcd4linux/patches/150-addlibmpdclient.patch
Normal file
File diff suppressed because it is too large
Load diff
24
lcd4linux/patches/160-uinput_defs.patch
Normal file
24
lcd4linux/patches/160-uinput_defs.patch
Normal file
|
@ -0,0 +1,24 @@
|
|||
--- a/drv_G15.c
|
||||
+++ b/drv_G15.c
|
||||
@@ -42,6 +42,7 @@
|
||||
|
||||
#include <usb.h>
|
||||
#include <fcntl.h>
|
||||
+#include <linux/version.h>
|
||||
#include <linux/input.h>
|
||||
#include <linux/uinput.h>
|
||||
|
||||
@@ -269,8 +270,13 @@ void drv_G15_initKeyHandling(char *devic
|
||||
}
|
||||
memset(&device, 0, sizeof(device));
|
||||
strncpy(device.name, "G15 Keys", UINPUT_MAX_NAME_SIZE);
|
||||
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,0)
|
||||
device.id.bustype = BUS_USB;
|
||||
device.id.version = 4;
|
||||
+#else
|
||||
+ device.idbus = BUS_USB;
|
||||
+ device.idversion = 4;
|
||||
+#endif
|
||||
|
||||
ioctl(uinput_fd, UI_SET_EVBIT, EV_KEY);
|
||||
|
195
lcd4linux/patches/170-add-generic-spidev-driver.patch
Normal file
195
lcd4linux/patches/170-add-generic-spidev-driver.patch
Normal file
|
@ -0,0 +1,195 @@
|
|||
--- a/Makefile.am
|
||||
+++ b/Makefile.am
|
||||
@@ -71,6 +71,8 @@ drv_generic_i2c.c \
|
||||
drv_generic_i2c.h \
|
||||
drv_generic_keypad.c \
|
||||
drv_generic_keypad.h \
|
||||
+drv_generic_spidev.c \
|
||||
+drv_generic_spidev.h \
|
||||
drv_ASTUSB.c \
|
||||
drv_BeckmannEgle.c \
|
||||
drv_BWCT.c \
|
||||
--- /dev/null
|
||||
+++ b/drv_generic_spidev.c
|
||||
@@ -0,0 +1,89 @@
|
||||
+/* $Id$
|
||||
+ * $URL$
|
||||
+ *
|
||||
+ * generic driver helper for displays connected via SPI bus
|
||||
+ *
|
||||
+ * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||
+ *
|
||||
+ * This file is part of LCD4Linux.
|
||||
+ *
|
||||
+ * LCD4Linux is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * LCD4Linux is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#include "config.h"
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+#include <stdio.h>
|
||||
+#include <string.h>
|
||||
+#include <errno.h>
|
||||
+#include <unistd.h>
|
||||
+#include <fcntl.h>
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+
|
||||
+#include "debug.h"
|
||||
+#include "qprintf.h"
|
||||
+#include "cfg.h"
|
||||
+#include "drv_generic_spidev.h"
|
||||
+
|
||||
+static char *generic_spidev_section = "";
|
||||
+static char *generic_spidev_driver = "";
|
||||
+static int generic_spidev_fd;
|
||||
+
|
||||
+int drv_generic_spidev_open(const char *section, const char *driver)
|
||||
+{
|
||||
+ char *spidev;
|
||||
+
|
||||
+ udelay_init();
|
||||
+
|
||||
+ generic_spidev_section = (char *) section;
|
||||
+ generic_spidev_driver = (char *) driver;
|
||||
+
|
||||
+ spidev = cfg_get(generic_spidev_section, "Port", NULL);
|
||||
+
|
||||
+ info("%s: initializing SPI device %s", generic_spidev_driver, spidev);
|
||||
+ generic_spidev_fd = open(spidev, O_WRONLY);
|
||||
+ if (generic_spidev_fd < 0) {
|
||||
+ error("%s: unable to open SPI device %s!\n", generic_spidev_driver, spidev);
|
||||
+ goto exit_error;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+ exit_error:
|
||||
+ free(spidev);
|
||||
+ return -1;
|
||||
+}
|
||||
+
|
||||
+int drv_generic_spidev_close(void)
|
||||
+{
|
||||
+ close(generic_spidev_fd);
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+int drv_generic_spidev_transfer(const int count, struct spi_ioc_transfer *tr)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = ioctl(generic_spidev_fd, SPI_IOC_MESSAGE(count), tr);
|
||||
+ if (ret < count) {
|
||||
+ error("%s: can't send SPI message! (%s)\n",
|
||||
+ generic_spidev_driver, strerror(errno));
|
||||
+ return -1;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
--- /dev/null
|
||||
+++ b/drv_generic_spidev.h
|
||||
@@ -0,0 +1,54 @@
|
||||
+/* $Id$
|
||||
+ * $URL$
|
||||
+ *
|
||||
+ * generic driver helper for displays connected via SPI bus
|
||||
+ *
|
||||
+ * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||
+ * Copyright (C) 2012 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net>
|
||||
+ *
|
||||
+ * This file is part of LCD4Linux.
|
||||
+ *
|
||||
+ * LCD4Linux is free software; you can redistribute it and/or modify
|
||||
+ * it under the terms of the GNU General Public License as published by
|
||||
+ * the Free Software Foundation; either version 2, or (at your option)
|
||||
+ * any later version.
|
||||
+ *
|
||||
+ * LCD4Linux is distributed in the hope that it will be useful,
|
||||
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
+ * GNU General Public License for more details.
|
||||
+ *
|
||||
+ * You should have received a copy of the GNU General Public License
|
||||
+ * along with this program; if not, write to the Free Software
|
||||
+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+/*
|
||||
+ *
|
||||
+ * exported fuctions:
|
||||
+ *
|
||||
+ * int drv_generic_spidev_open (const char *section, const char *driver)
|
||||
+ * reads 'Port' entry from config and opens
|
||||
+ * the SPI device
|
||||
+ * returns 0 if ok, -1 on failure
|
||||
+ *
|
||||
+ * int drv_generic_spidev_close (void)
|
||||
+ * closes SPI device
|
||||
+ * returns 0 if ok, -1 on failure
|
||||
+ *
|
||||
+ * void drv_generic_spidev_transfer (int count, struct spi_ioc_transfer *tr)
|
||||
+ * transfer data to/from the SPI device
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+#ifndef _DRV_GENERIC_SPIDEV_H_
|
||||
+#define _DRV_GENERIC_SPIDEV_H_
|
||||
+
|
||||
+#include <linux/spi/spidev.h>
|
||||
+
|
||||
+int drv_generic_spidev_open(const char *section, const char *driver);
|
||||
+int drv_generic_spidev_close(void);
|
||||
+int drv_generic_spidev_transfer(const int count, struct spi_ioc_transfer *tr);
|
||||
+
|
||||
+#endif /* _DRV_GENERIC_SPIDEV_H_ */
|
||||
--- a/drivers.m4
|
||||
+++ b/drivers.m4
|
||||
@@ -301,6 +301,7 @@ PARPORT="no"
|
||||
SERIAL="no"
|
||||
I2C="no"
|
||||
KEYPAD="no"
|
||||
+SPIDEV="no"
|
||||
|
||||
# generic libraries
|
||||
LIBUSB="no"
|
||||
@@ -936,6 +937,12 @@ if test "$LIBJPEG" = "yes"; then
|
||||
DRVLIBS="$DRVLIBS -ljpeg"
|
||||
fi
|
||||
|
||||
+# generic spidev driver
|
||||
+if test "$SPIDEV" = "yes"; then
|
||||
+ DRIVERS="$DRIVERS drv_generic_spidev.o"
|
||||
+ AC_DEFINE(WITH_SPIDEV, 1, [SPIDEV driver])
|
||||
+fi
|
||||
+
|
||||
# libusb
|
||||
if test "$LIBUSB" = "yes"; then
|
||||
DRVLIBS="$DRVLIBS -lusb"
|
||||
--- a/configure.ac
|
||||
+++ b/configure.ac
|
||||
@@ -115,6 +115,9 @@ AC_ARG_WITH(outb,
|
||||
|
||||
AC_CHECK_HEADERS([asm/io.h] [linux/parport.h linux/ppdev.h], [has_parport="true"], [has_parport="false"])
|
||||
|
||||
+# check for spidev
|
||||
+AC_CHECK_HEADERS([linux/spi/spidev.h], [has_spidev="true"], [has_spidev="false"])
|
||||
+
|
||||
# drivers
|
||||
sinclude(drivers.m4)
|
||||
|
20
lcd4linux/patches/173-glcd2usb-bigendian-fix.patch
Normal file
20
lcd4linux/patches/173-glcd2usb-bigendian-fix.patch
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- a/drv_GLCD2USB.c
|
||||
+++ b/drv_GLCD2USB.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <sys/time.h>
|
||||
#include <usb.h>
|
||||
+#include <endian.h>
|
||||
|
||||
#include "debug.h"
|
||||
#include "cfg.h"
|
||||
@@ -487,6 +488,9 @@ static int drv_GLCD2USB_start(const char
|
||||
return -1;
|
||||
}
|
||||
|
||||
+ buffer.display_info.width = le16toh(buffer.display_info.width);
|
||||
+ buffer.display_info.height = le16toh(buffer.display_info.height);
|
||||
+
|
||||
info("%s: display name = %s", Name, buffer.display_info.name);
|
||||
info("%s: display resolution = %d * %d", Name, buffer.display_info.width, buffer.display_info.height);
|
||||
info("%s: display flags: %x", Name, buffer.display_info.flags);
|
Loading…
Add table
Add a link
Reference in a new issue