lcd4linux: import from oldpackages
* Update to latest version * Refresh patches * Update copyright years * Fix musl build issues (patches already applied upstream) Signed-off-by: Jonathan McCrohan <jmccrohan@gmail.com>
This commit is contained in:
parent
6e79792c8a
commit
4f086bc2a3
12 changed files with 4308 additions and 0 deletions
489
utils/lcd4linux/Config.in
Normal file
489
utils/lcd4linux/Config.in
Normal file
|
@ -0,0 +1,489 @@
|
||||||
|
if PACKAGE_lcd4linux-custom
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libdbus
|
||||||
|
bool
|
||||||
|
|
||||||
|
#config LCD4LINUX_CUSTOM_NEEDS_libftdi
|
||||||
|
# bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libiconv
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libjpeg
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libmpdclient
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libmysqlclient
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libncurses
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libnmeap
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libsqlite3
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
bool
|
||||||
|
|
||||||
|
#config LCD4LINUX_CUSTOM_NEEDS_libX11
|
||||||
|
# bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_ppp
|
||||||
|
bool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_NEEDS_python
|
||||||
|
bool
|
||||||
|
|
||||||
|
|
||||||
|
comment "Drivers ---"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_ASTUSB
|
||||||
|
bool
|
||||||
|
prompt "ASTUSB"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_BeckmannEgle
|
||||||
|
bool
|
||||||
|
prompt "BeckmannEgle"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_BWCT
|
||||||
|
bool
|
||||||
|
prompt "BWCT"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_CrystalFontz
|
||||||
|
bool
|
||||||
|
prompt "CrystalFontz"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Curses
|
||||||
|
bool
|
||||||
|
prompt "Curses"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libncurses
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Cwlinux
|
||||||
|
bool
|
||||||
|
prompt "Cwlinux"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_D4D
|
||||||
|
bool
|
||||||
|
prompt "D4D"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_dpf
|
||||||
|
bool
|
||||||
|
prompt "dpf"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libdpf
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_EA232graphic
|
||||||
|
bool
|
||||||
|
prompt "EA232graphic"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_EFN
|
||||||
|
bool
|
||||||
|
prompt "EFN"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_FutabaVFD
|
||||||
|
bool
|
||||||
|
prompt "FutabaVFD"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_FW8888
|
||||||
|
bool
|
||||||
|
prompt "FW8888"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_G15
|
||||||
|
bool
|
||||||
|
prompt "G15"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_GLCD2USB
|
||||||
|
bool
|
||||||
|
prompt "GLCD2USB"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_HD44780
|
||||||
|
bool
|
||||||
|
prompt "HD44780"
|
||||||
|
depends on BROKEN
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_HD44780-I2C
|
||||||
|
bool
|
||||||
|
prompt "HD44780-I2C"
|
||||||
|
depends on BROKEN
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_IRLCD
|
||||||
|
bool
|
||||||
|
prompt "IRLCD"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LCD2USB
|
||||||
|
bool
|
||||||
|
prompt "LCD2USB"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LCDLinux
|
||||||
|
bool
|
||||||
|
prompt "LCDLinux"
|
||||||
|
depends on BROKEN
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LCDTerm
|
||||||
|
bool
|
||||||
|
prompt "LCDTerm"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LEDMatrix
|
||||||
|
bool
|
||||||
|
prompt "LEDMatrix"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LPH7508
|
||||||
|
bool
|
||||||
|
prompt "LPH7508"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LUIse
|
||||||
|
bool
|
||||||
|
prompt "LUIse"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
#select LCD4LINUX_CUSTOM_NEEDS_libluise
|
||||||
|
depends on BROKEN
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_LW_ABP
|
||||||
|
bool
|
||||||
|
prompt "LW_ABP"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_M50530
|
||||||
|
bool
|
||||||
|
prompt "M50530"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_MatrixOrbital
|
||||||
|
bool
|
||||||
|
prompt "MatrixOrbital"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_MatrixOrbitalGX
|
||||||
|
bool
|
||||||
|
prompt "MatrixOrbitalGX"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_mdm166a
|
||||||
|
bool
|
||||||
|
prompt "mdm166a"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_MilfordInstruments
|
||||||
|
bool
|
||||||
|
prompt "MilfordInstruments"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Newhaven
|
||||||
|
bool
|
||||||
|
prompt "Newhaven"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Noritake
|
||||||
|
bool
|
||||||
|
prompt "Noritake"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_NULL
|
||||||
|
bool
|
||||||
|
prompt "NULL"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Pertelian
|
||||||
|
bool
|
||||||
|
prompt "Pertelian"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_PHAnderson
|
||||||
|
bool
|
||||||
|
prompt "PHAnderson"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_PICGraphic
|
||||||
|
bool
|
||||||
|
prompt "PICGraphic"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_picoLCD
|
||||||
|
bool
|
||||||
|
prompt "picoLCD"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_picoLCDGraphic
|
||||||
|
bool
|
||||||
|
prompt "picoLCDGraphic"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_PNG
|
||||||
|
bool
|
||||||
|
prompt "PNG"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_PPM
|
||||||
|
bool
|
||||||
|
prompt "PPM"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_RouterBoard
|
||||||
|
bool
|
||||||
|
prompt "RouterBoard"
|
||||||
|
depends on TARGET_rb532
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_SamsungSPF
|
||||||
|
bool
|
||||||
|
prompt "SamsungSPF"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libjpeg
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_serdisplib
|
||||||
|
bool
|
||||||
|
prompt "serdisplib"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_serdisplib
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_ShuttleVFD
|
||||||
|
bool
|
||||||
|
prompt "ShuttleVFD"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_SimpleLCD
|
||||||
|
bool
|
||||||
|
prompt "SimpleLCD"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_st2205
|
||||||
|
bool
|
||||||
|
prompt "st2205"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_st2205tool
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_T6963
|
||||||
|
bool
|
||||||
|
prompt "T6963"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_TeakLCM
|
||||||
|
bool
|
||||||
|
prompt "TeakLCM"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_TEW673GRU
|
||||||
|
bool
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
depends on TARGET_ar71xx
|
||||||
|
default TARGET_ar71xx
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_Trefon
|
||||||
|
bool
|
||||||
|
prompt "Trefon"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
#config LCD4LINUX_CUSTOM_DRIVER_ULA200
|
||||||
|
# bool
|
||||||
|
# prompt "ULA200"
|
||||||
|
# select LCD4LINUX_CUSTOM_NEEDS_libftdi
|
||||||
|
# select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_USBHUB
|
||||||
|
bool
|
||||||
|
prompt "USBHUB"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_USBLCD
|
||||||
|
bool
|
||||||
|
prompt "USBLCD"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libusb
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_VNC
|
||||||
|
bool
|
||||||
|
prompt "VNC"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libvncserver
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_DRIVER_WincorNixdorf
|
||||||
|
bool
|
||||||
|
prompt "WincorNixdorf"
|
||||||
|
|
||||||
|
#config LCD4LINUX_CUSTOM_DRIVER_X11
|
||||||
|
# bool
|
||||||
|
# prompt "X11"
|
||||||
|
# select LCD4LINUX_CUSTOM_NEEDS_libgd
|
||||||
|
# select LCD4LINUX_CUSTOM_NEEDS_libX11
|
||||||
|
|
||||||
|
|
||||||
|
comment "Plugins ---"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_apm
|
||||||
|
bool
|
||||||
|
prompt "apm"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_asterisk
|
||||||
|
bool
|
||||||
|
prompt "asterisk"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_button_exec
|
||||||
|
bool
|
||||||
|
prompt "button_exec"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_cpuinfo
|
||||||
|
bool
|
||||||
|
prompt "cpuinfo"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_dbus
|
||||||
|
bool
|
||||||
|
prompt "dbus"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libdbus
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_diskstats
|
||||||
|
bool
|
||||||
|
prompt "diskstats"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_dvb
|
||||||
|
bool
|
||||||
|
prompt "dvb"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_event
|
||||||
|
bool
|
||||||
|
prompt "event"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_exec
|
||||||
|
bool
|
||||||
|
prompt "exec"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_fifo
|
||||||
|
bool
|
||||||
|
prompt "fifo"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_file
|
||||||
|
bool
|
||||||
|
prompt "file"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_gps
|
||||||
|
bool
|
||||||
|
prompt "gps"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libnmeap
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_hddtemp
|
||||||
|
bool
|
||||||
|
prompt "hddtemp"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_huawei
|
||||||
|
bool
|
||||||
|
prompt "huawei"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_i2c_sensors
|
||||||
|
bool
|
||||||
|
prompt "i2c_sensors"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_iconv
|
||||||
|
bool
|
||||||
|
prompt "iconv"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libiconv
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_imon
|
||||||
|
bool
|
||||||
|
prompt "imon"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_isdn
|
||||||
|
bool
|
||||||
|
prompt "isdn"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_kvv
|
||||||
|
bool
|
||||||
|
prompt "kvv"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_loadavg
|
||||||
|
bool
|
||||||
|
prompt "loadavg"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_meminfo
|
||||||
|
bool
|
||||||
|
prompt "meminfo"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_mpd
|
||||||
|
bool
|
||||||
|
prompt "mpd"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libmpdclient
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_mpris_dbus
|
||||||
|
bool
|
||||||
|
prompt "mpris_dbus"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libdbus
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_mysql
|
||||||
|
bool
|
||||||
|
prompt "mysql"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libmysqlclient
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_netdev
|
||||||
|
bool
|
||||||
|
prompt "netdev"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_netinfo
|
||||||
|
bool
|
||||||
|
prompt "netinfo"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_pop3
|
||||||
|
bool
|
||||||
|
prompt "pop3"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_ppp
|
||||||
|
bool
|
||||||
|
prompt "ppp"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_ppp
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_proc_stat
|
||||||
|
bool
|
||||||
|
prompt "proc_stat"
|
||||||
|
default y
|
||||||
|
|
||||||
|
#config LCD4LINUX_CUSTOM_PLUGIN_python
|
||||||
|
# bool
|
||||||
|
# prompt "python"
|
||||||
|
# select LCD4LINUX_CUSTOM_NEEDS_python
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_qnaplog
|
||||||
|
bool
|
||||||
|
prompt "qnaplog"
|
||||||
|
select LCD4LINUX_CUSTOM_NEEDS_libsqlite3
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_seti
|
||||||
|
bool
|
||||||
|
prompt "seti"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_statfs
|
||||||
|
bool
|
||||||
|
prompt "statfs"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_uname
|
||||||
|
bool
|
||||||
|
prompt "uname"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_uptime
|
||||||
|
bool
|
||||||
|
prompt "uptime"
|
||||||
|
default y
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_w1retap
|
||||||
|
bool
|
||||||
|
prompt "w1retap"
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_wireless
|
||||||
|
bool
|
||||||
|
prompt "wireless"
|
||||||
|
depends on BROKEN
|
||||||
|
|
||||||
|
config LCD4LINUX_CUSTOM_PLUGIN_xmms
|
||||||
|
bool
|
||||||
|
prompt "xmms"
|
||||||
|
|
||||||
|
endif
|
309
utils/lcd4linux/Makefile
Normal file
309
utils/lcd4linux/Makefile
Normal file
|
@ -0,0 +1,309 @@
|
||||||
|
#
|
||||||
|
# Copyright (C) 2007-2015 OpenWrt.org
|
||||||
|
#
|
||||||
|
# This is free software, licensed under the GNU General Public License v2.
|
||||||
|
# See /LICENSE for more information.
|
||||||
|
#
|
||||||
|
|
||||||
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
|
PKG_NAME:=lcd4linux
|
||||||
|
PKG_REV:=1203
|
||||||
|
PKG_VERSION:=r$(PKG_REV)
|
||||||
|
PKG_RELEASE:=1
|
||||||
|
|
||||||
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
|
PKG_SOURCE_URL:=https://ssl.bulix.org/svn/lcd4linux/trunk/
|
||||||
|
PKG_SOURCE_SUBDIR:=lcd4linux-$(PKG_VERSION)
|
||||||
|
PKG_SOURCE_VERSION:=$(PKG_REV)
|
||||||
|
PKG_SOURCE_PROTO:=svn
|
||||||
|
|
||||||
|
LCD4LINUX_DRIVERS:= \
|
||||||
|
ASTUSB \
|
||||||
|
BeckmannEgle \
|
||||||
|
BWCT \
|
||||||
|
CrystalFontz \
|
||||||
|
Curses \
|
||||||
|
Cwlinux \
|
||||||
|
D4D \
|
||||||
|
$(if $(CONFIG_BROKEN),DPF) \
|
||||||
|
EA232graphic \
|
||||||
|
EFN \
|
||||||
|
FutabaVFD \
|
||||||
|
FW8888 \
|
||||||
|
G15 \
|
||||||
|
GLCD2USB \
|
||||||
|
IRLCD \
|
||||||
|
$(if $(CONFIG_BROKEN),HD44780) \
|
||||||
|
$(if $(CONFIG_BROKEN),HD44780-I2C) \
|
||||||
|
LCD2USB \
|
||||||
|
$(if $(CONFIG_BROKEN),LCDLinux) \
|
||||||
|
LCDTerm \
|
||||||
|
LEDMatrix \
|
||||||
|
LPH7508 \
|
||||||
|
$(if $(CONFIG_BROKEN),LUIse) \
|
||||||
|
LW_ABP \
|
||||||
|
M50530 \
|
||||||
|
MatrixOrbital \
|
||||||
|
MatrixOrbitalGX \
|
||||||
|
MilfordInstruments \
|
||||||
|
Newhaven \
|
||||||
|
Noritake \
|
||||||
|
NULL \
|
||||||
|
Pertelian \
|
||||||
|
PHAnderson \
|
||||||
|
PICGraphic \
|
||||||
|
picoLCD \
|
||||||
|
picoLCDGraphic \
|
||||||
|
PNG \
|
||||||
|
PPM \
|
||||||
|
$(if $(CONFIG_TARGET_rb532),RouterBoard) \
|
||||||
|
$(if $(CONFIG_BROKEN),SamsungSPF) \
|
||||||
|
ShuttleVFD \
|
||||||
|
SimpleLCD \
|
||||||
|
st2205 \
|
||||||
|
T6963 \
|
||||||
|
TeakLCM \
|
||||||
|
$(if $(CONFIG_TARGET_ar71xx),TEW673GRU) \
|
||||||
|
Trefon \
|
||||||
|
USBHUB \
|
||||||
|
USBLCD \
|
||||||
|
VNC \
|
||||||
|
WincorNixdorf \
|
||||||
|
# ULA200 \
|
||||||
|
# X11 \
|
||||||
|
|
||||||
|
LCD4LINUX_PLUGINS:= \
|
||||||
|
apm \
|
||||||
|
asterisk \
|
||||||
|
button_exec \
|
||||||
|
cpuinfo \
|
||||||
|
dbus \
|
||||||
|
diskstats \
|
||||||
|
dvb \
|
||||||
|
event \
|
||||||
|
exec \
|
||||||
|
fifo \
|
||||||
|
file \
|
||||||
|
gps \
|
||||||
|
hddtemp \
|
||||||
|
huawei \
|
||||||
|
i2c_sensors \
|
||||||
|
iconv \
|
||||||
|
imon \
|
||||||
|
isdn \
|
||||||
|
kvv \
|
||||||
|
loadavg \
|
||||||
|
netdev \
|
||||||
|
netinfo \
|
||||||
|
meminfo \
|
||||||
|
mpd \
|
||||||
|
mpris_dbus \
|
||||||
|
mysql \
|
||||||
|
netdev \
|
||||||
|
pop3 \
|
||||||
|
ppp \
|
||||||
|
proc_stat \
|
||||||
|
qnaplog \
|
||||||
|
seti \
|
||||||
|
statfs \
|
||||||
|
uname \
|
||||||
|
uptime \
|
||||||
|
w1retap \
|
||||||
|
$(if $(CONFIG_BROKEN),wireless) \
|
||||||
|
xmms \
|
||||||
|
# python \
|
||||||
|
|
||||||
|
PKG_FIXUP:=autoreconf
|
||||||
|
PKG_INSTALL:=1
|
||||||
|
|
||||||
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
|
PKG_BUILD_DEPENDS:= \
|
||||||
|
libdbus \
|
||||||
|
libgd \
|
||||||
|
libmpdclient \
|
||||||
|
libmysqlclient \
|
||||||
|
libncurses \
|
||||||
|
libnmeap \
|
||||||
|
libsqlite3 \
|
||||||
|
ppp \
|
||||||
|
# libftdi \
|
||||||
|
# libX11 \
|
||||||
|
# python \
|
||||||
|
|
||||||
|
PKG_CONFIG_DEPENDS:= \
|
||||||
|
$(patsubst %,CONFIG_LCD4LINUX_CUSTOM_DRIVER_%,$(LCD4LINUX_DRIVERS)) \
|
||||||
|
$(patsubst %,CONFIG_LCD4LINUX_CUSTOM_PLUGIN_%,$(LCD4LINUX_PLUGINS)) \
|
||||||
|
|
||||||
|
include $(INCLUDE_DIR)/package.mk
|
||||||
|
include $(INCLUDE_DIR)/nls.mk
|
||||||
|
|
||||||
|
define Package/lcd4linux/Default
|
||||||
|
SECTION:=utils
|
||||||
|
CATEGORY:=Utilities
|
||||||
|
PKG_MAINTAINER:=Jonathan McCrohan <jmccrohan@gmail.com>
|
||||||
|
TITLE:=LCD display utility
|
||||||
|
URL:=http://lcd4linux.bulix.org/
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/lcd4linux/Default/description
|
||||||
|
LCD4Linux is a small program that grabs information from the kernel and
|
||||||
|
some subsystems and displays it on an external liquid crystal display.
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define Package/lcd4linux-custom
|
||||||
|
$(call Package/lcd4linux/Default)
|
||||||
|
DEPENDS:= \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libdbus:libdbus \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libgd:libgd \
|
||||||
|
$(if $(ICONV_FULL),+LCD4LINUX_CUSTOM_NEEDS_libiconv:libiconv-full) \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libjpeg:libjpeg \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libmpdclient:libmpdclient \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libmysqlclient:libmysqlclient \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libncurses:libncurses \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libsqlite3:libsqlite3 \
|
||||||
|
+LCD4LINUX_CUSTOM_NEEDS_libusb:libusb-compat \
|
||||||
|
# +LCD4LINUX_CUSTOM_NEEDS_libftdi:libftdi \
|
||||||
|
# +LCD4LINUX_CUSTOM_NEEDS_libX11:libX11 \
|
||||||
|
# +LCD4LINUX_CUSTOM_NEEDS_python:python
|
||||||
|
MENU:=1
|
||||||
|
PROVIDES:=lcd4linux
|
||||||
|
VARIANT=custom
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/lcd4linux-custom/config
|
||||||
|
source "$(SOURCE)/Config.in"
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/lcd4linux-custom/description
|
||||||
|
$(call Package/lcd4linux/Default/description)
|
||||||
|
.
|
||||||
|
This package contains a customized version of LCD4Linux.
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
define Package/lcd4linux-full
|
||||||
|
$(call Package/lcd4linux/Default)
|
||||||
|
DEPENDS:= @DEVEL \
|
||||||
|
+libdbus \
|
||||||
|
+libgd \
|
||||||
|
$(if $(ICONV_FULL),+libiconv-full) \
|
||||||
|
+libmpdclient \
|
||||||
|
+libmysqlclient \
|
||||||
|
+libncurses \
|
||||||
|
+libsqlite3 \
|
||||||
|
+libusb-compat \
|
||||||
|
# +libftdi \
|
||||||
|
# +libX11 \
|
||||||
|
# +python
|
||||||
|
PROVIDES:=lcd4linux
|
||||||
|
VARIANT=full
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/lcd4linux-full/description
|
||||||
|
$(call Package/lcd4linux/Default/description)
|
||||||
|
.
|
||||||
|
This package contains a version of LCD4Linux built with all supported
|
||||||
|
drivers and plugins.
|
||||||
|
endef
|
||||||
|
|
||||||
|
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--disable-rpath \
|
||||||
|
|
||||||
|
EXTRA_LDFLAGS+= -Wl,-rpath-link,$(STAGING_DIR)/usr/lib
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),custom)
|
||||||
|
|
||||||
|
LCD4LINUX_CUSTOM_DRIVERS:= $(strip $(foreach c, $(LCD4LINUX_DRIVERS), \
|
||||||
|
$(if $(CONFIG_LCD4LINUX_CUSTOM_DRIVER_$(c)),$(c),) \
|
||||||
|
))
|
||||||
|
ifeq ($(LCD4LINUX_CUSTOM_DRIVERS),)
|
||||||
|
LCD4LINUX_CUSTOM_DRIVERS:=Sample
|
||||||
|
endif
|
||||||
|
|
||||||
|
LCD4LINUX_CUSTOM_PLUGINS:= $(strip $(foreach c, $(LCD4LINUX_PLUGINS), \
|
||||||
|
$(if $(CONFIG_LCD4LINUX_CUSTOM_PLUGIN_$(c)),$(c)) \
|
||||||
|
))
|
||||||
|
ifeq ($(LCD4LINUX_CUSTOM_PLUGINS),)
|
||||||
|
LCD4LINUX_CUSTOM_PLUGINS:=sample
|
||||||
|
endif
|
||||||
|
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-drivers="$(LCD4LINUX_CUSTOM_DRIVERS)" \
|
||||||
|
--with-plugins="$(LCD4LINUX_CUSTOM_PLUGINS)" \
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libiconv),)
|
||||||
|
CONFIGURE_ARGS+= --with-libiconv-prefix="$(ICONV_PREFIX)"
|
||||||
|
else
|
||||||
|
CONFIGURE_ARGS+= --without-libiconv-prefix
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libmysqlclient),)
|
||||||
|
EXTRA_LDFLAGS+= -L$(STAGING_DIR)/usr/lib/mysql
|
||||||
|
endif
|
||||||
|
|
||||||
|
# ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_python),)
|
||||||
|
# CONFIGURE_ARGS+= --with-python
|
||||||
|
# else
|
||||||
|
CONFIGURE_ARGS+= --without-python
|
||||||
|
# endif
|
||||||
|
|
||||||
|
# ifneq ($(CONFIG_LCD4LINUX_CUSTOM_NEEDS_libX11),)
|
||||||
|
# CONFIGURE_ARGS+= --with-x
|
||||||
|
# else
|
||||||
|
CONFIGURE_ARGS+= --without-x
|
||||||
|
# endif
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(BUILD_VARIANT),full)
|
||||||
|
|
||||||
|
LCD4LINUX_FULL_DRIVERS:= $(strip $(foreach c, $(LCD4LINUX_DRIVERS), \
|
||||||
|
$(c) \
|
||||||
|
))
|
||||||
|
|
||||||
|
LCD4LINUX_FULL_PLUGINS:= $(strip $(foreach c, $(LCD4LINUX_PLUGINS), \
|
||||||
|
$(c) \
|
||||||
|
))
|
||||||
|
|
||||||
|
CONFIGURE_ARGS+= \
|
||||||
|
--with-drivers="$(LCD4LINUX_FULL_DRIVERS)" \
|
||||||
|
--with-plugins="$(LCD4LINUX_FULL_PLUGINS)" \
|
||||||
|
--with-libiconv-prefix="$(ICONV_PREFIX)" \
|
||||||
|
--without-python \
|
||||||
|
--without-x \
|
||||||
|
|
||||||
|
EXTRA_LDFLAGS+= -L$(STAGING_DIR)/usr/lib/mysql
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
define Package/lcd4linux/conffiles
|
||||||
|
/etc/lcd4linux.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
define Package/lcd4linux/install
|
||||||
|
$(INSTALL_DIR) $(1)/usr/bin
|
||||||
|
$(CP) $(PKG_INSTALL_DIR)/usr/bin/lcd4linux $(1)/usr/bin/
|
||||||
|
$(INSTALL_DIR) $(1)/etc
|
||||||
|
$(INSTALL_CONF) $(PKG_BUILD_DIR)/lcd4linux.conf.sample $(1)/etc/lcd4linux.conf
|
||||||
|
$(INSTALL_DIR) $(1)/etc/init.d
|
||||||
|
$(INSTALL_BIN) ./files/lcd4linux.init $(1)/etc/init.d/lcd4linux
|
||||||
|
$(SED) "s|^\(Display 'GLCD2USB'\)|#\1|g" \
|
||||||
|
-e "s|^\(Layout 'TestLayer'\)|#\1|g" \
|
||||||
|
-e "s|^#\(Display 'Image'\)|\1|g" \
|
||||||
|
-e "s|^#\(Layout 'Default'\)|\1|g" \
|
||||||
|
$(1)/etc/lcd4linux.conf
|
||||||
|
endef
|
||||||
|
|
||||||
|
Package/lcd4linux-custom/conffiles = $(Package/lcd4linux/conffiles)
|
||||||
|
Package/lcd4linux-custom/install = $(Package/lcd4linux/install)
|
||||||
|
|
||||||
|
Package/lcd4linux-full/conffiles = $(Package/lcd4linux/conffiles)
|
||||||
|
Package/lcd4linux-full/install = $(Package/lcd4linux/install)
|
||||||
|
|
||||||
|
$(eval $(call BuildPackage,lcd4linux-custom))
|
||||||
|
$(eval $(call BuildPackage,lcd4linux-full))
|
15
utils/lcd4linux/files/lcd4linux.init
Normal file
15
utils/lcd4linux/files/lcd4linux.init
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
#!/bin/sh /etc/rc.common
|
||||||
|
# Copyright (C) 2007-2015 OpenWrt.org
|
||||||
|
|
||||||
|
START=98
|
||||||
|
|
||||||
|
SERVICE_USE_PID=1
|
||||||
|
|
||||||
|
start() {
|
||||||
|
service_start /usr/bin/lcd4linux -o /tmp/lcd4linux.png -q
|
||||||
|
}
|
||||||
|
|
||||||
|
stop() {
|
||||||
|
service_stop /usr/bin/lcd4linux
|
||||||
|
}
|
||||||
|
|
11
utils/lcd4linux/patches/100-drv_RouterBoard.patch
Normal file
11
utils/lcd4linux/patches/100-drv_RouterBoard.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/drv_RouterBoard.c
|
||||||
|
+++ b/drv_RouterBoard.c
|
||||||
|
@@ -106,7 +106,7 @@
|
||||||
|
#include <string.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
-#include <sys/io.h>
|
||||||
|
+#include <asm/io.h>
|
||||||
|
|
||||||
|
#include "debug.h"
|
||||||
|
#include "cfg.h"
|
11
utils/lcd4linux/patches/110-uclibc-logarithm-fix.patch
Normal file
11
utils/lcd4linux/patches/110-uclibc-logarithm-fix.patch
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
--- a/plugin_netinfo.c
|
||||||
|
+++ b/plugin_netinfo.c
|
||||||
|
@@ -264,7 +264,7 @@ static void my_netmask_short(RESULT * re
|
||||||
|
sin = get_netmask(arg1);
|
||||||
|
if (NULL != sin) {
|
||||||
|
logval = (long double) (get_netmask(arg1)->sin_addr.s_addr);
|
||||||
|
- netlen = (int) rint(log2l(logval) / log2l(2.0));
|
||||||
|
+ netlen = (int) rint(log2f(logval) / log2f(2.0));
|
||||||
|
qprintf(value, sizeof(value), "/%d", netlen);
|
||||||
|
} else {
|
||||||
|
qprintf(value, sizeof(value), "/?");
|
|
@ -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
utils/lcd4linux/patches/140-no_repnop_T6963.patch
Normal file
22
utils/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
utils/lcd4linux/patches/150-addlibmpdclient.patch
Normal file
2624
utils/lcd4linux/patches/150-addlibmpdclient.patch
Normal file
File diff suppressed because it is too large
Load diff
24
utils/lcd4linux/patches/160-uinput_defs.patch
Normal file
24
utils/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
utils/lcd4linux/patches/170-add-generic-spidev-driver.patch
Normal file
195
utils/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)
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
--- a/drv_generic_graphic.c
|
||||||
|
+++ b/drv_generic_graphic.c
|
||||||
|
@@ -24,7 +24,7 @@
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
-/*
|
||||||
|
+/*
|
||||||
|
*
|
||||||
|
* exported functions:
|
||||||
|
*
|
||||||
|
@@ -98,6 +98,9 @@ static int INVERTED = 0;
|
||||||
|
/* must be implemented by the real driver */
|
||||||
|
void (*drv_generic_graphic_real_blit) () = NULL;
|
||||||
|
|
||||||
|
+/* can be implemented by the real driver */
|
||||||
|
+void (*drv_generic_graphic_real_clear) () = NULL;
|
||||||
|
+
|
||||||
|
|
||||||
|
/****************************************/
|
||||||
|
/*** generic Framebuffer stuff ***/
|
||||||
|
@@ -691,7 +694,10 @@ int drv_generic_graphic_clear(void)
|
||||||
|
for (i = 0; i < LCOLS * LROWS; i++)
|
||||||
|
drv_generic_graphic_FB[l][i] = NO_COL;
|
||||||
|
|
||||||
|
- drv_generic_graphic_blit(0, 0, LROWS, LCOLS);
|
||||||
|
+ if (drv_generic_graphic_real_clear)
|
||||||
|
+ drv_generic_graphic_real_clear(NO_COL);
|
||||||
|
+ else
|
||||||
|
+ drv_generic_graphic_blit(0, 0, LROWS, LCOLS);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
--- a/drv_generic_graphic.h
|
||||||
|
+++ b/drv_generic_graphic.h
|
||||||
|
@@ -40,6 +40,9 @@ extern RGBA NO_COL; /* no color (comple
|
||||||
|
/* these functions must be implemented by the real driver */
|
||||||
|
extern void (*drv_generic_graphic_real_blit) (const int row, const int col, const int height, const int width);
|
||||||
|
|
||||||
|
+/* these functions can be implemented by the real driver */
|
||||||
|
+void (*drv_generic_graphic_real_clear) (const RGBA rgba);
|
||||||
|
+
|
||||||
|
/* helper function to get pixel color or gray value */
|
||||||
|
extern RGBA drv_generic_graphic_rgb(const int row, const int col);
|
||||||
|
extern unsigned char drv_generic_graphic_gray(const int row, const int col);
|
552
utils/lcd4linux/patches/172-add-TEW673GRU-driver.patch
Normal file
552
utils/lcd4linux/patches/172-add-TEW673GRU-driver.patch
Normal file
|
@ -0,0 +1,552 @@
|
||||||
|
--- a/drivers.m4
|
||||||
|
+++ b/drivers.m4
|
||||||
|
@@ -39,7 +39,7 @@ AC_ARG_WITH(
|
||||||
|
[ Newhaven, Noritake, NULL, Pertelian, PHAnderson,]
|
||||||
|
[ PICGraphic, picoLCD, picoLCDGraphic, PNG, PPM, RouterBoard,]
|
||||||
|
[ Sample, SamsungSPF, serdisplib, ShuttleVFD, SimpleLCD, st2205, T6963,]
|
||||||
|
- [ TeakLCM, Trefon, ULA200, USBHUB, USBLCD, VNC, WincorNixdorf, X11],
|
||||||
|
+ [ TeakLCM, TEW673GRU, Trefon, ULA200, USBHUB, USBLCD, VNC, WincorNixdorf, X11],
|
||||||
|
drivers=$withval,
|
||||||
|
drivers=all
|
||||||
|
)
|
||||||
|
@@ -107,6 +107,7 @@ for driver in $drivers; do
|
||||||
|
SHUTTLEVFD="yes"
|
||||||
|
SIMPLELCD="yes"
|
||||||
|
T6963="yes"
|
||||||
|
+ TEW673GRU="yes"
|
||||||
|
TeakLCM="yes"
|
||||||
|
Trefon="yes"
|
||||||
|
ULA200="yes"
|
||||||
|
@@ -260,6 +261,9 @@ for driver in $drivers; do
|
||||||
|
TeakLCM)
|
||||||
|
TeakLCM=$val
|
||||||
|
;;
|
||||||
|
+ TEW673GRU)
|
||||||
|
+ TEW673GRU=$val
|
||||||
|
+ ;;
|
||||||
|
Trefon)
|
||||||
|
Trefon=$val
|
||||||
|
;;
|
||||||
|
@@ -797,6 +801,18 @@ if test "$TeakLCM" = "yes"; then
|
||||||
|
AC_DEFINE(WITH_TEAK_LCM,1,[TeakLCM driver])
|
||||||
|
fi
|
||||||
|
|
||||||
|
+if test "$TEW673GRU" = "yes"; then
|
||||||
|
+ if test "$has_spidev" = "true"; then
|
||||||
|
+ GRAPHIC="yes"
|
||||||
|
+ TEXT="yes"
|
||||||
|
+ SPIDEV="yes"
|
||||||
|
+ DRIVERS="$DRIVERS drv_TEW673GRU.o"
|
||||||
|
+ AC_DEFINE(WITH_TEW673GRU,1,[TEW673GRU driver])
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_WARN(linux/spi/spidev.h not found: TEW673GRU driver disabled)
|
||||||
|
+ fi
|
||||||
|
+fi
|
||||||
|
+
|
||||||
|
if test "$Trefon" = "yes"; then
|
||||||
|
if test "$has_usb" = "true"; then
|
||||||
|
TEXT="yes"
|
||||||
|
--- a/drv.c
|
||||||
|
+++ b/drv.c
|
||||||
|
@@ -92,6 +92,7 @@ extern DRIVER drv_serdisplib;
|
||||||
|
extern DRIVER drv_ShuttleVFD;
|
||||||
|
extern DRIVER drv_SimpleLCD;
|
||||||
|
extern DRIVER drv_T6963;
|
||||||
|
+extern DRIVER drv_TEW673GRU;
|
||||||
|
extern DRIVER drv_TeakLCM;
|
||||||
|
extern DRIVER drv_Trefon;
|
||||||
|
extern DRIVER drv_ula200;
|
||||||
|
@@ -248,6 +249,9 @@ DRIVER *Driver[] = {
|
||||||
|
#ifdef WITH_TEAK_LCM
|
||||||
|
&drv_TeakLCM,
|
||||||
|
#endif
|
||||||
|
+#ifdef WITH_TEW673GRU
|
||||||
|
+ &drv_TEW673GRU,
|
||||||
|
+#endif
|
||||||
|
#ifdef WITH_TREFON
|
||||||
|
&drv_Trefon,
|
||||||
|
#endif
|
||||||
|
--- a/Makefile.am
|
||||||
|
+++ b/Makefile.am
|
||||||
|
@@ -119,6 +119,7 @@ drv_ShuttleVFD.c \
|
||||||
|
drv_SimpleLCD.c \
|
||||||
|
drv_T6963.c \
|
||||||
|
drv_TeakLCM.c \
|
||||||
|
+drv_TEW673GRU.c \
|
||||||
|
drv_Trefon.c \
|
||||||
|
drv_ula200.c \
|
||||||
|
drv_USBHUB.c \
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/drv_TEW673GRU.c
|
||||||
|
@@ -0,0 +1,457 @@
|
||||||
|
+/* $Id$
|
||||||
|
+ * $URL$
|
||||||
|
+ *
|
||||||
|
+ * TRENDnet TEW673GRU LCD4linux driver
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2012 Gabor Juhos <juhosg@openwrt.org>
|
||||||
|
+ *
|
||||||
|
+ * based on the Sample driver which is:
|
||||||
|
+ * Copyright (C) 2005 Michael Reinelt <michael@reinelt.co.at>
|
||||||
|
+ * Copyright (C) 2005, 2006, 2007 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:
|
||||||
|
+ *
|
||||||
|
+ * struct DRIVER drv_TEW673GRU
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include "config.h"
|
||||||
|
+
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#include <stdio.h>
|
||||||
|
+#include <unistd.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+
|
||||||
|
+#include "debug.h"
|
||||||
|
+#include "cfg.h"
|
||||||
|
+#include "qprintf.h"
|
||||||
|
+#include "udelay.h"
|
||||||
|
+#include "plugin.h"
|
||||||
|
+#include "widget.h"
|
||||||
|
+#include "widget_text.h"
|
||||||
|
+#include "widget_icon.h"
|
||||||
|
+#include "widget_bar.h"
|
||||||
|
+#include "drv.h"
|
||||||
|
+
|
||||||
|
+#include "drv_generic_text.h"
|
||||||
|
+#include "drv_generic_graphic.h"
|
||||||
|
+#include "drv_generic_spidev.h"
|
||||||
|
+
|
||||||
|
+#ifdef WITH_DMALLOC
|
||||||
|
+#include <dmalloc.h>
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+#define TEW673GRU_NUM_COLS 220
|
||||||
|
+#define TEW673GRU_NUM_ROWS 176
|
||||||
|
+#define TEW673GRU_BPP 2 /* bytes per pixel */
|
||||||
|
+
|
||||||
|
+#define TEW673GRU_CMD_SIZE 9
|
||||||
|
+#define TEW673GRU_NUM_ROW_BYTES (TEW673GRU_NUM_COLS * TEW673GRU_BPP)
|
||||||
|
+
|
||||||
|
+enum {
|
||||||
|
+ CMD_SHOW_STRING = 49,
|
||||||
|
+ CMD_SHOW_IMAGE_DIR = 52,
|
||||||
|
+ CMD_SCREEN_COLOR = 54,
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+static char Name[] = "TEW673GRU";
|
||||||
|
+
|
||||||
|
+static char *drv_TEW673GRU_FB;
|
||||||
|
+static long FB_SIZE;
|
||||||
|
+static int MODE;
|
||||||
|
+
|
||||||
|
+static unsigned int RGBAto16(RGBA rgb)
|
||||||
|
+{
|
||||||
|
+ return (((rgb.R >> 3) << 11) | ((rgb.G >> 2) << 5) | (rgb.B >> 3));
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static unsigned char color_msb(unsigned int color)
|
||||||
|
+{
|
||||||
|
+ return color >> 8;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static unsigned char color_lsb(unsigned int color)
|
||||||
|
+{
|
||||||
|
+ return color & 0xff;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_hw_clear(const unsigned int color)
|
||||||
|
+{
|
||||||
|
+ unsigned char cmd[TEW673GRU_CMD_SIZE];
|
||||||
|
+ struct spi_ioc_transfer tr[1];
|
||||||
|
+
|
||||||
|
+ memset(tr, '\0', sizeof(tr));
|
||||||
|
+ memset(cmd, '\0', sizeof(cmd));
|
||||||
|
+
|
||||||
|
+ cmd[0] = CMD_SCREEN_COLOR;
|
||||||
|
+ cmd[7] = color_msb(color);
|
||||||
|
+ cmd[8] = color_lsb(color);
|
||||||
|
+
|
||||||
|
+ tr[0].tx_buf = (unsigned long) cmd;
|
||||||
|
+ tr[0].len = sizeof(cmd);
|
||||||
|
+
|
||||||
|
+ drv_generic_spidev_transfer(1, tr);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_hw_send_row(const int row, const int col, const char *data, const int width)
|
||||||
|
+{
|
||||||
|
+ unsigned char cmd[TEW673GRU_CMD_SIZE];
|
||||||
|
+ struct spi_ioc_transfer tr[2];
|
||||||
|
+ int datasize;
|
||||||
|
+
|
||||||
|
+ memset(tr, '\0', sizeof(tr));
|
||||||
|
+ memset(cmd, '\0', sizeof(cmd));
|
||||||
|
+
|
||||||
|
+ datasize = width * TEW673GRU_BPP;
|
||||||
|
+
|
||||||
|
+ cmd[0] = CMD_SHOW_IMAGE_DIR;
|
||||||
|
+ cmd[1] = col;
|
||||||
|
+ cmd[2] = col + width;
|
||||||
|
+ cmd[3] = row;
|
||||||
|
+ cmd[4] = row;
|
||||||
|
+ cmd[5] = datasize >> 8;
|
||||||
|
+ cmd[6] = datasize & 0xff;
|
||||||
|
+
|
||||||
|
+ tr[0].tx_buf = (unsigned long) cmd;
|
||||||
|
+ tr[0].len = sizeof(cmd);
|
||||||
|
+ tr[1].tx_buf = (unsigned long) data;
|
||||||
|
+ tr[1].len = datasize;
|
||||||
|
+
|
||||||
|
+ drv_generic_spidev_transfer(2, tr);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_hw_write_string(const int row, const int col, const char *data, const int datasize)
|
||||||
|
+{
|
||||||
|
+ unsigned char cmd[TEW673GRU_CMD_SIZE];
|
||||||
|
+ struct spi_ioc_transfer tr[2];
|
||||||
|
+ unsigned char len;
|
||||||
|
+
|
||||||
|
+ memset(tr, '\0', sizeof(tr));
|
||||||
|
+ memset(cmd, '\0', sizeof(cmd));
|
||||||
|
+
|
||||||
|
+ len = datasize & 0xff;
|
||||||
|
+ cmd[0] = CMD_SHOW_STRING;
|
||||||
|
+ cmd[1] = col;
|
||||||
|
+ cmd[2] = col + (XRES * len);
|
||||||
|
+ cmd[3] = row;
|
||||||
|
+ cmd[4] = row + YRES;
|
||||||
|
+ cmd[7] = 0;
|
||||||
|
+ cmd[8] = len;
|
||||||
|
+
|
||||||
|
+ tr[0].tx_buf = (unsigned long) cmd;
|
||||||
|
+ tr[0].len = sizeof(cmd);
|
||||||
|
+ tr[1].tx_buf = (unsigned long) data;
|
||||||
|
+ tr[1].len = datasize;
|
||||||
|
+
|
||||||
|
+ drv_generic_spidev_transfer(2, tr);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_FB_set_pixel(const int col, const unsigned int color)
|
||||||
|
+{
|
||||||
|
+ int pos;
|
||||||
|
+
|
||||||
|
+ pos = col * TEW673GRU_BPP;
|
||||||
|
+ drv_TEW673GRU_FB[pos] = color_msb(color);
|
||||||
|
+ drv_TEW673GRU_FB[pos + 1] = color_lsb(color);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_blit(const int row, const int col, const int height, const int width)
|
||||||
|
+{
|
||||||
|
+ int r, c;
|
||||||
|
+
|
||||||
|
+ debug("%s: update area r:%d c:%d w:%d h:%d", Name, row, col, height, width);
|
||||||
|
+
|
||||||
|
+ for (r = row; r < row + height; r++) {
|
||||||
|
+ for (c = col; c < col + width; c++) {
|
||||||
|
+ unsigned int color;
|
||||||
|
+ RGBA rgb;
|
||||||
|
+
|
||||||
|
+ rgb = drv_generic_graphic_rgb(r, c);
|
||||||
|
+ color = RGBAto16(rgb);
|
||||||
|
+ drv_TEW673GRU_FB_set_pixel(c, color);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (width) {
|
||||||
|
+ char *data;
|
||||||
|
+
|
||||||
|
+ data = &drv_TEW673GRU_FB[col * TEW673GRU_BPP];
|
||||||
|
+ drv_TEW673GRU_hw_send_row(r, col, data, width);
|
||||||
|
+ udelay(100 + width * 50);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_clear(RGBA rgba)
|
||||||
|
+{
|
||||||
|
+ unsigned int color;
|
||||||
|
+
|
||||||
|
+ color = RGBAto16(rgba);
|
||||||
|
+ drv_TEW673GRU_hw_clear(color);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_write(const int row, const int col, const char *data, const int len)
|
||||||
|
+{
|
||||||
|
+ int i;
|
||||||
|
+
|
||||||
|
+ for (i = 0; i < len; i++) {
|
||||||
|
+ drv_TEW673GRU_hw_write_string(row * YRES, (col + i) * XRES, " ", 1);
|
||||||
|
+ udelay(10000);
|
||||||
|
+ drv_TEW673GRU_hw_write_string(row * YRES, 2 + (col + i) * XRES, " ", 1);
|
||||||
|
+ udelay(10000);
|
||||||
|
+ drv_TEW673GRU_hw_write_string(row * YRES, (col + i) * XRES, &data[i], 1);
|
||||||
|
+ udelay(10000);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int drv_TEW673GRU_open(const char *section)
|
||||||
|
+{
|
||||||
|
+ int err;
|
||||||
|
+
|
||||||
|
+ err = drv_generic_spidev_open(section, Name);
|
||||||
|
+ if (err < 0)
|
||||||
|
+ return err;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int drv_TEW673GRU_close(void)
|
||||||
|
+{
|
||||||
|
+ drv_generic_spidev_close();
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static void drv_TEW673GRU_clear_screen(void)
|
||||||
|
+{
|
||||||
|
+ if (MODE) {
|
||||||
|
+ drv_generic_graphic_clear();
|
||||||
|
+ } else {
|
||||||
|
+ memset(drv_TEW673GRU_FB, ' ', FB_SIZE);
|
||||||
|
+ drv_TEW673GRU_hw_clear(0x0000);
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int drv_TEW673GRU_init_font(const char *section)
|
||||||
|
+{
|
||||||
|
+ char *font;
|
||||||
|
+ int ret = -1;
|
||||||
|
+
|
||||||
|
+ font = cfg_get(section, "Font", "6x8");
|
||||||
|
+ if (font == NULL) {
|
||||||
|
+ error("%s: no '%s.Font' entry from %s", Name, section, cfg_source());
|
||||||
|
+ goto out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (*font == '\0') {
|
||||||
|
+ error("%s: invalid '%s.Font' entry in %s", Name, section, cfg_source());
|
||||||
|
+ goto out_free;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ XRES = -1;
|
||||||
|
+ YRES = -1;
|
||||||
|
+ if (sscanf(font, "%dx%d", &XRES, &YRES) != 2 ||
|
||||||
|
+ XRES < 1 ||
|
||||||
|
+ YRES < 1) {
|
||||||
|
+ error("%s: bad Font '%s' from %s", Name, font, cfg_source());
|
||||||
|
+ goto out_free;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (XRES != 6 && YRES != 8) {
|
||||||
|
+ error("%s: bad Font '%s' from %s (only 6x8 at the moment)",
|
||||||
|
+ Name, font, cfg_source());
|
||||||
|
+ goto out_free;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ error("%s: font '%s' selected", Name, font);
|
||||||
|
+
|
||||||
|
+ ret = 0;
|
||||||
|
+
|
||||||
|
+out_free:
|
||||||
|
+ free(font);
|
||||||
|
+out:
|
||||||
|
+ return ret;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int drv_TEW673GRU_start(const char *section)
|
||||||
|
+{
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ DCOLS = TEW673GRU_NUM_COLS;
|
||||||
|
+ DROWS = TEW673GRU_NUM_ROWS;
|
||||||
|
+
|
||||||
|
+ if (MODE) {
|
||||||
|
+ ret = drv_TEW673GRU_init_font(section);
|
||||||
|
+ if (ret)
|
||||||
|
+ goto err;
|
||||||
|
+
|
||||||
|
+ FB_SIZE = DCOLS * TEW673GRU_BPP;
|
||||||
|
+ } else {
|
||||||
|
+ XRES = 10;
|
||||||
|
+ YRES = 16;
|
||||||
|
+ DCOLS = DCOLS / XRES;
|
||||||
|
+ DROWS = DROWS / YRES;
|
||||||
|
+
|
||||||
|
+ FB_SIZE = DCOLS * DROWS;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (FB_SIZE) {
|
||||||
|
+ drv_TEW673GRU_FB = malloc(FB_SIZE);
|
||||||
|
+ if (drv_TEW673GRU_FB == NULL) {
|
||||||
|
+ error("%s: framebuffer could not be allocated", Name);
|
||||||
|
+ goto err;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = drv_TEW673GRU_open(section);
|
||||||
|
+ if (ret < 0)
|
||||||
|
+ goto err_free;
|
||||||
|
+
|
||||||
|
+ if (MODE == 0)
|
||||||
|
+ drv_TEW673GRU_clear_screen();
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ err_free:
|
||||||
|
+ if (drv_TEW673GRU_FB)
|
||||||
|
+ free(drv_TEW673GRU_FB);
|
||||||
|
+ err:
|
||||||
|
+ return -1;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+static int drv_TEW673GRU_greet(const char *msg1, const char *msg2)
|
||||||
|
+{
|
||||||
|
+ if (MODE)
|
||||||
|
+ return drv_generic_graphic_greet(msg1, msg2);
|
||||||
|
+
|
||||||
|
+ return drv_generic_text_greet(msg1, msg2);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/****************************************/
|
||||||
|
+/*** widget callbacks ***/
|
||||||
|
+/****************************************/
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/* using drv_generic_text_draw(W) */
|
||||||
|
+/* using drv_generic_text_icon_draw(W) */
|
||||||
|
+/* using drv_generic_text_bar_draw(W) */
|
||||||
|
+/* using drv_generic_gpio_draw(W) */
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+/****************************************/
|
||||||
|
+/*** exported functions ***/
|
||||||
|
+/****************************************/
|
||||||
|
+
|
||||||
|
+int drv_TEW673GRU_list(void)
|
||||||
|
+{
|
||||||
|
+ printf("TEW673GRU driver");
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int drv_TEW673GRU_init(const char *section, const int quiet)
|
||||||
|
+{
|
||||||
|
+ WIDGET_CLASS wc;
|
||||||
|
+ int ret;
|
||||||
|
+
|
||||||
|
+ cfg_number(section, "Mode", 0, 0, 1, &MODE);
|
||||||
|
+
|
||||||
|
+ if (MODE) {
|
||||||
|
+ drv_generic_graphic_real_blit = drv_TEW673GRU_blit;
|
||||||
|
+ drv_generic_graphic_real_clear = drv_TEW673GRU_clear;
|
||||||
|
+ } else {
|
||||||
|
+ drv_generic_text_real_write = drv_TEW673GRU_write;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ ret = drv_TEW673GRU_start(section);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ if (MODE) {
|
||||||
|
+ ret = drv_generic_graphic_init(section, Name);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+ } else {
|
||||||
|
+ ret = drv_generic_text_init(section, Name);
|
||||||
|
+ if (ret)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = drv_generic_text_icon_init();
|
||||||
|
+ if (ret != 0)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ ret = drv_generic_text_bar_init(1);
|
||||||
|
+ if (ret != 0)
|
||||||
|
+ return ret;
|
||||||
|
+
|
||||||
|
+ drv_generic_text_bar_add_segment(0, 0, 255, ' ');
|
||||||
|
+ drv_generic_text_bar_add_segment(255, 255, 255, '#');
|
||||||
|
+
|
||||||
|
+ wc = Widget_Text;
|
||||||
|
+ wc.draw = drv_generic_text_draw;
|
||||||
|
+ widget_register(&wc);
|
||||||
|
+
|
||||||
|
+ wc = Widget_Icon;
|
||||||
|
+ wc.draw = drv_generic_text_icon_draw;
|
||||||
|
+ widget_register(&wc);
|
||||||
|
+
|
||||||
|
+ wc = Widget_Bar;
|
||||||
|
+ wc.draw = drv_generic_text_bar_draw;
|
||||||
|
+ widget_register(&wc);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!quiet) {
|
||||||
|
+ char buffer[40];
|
||||||
|
+ qprintf(buffer, sizeof(buffer), "%s %dx%d", Name, DCOLS, DROWS);
|
||||||
|
+ drv_TEW673GRU_greet(buffer, "www.openwrt.org");
|
||||||
|
+ sleep(3);
|
||||||
|
+ drv_TEW673GRU_clear_screen();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+int drv_TEW673GRU_quit(const int quiet)
|
||||||
|
+{
|
||||||
|
+
|
||||||
|
+ info("%s: shutting down.", Name);
|
||||||
|
+
|
||||||
|
+ drv_TEW673GRU_clear_screen();
|
||||||
|
+
|
||||||
|
+ if (!quiet)
|
||||||
|
+ drv_TEW673GRU_greet("goodbye!", NULL);
|
||||||
|
+
|
||||||
|
+ if (MODE)
|
||||||
|
+ drv_generic_graphic_quit();
|
||||||
|
+ else
|
||||||
|
+ drv_generic_text_quit();
|
||||||
|
+
|
||||||
|
+ debug("closing connection");
|
||||||
|
+ drv_TEW673GRU_close();
|
||||||
|
+
|
||||||
|
+ return (0);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+DRIVER drv_TEW673GRU = {
|
||||||
|
+ .name = Name,
|
||||||
|
+ .list = drv_TEW673GRU_list,
|
||||||
|
+ .init = drv_TEW673GRU_init,
|
||||||
|
+ .quit = drv_TEW673GRU_quit,
|
||||||
|
+};
|
||||||
|
--- a/lcd4linux.conf.sample
|
||||||
|
+++ b/lcd4linux.conf.sample
|
||||||
|
@@ -581,6 +581,11 @@ Display FutabaVFD {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+Display TEW673GRU {
|
||||||
|
+ Driver 'TEW673GRU'
|
||||||
|
+ Font '6x8'
|
||||||
|
+ Port '/dev/spidev1.0'
|
||||||
|
+}
|
||||||
|
|
||||||
|
#Plugin KVV {
|
||||||
|
# StationID '12_701'
|
Loading…
Reference in a new issue