diff options
-rw-r--r-- | Makefile.am | 2 | ||||
-rw-r--r-- | Makefile.in | 32 | ||||
-rw-r--r-- | config.h.in | 15 | ||||
-rwxr-xr-x | configure | 972 | ||||
-rw-r--r-- | configure.in | 13 | ||||
-rw-r--r-- | drivers.m4 | 30 | ||||
-rw-r--r-- | drv_HD44780.c | 123 | ||||
-rw-r--r-- | drv_generic_i2c.c | 155 | ||||
-rw-r--r-- | drv_generic_i2c.h | 61 |
9 files changed, 1147 insertions, 256 deletions
diff --git a/Makefile.am b/Makefile.am index 7451fd0..f4c1497 100644 --- a/Makefile.am +++ b/Makefile.am @@ -57,6 +57,8 @@ drv_generic_serial.c \ drv_generic_serial.h \ drv_generic_parport.c \ drv_generic_parport.h \ +drv_generic_i2c.c \ +drv_generic_i2c.h \ drv_BeckmannEgle.c \ drv_BWCT.c \ drv_Crystalfontz.c \ diff --git a/Makefile.in b/Makefile.in index afa50c1..ad3e2ad 100644 --- a/Makefile.in +++ b/Makefile.in @@ -62,6 +62,7 @@ POST_UNINSTALL = : host_alias = @host_alias@ host_triplet = @host@ CC = @CC@ +CPP = @CPP@ CURSES_INCLUDEDIR = @CURSES_INCLUDEDIR@ CURSES_LIBS = @CURSES_LIBS@ DRVLIBS = @DRVLIBS@ @@ -99,7 +100,7 @@ lcd4linux_SOURCES = lcd4linux.c cfg.c cfg.h deb #liblcd4linux_la_SOURCES = -EXTRA_lcd4linux_SOURCES = drv_generic_text.c drv_generic_text.h drv_generic_graphic.c drv_generic_graphic.h drv_generic_serial.c drv_generic_serial.h drv_generic_parport.c drv_generic_parport.h drv_BeckmannEgle.c drv_BWCT.c drv_Crystalfontz.c drv_Curses.c drv_Cwlinux.c drv_HD44780.c drv_Image.c drv_LCDLinux.c drv_LCDTerm.c drv_M50530.c drv_MatrixOrbital.c drv_MilfordInstruments.c drv_NULL.c drv_RouterBoard.c drv_SimpleLCD.c drv_T6963.c drv_USBLCD.c drv_X11.c font_6x8.h plugin_apm.c plugin_cpuinfo.c plugin_diskstats.c plugin_dvb.c plugin_exec.c plugin_i2c_sensors.c plugin_imon.c plugin_isdn.c plugin_loadavg.c plugin_meminfo.c plugin_mysql.c plugin_netdev.c plugin_pop3.c plugin_ppp.c plugin_proc_stat.c plugin_seti.c plugin_uname.c plugin_uptime.c plugin_wireless.c plugin_xmms.c +EXTRA_lcd4linux_SOURCES = drv_generic_text.c drv_generic_text.h drv_generic_graphic.c drv_generic_graphic.h drv_generic_serial.c drv_generic_serial.h drv_generic_parport.c drv_generic_parport.h drv_generic_i2c.c drv_generic_i2c.h drv_BeckmannEgle.c drv_BWCT.c drv_Crystalfontz.c drv_Curses.c drv_Cwlinux.c drv_HD44780.c drv_Image.c drv_LCDLinux.c drv_LCDTerm.c drv_M50530.c drv_MatrixOrbital.c drv_MilfordInstruments.c drv_NULL.c drv_RouterBoard.c drv_SimpleLCD.c drv_T6963.c drv_USBLCD.c drv_X11.c font_6x8.h plugin_apm.c plugin_cpuinfo.c plugin_diskstats.c plugin_dvb.c plugin_exec.c plugin_i2c_sensors.c plugin_imon.c plugin_isdn.c plugin_loadavg.c plugin_meminfo.c plugin_mysql.c plugin_netdev.c plugin_pop3.c plugin_ppp.c plugin_proc_stat.c plugin_seti.c plugin_uname.c plugin_uptime.c plugin_wireless.c plugin_xmms.c EXTRA_DIST = lcd4linux.conf.sample lcd4kde.conf lcd4linux.kdelnk lcd4linux.xpm lcd4linux.lsm curses.m4 AUTHORS CREDITS FAQ NEWS TODO README README.Drivers README.Plugins README.KDE plugin_sample.c @@ -144,20 +145,21 @@ DEP_FILES = .deps/cfg.P .deps/debug.P .deps/drv.P .deps/drv_BWCT.P \ .deps/drv_MatrixOrbital.P .deps/drv_MilfordInstruments.P \ .deps/drv_NULL.P .deps/drv_RouterBoard.P .deps/drv_SimpleLCD.P \ .deps/drv_T6963.P .deps/drv_USBLCD.P .deps/drv_X11.P \ -.deps/drv_generic_graphic.P .deps/drv_generic_parport.P \ -.deps/drv_generic_serial.P .deps/drv_generic_text.P .deps/evaluator.P \ -.deps/hash.P .deps/layout.P .deps/lcd4linux.P .deps/pid.P \ -.deps/plugin.P .deps/plugin_apm.P .deps/plugin_cfg.P \ -.deps/plugin_cpuinfo.P .deps/plugin_diskstats.P .deps/plugin_dvb.P \ -.deps/plugin_exec.P .deps/plugin_i2c_sensors.P .deps/plugin_imon.P \ -.deps/plugin_isdn.P .deps/plugin_loadavg.P .deps/plugin_math.P \ -.deps/plugin_meminfo.P .deps/plugin_mysql.P .deps/plugin_netdev.P \ -.deps/plugin_pop3.P .deps/plugin_ppp.P .deps/plugin_proc_stat.P \ -.deps/plugin_seti.P .deps/plugin_string.P .deps/plugin_test.P \ -.deps/plugin_time.P .deps/plugin_uname.P .deps/plugin_uptime.P \ -.deps/plugin_wireless.P .deps/plugin_xmms.P .deps/qprintf.P \ -.deps/thread.P .deps/timer.P .deps/udelay.P .deps/widget.P \ -.deps/widget_bar.P .deps/widget_icon.P .deps/widget_text.P +.deps/drv_generic_graphic.P .deps/drv_generic_i2c.P \ +.deps/drv_generic_parport.P .deps/drv_generic_serial.P \ +.deps/drv_generic_text.P .deps/evaluator.P .deps/hash.P .deps/layout.P \ +.deps/lcd4linux.P .deps/pid.P .deps/plugin.P .deps/plugin_apm.P \ +.deps/plugin_cfg.P .deps/plugin_cpuinfo.P .deps/plugin_diskstats.P \ +.deps/plugin_dvb.P .deps/plugin_exec.P .deps/plugin_i2c_sensors.P \ +.deps/plugin_imon.P .deps/plugin_isdn.P .deps/plugin_loadavg.P \ +.deps/plugin_math.P .deps/plugin_meminfo.P .deps/plugin_mysql.P \ +.deps/plugin_netdev.P .deps/plugin_pop3.P .deps/plugin_ppp.P \ +.deps/plugin_proc_stat.P .deps/plugin_seti.P .deps/plugin_string.P \ +.deps/plugin_test.P .deps/plugin_time.P .deps/plugin_uname.P \ +.deps/plugin_uptime.P .deps/plugin_wireless.P .deps/plugin_xmms.P \ +.deps/qprintf.P .deps/thread.P .deps/timer.P .deps/udelay.P \ +.deps/widget.P .deps/widget_bar.P .deps/widget_icon.P \ +.deps/widget_text.P SOURCES = $(lcd4linux_SOURCES) $(EXTRA_lcd4linux_SOURCES) OBJECTS = $(lcd4linux_OBJECTS) diff --git a/config.h.in b/config.h.in index b122ecb..7a01663 100644 --- a/config.h.in +++ b/config.h.in @@ -49,9 +49,18 @@ /* Define to 1 if you have the `m' library (-lm). */ #undef HAVE_LIBM +/* Define to 1 if you have the <linux/compiler.h> header file. */ +#undef HAVE_LINUX_COMPILER_H + /* Define to 1 if you have the <linux/dvb/frontend.h> header file. */ #undef HAVE_LINUX_DVB_FRONTEND_H +/* Define to 1 if you have the <linux/i2c-dev.h> header file. */ +#undef HAVE_LINUX_I2C_DEV_H + +/* Define to 1 if you have the <linux/i2c.h> header file. */ +#undef HAVE_LINUX_I2C_H + /* Define to 1 if you have the <linux/isdn.h> header file. */ #undef HAVE_LINUX_ISDN_H @@ -332,6 +341,9 @@ /* HD44780 driver */ #undef WITH_HD44780 +/* I2C bus driver */ +#undef WITH_I2C + /* LCD-Linux driver */ #undef WITH_LCDLINUX @@ -386,6 +398,9 @@ #undef inline #endif +/* Define to `long' if <sys/types.h> does not define. */ +#undef off_t + /* Define to `int' if <sys/types.h> does not define. */ #undef pid_t @@ -311,7 +311,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT LN_S CURSES_LIBS CURSES_INCLUDEDIR CPP EGREP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS DRIVERS DRVLIBS PLUGINS PLUGINLIBS LIBOBJS POW_LIB LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO SET_MAKE CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT CPP LN_S CURSES_LIBS CURSES_INCLUDEDIR EGREP X_CFLAGS X_PRE_LIBS X_LIBS X_EXTRA_LIBS DRIVERS DRVLIBS PLUGINS PLUGINLIBS LIBOBJS POW_LIB LTLIBOBJS' ac_subst_files='' # Initialize some variables set by options. @@ -2556,173 +2556,6 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu -echo "$as_me:$LINENO: checking whether ln -s works" >&5 -echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:$LINENO: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - -echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 -set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` -if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\_ACEOF -all: - @echo 'ac_maketemp="$(MAKE)"' -_ACEOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - - -# dmalloc -echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5 -echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6 - -# Check whether --with-dmalloc or --without-dmalloc was given. -if test "${with_dmalloc+set}" = set; then - withval="$with_dmalloc" - if test "$withval" = yes; then - echo "$as_me:$LINENO: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - -cat >>confdefs.h <<\_ACEOF -#define WITH_DMALLOC 1 -_ACEOF - - LIBS="$LIBS -ldmalloc" - LDFLAGS="$LDFLAGS -g" -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi -else - echo "$as_me:$LINENO: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi; - - -# Checks for libraries. - - -echo "$as_me:$LINENO: checking for log in -lm" >&5 -echo $ECHO_N "checking for log in -lm... $ECHO_C" >&6 -if test "${ac_cv_lib_m_log+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -/* confdefs.h. */ -_ACEOF -cat confdefs.h >>conftest.$ac_ext -cat >>conftest.$ac_ext <<_ACEOF -/* end confdefs.h. */ - -/* Override any gcc2 internal prototype to avoid an error. */ -#ifdef __cplusplus -extern "C" -#endif -/* We use char because int might match the return type of a gcc2 - builtin and then its argument prototype would still apply. */ -char log (); -int -main () -{ -log (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 - ac_status=$? - grep -v '^ *+' conftest.er1 >conftest.err - rm -f conftest.er1 - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_m_log=yes -else - echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -ac_cv_lib_m_log=no -fi -rm -f conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:$LINENO: result: $ac_cv_lib_m_log" >&5 -echo "${ECHO_T}$ac_cv_lib_m_log" >&6 -if test $ac_cv_lib_m_log = yes; then - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBM 1 -_ACEOF - - LIBS="-lm $LIBS" - -fi - - -# curses - - - - - - - - - - - - - - - - - - - - - - ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' @@ -2957,6 +2790,252 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5 +echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6 +if test -z "$INSTALL"; then +if test "${ac_cv_path_install+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in + ./ | .// | /cC/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + done + done + ;; +esac +done + + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:$LINENO: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:$LINENO: checking whether ln -s works" >&5 +echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6 +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:$LINENO: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6 +set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y,:./+-,___p_,'` +if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\_ACEOF +all: + @echo 'ac_maketemp="$(MAKE)"' +_ACEOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + + +# dmalloc +echo "$as_me:$LINENO: checking if malloc debugging is wanted" >&5 +echo $ECHO_N "checking if malloc debugging is wanted... $ECHO_C" >&6 + +# Check whether --with-dmalloc or --without-dmalloc was given. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + if test "$withval" = yes; then + echo "$as_me:$LINENO: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + +cat >>confdefs.h <<\_ACEOF +#define WITH_DMALLOC 1 +_ACEOF + + LIBS="$LIBS -ldmalloc" + LDFLAGS="$LDFLAGS -g" +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi; + + +# Checks for libraries. + + +echo "$as_me:$LINENO: checking for log in -lm" >&5 +echo $ECHO_N "checking for log in -lm... $ECHO_C" >&6 +if test "${ac_cv_lib_m_log+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char log (); +int +main () +{ +log (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_m_log=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_m_log=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_m_log" >&5 +echo "${ECHO_T}$ac_cv_lib_m_log" >&6 +if test $ac_cv_lib_m_log = yes; then + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + + +# curses + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking for egrep" >&5 echo $ECHO_N "checking for egrep... $ECHO_C" >&6 @@ -3399,7 +3478,7 @@ echo "${ECHO_T}Please note that some screen refreshs may fail" >&6 echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 ncurses_version=unknown cat > conftest.$ac_ext <<EOF -#line 3402 "configure" +#line 3481 "configure" #include "confdefs.h" #ifdef RENAMED_NCURSES #include <curses.h> @@ -5371,6 +5450,459 @@ fi done +# check for i2c + +for ac_header in linux/compiler.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ---------------------------------------------------- ## +## Report this to lcd4linux-users@lists.sourceforge.net ## +## ---------------------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +for ac_header in linux/i2c.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ---------------------------------------------------- ## +## Report this to lcd4linux-users@lists.sourceforge.net ## +## ---------------------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +for ac_header in linux/i2c-dev.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + ( + cat <<\_ASBOX +## ---------------------------------------------------- ## +## Report this to lcd4linux-users@lists.sourceforge.net ## +## ---------------------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + has_i2c=true +else + has_i2c=false +fi + +done + +else + has_i2c=false +fi + +done + + has_i2c=false + +fi + +done + + # drivers echo "$as_me:$LINENO: checking which drivers to compile" >&5 @@ -5489,12 +6021,18 @@ done echo "$as_me:$LINENO: result: done" >&5 echo "${ECHO_T}done" >&6 -PARPORT="no" -SERIAL="no" + +# generic display drivers TEXT="no" GRAPHIC="no" IMAGE="no" +# generiv I/O drivers +PARPORT="no" +SERIAL="no" +I2C="no" + + if test "$BECKMANNEGLE" = "yes"; then TEXT="yes" SERIAL="yes" @@ -5563,6 +6101,7 @@ fi if test "$HD44780" = "yes"; then TEXT="yes" PARPORT="yes" + I2C="yes" DRIVERS="$DRIVERS drv_HD44780.o" cat >>confdefs.h <<\_ACEOF @@ -5723,12 +6262,14 @@ _ACEOF fi fi + if test "$DRIVERS" = ""; then - { { echo "$as_me:$LINENO: error: You should include at least one driver..." >&5 -echo "$as_me: error: You should include at least one driver..." >&2;} + { { echo "$as_me:$LINENO: error: You should activate at least one driver..." >&5 +echo "$as_me: error: You should activate at least one driver..." >&2;} { (exit 1); exit 1; }; } fi + # generic text driver if test "$TEXT" = "yes"; then DRIVERS="$DRIVERS drv_generic_text.o" @@ -5740,6 +6281,7 @@ if test "$GRAPHIC" = "yes"; then DRIVERS="$DRIVERS drv_generic_graphic.o" fi + # generic parport driver if test "$PARPORT" = "yes"; then DRIVERS="$DRIVERS drv_generic_parport.o" @@ -5750,6 +6292,23 @@ if test "$SERIAL" = "yes"; then DRIVERS="$DRIVERS drv_generic_serial.o" fi +# generic i2c driver +if test "$I2C" = "yes"; then + if test "$has_i2c" = true; then + +cat >>confdefs.h <<\_ACEOF +#define WITH_I2C 1 +_ACEOF + + DRIVERS="$DRIVERS drv_generic_i2c.o" + else + I2C="no" + { echo "$as_me:$LINENO: WARNING: I2C include files not found: I2C bus driver disabled" >&5 +echo "$as_me: WARNING: I2C include files not found: I2C bus driver disabled" >&2;} + fi +fi + + @@ -8036,6 +8595,71 @@ _ACEOF ;; esac +echo "$as_me:$LINENO: checking for off_t" >&5 +echo $ECHO_N "checking for off_t... $ECHO_C" >&6 +if test "${ac_cv_type_off_t+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +if ((off_t *) 0) + return 0; +if (sizeof (off_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_type_off_t=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_type_off_t=no +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5 +echo "${ECHO_T}$ac_cv_type_off_t" >&6 +if test $ac_cv_type_off_t = yes; then + : +else + +cat >>confdefs.h <<_ACEOF +#define off_t long +_ACEOF + +fi + echo "$as_me:$LINENO: checking for pid_t" >&5 echo $ECHO_N "checking for pid_t... $ECHO_C" >&6 if test "${ac_cv_type_pid_t+set}" = set; then @@ -10331,10 +10955,10 @@ s,@CPPFLAGS@,$CPPFLAGS,;t t s,@ac_ct_CC@,$ac_ct_CC,;t t s,@EXEEXT@,$EXEEXT,;t t s,@OBJEXT@,$OBJEXT,;t t +s,@CPP@,$CPP,;t t s,@LN_S@,$LN_S,;t t s,@CURSES_LIBS@,$CURSES_LIBS,;t t s,@CURSES_INCLUDEDIR@,$CURSES_INCLUDEDIR,;t t -s,@CPP@,$CPP,;t t s,@EGREP@,$EGREP,;t t s,@X_CFLAGS@,$X_CFLAGS,;t t s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t diff --git a/configure.in b/configure.in index 620a4a6..3240e65 100644 --- a/configure.in +++ b/configure.in @@ -30,6 +30,8 @@ AM_CONFIG_HEADER(config.h) # Checks for programs. AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL AC_PROG_LN_S AC_PROG_MAKE_SET @@ -52,6 +54,16 @@ AC_CHECK_HEADERS(gd/gd.h gd.h, [has_gd=true], [has_gd=false]) # check for usb.h AC_CHECK_HEADERS(usb.h, [has_usb=true], [has_usb=false]) +# check for i2c +AC_CHECK_HEADERS(linux/compiler.h, + [AC_CHECK_HEADERS(linux/i2c.h, + [AC_CHECK_HEADERS(linux/i2c-dev.h, + [has_i2c=true], + [has_i2c=false])], + [has_i2c=false])] + [has_i2c=false] +) + # drivers sinclude(drivers.m4) @@ -69,6 +81,7 @@ AC_CHECK_HEADERS(asm/msr.h) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_C_INLINE +AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T AC_HEADER_TIME @@ -137,12 +137,18 @@ done AC_MSG_RESULT([done]) -PARPORT="no" -SERIAL="no" + +# generic display drivers TEXT="no" GRAPHIC="no" IMAGE="no" +# generiv I/O drivers +PARPORT="no" +SERIAL="no" +I2C="no" + + if test "$BECKMANNEGLE" = "yes"; then TEXT="yes" SERIAL="yes" @@ -189,6 +195,7 @@ fi if test "$HD44780" = "yes"; then TEXT="yes" PARPORT="yes" + I2C="yes" DRIVERS="$DRIVERS drv_HD44780.o" AC_DEFINE(WITH_HD44780,1,[HD44780 driver]) fi @@ -287,14 +294,16 @@ if test "$X11" = "yes"; then GRAPHIC="yes" DRIVERS="$DRIVERS drv_X11.o" DRVLIBS="$DRVLIBS -L$ac_x_libraries -lX11" - AC_DEFINE(WITH_X11,1,[X11 driver]) + AC_DEFINE(WITH_X11, 1, [X11 driver]) fi fi + if test "$DRIVERS" = ""; then - AC_MSG_ERROR([You should include at least one driver...]) + AC_MSG_ERROR([You should activate at least one driver...]) fi + # generic text driver if test "$TEXT" = "yes"; then DRIVERS="$DRIVERS drv_generic_text.o" @@ -306,6 +315,7 @@ if test "$GRAPHIC" = "yes"; then DRIVERS="$DRIVERS drv_generic_graphic.o" fi + # generic parport driver if test "$PARPORT" = "yes"; then DRIVERS="$DRIVERS drv_generic_parport.o" @@ -316,5 +326,17 @@ if test "$SERIAL" = "yes"; then DRIVERS="$DRIVERS drv_generic_serial.o" fi +# generic i2c driver +if test "$I2C" = "yes"; then + if test "$has_i2c" = true; then + AC_DEFINE(WITH_I2C, 1, [I2C bus driver]) + DRIVERS="$DRIVERS drv_generic_i2c.o" + else + I2C="no" + AC_MSG_WARN(I2C include files not found: I2C bus driver disabled) + fi +fi + + AC_SUBST(DRIVERS) AC_SUBST(DRVLIBS) diff --git a/drv_HD44780.c b/drv_HD44780.c index a778731..0771aa2 100644 --- a/drv_HD44780.c +++ b/drv_HD44780.c @@ -1,10 +1,13 @@ -/* $Id: drv_HD44780.c,v 1.45 2005/03/25 15:44:43 reinelt Exp $ +/* $Id: drv_HD44780.c,v 1.46 2005/03/28 19:39:23 reinelt Exp $ * * new style driver for HD44780-based displays * * Copyright (C) 2003 Michael Reinelt <reinelt@eunet.at> * Copyright (C) 2004 The LCD4Linux Team <lcd4linux-devel@users.sourceforge.net> * + * Support for I2C bus + * Copyright (C) 2005 Luis F. Correia <luis.f.correia@seg-social.pt> + * * Modification for 4-Bit mode * Copyright (C) 2003 Martin Hejl (martin@hejl.de) * @@ -29,6 +32,9 @@ * * * $Log: drv_HD44780.c,v $ + * Revision 1.46 2005/03/28 19:39:23 reinelt + * HD44780/I2C patch from Luis merged (still does not work for me) + * * Revision 1.45 2005/03/25 15:44:43 reinelt * HD44780 Backlight fixed (thanks to geronet) * @@ -235,12 +241,6 @@ #include <sys/time.h> #include <sys/ioctl.h> -/* Fixme: I2C support does not compile */ -#if 0 -#include <linux/i2c.h> -#include <linux/i2c-dev.h> -#endif - #include "debug.h" #include "cfg.h" #include "udelay.h" @@ -255,6 +255,10 @@ #include "drv_generic_text.h" #include "drv_generic_parport.h" +#ifdef WITH_I2C +#include "drv_generic_i2c.h" +#endif + static char Name[]="HD44780"; static int Bus; @@ -342,11 +346,6 @@ static MODEL Models[] = { }; -/* handle for I2C device */ -static int i2c_device; - - - /****************************************/ /*** generic functions ***/ /****************************************/ @@ -746,32 +745,40 @@ static void drv_HD_PP_stop (void) /*** i2c dependant functions ***/ /****************************************/ -/* Fixme: remove the __attribute__((unused)) as soon as the i2c driver works */ -static void drv_HD_I2C_nibble (const __attribute__((unused)) unsigned char controller, - const __attribute__((unused)) unsigned char nibble) +#ifdef WITH_I2C + +static void drv_HD_I2C_nibble (unsigned char controller, unsigned char nibble) { -/* Fixme: I2C support does not compile */ -#if 0 + unsigned char enable; + + /* enable signal: 'controller' is a bitmask */ + /* bit 0 .. send to controller #0 */ + /* bit 1 .. send to controller #1 */ + /* so we can send a byte to both controllers at the same time! */ + enable = 0; + if (controller & 0x01) enable |= SIGNAL_ENABLE; + if (controller & 0x02) enable |= SIGNAL_ENABLE2; + + /* clear ENABLE */ /* put data on DB1..DB4 */ /* nibble already contains RS bit! */ - i2c_smbus_write_byte_data(i2c_device, 0, nibble); + drv_generic_i2c_data(nibble); /* Address set-up time */ ndelay(T_AS); /* rise ENABLE */ - i2c_smbus_write_byte_data(i2c_device, 0, nibble | SIGNAL_ENABLE); + drv_generic_i2c_data(nibble | enable); /* Enable pulse width */ ndelay(T_PW); /* lower ENABLE */ - i2c_smbus_write_byte_data(i2c_device, 0, nibble); + drv_generic_i2c_data(nibble); /* Address hold time */ ndelay(T_H); -#endif } @@ -792,7 +799,11 @@ static void drv_HD_I2C_byte (const unsigned char controller, const unsigned char static void drv_HD_I2C_command (const unsigned char controller, const unsigned char cmd, const int delay) { /* send data with RS disabled */ - drv_HD_I2C_byte (controller, cmd); + drv_HD_I2C_nibble (controller, ((cmd>>4)&0x0f)); + + ndelay(T_CYCLE-T_AS-T_PW); + + drv_HD_I2C_nibble (controller, ((cmd)&0x0f)); /* wait for command completion */ udelay(delay); @@ -817,51 +828,29 @@ static void drv_HD_I2C_data (const unsigned char controller, const char *string, static int drv_HD_I2C_load (const char *section) { - int dev; - char *bus,*device; - - bus = cfg_get(section, "Port", NULL); - device = cfg_get(section, "Device", NULL); - dev = 0x70; - - info("%s: initializing I2C bus %s",Name,bus); - if ((i2c_device = open(bus,O_RDWR)) < 0) { - error("%s: I2C bus %s open failed !\n",Name,bus); - return -1; - } - - info("%s: initializing I2C slave device 0x%x",Name,dev); -/* Fixme: I2C support does not compile */ -#if 0 - if (ioctl(i2c_device,I2C_SLAVE, (dev>>1) ) < 0) { - error("%s: error initializing device 0x%x\n",Name,dev); - close(i2c_device); - return -1; - } -#endif - - info("%s: detecting I2C device 0x%x on bus %s ",Name,dev,bus); -/* Fixme: I2C support does not compile */ -#if 0 - if (i2c_smbus_write_quick(i2c_device,I2C_SMBUS_WRITE) < 0) { - error("%s: i2c slave-device 0x%x not found!\n",Name,dev); - close(i2c_device); - return -1; - } -#endif - if (cfg_number(section, "Bits", 8, 4, 8, &Bits)<0) return -1; if (Bits!=4) { - error ("%s: bad %s.Bits '%d' from %s, should be '4' ", Name, section, Bits, cfg_source()); + error ("%s: bad %s.Bits '%d' from %s, should be '4'", Name, section, Bits, cfg_source()); return -1; - } + } info ("%s: using %d bit mode", Name, Bits); - /* initialize *both* displays */ + if (drv_generic_i2c_open(section, Name) != 0) { + error ("%s: could not initialize i2c attached device!", Name); + return -1; + } + + if ((SIGNAL_RS = drv_generic_i2c_wire ("RS", "DB4"))==0xff) return -1; + if ((SIGNAL_RW = drv_generic_i2c_wire ("RW", "DB5"))==0xff) return -1; + if ((SIGNAL_ENABLE = drv_generic_i2c_wire ("ENABLE", "DB6"))==0xff) return -1; + if ((SIGNAL_ENABLE2 = drv_generic_i2c_wire ("ENABLE2", "GND"))==0xff) return -1; + if ((SIGNAL_GPO = drv_generic_i2c_wire ("GPO", "GND"))==0xff) return -1; + + /* initialize display */ drv_HD_I2C_nibble (allControllers, 0x03); udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ drv_HD_I2C_nibble (allControllers, 0x03); udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ - drv_HD_I2C_nibble (allControllers, 0x03); udelay(T_INIT1); /* 4 Bit mode, wait 4.1 ms */ + drv_HD_I2C_nibble (allControllers, 0x03); udelay(T_INIT2); /* 4 Bit mode, wait 4.1 ms */ drv_HD_I2C_nibble (allControllers, 0x02); udelay(T_INIT2); /* 4 Bit mode, wait 100 us */ drv_HD_I2C_command (allControllers, 0x28, T_EXEC); /* 4 Bit mode, 1/16 duty cycle, 5x8 font */ @@ -874,13 +863,14 @@ static int drv_HD_I2C_load (const char *section) static void drv_HD_I2C_stop (void) { /* clear all signals */ - // drv_generic_i2c_data (0); - /* close port */ - // drv_generic_i2c_close(); + drv_generic_i2c_data (0); - close(i2c_device); + /* close port */ + drv_generic_i2c_close(); } +#endif /* WITH_I2C */ + /****************************************/ /*** display dependant functions ***/ @@ -1068,12 +1058,19 @@ static int drv_HD_start (const char *section, const int quiet) drv_HD_stop = drv_HD_PP_stop; } else if (strcasecmp(bus, "i2c") == 0) { +#ifdef WITH_I2C info ("%s: using I2C bus", Name); Bus = BUS_I2C; drv_HD_load = drv_HD_I2C_load; drv_HD_command = drv_HD_I2C_command; drv_HD_data = drv_HD_I2C_data; drv_HD_stop = drv_HD_I2C_stop; +#else + error ("%s: %s.Bus '%s' from %s not available:", Name, section, bus, cfg_source()); + error ("%s: lcd4linux was compiled without i2c support!", Name); + free (bus); + return -1; +#endif } else { error ("%s: bad %s.Bus '%s' from %s, should be 'parport' or 'i2c'", Name, section, bus, cfg_source()); diff --git a/drv_generic_i2c.c b/drv_generic_i2c.c new file mode 100644 index 0000000..5a01cdd --- /dev/null +++ b/drv_generic_i2c.c @@ -0,0 +1,155 @@ +/* $Id: drv_generic_i2c.c,v 1.1 2005/03/28 19:39:23 reinelt Exp $ + * + * generic driver helper for i2c displays + * + * Copyright (C) 2005 Luis F. Correia <luis.f.correia@seg-social.pt> + * Copyright (C) 2005 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. + * + * + * $Log: drv_generic_i2c.c,v $ + * Revision 1.1 2005/03/28 19:39:23 reinelt + * HD44780/I2C patch from Luis merged (still does not work for me) + * + * + */ + +#include "config.h" + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <unistd.h> +#include <termios.h> +#include <fcntl.h> +#include <time.h> +#include <signal.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/ioctl.h> + +#include <linux/compiler.h> +#include <linux/i2c.h> +#include <linux/i2c-dev.h> + +#include "debug.h" +#include "qprintf.h" +#include "cfg.h" +#include "udelay.h" +#include "drv_generic_i2c.h" + +static char *Driver=""; +static char *Section=""; +static int i2c_device; + +static void my_i2c_smbus_write_byte_data(const int device, const unsigned char data) +{ + struct i2c_smbus_ioctl_data args; + args.read_write = I2C_SMBUS_WRITE; + args.command = data; + args.size = I2C_SMBUS_BYTE; + args.data = 0; + ioctl(device,I2C_SMBUS,&args); +} + +static void my_i2c_smbus_read_byte_data(const int device, const unsigned char data) +{ + struct i2c_smbus_ioctl_data args; + args.read_write = I2C_SMBUS_READ; + args.command = data; + args.size = I2C_SMBUS_BYTE; + args.data = 0; + ioctl(device,I2C_SMBUS,&args); +} + +int drv_generic_i2c_open (const char *section, const char *driver) +{ + int dev; + char *bus,*device; + + //SIGNAL_ENABLE = 0x40; + //SIGNAL_RW = 0x10; + //SIGNAL_RS = 0x20; + + udelay_init(); + + bus = cfg_get(section, "Port", NULL); + device = cfg_get(section, "Device", NULL); + dev = atoi(device); + info ("%s: initializing I2C bus %s",driver,bus); + info ("device %d",dev); + if ((i2c_device = open(bus,O_WRONLY)) < 0) { + error("%s: I2C bus %s open failed !\n",driver,bus); + return -1; + } + + info ("%s: initializing I2C slave device 0x%x",driver,dev); + if (ioctl(i2c_device,I2C_SLAVE, dev ) < 0) { + error("%s: error initializing device 0x%x\n",driver,dev); + close(i2c_device); + return -1; + } + + return 0; +} + + +int drv_generic_i2c_close (void) +{ + + close(i2c_device); + + return 0; +} + +unsigned char drv_generic_i2c_wire (const char *name, const char *deflt) +{ + unsigned char w; + char wire[256]; + char *s; + + qprintf(wire, sizeof(wire), "Wire.%s", name); + s=cfg_get (Section, wire, deflt); + if(strlen(s)==3 && strncasecmp(s,"DB",2)==0 && s[2]>='0' && s[2]<='7') { + w=s[2]-'0'; + } else if(strcasecmp(s,"GND")==0) { + w=0; + } else { + error ("%s: unknown signal <%s> for wire <%s>", Driver, s, name); + error ("%s: should be DB0..7 or GND", Driver); + return 0xff; + } + free(s); + if (w==0) { + info ("%s: wiring: [DISPLAY:%s]<==>[i2c:GND]", Driver, name); + } else { + info ("%s: wiring: [DISPLAY:%s]<==>[i2c:DB%d]", Driver, name, w); + } + + w=1<<w; + + return w; +} + +void drv_generic_i2c_data (const unsigned char data) +{ + + my_i2c_smbus_write_byte_data(i2c_device, data); + +} diff --git a/drv_generic_i2c.h b/drv_generic_i2c.h new file mode 100644 index 0000000..731bacc --- /dev/null +++ b/drv_generic_i2c.h @@ -0,0 +1,61 @@ +/* $Id: drv_generic_i2c.h,v 1.1 2005/03/28 19:39:23 reinelt Exp $ + * + * generic driver helper for i2c displays + * + * Copyright (C) 2005 Luis F. Correia <luis.f.correia@seg-social.pt> + * Copyright (C) 2005 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. + * + * + * $Log: drv_generic_i2c.h,v $ + * Revision 1.1 2005/03/28 19:39:23 reinelt + * HD44780/I2C patch from Luis merged (still does not work for me) + * + * + */ + +/* + * + * exported fuctions: + * + * int drv_generic_i2c_open (void) + * reads 'Port' entry from config and opens + * the i2c port + * returns 0 if ok, -1 on failure + * + * int drv_generic_i2c_close (void) + * closes i2c port + * returns 0 if ok, -1 on failure + * + * unsigned char drv_generic_i2c_wire (char *name, char *deflt) + * reads wiring for one data signal from config + * returns 1<<bitpos or 255 on error + * + * void drv_generic_i2c_data (unsigned char value) + * put data bits on DB1..DB8 + */ + +#ifndef _DRV_GENERIC_I2C_H_ +#define _DRV_GENERIC_I2C_H_ + +int drv_generic_i2c_open (const char *section, const char *driver); +int drv_generic_i2c_close (void); +unsigned char drv_generic_i2c_wire (const char *name, const char *deflt); +void drv_generic_i2c_data (const unsigned char data); + +#endif |