diff --git a/config/functions b/config/functions
index ce78e0943f..5865059572 100644
--- a/config/functions
+++ b/config/functions
@@ -384,7 +384,6 @@ show_config() {
config_message="$config_message\n - ALSA support:\t\t\t $ALSA_SUPPORT"
config_message="$config_message\n - Pulseaudio support:\t\t\t $PULSEAUDIO_SUPPORT"
config_message="$config_message\n - Bluetooth support:\t\t\t $BLUETOOTH_SUPPORT"
- config_message="$config_message\n - LCD drivers:\t\t\t\t $LCD_DRIVER"
for config_driver in $ADDITIONAL_DRIVERS; do
config_message="$config_message\n - Include driver:\t\t\t $config_driver"
diff --git a/distributions/LibreELEC/options b/distributions/LibreELEC/options
index 44f3b9971d..eb1947c194 100644
--- a/distributions/LibreELEC/options
+++ b/distributions/LibreELEC/options
@@ -153,19 +153,6 @@
# build and install iSCSI support - iscsistart (yes / no)
ISCSI_SUPPORT="yes"
-# LCD driver to Use - Possible drivers are ( Comma seperated:
-# bayrad,CFontz,CFontz633,CFontzPacket,curses,CwLnx,dm140,
-# ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,
-# icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,
-# joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,
-# ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,
-# picolcd,pyramid,sed1330,sed1520,serialPOS,
-# serialVFD,shuttleVFD,sli,stv5730,SureElec,svga,vlsys_m428
-# 'all' compiles all drivers;
-# 'all,!xxx,!yyy' de-selects previously selected drivers
-# "none" for disable LCD support
- LCD_DRIVER="irtrans,imon,imonlcd,mdm166a,MtxOrb,lis,dm140,hd44780,CFontz,SureElec,vlsys_m428,serialVFD,shuttleVFD"
-
# Support for partitioning and formating disks in initramfs (yes / no)
# This adds support for parted and mkfs.ext3/4 to initramfs for OEM usage
INITRAMFS_PARTED_SUPPORT="no"
diff --git a/packages/sysutils/lcdproc/package.mk b/packages/sysutils/lcdproc/package.mk
deleted file mode 100644
index 6c494e8467..0000000000
--- a/packages/sysutils/lcdproc/package.mk
+++ /dev/null
@@ -1,76 +0,0 @@
-################################################################################
-# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2016 Stephan Raue (stephan@openelec.tv)
-#
-# OpenELEC 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 of the License, or
-# (at your option) any later version.
-#
-# OpenELEC 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 OpenELEC. If not, see .
-################################################################################
-
-PKG_NAME="lcdproc"
-PKG_VERSION="0.5.7-cvs20140217"
-PKG_REV="1"
-PKG_ARCH="any"
-PKG_LICENSE="GPL"
-PKG_SITE="http://lcdproc.org/"
-# PKG_URL="$SOURCEFORGE_SRC/lcdproc/lcdproc/$PKG_VERSION/$PKG_NAME-$PKG_VERSION.tar.gz"
-PKG_URL="$DISTRO_SRC/$PKG_NAME-$PKG_VERSION.tar.xz"
-PKG_DEPENDS_TARGET="toolchain libusb libhid libftdi1"
-PKG_SECTION="system"
-PKG_SHORTDESC="lcdproc: Software to display system information from your Linux/*BSD box on a LCD"
-PKG_LONGDESC="LCDproc is a piece of software that displays real-time system information from your Linux/*BSD box on a LCD. The server supports several serial devices: Matrix Orbital, Crystal Fontz, Bayrad, LB216, LCDM001 (kernelconcepts.de), Wirz-SLI, Cwlinux(.com) and PIC-an-LCD; and some devices connected to the LPT port: HD44780, STV5730, T6963, SED1520 and SED1330. Various clients are available that display things like CPU load, system load, memory usage, uptime, and a lot more."
-
-PKG_IS_ADDON="no"
-PKG_AUTORECONF="yes"
-
-IFS=$','
-for i in $LCD_DRIVER; do
- case $i in
- glcd) PKG_DEPENDS_TARGET="$PKG_DEPENDS_TARGET freetype serdisplib"
- ;;
- *)
- esac
-done
-unset IFS
-
-PKG_CONFIGURE_OPTS_TARGET="--with-ft-prefix=$SYSROOT_PREFIX/usr --enable-libusb --enable-drivers=$LCD_DRIVER,!curses,!svga --enable-seamless-hbars"
-
-pre_make_target() {
- # dont build parallel
- MAKEFLAGS=-j1
-}
-
-post_makeinstall_target() {
- rm -rf $INSTALL/etc/lcd*.conf
- rm -rf $INSTALL/usr/bin
-
- sed -e "s|^DriverPath=.*$|DriverPath=/usr/lib/lcdproc/|" \
- -e "s|^#Foreground=.*$|Foreground=no|" \
- -e "s|^#ServerScreen=.*$|ServerScreen=blank|" \
- -e "s|^#Backlight=.*$|Backlight=open|" \
- -e "s|^#Heartbeat=.*$|Heartbeat=open|" \
- -e "s|^#TitleSpeed=.*$|TitleSpeed=4|" \
- -e "s|^#Hello=\" Welcome to\"|Hello=\"Welcome to\"|" \
- -e "s|^#Hello=\" LCDproc!\"|Hello=\"$DISTRONAME\"|" \
- -e "s|^#GoodBye=\"Thanks for using\"|GoodBye=\"Thanks for using\"|" \
- -e "s|^#GoodBye=\" LCDproc!\"|GoodBye=\"$DISTRONAME\"|" \
- -e "s|^#normal_font=.*$|normal_font=/usr/share/fonts/liberation/LiberationMono-Bold.ttf|" \
- -i $INSTALL/etc/LCDd.conf
-
- mkdir -p $INSTALL/usr/lib/libreelec
- cp $PKG_DIR/scripts/lcd-wrapper $INSTALL/usr/lib/libreelec
-
-}
-
-post_install() {
- enable_service lcdd.service
-}
diff --git a/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-dm140_henlar_v0.2.patch b/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-dm140_henlar_v0.2.patch
deleted file mode 100644
index 4570216b50..0000000000
--- a/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-dm140_henlar_v0.2.patch
+++ /dev/null
@@ -1,1643 +0,0 @@
-diff -Naur lcdproc-0.5.6-old/acinclude.m4 lcdproc-0.5.6-new/acinclude.m4
---- lcdproc-0.5.6-old/acinclude.m4 2012-09-01 14:34:24.000000000 -0700
-+++ lcdproc-0.5.6-new/acinclude.m4 2012-11-14 12:06:48.000000000 -0800
-@@ -9,7 +9,7 @@
- [ which is a comma-separated list of drivers.]
- [ Possible drivers are:]
- [ bayrad,CFontz,CFontzPacket,curses,CwLnx,]
-- [ ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,]
-+ [ dm140,ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,]
- [ icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,]
- [ joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,]
- [ ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,]
-@@ -22,7 +22,7 @@
- drivers="$enableval",
- drivers=[bayrad,CFontz,CFontzPacket,curses,CwLnx,glk,lb216,lcdm001,MtxOrb,pyramid,text])
-
--allDrivers=[bayrad,CFontz,CFontzPacket,curses,CwLnx,ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,picolcd,pyramid,sdeclcd,sed1330,sed1520,serialPOS,serialVFD,shuttleVFD,sli,stv5730,SureElec,svga,t6963,text,tyan,ula200,vlsys_m428,xosd]
-+allDrivers=[bayrad,CFontz,CFontzPacket,curses,CwLnx,dm140,ea65,EyeboxOne,g15,glcd,glcdlib,glk,hd44780,i2500vfd,icp_a106,imon,imonlcd,IOWarrior,irman,irtrans,joy,lb216,lcdm001,lcterm,lirc,lis,MD8800,mdm166a,ms6931,mtc_s16209x,MtxOrb,mx5000,NoritakeVFD,picolcd,pyramid,sdeclcd,sed1330,sed1520,serialPOS,serialVFD,shuttleVFD,sli,stv5730,SureElec,svga,t6963,text,tyan,ula200,vlsys_m428,xosd]
- if test "$debug" = yes; then
- allDrivers=["${allDrivers},debug"]
- fi
-@@ -127,6 +127,10 @@
- DRIVERS="$DRIVERS debug${SO}"
- actdrivers=["$actdrivers debug"]
- ;;
-+ dm140)
-+ DRIVERS="$DRIVERS dm140${SO}"
-+ actdrivers=["$actdrivers dm140"]
-+ ;;
- ea65)
- DRIVERS="$DRIVERS ea65${SO}"
- actdrivers=["$actdrivers ea65"]
-diff -Naur lcdproc-0.5.6-old/LCDd.conf lcdproc-0.5.6-new/LCDd.conf
---- lcdproc-0.5.6-old/LCDd.conf 2012-08-19 07:29:07.000000000 -0700
-+++ lcdproc-0.5.6-new/LCDd.conf 2012-11-14 12:06:25.000000000 -0800
-@@ -290,6 +290,10 @@
-
-
-
-+## DM140 VFD
-+[dm140]
-+
-+
- ## ea65 driver for the display in AOpen XC Cube AV EA65 media barebones ##
- [ea65]
-
-diff -Naur lcdproc-0.5.6-old/LCDd.conf.orig lcdproc-0.5.6-new/LCDd.conf.orig
-diff -Naur lcdproc-0.5.6-old/server/drivers/dm140.c lcdproc-0.5.6-new/server/drivers/dm140.c
---- lcdproc-0.5.6-old/server/drivers/dm140.c 1969-12-31 16:00:00.000000000 -0800
-+++ lcdproc-0.5.6-new/server/drivers/dm140.c 2012-11-14 12:06:25.000000000 -0800
-@@ -0,0 +1,241 @@
-+/*
-+ * dm1400 vfd driver (c)2007 Henrik Larsson
-+ */
-+
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+
-+#include "lcd.h"
-+#include "dm140.h"
-+
-+#include "report.h"
-+#include "lcd_lib.h"
-+#include "libvfd.h"
-+#include "led.h"
-+
-+#ifdef HAVE_CONFIG_H
-+# include "config.h"
-+#endif
-+
-+
-+/* Vars for the server core */
-+MODULE_EXPORT char *api_version = API_VERSION;
-+MODULE_EXPORT int stay_in_foreground = 0;
-+MODULE_EXPORT int supports_multiple = 0;
-+MODULE_EXPORT char *symbol_prefix = "dm140_";
-+
-+
-+MODULE_EXPORT int
-+dm140_init (Driver *drvthis)
-+{
-+ PrivateData *p;
-+ int i;
-+
-+ /* Allocate and store private data */
-+ p = (PrivateData *) calloc(1, sizeof(PrivateData));
-+ if (p == NULL)
-+ {
-+ report(RPT_CRIT, "Failed to allocate memory for PrivateData\n");
-+ return -1;
-+ }
-+
-+ if (drvthis->store_private_ptr(drvthis, p))
-+ {
-+ report(RPT_CRIT, "Failed to store Private Ptr!");
-+ return -1;
-+ }
-+
-+ /* initialize private data */
-+ p->width = 18;
-+ p->height = 2;
-+ p->pszVendor = "040b";
-+ p->pszProduct = "7001";
-+
-+ p->gIconMask = 0;
-+ p->gLayout = VFD_STR_LAYOUT_1;
-+ p->gScrollTime = 1;
-+ p->gFlags = 0;
-+ p->gDisplayMode = VFD_MODE_NONE;
-+
-+ if ((p->framebuf = (char *) calloc(1, p->height)) == NULL)
-+ {
-+ report(RPT_CRIT, "Allocating memory for framebuffer Failed\n");
-+ return -1;
-+ }
-+
-+ for (i=0; iheight; i++)
-+ {
-+ p->framebuf[i] = (char *) calloc(1, p->width+1);
-+ report(RPT_INFO, "Allocating memory for framebuffer[%d]\n", i);
-+ if (p->framebuf == NULL)
-+ return -1;
-+ }
-+
-+ if((p->fd = OpenHID(drvthis))< 0)
-+ {
-+ report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found, exiting\n", p->pszVendor, p->pszProduct);
-+ return -1;
-+ }
-+
-+ //******************************************************
-+ // Initialize the internal report structures
-+ //******************************************************
-+ if(ioctl(p->fd, HIDIOCINITREPORT,0)<0)
-+ return -1;
-+
-+ //******************************************************
-+ // Find out what type of reports this device accepts
-+ //******************************************************
-+ //FindReports(fd);
-+
-+ //******************************************************
-+ // Set up the display to show graphics
-+ //******************************************************
-+ VFDTurnOffIcons(drvthis);
-+ VFDSetDisplay(drvthis, VFD_MODE_NONE, 0, 0, 0);
-+ VFDGraphicsClearBuffer(drvthis, VFD_GR_PAGE_3);
-+
-+ //******************************************************
-+ // Set up the display, scrolling region, scroll rate etc.
-+ //******************************************************
-+ VFDDisableDisplay(drvthis);
-+ VFDClearString(drvthis, VFD_STR_REGION_1);
-+ VFDClearString(drvthis, VFD_STR_REGION_3);
-+ VFDEnableString(drvthis, VFD_STR_LAYOUT_2);
-+// VFDSetScrollRegion(drvthis, 0);
-+// VFDSetScrollTime(drvthis, 500);
-+
-+ VFDSetString(drvthis, VFD_STR_REGION_1, 0, "DM140 online!!!");
-+
-+ return 0;
-+
-+}
-+
-+MODULE_EXPORT void
-+dm140_close (Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+
-+ VFDClearString(drvthis, VFD_STR_REGION_1);
-+ VFDClearString(drvthis, VFD_STR_REGION_2);
-+ VFDClearString(drvthis, VFD_STR_REGION_3);
-+ VFDClearString(drvthis, VFD_STR_REGION_4);
-+
-+ if (p != NULL) {
-+ if (p->fd >= 0)
-+ close(p->fd);
-+
-+ free(p);
-+ }
-+ drvthis->store_private_ptr(drvthis, NULL);
-+}
-+
-+MODULE_EXPORT int
-+dm140_width (Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ return p->width;
-+}
-+
-+MODULE_EXPORT int
-+dm140_height (Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ return p->height;
-+}
-+
-+MODULE_EXPORT int
-+dm140_string (Driver *drvthis, int x, int y, char *buffer)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ int i;
-+
-+ report(RPT_INFO, "%s called with values(x,y,c): %d, %d, %s", __FUNCTION__, x, y, buffer);
-+
-+ for (i=0; iframebuf[y-1][x+i]=buffer[i];
-+ }
-+
-+/*
-+ if (y > p->height)
-+ y = p->height;
-+
-+ if (y == 2)
-+ y = VFD_STR_REGION_3;
-+
-+ return VFDSetString(drvthis, y, x, buffer);
-+*/
-+
-+ return 0;
-+}
-+
-+MODULE_EXPORT int
-+dm140_char (Driver *drvthis, int x, int y, char c)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ report(RPT_INFO, "%s called with values(x,y,c): %d, %d, %c", __FUNCTION__, x, y, c);
-+
-+ p->framebuf[y][x] = c;
-+
-+ return 0;
-+}
-+
-+MODULE_EXPORT int
-+dm140_clear (Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ int i;
-+
-+ report(RPT_INFO, "%s called with values()", __FUNCTION__);
-+
-+ for (i=0; iheight; i++)
-+ {
-+ memset(p->framebuf[i], 0x20, p->width);
-+ p->framebuf[i][p->width] = 0x00;
-+ }
-+
-+// VFDClearString(drvthis, VFD_STR_REGION_1);
-+// VFDClearString(drvthis, VFD_STR_REGION_2);
-+// VFDClearString(drvthis, VFD_STR_REGION_3);
-+// VFDClearString(drvthis, VFD_STR_REGION_4);
-+
-+ return 0;
-+}
-+
-+MODULE_EXPORT int
-+dm140_flush (Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ int i;
-+ int y;
-+
-+ report(RPT_INFO, "%s called with values()", __FUNCTION__);
-+
-+ for (i=0; iheight; i++)
-+ {
-+ y = VFD_STR_REGION_1;
-+ if(i==0) y = VFD_STR_REGION_1;
-+ if(i==1) y = VFD_STR_REGION_3;
-+ // Do switch depening on VFD_LAYOUT
-+ VFDSetString(drvthis, y, 1, p->framebuf[i]);
-+ }
-+
-+ // Don't know what to do
-+
-+ return 0;
-+}
-+
-+
-diff -Naur lcdproc-0.5.6-old/server/drivers/dm140.h lcdproc-0.5.6-new/server/drivers/dm140.h
---- lcdproc-0.5.6-old/server/drivers/dm140.h 1969-12-31 16:00:00.000000000 -0800
-+++ lcdproc-0.5.6-new/server/drivers/dm140.h 2012-11-14 12:06:25.000000000 -0800
-@@ -0,0 +1,38 @@
-+#ifndef DM140_H
-+#define DM140_H
-+
-+#include "libvfd.h"
-+
-+typedef struct driver_private_data {
-+ char device[256];
-+ int fd;
-+
-+ int width;
-+ int height;
-+
-+ char *pszVendor;
-+ char *pszProduct;
-+
-+ int gIconMask;
-+ char gLayout;
-+ char gScrollTime;
-+ char gFlags;
-+ int gDisplayMode;
-+ char gPages[VFD_PAGE_SIZE][VFD_PAGE_COUNT];
-+
-+ char **framebuf;
-+
-+} PrivateData;
-+
-+
-+/* dm140 */
-+MODULE_EXPORT int dm140_init (Driver *drvthis);
-+MODULE_EXPORT void dm140_close (Driver *drvthis);
-+MODULE_EXPORT int dm140_width (Driver *drvthis);
-+MODULE_EXPORT int dm140_height (Driver *drvthis);
-+MODULE_EXPORT int dm140_string (Driver *drvthis, int y, int x, char *buffer);
-+MODULE_EXPORT int dm140_char (Driver *drvthis, int y, int x, char c);
-+MODULE_EXPORT int dm140_clear (Driver *drvthis);
-+MODULE_EXPORT int dm140_flush (Driver *drvthis);
-+
-+#endif
-diff -Naur lcdproc-0.5.6-old/server/drivers/led.c lcdproc-0.5.6-new/server/drivers/led.c
---- lcdproc-0.5.6-old/server/drivers/led.c 1969-12-31 16:00:00.000000000 -0800
-+++ lcdproc-0.5.6-new/server/drivers/led.c 2012-11-14 12:06:25.000000000 -0800
-@@ -0,0 +1,1065 @@
-+/* File modified by Henrik Larsson 2007 to interface with LCDproc API
-+ */
-+
-+/* vfd demo application
-+ * Copyright (C) 2006, Advanced Micro Devices, Inc.
-+ *
-+ * This program 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 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+/* This is an example application that turns on the icons on the front panel
-+ * and also displays text on the VFD screen
-+ */
-+
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include
-+#include "lcd.h"
-+#include "libvfd.h"
-+#include "report.h"
-+#include "dm140.h"
-+
-+
-+//**************************************************************
-+// HID devices exchange data with the host computer using data bundles called
-+// reports. Each report is divided into "fields", each of which can have one
-+// or more "usages". In the hid-core each one of these usages has a single
-+// signed 32 bit value.
-+//
-+// read():
-+// This is the event interface. When the HID device's state changes, it
-+// performs an interrupt transfer containing a report which contains the
-+// changed value. The hid-core.c module parses the report, and returns to
-+// hiddev.c the individual usages that have changed within the report. In
-+// its basic mode, the hiddev will make these individual usage changes
-+// available to the reader using a struct hiddev_event:
-+// struct hiddev_event { unsigned hid;
-+// containing the HID usage identifier for the status that changed, and the
-+// value that it was changed to. Note that the structure is defined within
-+// , along with some other useful #defines and structures.
-+// The HID usage identifier is a composite of the HID usage page shifed to
-+// the 16 high order bits ORed with the usage code. The behavior of the read()
-+// function can be modified using the HIDIOCSFLAG ioctl described below.
-+//
-+// ioctl():
-+// Instructs the kernel to retrieve all input and feature report values from
-+// the device. At this point, all the usage structures will contain current
-+// values for the device, and will maintain it as the device changes. Note
-+// that the use of this ioctl is unnecessary in general, since later kernels
-+// automatically initialize the reports from the device at attach time.
-+//**************************************************************
-+
-+/* hack - fix improper signed char handling - it's seeing 0x80 as a negative value*/
-+#define VALUE_FILTER(_value) (_value>0x7F)?(__s32)(0xFFFFFF00 | _value):(_value)
-+
-+#define VFD_PACKET_SIZE(s) (s*8)
-+
-+unsigned char amd_logo[VFD_PAGE_SIZE] = {
-+ 0x7f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x3f,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x1f,0xfe,0x07,0x83,0xc0,0xe3,0xf8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x0f,0xfe,0x07,0x83,0xe1,0xe3,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x07,0xfe,0x07,0xc3,0xe1,0xe3,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x10,0x1e,0x0f,0xc3,0xf3,0xe3,0x87,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x30,0x1e,0x0e,0xe3,0xb3,0x63,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x30,0x1e,0x1c,0xe3,0xb7,0x63,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xf0,0x1e,0x1c,0xe3,0x9e,0x63,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xf0,0x1e,0x1c,0x73,0x9e,0x63,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xf0,0x1e,0x3f,0xf3,0x9c,0x63,0x83,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xff,0xce,0x3f,0xf3,0x8c,0x63,0x8f,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xff,0x86,0x38,0x3b,0x80,0x63,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xff,0x02,0x70,0x3b,0x80,0x63,0xfc,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
-+};
-+
-+
-+char icon_bits[] =
-+{
-+ 15, 14, 13, 12, 11, 10, 9, 8,
-+ 18, 17, 16, 19, 23, 27, 31, 35,
-+ 39, 43, 47, 51, 55, 59, 63
-+};
-+
-+//**************************************************************
-+// FUNCTION: Compare
-+//
-+// INPUT:
-+// const char *pszValue - string to compare
-+// short sValue - numberic value to compare
-+//
-+// OUTPUT:
-+// int - Boolean value, 0 on non match, 1 on success.
-+//
-+// DESCRIPTION: Compare a character value to a numeric value.
-+//**************************************************************
-+int Compare(const char *pszValue, short sValue)
-+{
-+ int iValue;
-+ // convert the pszValue to a number
-+ sscanf( pszValue, "%4x", &iValue);
-+ return( iValue == sValue );
-+}
-+
-+
-+//**************************************************************
-+// FUNCTION: OpenHID
-+//
-+// INPUT:
-+// const char *pszVendor - Vendor ID of device to open
-+// const char *pszProduct - Product ID of device to open
-+//
-+// OUTPUT:
-+// int fd - file descriptor to the opened HID device or -1 if err.
-+//
-+// DESCRIPTION: This function will open all the HID's on the
-+// system until we find a match or we've exhausted our search.
-+//**************************************************************
-+int OpenHID(Driver *drvthis)
-+{
-+ int i, fd=-1;
-+ char port[32];
-+ char name[256];
-+ const char *hiddev_prefix = "/dev/usb/hiddev"; /* in devfs */
-+ int version;
-+ struct hiddev_devinfo device_info;
-+ PrivateData *p = drvthis->private_data;
-+
-+
-+ //******************************************************
-+ // Loop through all the 16 HID ports/devices looking for
-+ // one that matches our device.
-+ //******************************************************
-+ for(i=0; i<16;i++)
-+ {
-+ sprintf(port, "%s%d", hiddev_prefix, i);
-+ if((fd = open(port,O_WRONLY))>=0)
-+ {
-+ ioctl(fd, HIDIOCGDEVINFO, &device_info);
-+ ioctl(fd, HIDIOCGNAME(sizeof(name)), name);
-+
-+ // If we've found our device, no need to look further, time to stop searching
-+ if( Compare(p->pszVendor, device_info.vendor) && Compare(p->pszProduct, device_info.product))
-+ {
-+ break; // stop the for loop
-+ }
-+ close(fd); // Added by HL
-+ }
-+ }
-+
-+ //******************************************************
-+ // If we've found our device, print out some information about it.
-+ //******************************************************
-+ if(fd != -1)
-+ {
-+ int appl;
-+ report(RPT_INFO, "Found Device - Name is %s\n", name);
-+ report(RPT_INFO, "Vendor[0x%04hx] Product[0x%04hx] Version[0x%04hx]\n\t",
-+ device_info.vendor, device_info.product, device_info.version);
-+ switch(device_info.bustype)
-+ {
-+ default:
-+ report(RPT_INFO, " an unknown bus type: 0x%04hx ", device_info.bustype);
-+ report(RPT_INFO, "bus[%d], devnum[%d] ifnum[%d]\n", device_info.busnum,
-+ device_info.devnum, device_info.ifnum);
-+ break;
-+ }
-+ //******************************************************
-+ // Read the version - it's a packed 32 field, so
-+ // unpack it in order to display
-+ //******************************************************
-+ ioctl(fd, HIDIOCGVERSION, &version);
-+ report(RPT_INFO, "HIDdev Driver Version is %d.%d.%d\n",
-+ version >>16, (version>>8)&0xff,version &0xff);
-+
-+ report(RPT_INFO, "There are %d applications for this device\n", device_info.num_applications);
-+
-+ for(i=0;i> 16)
-+ {
-+ case 0x01: report(RPT_INFO, "(Generic Desktop Page)\n");break;
-+ case 0x02: report(RPT_INFO, "(Simulation Controls)\n"); break;
-+ case 0x03: report(RPT_INFO, "(VR Controls)\n"); break;
-+ case 0x04: report(RPT_INFO, "(Sport Controls)\n"); break;
-+ case 0x05: report(RPT_INFO, "(Game Controls)\n"); break;
-+ case 0x06: report(RPT_INFO, "(Generic Device Controls)\n");break;
-+ case 0x07: report(RPT_INFO, "(Keyboard/Keypad)\n"); break;
-+ case 0x08: report(RPT_INFO, "(LEDs)\n"); break;
-+ case 0x09: report(RPT_INFO, "(Button)\n"); break;
-+ case 0x0A: report(RPT_INFO, "(Ordinal)\n"); break;
-+ case 0x0B: report(RPT_INFO, "(Telphony)\n"); break;
-+ case 0x0C: report(RPT_INFO, "(Consumer Product Page)\n"); break;
-+ case 0x0D: report(RPT_INFO, "(Digitizer)\n"); break;
-+ case 0x0E: report(RPT_INFO, "(Reserved)\n"); break;
-+ case 0x0F: report(RPT_INFO, "(PID Page)\n"); break;
-+ case 0x14: report(RPT_INFO, "(Alphanumeric Display)\n"); break;
-+ case 0x15:
-+ case 0x3f: report(RPT_INFO, "(Reserved)\n"); break;
-+ case 0x40: report(RPT_INFO, "(Medical Instruments)\n"); break;
-+ case 0x80: report(RPT_INFO, "(USB Monitor Page)\n"); break;
-+ case 0x81: report(RPT_INFO, "(USB Enumerated Values Page)\n"); break;
-+ case 0x82: report(RPT_INFO, "(VESA Virtual Controls Page)\n"); break;
-+ case 0x83: report(RPT_INFO, "(Reserved Monitor Page)\n"); break;
-+ case 0x84: report(RPT_INFO, "(Power Device Page)\n"); break;
-+ case 0x85: report(RPT_INFO, "(Battery System Page)\n"); break;
-+ case 0x86:
-+ case 0x87: report(RPT_INFO, "(Reserved Power Device Page)\n"); break;
-+ case 0x8C: report(RPT_INFO, "(Bar Code Scanner Page)\n"); break;
-+ case 0x8D: report(RPT_INFO, "(Scale Page)\n"); break;
-+ case 0x8E: report(RPT_INFO, "(Magnetic Stripe Reading Device)\n"); break;
-+ case 0x8F: report(RPT_INFO, "(Point of Sale pages)\n"); break;
-+ case 0x90: report(RPT_INFO, "(Camera Control Page)\n"); break;
-+ case 0x91: report(RPT_INFO, "(Arcade Page)\n"); break;
-+ default:
-+ {
-+ int page = (appl >> 16) & 0x0000FFFF;
-+ if((page >= 0xFF00) && (page <= 0xFFFF))
-+ report(RPT_INFO, "(Vendor Defined - 0x%04X)\n",page);
-+ else
-+ report(RPT_INFO, "(Unknown page - needs to be added 0x%04X)\n",(appl>>16));
-+ break;
-+ }
-+ }
-+ }
-+ }
-+ return fd;
-+}
-+
-+//**************************************************************
-+// FUNCTION: FindReports
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+//
-+// OUTPUT:
-+// none
-+//
-+// DESCRIPTION: This function will print out the type of reports
-+// this HID accepts.
-+//**************************************************************
-+void FindReports(Driver *drvthis)
-+{
-+ int iFields, iUsage;
-+ int iReportType;
-+ struct hiddev_report_info repInfo;
-+ struct hiddev_field_info fieldInfo;
-+ struct hiddev_usage_ref usageRef;
-+ PrivateData *p = drvthis->private_data;
-+ int fd = p->fd;
-+
-+ //******************************************************
-+ // For each type of report (Input, Output, Feature)
-+ // find out which is accepted for this device.
-+ //******************************************************
-+ for(iReportType=HID_REPORT_TYPE_MIN;
-+ iReportType<=HID_REPORT_TYPE_MAX;
-+ iReportType ++)
-+ {
-+ repInfo.report_type = iReportType;
-+ repInfo.report_id = HID_REPORT_ID_FIRST;
-+
-+ //******************************************************
-+ // HIDIOCGREPORTINFO - struct hiddev_report_info (read/write)
-+ // Obtain the usage information if it is found
-+ //******************************************************
-+ while(ioctl(fd, HIDIOCGREPORTINFO, &repInfo)>=0)
-+ {
-+ report(RPT_INFO, " Report id: %d (%s) (%d fields)\n",
-+ repInfo.report_id,
-+ (iReportType == HID_REPORT_TYPE_INPUT) ? "Input" :
-+ (iReportType == HID_REPORT_TYPE_OUTPUT) ? "Output" : "Feature/Other",
-+ repInfo.num_fields);
-+
-+ //******************************************************
-+ // HIDIOCGFIELDINFO - struct hiddev_field_info (read/write)
-+ // Returns the field information associated with a report
-+ // in a hiddev_field_info structure. The user must fill
-+ // in report_id and report_type in this structure. The
-+ // field_index should also be filled in, which should be
-+ // a number between 0 and maxfield-1.
-+ //******************************************************
-+ for(iFields = 0; iFieldsprivate_data;
-+ int fd = p->fd;
-+
-+ //******************************************************
-+ // Initialize the usage Reference and mark it for OUTPUT
-+ //******************************************************
-+ memset(&uref, 0, sizeof(uref));
-+ uref.report_type = HID_REPORT_TYPE_OUTPUT;
-+ uref.report_id = 0;
-+ uref.field_index = 0;
-+
-+ //**************************************************************
-+ // Fill in the information that we wish to set
-+ //**************************************************************
-+ uref.usage_code = 0xffa10005; // unused?
-+ for(i=0;iprivate_data;
-+
-+ if(icon > VFD_ICON_DVD)
-+ return -1;
-+
-+ if(state)
-+ p->gIconMask |= 1<gIconMask &= ~(1<gIconMask);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDIconOn
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int icon - icon to turn on
-+//
-+// OUTPUT:
-+// int err - result of the VFDIconSet call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will turn on one specific icon.
-+//**************************************************************
-+int VFDIconOn(Driver *drvthis, int icon)
-+{
-+#ifdef DEBUG
-+ report(RPT_INFO, "VFDIconOn %d\n",icon);
-+#endif
-+ return VFDIconSet(drvthis, icon, 1);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDIconOff
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int icon - icon to turn off
-+//
-+// OUTPUT:
-+// int err - result of the VFDIconSet call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will turn off one specific icon.
-+//**************************************************************
-+int VFDIconOff(Driver *drvthis, int icon)
-+{
-+#ifdef DEBUG
-+ report(RPT_INFO, "VFDIconOff %d\n",icon);
-+#endif
-+ return VFDIconSet(drvthis, icon, 0);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDTurnOffIcons
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will turn off all the icons
-+//**************************************************************
-+int VFDTurnOffIcons(Driver *drvthis)
-+{
-+#ifdef DEBUG
-+ report(RPT_INFO, "VFDTurnOffIcons\n");
-+#endif
-+ int err;
-+ const char panelCmd[] = {0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00};
-+ const char iconCmd[] = {0x02, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //icon command
-+ const char iconoff[] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; //icon data
-+
-+ err = SendReport(drvthis, panelCmd, sizeof(panelCmd));
-+ err = SendReport(drvthis, iconCmd, sizeof(iconCmd));
-+ err = SendReport(drvthis, iconoff, sizeof(iconoff));
-+ return err;
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetVolume
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int level - volume level (between 0 and 12)
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will raise/lower the volume indicator.
-+//**************************************************************
-+int VFDSetVolume(Driver *drvthis, int level)
-+{
-+ int i;
-+ PrivateData *p = drvthis->private_data;
-+
-+ if(level>12)
-+ return -1;
-+
-+ // Clear all of the volume values
-+ p->gIconMask &= ~0xFFFFF800;
-+
-+ for(i=0;igIconMask |= 1 << (VFD_VOLUME_1 + i);
-+
-+ return VFDShowIcons(drvthis, p->gIconMask);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetString
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int region - region to display the string
-+// int offset - location to display the string
-+// char *buffer - string to display
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will display a string in the
-+// specified region.
-+//**************************************************************
-+int VFDSetString(Driver *drvthis, int region, int offset, char *buffer)
-+{
-+#ifdef DEBUG
-+ report(RPT_INFO, "VFDSetString region %d offset %d buffer %s\n",region,offset,buffer);
-+#endif
-+
-+ int i,size;
-+ int len = strlen(buffer) + 1;// make sure we make room for the NULL
-+ char stringCmd[8];
-+
-+ if( region > VFD_STR_REGION_4)
-+ return -1;
-+
-+ if( offset > 111)
-+ offset = 111;
-+
-+ if( len > 128)
-+ {
-+ len = 128;
-+ buffer[127] = 0;
-+ }
-+
-+ //******************************************************
-+ // Figure out how many 8 character lines we'll be sending
-+ //******************************************************
-+ size = ((len + 7) / 8) + 1;
-+
-+ //******************************************************
-+ // Setup the string command packet
-+ //******************************************************
-+ memset(stringCmd, 0, 8);
-+ stringCmd[VFD_CLC_OFFSET] = size;
-+ stringCmd[VFD_FID_OFFSET] = VFD_FID_SET_STRING;
-+ stringCmd[VFD_SET_STRING_RN] = region;
-+ stringCmd[VFD_SET_STRING_SL] = len;
-+ stringCmd[VFD_SET_STRING_XP] = offset;
-+ SendReport(drvthis, stringCmd, sizeof(stringCmd));
-+
-+ //******************************************************
-+ // Now send the string for display
-+ //******************************************************
-+ for(i=0; i 8) ? 8 : size;
-+ SendReport(drvthis, &buffer[i], size);
-+ }
-+ return VFDGlobalUpdateDisplay(drvthis);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDClearString
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int region - region to display the string based upon the chosen layout
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will clear a string in the
-+// specified region.
-+//**************************************************************
-+int VFDClearString(Driver *drvthis, int region)
-+{
-+ char pszClearStr[8];
-+
-+ if( region > VFD_STR_REGION_4)
-+ return -1;
-+
-+ memset(pszClearStr, 0, 8);
-+ pszClearStr[VFD_CLC_OFFSET] = 1;
-+ pszClearStr[VFD_FID_OFFSET] = VFD_FID_STRING_CLEAR;
-+ pszClearStr[VFD_STRING_CLEAR_MD] = VFD_CLEAR_STR;
-+ pszClearStr[VFD_STRING_CLEAR_RN] = region;
-+ return SendReport(drvthis, pszClearStr, sizeof(pszClearStr));
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetDisplay
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int mode - VFD_MODE_NONE, VFD_MODE_STR, VFD_MODE_GRAPHICS
-+// char layout - VFD_STR_LAYOUT_1, VFD_STR_LAYOUT_2, VFD_STR_LAYOUT_3
-+// char time - Scrolling Time in 50 ms units
-+// char flags - String Scrolling Enable Flag
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will turn on scrolling in the specified region.
-+//**************************************************************
-+int VFDSetDisplay(Driver *drvthis, int mode, char layout, char time, char flags)
-+{
-+ char packet[VFD_PACKET_SIZE(1)];
-+
-+ memset(packet, 0, 8);
-+
-+ packet[VFD_CLC_OFFSET] = 1;
-+ packet[VFD_FID_OFFSET] = VFD_FID_SET_DISPLAY;
-+ packet[VFD_SET_DISPLAY_MD] = mode;
-+ packet[VFD_SET_DISPLAY_DM] = layout;
-+ packet[VFD_SET_DISPLAY_ST] = time;
-+ packet[VFD_SET_DISPLAY_SF] = flags;
-+ return SendReport(drvthis, packet, sizeof(packet));
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDUpdateDisplay
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int mode - VFD_MODE_NONE, VFD_MODE_STR, VFD_MODE_GRAPHICS
-+// char layout - VFD_STR_LAYOUT_1, VFD_STR_LAYOUT_2, VFD_STR_LAYOUT_3
-+// char time - Scrolling Time in 50 ms units
-+// char flags - String Scrolling Enable Flag
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will update the display mode/layout/scrolltime.
-+//**************************************************************
-+int VFDUpdateDisplay(Driver *drvthis, int mode, char layout, char time, char flags)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ if(mode != p->gDisplayMode)
-+ return 0;
-+
-+ return VFDSetDisplay(drvthis, mode, layout, time, flags);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDGlobalUpdateDisplay
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: Update the display based upon the global configuration values.
-+//**************************************************************
-+int VFDGlobalUpdateDisplay(Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+ return VFDUpdateDisplay(drvthis, p->gDisplayMode, p->gLayout, p->gScrollTime, p->gFlags);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetScrollRegion
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int region - region to scroll
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will turn on scrolling in the specified region.
-+//**************************************************************
-+int VFDSetScrollRegion(Driver *drvthis, int region)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+#ifdef DEBUG
-+ report(RPT_INFO, "VFDSetScrollRegion region %d\n",region);
-+#endif
-+ p->gFlags &= ~0x0F;
-+ p->gFlags |= (region & 0x0F);
-+ return VFDUpdateDisplay(drvthis, VFD_MODE_STR, p->gLayout, p->gScrollTime, p->gFlags | VFD_SCROLL_ENABLE);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetScrollTime
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int time - time in ms to scroll
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will set the rate at which to scroll
-+//**************************************************************
-+int VFDSetScrollTime(Driver *drvthis, int time)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ p->gScrollTime = time / 50;
-+ return VFDUpdateDisplay(drvthis, VFD_MODE_STR, p->gLayout, p->gScrollTime, p->gFlags | VFD_SCROLL_ENABLE);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDEnableDisplay
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int mode - VFD_MODE_NONE, VFD_MODE_STR, VFD_MODE_GRAPHICS
-+// char layout - VFD_STR_LAYOUT_1, VFD_STR_LAYOUT_2, VFD_STR_LAYOUT_3
-+// char time - Scrolling Time in 50 ms units
-+// char flags - String Scrolling Enable Flag
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function specifies how the VFD is segmented.
-+//**************************************************************
-+int VFDEnableDisplay(Driver *drvthis, int mode, char layout, char time, char flags)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ p->gDisplayMode = mode;
-+ return VFDSetDisplay(drvthis, mode, layout, time, flags);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDDisableDisplay
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function will disable any updates to the display
-+//**************************************************************
-+int VFDDisableDisplay(Driver *drvthis)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ p->gDisplayMode = VFD_MODE_NONE;
-+ return VFDSetDisplay(drvthis, VFD_MODE_NONE, 0, 0, 0);
-+}
-+
-+
-+//**************************************************************
-+// FUNCTION: VFDEnableString
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// char ucLayout - specify how the VFD is segmented
-+//
-+// OUTPUT:
-+// int err - result of the SendReport call (On success 0, On error -1)
-+//
-+// DESCRIPTION: This function specifies how the VFD is laid out.
-+// LAYOUT 1 LAYOUT 2 LAYOUT 3
-+// /----------------\ /---------------\ /--------------------\
-+// | | | Region 1 | |Region 1 | Region 2 |
-+// | Region 1 | |---------------| |---------+----------|
-+// | | | Region 3 | |Region 3 | Region 4 |
-+// \----------------/ \---------------/ \--------------------/
-+//**************************************************************
-+int VFDEnableString(Driver *drvthis, char ucLayout)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ if(ucLayout < VFD_STR_LAYOUT_1 || ucLayout > VFD_STR_LAYOUT_3)
-+ return -1;
-+
-+ p->gLayout = ucLayout;
-+ return VFDEnableDisplay(drvthis, VFD_MODE_STR, p->gLayout, p->gScrollTime, p->gFlags | VFD_SCROLL_ENABLE);
-+}
-+
-+
-+//**************************************************************
-+// FUNCTION: _set_pixel
-+//
-+// INPUT:
-+// int page - page to draw on(VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+// int x - coordinate
-+// int y - coordinate
-+// int color - 0 or 1 - turn on/off the LED
-+//
-+// OUTPUT:
-+// Nothing
-+//
-+// DESCRIPTION: This function turns on/off pixels in the graphic page.
-+//**************************************************************
-+static void _set_pixel(Driver *drvthis, int page, int x, int y, int color)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ char dst = ((y/8) * 112) + x;
-+ char mask = (1 << (7 - (y%8)));
-+
-+ // Turn the LED on/off based upon the color setting
-+ if(color)
-+ p->gPages[page][dst] |= mask;
-+ else
-+ p->gPages[page][dst] &= ~mask;
-+}
-+
-+
-+//**************************************************************
-+// FUNCTION: VFDGraphicsClearBuffer
-+//
-+// INPUT:
-+// int page - page to clear (VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+//
-+// OUTPUT:
-+// 0 on success, -1 on error
-+//
-+// DESCRIPTION: This function clears the specified graphic page.
-+//**************************************************************
-+int VFDGraphicsClearBuffer(Driver *drvthis, int page)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ if(page >= VFD_PAGE_COUNT)
-+ return -1;
-+
-+ // Clear the page to all off
-+ memset(p->gPages[page], 0, VFD_PAGE_SIZE);
-+ return 0;
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDGraphicsCopyPage
-+//
-+// INPUT:
-+// int page - Graphic page (dst) (VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+// char *buffer - buffer worth of data (src)
-+//
-+// OUTPUT:
-+// Nothing
-+//
-+// DESCRIPTION: This function turns on/off pixels in the graphic page.
-+//**************************************************************
-+int VFDGraphicsCopyPage(Driver *drvthis, int page, char *buffer)
-+{
-+ int x, y;
-+ int shift;
-+
-+ if(page >= VFD_PAGE_COUNT)
-+ return -1;
-+
-+ for(y=0; y < VFD_HEIGHT; y++)
-+ {
-+ for(x=0; x < VFD_WIDTH; x++)
-+ {
-+ char src = (y*14)+(x/8);
-+ shift = 7 - (x%8);
-+ if(shift == 0)
-+ shift = 1;
-+ else
-+ shift = 1 << shift;
-+ _set_pixel(drvthis, page, x, y, buffer[src] & shift);
-+ }
-+ }
-+ return 0;
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDSetGraphics
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// char region - Graphic Page index
-+// char *buf - data to display
-+//
-+// OUTPUT:
-+//
-+// DESCRIPTION:
-+//**************************************************************
-+int VFDSetGraphics(Driver *drvthis, char region, char *buf)
-+{
-+ int i, size;
-+ char packet[8];
-+
-+ // Send the Command to Set Graphics
-+ memset(packet, 0, 8);
-+
-+ packet[VFD_CLC_OFFSET] = 29;
-+ packet[VFD_FID_OFFSET] = VFD_FID_SET_GRAPHICS;
-+ packet[VFD_SET_GRAPHICS_GP]=region;
-+ SendReport(drvthis, packet, sizeof(packet));
-+
-+ // Send the actual graphics
-+ for(i=0; i 8) ? 8 : size;
-+ SendReport(drvthis, &buf[i], size);
-+ }
-+ return 0;
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDGraphicsSendPage
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int page - page to display (VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+//
-+// OUTPUT:
-+// -1 on error, or results of VFDSetGraphics
-+//
-+// DESCRIPTION: Sends the graphics page to the VFD to be displayed.
-+//**************************************************************
-+int VFDGraphicsSendPage(Driver *drvthis, int page)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ if(page >= VFD_PAGE_COUNT)
-+ return -1;
-+ return VFDSetGraphics(drvthis, page+1, p->gPages[page]);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDGraphicsShowPage
-+//
-+// INPUT:
-+// int fd - file descriptor to the opened HID device
-+// int page - page to get ready to show (VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+//
-+// OUTPUT:
-+// -1 on error
-+//
-+// DESCRIPTION: Sets the VFD into Graphic mode
-+//**************************************************************
-+int VFDGraphicsShowPage(Driver *drvthis, int page)
-+{
-+ if(page >= VFD_PAGE_COUNT)
-+ return -1;
-+ return VFDEnableDisplay(drvthis, VFD_MODE_GRAPHICS, page+1, 0, 0);
-+}
-+
-+//**************************************************************
-+// FUNCTION: VFDGraphicsRect
-+//
-+// INPUT:
-+// int page - page to get ready to show (VFD_GR_PAGE_1 ... VFD_GR_PAGE_4)
-+// char color - 0 or 1
-+// int srcx - starting X Coordinate
-+// int srcy - starting Y Coordinate
-+// int width - how wide to make the box
-+// int height - how tall to make the box
-+//
-+// OUTPUT:
-+// -1 on error
-+//
-+// DESCRIPTION: Draws a box at (srcx,srcy) - (srcx+width, srcy+height)
-+//**************************************************************
-+int VFDGraphicsRect(Driver *drvthis, int page, char color, int srcx, int srcy, int width, int height)
-+{
-+ PrivateData *p = drvthis->private_data;
-+
-+ char *b;
-+ int h, w, x, y;
-+
-+ if( page >= VFD_PAGE_COUNT)
-+ return -1;
-+
-+ if (srcx > VFD_WIDTH || srcy > VFD_HEIGHT)
-+ return 0;
-+
-+ h = (srcy + height > VFD_HEIGHT) ? VFD_HEIGHT - srcy : srcy + height;
-+ w = (srcx + width > VFD_WIDTH) ? VFD_WIDTH - srcx : srcx + width;
-+ b = p->gPages[page];
-+
-+ for( y = srcy; y < h; y++ )
-+ for( x = srcx; x < w; x++)
-+ _set_pixel(drvthis, page, x, y, color);
-+
-+ return 0;
-+}
-diff -Naur lcdproc-0.5.6-old/server/drivers/led.h lcdproc-0.5.6-new/server/drivers/led.h
---- lcdproc-0.5.6-old/server/drivers/led.h 1969-12-31 16:00:00.000000000 -0800
-+++ lcdproc-0.5.6-new/server/drivers/led.h 2012-11-14 12:06:25.000000000 -0800
-@@ -0,0 +1,29 @@
-+#ifndef LED_H
-+#define LED_H
-+
-+// led.c functions
-+int OpenHID(Driver *drvthis);
-+int VFDShowIcons(Driver *drvthis, int mask);
-+int VFDIconSet(Driver *drvthis, int icon, int state);
-+int VFDIconOn(Driver *drvthis, int icon);
-+int VFDIconOff(Driver *drvthis, int icon);
-+int VFDTurnOffIcons(Driver *drvthis);
-+int VFDSetVolume(Driver *drvthis, int level);
-+int VFDSetString(Driver *drvthis, int region, int offset, char *buffer);
-+int VFDClearString(Driver *drvthis, int region);
-+int VFDSetDisplay(Driver *drvthis, int mode, char layout, char time, char flags);
-+int VFDUpdateDisplay(Driver *drvthis, int mode, char layout, char time, char flags);
-+int VFDGlobalUpdateDisplay(Driver *drvthis);
-+int VFDSetScrollRegion(Driver *drvthis, int region);
-+int VFDSetScrollTime(Driver *drvthis, int time);
-+int VFDEnableDisplay(Driver *drvthis, int mode, char layout, char time, char flags);
-+int VFDDisableDisplay(Driver *drvthis);
-+int VFDEnableString(Driver *drvthis, char ucLayout);
-+int VFDGraphicsClearBuffer(Driver *drvthis, int page);
-+int VFDGraphicsCopyPage(Driver *drvthis, int page, char *buffer);
-+int VFDSetGraphics(Driver *drvthis, char region, char *buf);
-+int VFDGraphicsSendPage(Driver *drvthis, int page);
-+int VFDGraphicsShowPage(Driver *drvthis, int page);
-+int VFDGraphicsRect(Driver *drvthis, int page, char color, int srcx, int srcy, int width, int height);
-+
-+#endif
-diff -Naur lcdproc-0.5.6-old/server/drivers/libvfd.h lcdproc-0.5.6-new/server/drivers/libvfd.h
---- lcdproc-0.5.6-old/server/drivers/libvfd.h 1969-12-31 16:00:00.000000000 -0800
-+++ lcdproc-0.5.6-new/server/drivers/libvfd.h 2012-11-14 12:06:25.000000000 -0800
-@@ -0,0 +1,183 @@
-+/* Header for libvfd
-+ * Copyright (C) 2006, Advanced Micro Devices, Inc.
-+ *
-+ * This program 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 of the License, or
-+ * (at your option) any later version.
-+ */
-+
-+#ifndef LIBVFD_H_
-+#define LIBVFD_H_
-+
-+/* Offsets into the VFD command packet */
-+
-+#define VFD_CLC_OFFSET 0x00
-+#define VFD_FID_OFFSET 0x01
-+
-+/* VFD FID (Function IDs) */
-+
-+#define VFD_FID_PANEL_BANK 0x01
-+#define VFD_FID_ICON_CONTROL 0x02
-+#define VFD_FID_SET_STRING 0x03
-+#define VFD_FID_STRING_CLEAR 0x04
-+#define VFD_FID_SET_DISPLAY 0x05
-+#define VFD_FID_SET_GRAPHICS 0x06
-+#define VFD_FID_GRAPHIC_AREA 0x07
-+
-+/* Command specific offsets */
-+
-+/* Panel Blank */
-+#define VFD_PANEL_BLANK_BL 0x02
-+
-+/* Icon Control */
-+#define VFD_ICON_CONTROL_BITMAP 0x08
-+
-+/* Set String */
-+#define VFD_SET_STRING_RN 0x02
-+#define VFD_SET_STRING_SL 0x03
-+#define VFD_SET_STRING_XP 0x04
-+#define VFD_SET_STRING_DATA 0x08
-+
-+/* String Clear */
-+#define VFD_STRING_CLEAR_MD 0x02
-+#define VFD_CLEAR_STR 0x01
-+#define VFD_CLEAR_GRAPHICS 0x02
-+#define VFD_STRING_CLEAR_RN 0x03
-+
-+/* Set Display */
-+#define VFD_SET_DISPLAY_MD 0x02
-+#define VFD_MODE_NONE 0x00
-+#define VFD_MODE_STR 0x02
-+#define VFD_MODE_GRAPHICS 0x03
-+#define VFD_SET_DISPLAY_DM 0x03
-+#define VFD_SET_DISPLAY_ST 0x04
-+#define VFD_SET_DISPLAY_SF 0x06
-+
-+/* Set Graphics */
-+#define VFD_SET_GRAPHICS_GP 0x02
-+#define VFD_SET_GRAPHICS_DATA 0x08
-+
-+/* Graphic Area */
-+#define VFD_GRAPHIC_AREA_OOF 0x02
-+
-+/* LAYOUT 1
-+ /-----------------------\
-+ | |
-+ | Region 1 |
-+ | |
-+ \-----------------------/
-+*/
-+
-+/* LAYOUT 2
-+ /-----------------------\
-+ | Region 1 |
-+ |---------------------- |
-+ | Region 3 |
-+ \-----------------------/
-+*/
-+
-+/* LAYOUT 3
-+ /-----------------------\
-+ | Region 1 | Region 2 |
-+ |---------------------- |
-+ | Region 3 | Region 4 |
-+ \-----------------------/
-+*/
-+
-+#define VFD_GR_PAGE_1 0x0
-+#define VFD_GR_PAGE_2 0x1
-+#define VFD_GR_PAGE_3 0x2
-+#define VFD_GR_PAGE_4 0x3
-+
-+#define VFD_STR_LAYOUT_1 0x01
-+#define VFD_STR_LAYOUT_2 0x02
-+#define VFD_STR_LAYOUT_3 0x03
-+
-+#define VFD_STR_REGION_1 0x01
-+#define VFD_STR_REGION_2 0x02
-+#define VFD_STR_REGION_3 0x03
-+#define VFD_STR_REGION_4 0x04
-+
-+#define VFD_SCROLL_REGION1 (1 << 0)
-+#define VFD_SCROLL_REGION2 (1 << 1)
-+#define VFD_SCROLL_REGION3 (1 << 2)
-+#define VFD_SCROLL_REGION4 (1 << 3)
-+
-+#define VFD_SCROLL_ENABLE (1 << 7)
-+
-+/* Graphics defintions */
-+/* The graphics area has a static resolution */
-+
-+#define VFD_WIDTH 112
-+#define VFD_HEIGHT 16
-+#define VFD_PITCH (112 / 8)
-+#define VFD_PAGE_SIZE (VFD_PITCH * VFD_HEIGHT)
-+#define VFD_PAGE_COUNT 4
-+
-+#define VFD_ICON_VIDEO 0
-+#define VFD_ICON_CD 1
-+#define VFD_ICON_PLAY 2
-+#define VFD_ICON_RWND 3
-+#define VFD_ICON_PAUSE 4
-+#define VFD_ICON_FFWD 5
-+#define VFD_ICON_SPEAKER 6
-+#define VFD_ICON_REC 7
-+#define VFD_ICON_VOLUME 8
-+#define VFD_ICON_RADIO 9
-+#define VFD_ICON_DVD 10
-+
-+#define VFD_VOLUME_1 11
-+#define VFD_VOLUME_2 12
-+#define VFD_VOLUME_3 13
-+#define VFD_VOLUME_4 14
-+#define VFD_VOLUME_5 15
-+#define VFD_VOLUME_6 16
-+#define VFD_VOLUME_7 17
-+#define VFD_VOLUME_8 18
-+#define VFD_VOLUME_9 19
-+#define VFD_VOLUME_10 20
-+#define VFD_VOLUME_11 21
-+#define VFD_VOLUME_12 22
-+
-+#define VFD_ICON_COUNT 23
-+
-+int vfd_cmd_graphic_area_state(unsigned char);
-+int vfd_cmd_panel_bank(unsigned char);
-+int vfd_cmd_icon_control(unsigned char *);
-+int vfd_cmd_set_string(unsigned char, unsigned char, unsigned char *, int);
-+int vfd_cmd_clear(unsigned char, unsigned char);
-+int vfd_cmd_set_display(unsigned char, unsigned char, unsigned char, unsigned char);
-+int vfd_cmd_set_graphics(unsigned char, unsigned char *);
-+
-+int vfd_enable_display(int, unsigned char, unsigned char, unsigned char);
-+int vfd_update_display(int, unsigned char, unsigned char, unsigned char);
-+int vfd_disable_display(int);
-+
-+void vfd_str_set_scroll_time(int);
-+void vfd_str_set_scroll_speed(unsigned char);
-+void vfd_str_set_scroll_regions(unsigned char);
-+int vfd_str_set_string(unsigned char, unsigned char, const unsigned char *);
-+int vfd_str_clear_string(unsigned char);
-+int vfd_str_enable(unsigned char);
-+int vfd_str_disable(void);
-+
-+int vfd_gr_clear_buffer(unsigned char);
-+int vfd_gr_show_page(int);
-+int vfd_gr_disable(void);
-+int vfd_gr_send_page(int);
-+int vfd_gr_clear_page(int);
-+int vfd_gr_copy_page(int page, char *src);
-+
-+int vfd_icon_set(int, int);
-+int vfd_icon_on(int, int);
-+int vfd_icon_off(int, int);
-+
-+void vfr_gr_bitmap(int, char *, int, int, int, int, int, int);
-+int vfr_gr_rect(int, unsigned char, int, int, int, int);
-+
-+int vfd_init(void);
-+int vfd_send_command(unsigned char, int, unsigned char *);
-+void vfd_close(void);
-+
-+#endif
-diff -Naur lcdproc-0.5.6-old/server/drivers/Makefile.am lcdproc-0.5.6-new/server/drivers/Makefile.am
---- lcdproc-0.5.6-old/server/drivers/Makefile.am 2012-08-19 07:29:08.000000000 -0700
-+++ lcdproc-0.5.6-new/server/drivers/Makefile.am 2012-11-14 12:07:13.000000000 -0800
-@@ -23,7 +23,7 @@
-
- lcdexecbindir = $(pkglibdir)
- lcdexecbin_PROGRAMS = @DRIVERS@
--EXTRA_PROGRAMS = bayrad CFontz CFontzPacket curses debug CwLnx ea65 EyeboxOne g15 glcd glcdlib glk hd44780 icp_a106 imon imonlcd IOWarrior irman joy lb216 lcdm001 lcterm lirc lis MD8800 mdm166a ms6931 mtc_s16209x MtxOrb mx5000 NoritakeVFD picolcd pyramid sdeclcd sed1330 sed1520 serialPOS serialVFD shuttleVFD stv5730 SureElec svga t6963 text tyan sli ula200 vlsys_m428 xosd i2500vfd irtrans
-+EXTRA_PROGRAMS = bayrad CFontz CFontzPacket curses debug CwLnx dm140 ea65 EyeboxOne g15 glcd glcdlib glk hd44780 icp_a106 imon imonlcd IOWarrior irman joy lb216 lcdm001 lcterm lirc lis MD8800 mdm166a ms6931 mtc_s16209x MtxOrb mx5000 NoritakeVFD picolcd pyramid sdeclcd sed1330 sed1520 serialPOS serialVFD shuttleVFD stv5730 SureElec svga t6963 text tyan sli ula200 vlsys_m428 xosd i2500vfd irtrans
- noinst_LIBRARIES = libLCD.a libbignum.a
-
- g15_CFLAGS = @LIBUSB_CFLAGS@ $(AM_CFLAGS)
-@@ -87,6 +87,7 @@
- curses_SOURCES = lcd.h curses_drv.h curses_drv.c report.h
- CwLnx_SOURCES = lcd.h lcd_lib.h CwLnx.c CwLnx.h report.h
- debug_SOURCES = lcd.h report.h debug.c debug.h
-+dm140_SOURCES = lcd.h led.c libvfd.h led.h dm140.c dm140.h report.h
- ea65_SOURCES = lcd.h ea65.h ea65.c report.h
- EyeboxOne_SOURCES = lcd.h lcd_lib.h EyeboxOne.c EyeboxOne.h report.h
- g15_SOURCES = lcd.h lcd_lib.h g15.h g15-num.c g15.c report.h
diff --git a/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-libftdi1.patch b/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-libftdi1.patch
deleted file mode 100644
index b183619be3..0000000000
--- a/packages/sysutils/lcdproc/patches/lcdproc-0.5.6-libftdi1.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 7c053d2..dcb0c4d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -314,7 +314,7 @@ AC_MSG_RESULT($enable_libftdi)
-
- if test "$enable_libftdi" = "yes"; then
- ifdef([PKG_CHECK_MODULES],
-- [PKG_CHECK_MODULES(LIBFTDI, libftdi >= 0.8,
-+ [PKG_CHECK_MODULES(LIBFTDI, libftdi1 >= 0.8,
- [AC_DEFINE(HAVE_LIBFTDI, [1], [Define to 1 if you have libftdi])],
- [ enable_libftdi=no ])],
- [AC_MSG_WARN([pkg-config not (fully) installed; drivers requiring libftdi may not be built])])
-diff --git a/server/drivers/hd44780-low.h b/server/drivers/hd44780-low.h
-index 47acf45..6faa830 100644
---- a/server/drivers/hd44780-low.h
-+++ b/server/drivers/hd44780-low.h
-@@ -26,7 +26,7 @@
- #endif
-
- #ifdef HAVE_LIBFTDI
--# include
-+# include
- #endif
-
- /** \name Symbolic names for connection types
-diff --git a/server/drivers/i2500vfd.c b/server/drivers/i2500vfd.c
-index d896a69..7fe74f2 100644
---- a/server/drivers/i2500vfd.c
-+++ b/server/drivers/i2500vfd.c
-@@ -32,7 +32,7 @@
- #include
- #include
- #include
--#include
-+#include
-
- #include "lcd.h"
- #include "i2500vfd.h"
-diff --git a/server/drivers/lis.c b/server/drivers/lis.c
-index 5d3e97a..6c26a19 100644
---- a/server/drivers/lis.c
-+++ b/server/drivers/lis.c
-@@ -42,7 +42,7 @@
- #include
-
- #include
--#include
-+#include
-
- #include "lcd.h"
- #include "lis.h"
-diff --git a/server/drivers/ula200.c b/server/drivers/ula200.c
-index cbdde40..a84eb49 100644
---- a/server/drivers/ula200.c
-+++ b/server/drivers/ula200.c
-@@ -31,7 +31,7 @@
- #include
-
- #include
--#include
-+#include
-
- #include "lcd.h"
- #include "ula200.h"
diff --git a/packages/sysutils/lcdproc/patches/lcdproc-fujitsu_siemens_scaleo_e.patch b/packages/sysutils/lcdproc/patches/lcdproc-fujitsu_siemens_scaleo_e.patch
deleted file mode 100644
index 1798f9c103..0000000000
--- a/packages/sysutils/lcdproc/patches/lcdproc-fujitsu_siemens_scaleo_e.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-diff -Naur lcdproc-0.5.7-cvs20140217/server/drivers/dm140.c lcdproc-0.5.7-cvs20140217.patch/server/drivers/dm140.c
---- lcdproc-0.5.7-cvs20140217/server/drivers/dm140.c 2014-12-24 01:37:27.439628078 +0100
-+++ lcdproc-0.5.7-cvs20140217.patch/server/drivers/dm140.c 2014-12-24 01:41:34.556853466 +0100
-@@ -81,10 +81,17 @@
- return -1;
- }
-
-- if((p->fd = OpenHID(drvthis))< 0)
-+ if ((p->fd = OpenHID(drvthis)) < 0)
- {
-- report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found, exiting\n", p->pszVendor, p->pszProduct);
-- return -1;
-+ report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found\n", p->pszVendor, p->pszProduct);
-+ p->pszVendor = "1509";
-+ p->pszProduct = "925d";
-+ if ((p->fd = OpenHID(drvthis)) < 0)
-+ {
-+ report(RPT_INFO, "Device for Vendor[%s] Product[%s] was not found\n", p->pszVendor, p->pszProduct);
-+ report(RPT_INFO, "No dm140 device found, exiting\n");
-+ return -1;
-+ }
- }
-
- //******************************************************
-diff -Naur lcdproc-0.5.7-cvs20140217/server/drivers/led.c lcdproc-0.5.7-cvs20140217.patch/server/drivers/led.c
---- lcdproc-0.5.7-cvs20140217/server/drivers/led.c 2014-12-24 01:37:27.439628078 +0100
-+++ lcdproc-0.5.7-cvs20140217.patch/server/drivers/led.c 2014-12-24 01:49:38.519253308 +0100
-@@ -95,21 +95,21 @@
- //**************************************************************
- // FUNCTION: Compare
- //
--// INPUT:
-+// INPUT:
- // const char *pszValue - string to compare
--// short sValue - numberic value to compare
-+// short sOtherValue - numeric value to compare
- //
- // OUTPUT:
- // int - Boolean value, 0 on non match, 1 on success.
- //
--// DESCRIPTION: Compare a character value to a numeric value.
-+// DESCRIPTION: Compare a hex value in a string to a numeric value.
- //**************************************************************
--int Compare(const char *pszValue, short sValue)
-+int Compare(const char *pszValue, short sOtherValue)
- {
-- int iValue;
-+ short sValue;
- // convert the pszValue to a number
-- sscanf( pszValue, "%4x", &iValue);
-- return( iValue == sValue );
-+ sscanf( pszValue, "%4hx", &sValue );
-+ return( sValue == sOtherValue );
- }
-
-
diff --git a/packages/sysutils/lcdproc/scripts/lcd-wrapper b/packages/sysutils/lcdproc/scripts/lcd-wrapper
deleted file mode 100755
index c6b2e7102a..0000000000
--- a/packages/sysutils/lcdproc/scripts/lcd-wrapper
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-################################################################################
-# This file is part of OpenELEC - http://www.openelec.tv
-# Copyright (C) 2009-2014 Stephan Raue (stephan@openelec.tv)
-#
-# OpenELEC 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 of the License, or
-# (at your option) any later version.
-#
-# OpenELEC 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 OpenELEC. If not, see .
-################################################################################
-
-if [ -f /storage/.cache/services/lcdd.conf ]; then
- . /storage/.cache/services/lcdd.conf
-
- if [ "$LCD_DRIVER" == "none" ]; then
- exit 0
- fi
-
- LCDCONF=/etc/LCDd.conf
- if [ -f /storage/.config/LCDd.conf ]; then
- LCDCONF=/storage/.config/LCDd.conf
- fi
- exec /usr/sbin/LCDd -f -c $LCDCONF -d $LCD_DRIVER
-fi
diff --git a/packages/sysutils/lcdproc/system.d/lcdd.service b/packages/sysutils/lcdproc/system.d/lcdd.service
deleted file mode 100644
index 83dadf6596..0000000000
--- a/packages/sysutils/lcdproc/system.d/lcdd.service
+++ /dev/null
@@ -1,16 +0,0 @@
-[Unit]
-Description=LCDProc
-ConditionPathExists=|/storage/.cache/services/lcdd.conf
-After=multi-user.target
-
-[Service]
-EnvironmentFile=-/storage/.cache/services/lcdd.conf
-ExecStart=/bin/sh -c 'exec /usr/lib/libreelec/lcd-wrapper'
-TimeoutStopSec=1s
-Restart=always
-RestartSec=5
-StartLimitInterval=30
-StartLimitBurst=5
-
-[Install]
-WantedBy=multi-user.target
diff --git a/projects/Odroid_C2/options b/projects/Odroid_C2/options
index f2a592e635..c83839bc1b 100644
--- a/projects/Odroid_C2/options
+++ b/projects/Odroid_C2/options
@@ -109,9 +109,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# Amlogic IR remote support (yes / no)
AMREMOTE_SUPPORT="no"
diff --git a/projects/RPi/options b/projects/RPi/options
index 52b728533e..266f8d656d 100644
--- a/projects/RPi/options
+++ b/projects/RPi/options
@@ -117,9 +117,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# build with swap support (yes / no)
SWAP_SUPPORT="yes"
diff --git a/projects/RPi2/options b/projects/RPi2/options
index 72276a0faf..42220046c7 100644
--- a/projects/RPi2/options
+++ b/projects/RPi2/options
@@ -117,9 +117,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# build with swap support (yes / no)
SWAP_SUPPORT="yes"
diff --git a/projects/WeTek_Core/options b/projects/WeTek_Core/options
index 915537a982..23e04bde47 100644
--- a/projects/WeTek_Core/options
+++ b/projects/WeTek_Core/options
@@ -127,9 +127,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# Amlogic IR remote support (yes / no)
AMREMOTE_SUPPORT="yes"
diff --git a/projects/WeTek_Hub/options b/projects/WeTek_Hub/options
index a52fb572ab..048c86562b 100644
--- a/projects/WeTek_Hub/options
+++ b/projects/WeTek_Hub/options
@@ -115,9 +115,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# Amlogic IR remote support (yes / no)
AMREMOTE_SUPPORT="yes"
diff --git a/projects/WeTek_Play/options b/projects/WeTek_Play/options
index 6ab0e9519f..63f11e4269 100644
--- a/projects/WeTek_Play/options
+++ b/projects/WeTek_Play/options
@@ -121,9 +121,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# Amlogic IR remote support (yes / no)
AMREMOTE_SUPPORT="yes"
diff --git a/projects/WeTek_Play_2/options b/projects/WeTek_Play_2/options
index 81e9790ddc..abf1356f48 100644
--- a/projects/WeTek_Play_2/options
+++ b/projects/WeTek_Play_2/options
@@ -115,9 +115,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# Amlogic IR remote support (yes / no)
AMREMOTE_SUPPORT="yes"
diff --git a/projects/imx6/options b/projects/imx6/options
index 35b06c4316..487e4ea822 100644
--- a/projects/imx6/options
+++ b/projects/imx6/options
@@ -136,9 +136,6 @@
# build and install ATV IR remote support (yes / no)
ATVCLIENT_SUPPORT="no"
- # "none" for disable LCD support
- LCD_DRIVER="none"
-
# build with swap support (yes / no)
SWAP_SUPPORT="no"
diff --git a/scripts/image b/scripts/image
index 8aead342c9..a34e371a0a 100755
--- a/scripts/image
+++ b/scripts/image
@@ -178,9 +178,6 @@ $SCRIPTS/install network
# Remote support
[ "$REMOTE_SUPPORT" = "yes" ] && $SCRIPTS/install remote
-# LCD support
-[ ! "$LCD_DRIVER" = "none" ] && $SCRIPTS/install lcdproc
-
# Virtual image creation support
[ "$PROJECT" = Virtual ] && $SCRIPTS/install virtual