Changeset 4397

Show
Ignore:
Timestamp:
05/09/07 15:00:30 (8 years ago)
Author:
khali
Message:

Delete all kernel chip drivers, documentation and references. We are
moving to a user-space-only package, all the drivers are maintained in
the Linux kernel tree itself.

I tried to update the documentation a bit, but there's still a lot to
go. In fact, a complete rewrite seems to be needed.

Location:
lm-sensors/branches/lm-sensors-3.0.0
Files:
1 added
68 removed
9 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/branches/lm-sensors-3.0.0/CHANGES

    r4386 r4397  
    44SVN HEAD 
    55  All bus modules and documentation: Delete 
     6  All chip modules and documentation: Delete 
    67  File doc/version-2: Delete, obsolete 
    78  File sensors.conf.eg: Add a dme1737 section 
  • lm-sensors/branches/lm-sensors-3.0.0/Makefile

    r4386 r4397  
    2828#SHELL := /usr/bin/bash 
    2929 
    30 # The currently running kernel version. This is used right below to 
    31 # determine where the kernel sources can be found. 
    32 KERNELVERSION := $(shell uname -r) 
    33  
    34 # The location of linux itself. This is used to find the kernel headers 
    35 # and other things. 
    36 #LINUX := /usr/src/linux 
    37 LINUX := $(shell if [ -L "/lib/modules/$(KERNELVERSION)/build" ] ; \ 
    38         then echo "/lib/modules/$(KERNELVERSION)/build" ; \ 
    39         else echo "/usr/src/linux" ; fi) 
    40 LINUX_HEADERS := $(LINUX)/include 
    41  
    42 # If you have installed the i2c header at some other place (like  
    43 # /usr/local/include/linux), set that directory here. Please check this out 
    44 # if you get strange compilation errors; the default Linux i2c headers 
    45 # may be used mistakenly. Note: This should point to the directory 
    46 # *above* the linux/ subdirectory, so to /usr/local/include in the 
    47 # above example. 
    48 I2C_HEADERS := /usr/local/include 
    49 #I2C_HEADERS := $(LINUX_HEADERS) 
    50  
    51 ifneq ($(MAKECMDGOALS),user) 
    52 ifneq ($(MAKECMDGOALS),user_install) 
    53 ifneq ($(MAKECMDGOALS),user_uninstall) 
    54 SMP := $(shell if grep -q '^[[:space:]]*\#define[[:space:]]*CONFIG_SMP[[:space:]]*1' $(LINUX_HEADERS)/linux/autoconf.h ; \ 
    55                then echo 1; else echo 0; fi) 
    56 MODVER := $(shell if grep -q '^[[:space:]]*\#define[[:space:]]*CONFIG_MODVERSIONS[[:space:]]*1' $(LINUX_HEADERS)/linux/autoconf.h ; \ 
    57                   then echo 1; else echo 0; fi) 
    58 endif 
    59 endif 
    60 endif 
    61  
    6230# Uncomment the second line if you are a developer. This will enable many 
    6331# additional warnings at compile-time 
     
    8149CC := gcc 
    8250 
    83 # This is the main modules directory into which the modules will be installed. 
    84 # The magic invocation will return something like this: 
    85 #   /lib/modules/2.4.29 
    86 KERNELVERSION := $(shell $(CC) -I$(LINUX_HEADERS) -E etc/config.c | grep uts_release | cut -f 2 -d'"') 
    87 MODPREF := /lib/modules/$(KERNELVERSION) 
    88  
    89 # When building userspace for use with 2.4.x series kernels, we turn off 
    90 # sysfs support by default.  You can override this (e.g. if you want 
    91 # to build binaries that work for both 2.4.x, and 2.6.x and above) 
    92 # by uncommenting the line after the next endif.  Keep in mind, if and only 
    93 # if you do this: you will need to install the libsysfs libraries on your 
    94 # kernel 2.4.x systems also. 
    95 ifeq (,$(findstring /2.4., $(MODPREF))) 
    96         SYSFS_SUPPORT := 1 
    97 else 
    98         SYSFS_SUPPORT := 
    99 endif 
    100 #SYSFS_SUPPORT := 1 
    101  
    102 # Prevent 2.6+ users from using improper targets, as this won't work. 
    103 ifeq (,$(findstring /2.4., $(MODPREF))) 
    104     ifeq (, $(MAKECMDGOALS)) 
    105         $(error For 2.6 kernels and later, use "make user") 
    106     endif 
    107     ifeq (install, $(MAKECMDGOALS)) 
    108         $(error For 2.6 kernels and later, use "make user_install") 
    109     endif 
    110 endif 
     51# Build with sysfs support 
     52SYSFS_SUPPORT := 1 
    11153 
    11254# This is the directory where sensors.conf will be installed, if no other 
     
    171113# The subdirectories we need to build things in  
    172114SRCDIRS := 
    173 ifneq ($(MAKECMDGOALS),user) 
    174 ifneq ($(MAKECMDGOALS),user_install) 
    175 ifneq ($(MAKECMDGOALS),user_uninstall) 
    176 ifneq ($(MAKECMDGOALS),package) 
    177 ifneq ($(MAKECMDGOALS),userpackage) 
    178 ifneq ($(MAKECMDGOALS),manhtml) 
    179 SRCDIRS += kernel kernel/chips 
    180 endif 
    181 endif 
    182 endif 
    183 endif 
    184 endif 
    185 endif 
    186115SRCDIRS += kernel/include 
    187116SRCDIRS += lib prog/detect prog/dump prog/eeprom prog/pwm \ 
     
    205134# Set CFLAGS or CPPFLAGS above to add your own flags to all. 
    206135# ALLCPPFLAGS/ALLCFLAGS are common flags, plus any user-specified overrides from the environment or make command line. 
    207 # MODCPPFLAGS/MODCFLAGS is to create in-kernel object files (modules). 
    208 # PROGCPPFLAGS/PROGCFLAGS is to create non-kernel object files (which are linked into executables). 
     136# PROGCPPFLAGS/PROGCFLAGS is to create regular object files (which are linked into executables). 
    209137# ARCPPFLAGS/ARCFLAGS are used to create archive object files (static libraries). 
    210138# LIBCPPFLAGS/LIBCFLAGS are for shared library objects. 
    211 ALL_CPPFLAGS := -I. -Ikernel/include -I$(I2C_HEADERS) 
     139ALL_CPPFLAGS := -I. -Ikernel/include 
    212140ALL_CFLAGS := -Wall 
    213141 
     
    227155ALL_CFLAGS += $(CFLAGS) 
    228156 
    229 MODCPPFLAGS := 
    230 MODCFLAGS := -fno-strict-aliasing 
    231  
    232 ifeq ($(MACHINE),alpha) 
    233 MODCFLAGS += -ffixed-8 -mno-fp-regs -mcpu=ev56 
    234 endif 
    235  
    236 ifeq ($(MACHINE),x86_64) 
    237 MODCFLAGS += -fno-common -fomit-frame-pointer -mno-red-zone \ 
    238              -mcmodel=kernel -fno-reorder-blocks -finline-limit=2000 -fno-strength-reduce 
    239 endif 
    240  
    241 ifeq ($(MACHINE),mips) 
    242 MODCFLAGS += -mabi=32 -mips3 -Wa,-32 -Wa,-mips3 -Wa,--trap 
    243 endif 
    244  
    245 ifeq ($(MACHINE),sparc32) 
    246 MODCFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 
    247 endif 
    248  
    249 ifeq ($(MACHINE),sparc64) 
    250 MODCFLAGS += -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow \ 
    251              -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare \ 
    252              -Wa,--undeclared-regs 
    253 endif 
    254  
    255 ifeq ($(SMP),1) 
    256 MODCPPFLAGS += -D__SMP__ 
    257 endif 
    258  
    259 ifeq ($(MODVER),1) 
    260 MODCPPFLAGS += -DMODVERSIONS -include $(LINUX_HEADERS)/linux/modversions.h 
    261 endif 
    262  
    263 # This magic is from the kernel Makefile. 
    264 # Extra cflags for kbuild 2.4.  The default is to forbid includes by kernel code 
    265 # from user space headers. 
    266 kbuild_2_4_nostdinc := -nostdinc $(shell LC_ALL=C $(CC) -print-search-dirs | sed -ne 's/install: \(.*\)/-I \1include/gp') 
    267  
    268 MODCPPFLAGS += -D__KERNEL__ -DMODULE -DEXPORT_SYMTAB -fomit-frame-pointer $(ALL_CPPFLAGS) -I$(LINUX_HEADERS) $(kbuild_2_4_nostdinc) 
    269 MODCFLAGS += $(ALL_CFLAGS) 
    270157PROGCPPFLAGS := -DETCDIR="\"$(ETCDIR)\"" $(ALL_CPPFLAGS) -Wundef 
    271158PROGCFLAGS := $(ALL_CFLAGS) 
     
    318205all :: user 
    319206install :: all user_install 
    320 ifeq ($(DESTDIR),) 
    321         -if [ -r $(MODPREF)/build/System.map -a -x /sbin/depmod ] ; then \ 
    322           /sbin/depmod -a -F $(MODPREF)/build/System.map $(KERNELVERSION) ; \ 
    323         fi 
    324 else 
    325         @echo "*** This is a \`staged' install using \"$(DESTDIR)\" as prefix." 
    326         @echo "***" 
    327         @echo "*** Once the modules have been moved to their final destination" 
    328         @echo "*** you must run the command \"/sbin/depmod -a\"." 
    329         @echo "***" 
    330         @echo "*** Alternatively, if you build a package (e.g. rpm), include the" 
    331         @echo "*** command \"/sbin/depmod -a\" in the post-(un)install procedure." 
    332         @echo "***" 
    333         @echo "*** The depmod command mentioned above may generate errors. We are" 
    334         @echo "*** aware of the problem and are working on a solution." 
    335 endif 
    336207 
    337208clean:: 
     
    341212 
    342213uninstall :: user_uninstall 
    343         @echo "*** Note:" 
    344         @echo "***  * Kernel modules were not uninstalled." 
    345214 
    346215# This is tricky, but it works like a charm. It needs lots of utilities 
     
    360229        cat doc/developers/checklist 
    361230 
    362 # doesn't work well yet... needs Makefile changes too 
    363 userpackage: version clean $(KERNELINCLUDEDIR)/sensors.h 
    364         lmversion=`tail -1 version.h|cut -f 2 -d \"`; \ 
    365         lmpackage=lm_sensors-user-$$lmversion; \ 
    366         ln -s . $$lmpackage;  \ 
    367         find $$lmpackage/ -type f | grep -v ^$$lmpackage/$$lmpackage$$ | \ 
    368                                     grep -v ^$$lmpackage/$$lmpackage.tar$$ | \ 
    369                                     grep -v ^$$lmpackage/doc/chips | \ 
    370                                     grep -v ^$$lmpackage/kernel/chips | \ 
    371                                     grep -v ^$$lmpackage/$$ | \ 
    372                                     grep -v /CVS | \ 
    373                                     grep -v /\\.# | \ 
    374                                     tar rvf $$lmpackage.tar -T -; \ 
    375         gzip -9 $$lmpackage.tar ;\ 
    376         $(RM) $$lmpackage.tar $$lmpackage 
    377         cat doc/developers/checklist 
    378  
    379231version: 
    380232        $(RM) version.h 
     
    385237help: 
    386238        @echo 'Make targets are:' 
    387         @echo '  all (default): build modules and userspace programs' 
    388         @echo '  install: install modules and userspace programs' 
    389         @echo '  user: build userspace programs' 
    390         @echo '  user_install: install userspace programs' 
    391         @echo '  user_uninstall: remove userspace programs' 
     239        @echo '  all (default): build library and userspace programs' 
     240        @echo '  install: install library and userspace programs' 
     241        @echo '  uninstall: uninstall library and userspace programs' 
    392242        @echo '  clean: cleanup' 
    393243        @echo '  package: create a distribution package' 
    394  
    395 $(LINUX)/.config: 
    396         @echo 
    397         @echo "Error - missing file $(LINUX)/.config !! " 
    398         @echo "  Verify kernel source is in $(LINUX) and then" 
    399         @echo "  cd to $(LINUX) and run 'make config' !!" 
    400         @echo 
    401         @echo "Exception: if you're using a stock RedHat kernel..." 
    402         @echo "  (1) Install the appropriate kernel-source RPM." 
    403         @echo "  (2) Copy the appropriate config..." 
    404         @echo "      from $(LINUX)/configs/<...>" 
    405         @echo "      to $(LINUX)/.config" 
    406         @echo "  (3) Do *NOT* 'make dep' or 'make config'." 
    407         @echo 
    408         @exit 1 
    409244 
    410245# Generate html man pages to be copied to the lm_sensors website. 
     
    428263# dir/file.c in front of the dependency file rule. 
    429264 
    430 # .o files are used for modules 
    431 # depend on the kernel config file! 
    432 %.o: %.c $(LINUX)/.config 
    433         $(CC) $(MODCPPFLAGS) $(MODCFLAGS) -c $< -o $@ 
    434  
    435 %.d: %.c $(LINUX)/.config 
    436         $(CC) -M -MG $(MODCPPFLAGS) $(MODCFLAGS) $< | \ 
    437         $(SED) -e 's@^\(.*\)\.o:@$*.d $*.o: Makefile '`dirname $*.d`/Module.mk' @' > $@ 
    438  
    439  
    440265 
    441266# .ro files are used for programs (as opposed to modules) 
  • lm-sensors/branches/lm-sensors-3.0.0/QUICKSTART

    r4174 r4397  
    55system, but not always!! 
    66 
    7 The first part of document is for 2.6 kernel series, second part is for 
    8 older 2.4 kernels. 
    9  
    107Quickstart for Kernel 2.6  
    118------------------------- 
    129 
    13100) Just compile and install lm-sensors userspace tools. You can do that with: 
    14    'make user; make user_install' 
     11   'make ; make install' 
    15121) Make sure your kernel has support for all I2C bus drivers and 
    1613   'i2c device interface'. If you are using a distribution kernel, all is 
     
    2724We are aware that the documentation could be improved, please contact us if 
    2825you want to help us with that. 
    29     
    30 Quickstart for Kernel 2.4 
    31 ------------------------- 
    32  
    33 NOTE: PLEASE SKIM THE INSTALL DOCUMENT, OR BETTER YET READ IT CAREFULLY! 
    34  
    35 Quickstart for i2c option 1 (modules) and lm_sensors option 1 (modules). 
    36 This is by far the EASIEST METHOD. 
    37 Other methods are described in INSTALL. 
    38 ------------------------------------------ 
    39  
    40   * Verify you are running a 2.4 kernel, 2.4.10 or later. 
    41  
    42   * Make sure you have the kernel tree corresponding to your current 
    43     kernel in /lib/modules/$(uname -r)/build. 
    44     Even if the source is there, it may not correspond to your running 
    45     kernel. If so, you will have to recompile your kernel. 
    46  
    47   * Verify that your i2c support in the kernel is configured as 
    48     modules or is disabled. If it is compiled-in, you obviously 
    49     cannot replace it with modules in the next step. 
    50  
    51   * Do `lsmod'. If there are any old i2c or sensors modules loaded, 
    52     you MUST remove them (as root) with `rmmod'. 
    53  
    54   * Download, build, and install the latest i2c package, 
    55     (i2c-2.9.0 or later). The i2c subsystem found in the Linux 2.4 
    56     kernel trees, even the latest ones, is outdated and won't work. 
    57     Quickstart for i2c: make; (as root) make install 
    58  
    59   * Go back to the lm_sensors directory. Do `make'. 
    60     The warnings about .d files at the start are harmless. 
    61  
    62   * Do (as root) `make install'. 
    63  
    64   * Verify that /usr/local/lib is listed in /etc/ld.so.conf; 
    65     if it isn't, add it, then run (as root) `ldconfig'. 
    66  
    67   * Run (as root) `prog/mkdev/mkdev.sh' to create the device files, 
    68     unless you already have them or are running devfs or udev. 
    69  
    70   * Run (as root) `prog/detect/sensors-detect' to detect your hardware, 
    71     put the lines it suggests into /etc/modules.conf, and run all 
    72     the commands it suggests (`modprobe X', `sensors -s'). 
    73  
    74   * Run `sensors' to see your output. 
    75  
    76   * That's it! If you have problems, read our excellent FAQ 
    77     (doc/FAQ or doc/lm_sensors-FAQ.html). 
  • lm-sensors/branches/lm-sensors-3.0.0/README.directories

    r4386 r4397  
    22 
    33* doc 
    4   Documentation about the modules within this package, and all other things. 
     4  Documentation. 
    55* etc 
    66  A sample configuration file for the 'sensors' program. 
    77* kernel 
    8   The kernel modules: sensor chip drivers. 
     8  A few kernel-related header files. 
    99* lib 
    1010  The user-space sensors support library code. 
  • lm-sensors/branches/lm-sensors-3.0.0/doc/developers/makefiles

    r4069 r4397  
    55There is one big Makefile in the root of this package. It includes many 
    66other files; one for each directory in which source code is found. These 
    7 included files are called 'Module.mk'. There is a separate set of Makefiles 
    8 in the i2c/ directories; these are Simon Vogl's original Makefiles, and 
    9 not referred by the main package Makefile. 
     7included files are called 'Module.mk'. 
    108 
    119There are several interesting targets defined through this Makefile: 
    1210  * all 
    1311    Create everything in all directories. 
    14   * all-i2c, all-src, ... 
    15     Create everything in the designated directory. 
    1612  * install 
    1713    Install everything from all directories. 
    18   * install-i2c, install-src, ... 
    19     Install everything in the designated directory. 
     14  * uninstall 
     15    Uninstall everything. 
    2016  * clean 
    2117    Remove anything which can be regenerated from all directories. A call 
     
    2319    this is useful when they are out of date (and prevent the calling of 
    2420    any other target). 
    25   * clean-i2c, clean-src, ... 
    26     Remove anything which can be regenerated from the designated directory. 
    2721  * version 
    2822    Regenerate version.h, using the current date for the date-stamp, and 
     
    3024  * package 
    3125    Create a .tar.gz file containing everything except the SVN directories. 
    32   * src/lm78.o, i2c/i2c-core.o, ... 
    33     You can of course also specify one or more targets to make. 
    3426 
    3527The best way to understand the Module.mk subfiles is to examine one of them, 
    36 for example src/Module.mk. They are not too difficult to understand. 
     28for example lib/Module.mk. They are not too difficult to understand. 
    3729 
    3830There are several variables which can be set in the main Makefile. You can 
     
    4840 
    4941Several files are generated by Makefiles: 
    50   * .d 
    51     Dependency files for modules. Automatically generated. 
    5242  * .rd 
    5343    Dependency files for executables. Automatically generated. 
     
    5646  * .lo 
    5747    Dependency files for shared libraries. Automatically generated. 
    58   * .o 
    59     Generated modules 
    6048  * .ro 
    6149    Object files for executables. They will be linked together to create 
  • lm-sensors/branches/lm-sensors-3.0.0/doc/developers/release_checklist

    r4253 r4397  
    33 
    44Release steps: 
    5 - Check out i2c and lm-sensors 
     5- Check out lm-sensors 
    66- Update if necessary, the version number of libsensors 
    77  (edit lib/Module.mk and change LIBMAINVER and/or LIBMINORVER) 
     
    99  functionality is added, and patch if only bugs are fixed. 
    1010  `svn diff -r Vx-y-z lib' is your friend. 
    11 - Update both CHANGES files (add the release date) 
    12 - Verify i2c dependency instructions in README, QUICKSTART, and INSTALL, 
    13   update if necessary 
     11- Update the CHANGES file (add the release date) 
    1412- Update lm_sensors.lsm and send it to the LSM by mailing it to  
    1513  lsm@execpc.com with the subject `add' (no quotes). 
    16 - Update lm_sensors2/version.h and i2c/kernel/i2c.h 
     14- Update version.h 
    1715- Commit 
    1816- Tag the release using SVN: 
     
    2220- Remove empty directories (e.g. rmdir `find . -type d`) 
    2321- Remove 'SVN' related files/directories (e.g. rm -fR `find . -name .svn`) 
    24 - Rename i2c and lm_sensors2 to i2c-#.#.# and lm_sensors-#.#.# 
     22- Rename lm_sensors2 to lm_sensors-#.#.# 
    2523- Tar it up and post it (sign it) 
    26 - Make sure the file permissions on both the archives and the signatures 
     24- Make sure the file permissions on both the archive and the signature 
    2725  are correct (664) 
    2826 
  • lm-sensors/branches/lm-sensors-3.0.0/etc/sensors.conf.eg

    r4357 r4397  
    921921 
    922922# IMPORTANT: in0, in1, and in2 values (+5, +3, and +12) CANNOT be read 
    923 #            unless you use the slow 'iterate' method. Limits will still 
    924 #            work even when iterate=0. See doc/chips/gl518sm. 
    925 #            Note that the 'iterate' method was trimmed while porting the 
    926 #            driver to Linux 2.6 as we considered it too ugly for the thin 
    927 #            benefit. 
    928923# 
    929924# Factors and labels taken from GL518SM datasheet, they seem to give 
     
    18551850 
    18561851# Compute Voltages using mainboard dependant MRO-values 
    1857 # (see doc/chips/fscher) 
     1852# (see the fscher driver documentation in the kernel tree) 
    18581853#                           M    R             O               O                  M    R 
    18591854    compute in0       (@ * (49 * 33) / 255) + (0 / 100), (@ - (0 / 100)) * 255 / (49 * 33) 
     
    18611856    compute in2       (@ * (10 * 33) / 255) + (0 / 100), (@ - (0 / 100)) * 255 / (10 * 33) 
    18621857 
    1863 # Read documentation before enabling pwm settings (see doc/chips/fscher) 
     1858# Read documentation before enabling pwm settings 
     1859# (see the fscher driver documentation in the kernel tree) 
    18641860# WARNING: IMPROPER VALUES MAY DAMAGE YOUR SYSTEM DUE TO OVERHEATING! 
    18651861 
  • lm-sensors/branches/lm-sensors-3.0.0/kernel/include/Module.mk

    r4163 r4397  
    2121MODULE_DIR := kernel/include 
    2222KERNELINCLUDEDIR := $(MODULE_DIR) 
    23 KERNELCHIPSDIR := kernel/chips 
    2423 
    2524KERNELINCLUDEFILES := $(MODULE_DIR)/i2c-dev.h $(MODULE_DIR)/sensors.h 
    26  
    27 $(KERNELINCLUDEDIR)/sensors.h: $(KERNELINCLUDEDIR)/sensors.h.template 
    28         cat $@.template > $@ 
    29         $(AWK) '/SENSORS SYSCTL START/,/SENSORS SYSCTL END/' $(KERNELCHIPSDIR)/*.c >> $@ 
    30         echo '#endif' >> $@ 
    31  
    32 $(KERNELINCLUDEDIR)/sensors.hd: 
    33         ( $(GREP) 'SENSORS SYSCTL START' /dev/null $(KERNELCHIPSDIR)/*.c | \ 
    34           $(SED) -e 's/:.*//' -e 's#^#$(KERNELINCLUDEDIR)/sensors.h: #' ) > $@ 
    35  
    36 # Get dependencies of sensors.h 
    37 INCLUDEFILES += $(MODULE_DIR)/sensors.hd 
    3825 
    3926REMOVEKERNELINC := $(patsubst $(MODULE_DIR)/%,$(DESTDIR)$(SYSINCLUDEDIR)/%,$(KERNELINCLUDEFILES)) 
     
    5138# Remove directory if empty, ignore failure 
    5239        $(RMDIR) $(DESTDIR)$(SYSINCLUDEDIR) 2> /dev/null || true 
    53  
    54 clean-all-kernel-include: 
    55         $(RM) $(KERNELINCLUDEDIR)/*.h.install $(KERNELINCLUDEDIR)/sensors.h $(KERNELINCLUDEDIR)/sensors.hd 
    56  
    57 clean :: clean-all-kernel-include 
  • lm-sensors/branches/lm-sensors-3.0.0/lm_sensors.lsm

    r4386 r4397  
    44Entered-date: 29DEC98 
    55Description: Hardware health monitoring package for Linux. It consists of  
    6              kernel modules to access sensor chips and SMBus hardware, 
    7              of a library to allow applications to read this data more 
     6             a library to allow applications to read sensors data more 
    87             easily, and of an example program to pretty print this data. 
    9              LM78, LM79, LM80, W83781D and GL518SM sensor chips are  
    10              supported, among others. 
    118             Version 2 is a complete non-compatible modular rewrite of this  
    129             package. 
    13 Keywords: kernel module SMBus sensors LM78 health 
     10Keywords: sensors health 
    1411Author: frodol@dds.nl (Frodo Looijaard) 
    1512        phil@netroedge.com (Philip Edelbrock)