summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrodo Looijaard <frodol@dds.nl>1999-02-17 23:26:04 +0000
committerFrodo Looijaard <frodol@dds.nl>1999-02-17 23:26:04 +0000
commit845a74f766b5b4e2c752ef892f56b97dc52d7033 (patch)
tree6544687111bd335c01e0964f6d39b7f31bbf6f7b
parent0e5d97b61a29cac155c76702a3946424a66885bf (diff)
downloadlm-sensors-git-845a74f766b5b4e2c752ef892f56b97dc52d7033.tar.gz
This commit was manufactured by cvs2svn to create tag 'V2-2-1'.V2-2-1
git-svn-id: http://lm-sensors.org/svn/lm-sensors/tags/V2-2-1@242 7894878c-1315-0410-8ee3-d5d059ff63e0
-rw-r--r--kernel/include/compat.h85
-rwxr-xr-xprog/detect/sensors-detect396
2 files changed, 0 insertions, 481 deletions
diff --git a/kernel/include/compat.h b/kernel/include/compat.h
deleted file mode 100644
index 3d5673cd..00000000
--- a/kernel/include/compat.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- compat.h - Part of lm_sensors, Linux kernel modules for hardware
- monitoring
- Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program 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.
-*/
-
-#ifndef SENSORS_COMPAT_H
-#define SENSORS_COMPAT_H
-
-/* This useful macro is not defined in the 2.0 kernels */
-
-#include <linux/version.h>
-#ifndef KERNEL_VERSION
-#define KERNEL_VERSION(a,b,c) (((a) << 16) | ((b) << 8) | (c))
-#endif
-
-#ifdef MODULE
-#include <linux/module.h>
-#ifndef MODULE_AUTHOR
-#define MODULE_AUTHOR(whatever)
-#endif
-#ifndef MODULE_DESCRIPTION
-#define MODULE_DESCRIPTION(whatever)
-#endif
-#endif /* def MODULE */
-
-/* copy_from/to_usr is called memcpy_from/to_fs in 2.0 kernels
- get_user was redefined in 2.1 kernels to use two arguments, and returns
- an error code */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,4))
-#define copy_from_user memcpy_fromfs
-#define copy_to_user memcpy_tofs
-#define get_user_data(to,from) ((to) = get_user(from),0)
-#else
-#include <asm/uaccess.h>
-#define get_user_data(to,from) get_user(to,from)
-#endif
-
-/* Add a scheduling fix for the new code in kernel 2.1.127 */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,127))
-#define schedule_timeout(x) ( current->timeout = jiffies + (x), schedule() )
-#endif
-
-/* If the new PCI interface is not present, fall back on the old PCI BIOS
- interface. We also define some things to unite both interfaces. Not
- very nice, but it works like a charm.
- device is the 2.1 struct pci_dev, bus is the 2.0 bus number, dev is the
- 2.0 device/function code, com is the PCI command, and res is the result. */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,54))
-#define pci_present pcibios_present
-#define pci_read_config_byte_united(device,bus,dev,com,res) \
- pcibios_read_config_byte(bus,dev,com,res);
-#define pci_read_config_word_united(device,bus,dev,com,res) \
- pcibios_read_config_word(bus,dev,com,res);
-#define pci_write_config_byte_united(device,bus,dev,com,res) \
- pcibios_write_config_byte(bus,dev,com,res);
-#define pci_write_config_word_united(device,bus,dev,com,res) \
- pcibios_write_config_word(bus,dev,com,res);
-#else
-#define pci_read_config_byte_united(device,bus,dev,com,res) \
- pci_read_config_byte(device,com,res);
-#define pci_read_config_word_united(device,bus,dev,com,res) \
- pci_read_config_word(device,com,res);
-#define pci_write_config_byte_united(device,bus,dev,com,res) \
- pci_write_config_byte(device,com,res);
-#define pci_write_config_word_united(device,bus,dev,com,res) \
- pci_write_config_byte(device,com,res);
-#endif
-
-
-#endif /* SENSORS_COMPAT_H */
diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect
deleted file mode 100755
index f40431e6..00000000
--- a/prog/detect/sensors-detect
+++ /dev/null
@@ -1,396 +0,0 @@
-#!/usr/bin/perl
-
-#
-# detect.pl - Detect PCI bus and chips
-# Copyright (c) 1998, 1999 Frodo Looijaard <frodol@dds.nl>
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program 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.
-#
-
-
-# A Perl wizard really ought to look upon this; the PCI and I2C stuff should
-# each be put in a separate file, using modules and packages. That is beyond
-# me.
-
-use strict;
-
-use vars qw(@pci_list @pci_adapters);
-
-#########################
-# CONSTANT DECLARATIONS #
-#########################
-
-# This is the list of SMBus or I2C adapters we recognize by their PCI
-# signature. This is an easy and fast way to determine which SMBus or I2C
-# adapters should be present.
-# Each entry must have a vindid (Vendor ID), devid (Device ID), func (PCI
-# Function) and procid (string as appears in /proc/pci; see linux/driver/pci,
-# either pci.c or oldproc.c). If no driver is written yet, omit the
-# driver (Driver Name) field.
-@pci_adapters = (
- {
- vendid => 0x8086,
- devid => 0x7113,
- func => 3,
- procid => "Intel 82371AB PIIX4 ACPI",
- driver => "i2c-piix4"
- } ,
- {
- vendid => 0x1106,
- devid => 0x3040,
- func => 3,
- procid => "VIA Technologies VT 82C586B Apollo ACPI",
- driver => "i2c-via"
- } ,
- {
- vendid => 0x1039,
- devid => 0x0008,
- func => 0,
- procid => "Silicon Integrated Systems 85C503",
- driver => "i2c-ali15x3"
- } ,
- {
- vendid => 0x10b9,
- devid => 0x7101,
- funcid => 0,
- procid => "Acer Labs M7101",
- }
-);
-
-
-##############
-# PCI ACCESS #
-##############
-
-# This function returns a list of hashes. Each hash has some PCI information
-# (more than we will ever need, probably). The most important
-# fields are 'bus', 'slot', 'func' (they uniquely identify a PCI device in
-# a computer) and 'vendid','devid' (they uniquely identify a type of device).
-# /proc/bus/pci/devices is only available on late 2.1 and 2.2 kernels.
-sub read_proc_dev_pci
-{
- my ($dfn,$vend,@pci_list);
- open INPUTFILE, "/proc/bus/pci/devices" or return;
- while (<INPUTFILE>) {
- my $record = {};
- ($dfn,$vend,$record->{irq},$record->{base_addr0},$record->{base_addr1},
- $record->{base_addr2},$record->{base_addr3},$record->{base_addr4},
- $record->{base_addr5},$record->{rom_base_addr}) =
- map { oct "0x$_" } split;
- $record->{bus} = $dfn >> 8;
- $record->{slot} = ($dfn & 0xf8) >> 3;
- $record->{func} = $dfn & 0x07;
- $record->{vendid} = $vend >> 16;
- $record->{devid} = $vend & 0xffff;
- push @pci_list,$record;
- }
- close INPUTFILE or return;
- return @pci_list;
-}
-
-# This function returns a list of hashes. Each hash has some PCI
-# information. The important fields here are 'bus', 'slot', 'func' (they
-# uniquely identify a PCI device in a computer) and 'desc' (a functional
-# description of the PCI device). If this is an 'unknown device', the
-# vendid and devid fields are set instead.
-sub read_proc_pci
-{
- my @pci_list;
- open INPUTFILE, "/proc/pci" or return;
- while (<INPUTFILE>) {
- my $record = {};
- if (($record->{bus},$record->{slot},$record->{func}) =
- /^\s*Bus\s*(\S)+\s*,\s*device\s*(\S+)\s*,\s*function\s*(\S+)\s*:\s*$/) {
- my $desc = <INPUTFILE>;
- unless (($desc =~ /Unknown device/) and
- (($record->{vendid},$record->{devid}) =
- /^\s*Vendor id=(\S+)\.\s*Device id=(\S+)\.$/)) {
- $record->{desc} = $desc;
- }
- push @pci_list,$record;
- }
- }
- close INPUTFILE or return;
- return @pci_list;
-}
-
-sub intialize_proc_pci
-{
- @pci_list = read_proc_dev_pci;
- @pci_list = read_proc_pci if not defined @pci_list;
- die "Can't access either /proc/bus/pci/ or /proc/pci!"
- if not defined @pci_list;
-}
-
-#####################
-# ADAPTER DETECTION #
-#####################
-
-
-sub adapter_pci_detection
-{
- my ($device,$try,@res);
- print "Probing for PCI bus adapters...\n";
-
- foreach $device (@pci_list) {
- foreach $try (@pci_adapters) {
- if ((defined($device->{vendid}) and
- $try->{vendid} == $device->{vendid} and
- $try->{devid} == $device->{devid} and
- $try->{func} == $device->{func}) or
- (! defined($device->{vendid}) and
- $device->{desc} =~ /$try->{procid}/ and
- $try->{func} == $device->{func})) {
- printf "Use driver `%s' for device %02x:%02x.%x: %s\n",
- $try->{driver}?$try->{driver}:"<To Be Written>",
- $device->{bus},$device->{slot},$device->{func},$try->{procid};
- push @res,$try->{driver};
- }
- }
- }
- if (! defined @res) {
- print ("Sorry, no PCI bus adapters found.\n");
- } else {
- printf ("Probe succesfully concluded.\n");
- }
- return @res;
-}
-
-#############################
-# I2C AND SMBUS /DEV ACCESS #
-#############################
-
-use vars qw($IOCTL_I2C_RETRIES $IOCTL_I2C_TIMEOUT $IOCTL_I2C_UDELAY
- $IOCTL_I2C_MDELAY $IOCTL_I2C_SLAVE $IOCTL_I2C_TENBIT
- $IOCTL_I2C_SMBUS);
-
-# These are copied from <linux/i2c.h> and <linux/smbus.h>
-
-# For bit-adapters:
-$IOCTL_I2C_RETRIES = 0x0701;
-$IOCTL_I2C_TIMEOUT = 0x0702;
-$IOCTL_I2C_UDELAY = 0x0705;
-$IOCTL_I2C_MDELAY = 0x0706;
-
-# General ones:
-$IOCTL_I2C_SLAVE = 0x0703;
-$IOCTL_I2C_TENBIT = 0x0704;
-$IOCTL_I2C_SMBUS = 0x0720;
-
-
-use vars qw($SMBUS_READ $SMBUS_WRITE $SMBUS_QUICK $SMBUS_BYTE $SMBUS_BYTE_DATA
- $SMBUS_WORD_DATA $SMBUS_PROC_CALL $SMBUS_BLOCK_DATA);
-
-# These are copied from <linux/smbus.h>
-
-$SMBUS_READ = 1;
-$SMBUS_WRITE = 0;
-$SMBUS_QUICK = 0;
-$SMBUS_BYTE = 1;
-$SMBUS_BYTE_DATA = 2;
-$SMBUS_WORD_DATA = 3;
-$SMBUS_PROC_CALL = 4;
-$SMBUS_BLOCK_DATA = 5;
-
-# Select the device to communicate with through its address.
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Address to select
-# Returns: 0 on failure, 1 on success.
-sub i2c_set_slave_addr
-{
- my ($file,$addr) = @_;
- ioctl $file, $IOCTL_I2C_SLAVE, $addr or return 0;
- return 1;
-}
-
-# i2c_smbus_access is based upon the corresponding C function (see
-# <linux/i2c-dev.h>). You should not need to call this directly.
-# Exact calling conventions are intricate; read i2c-dev.c if you really need
-# to know.
-# $_[0]: Reference to an opened filehandle
-# $_[1]: $SMBUS_READ for reading, $SMBUS_WRITE for writing
-# $_[2]: Command (usually register number)
-# $_[3]: Transaction kind ($SMBUS_BYTE, $SMBUS_BYTE_DATA, etc.)
-# $_[4]: Reference to an array used for input/output of data
-# Returns: 0 on failure, 1 on success.
-# Note the "SS" pack, even though they are declared as chars in the C struct!
-# This is very compiler-dependent; I wish there was some other way to do this.
-sub i2c_smbus_access
-{
- my ($file,$read_write,$command,$size,$data) = @_;
- my $data_array = pack "C32", @$data;
- my $ioctl_data = pack "SSIp", ($read_write,$command,$size,$data_array);
- ioctl $file, $IOCTL_I2C_SMBUS, $ioctl_data or return 0;
- $_[4] = [ unpack "C32",$data_array ];
- return 1;
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Either 0 or 1
-# Returns: -1 on failure, the 0 on success.
-sub i2c_smbus_write_quick
-{
- my ($file,$value) = @_;
- my $data = [];
- i2c_smbus_access $file, $value, 0, $SMBUS_QUICK, $data
- or return -1;
- return 0;
-}
-
-# $_[0]: Reference to an opened filehandle
-# Returns: -1 on failure, the read byte on success.
-sub i2c_smbus_read_byte
-{
- my ($file) = @_;
- my $data = [];
- i2c_smbus_access $file, $SMBUS_READ, 0, $SMBUS_BYTE, $data
- or return -1;
- return $$data[0];
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Byte to write
-# Returns: -1 on failure, 0 on success.
-sub i2c_smbus_write_byte
-{
- my ($file,$command) = @_;
- my $data = [$command];
- i2c_smbus_access $file, $SMBUS_WRITE, 0, $SMBUS_BYTE, $data
- or return -1;
- return 0;
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# Returns: -1 on failure, the read byte on success.
-sub i2c_smbus_read_byte_data
-{
- my ($file,$command) = @_;
- my $data = [];
- i2c_smbus_access $file, $SMBUS_READ, $command, $SMBUS_BYTE_DATA, $data
- or return -1;
- return $$data[0];
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# $_[2]: Byte to write
-# Returns: -1 on failure, 0 on success.
-sub i2c_smbus_write_byte_data
-{
- my ($file,$command,$value) = @_;
- my $data = [$value];
- i2c_smbus_access $file, $SMBUS_WRITE, $command, $SMBUS_BYTE_DATA, $data
- or return -1;
- return 0;
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# $_[2]: Byte to write
-# Returns: -1 on failure, 0 on success.
-# Note: some devices use the wrong endiannes; use swap_bytes to correct for
-# this.
-sub i2c_smbus_write_word_data
-{
- my ($file,$command,$value) = @_;
- my $data = [$value & 0xff, $value >> 8];
- i2c_smbus_access $file, $SMBUS_WRITE, $command, $SMBUS_WORD_DATA, $data
- or return -1;
- return 0;
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# Returns: -1 on failure, the read word on success.
-# Note: some devices use the wrong endiannes; use swap_bytes to correct for
-# this.
-sub i2c_smbus_read_word_data
-{
- my ($file,$command) = @_;
- my $data = [];
- i2c_smbus_access $file, $SMBUS_READ, $command, $SMBUS_WORD_DATA, $data
- or return -1;
- return $$data[0] + 256 * $$data[1];
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# $_[2]: Word to write
-# Returns: -1 on failure, read word on success.
-# Note: some devices use the wrong endiannes; use swap_bytes to correct for
-# this.
-sub i2c_smbus_process_call
-{
- my ($file,$command,$value) = @_;
- my $data = [$value & 0xff, $value >> 8];
- i2c_smbus_access $file, $SMBUS_WRITE, $command, $SMBUS_PROC_CALL, $data
- or return -1;
- return $$data[0] + 256 * $$data[1];
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# Returns: Undefined on failure, a list of read bytes on success
-# Note: some devices use the wrong endiannes; use swap_bytes to correct for
-# this.
-sub i2c_smbus_read_block_data
-{
- my ($file,$command) = @_;
- my $data = [];
- i2c_smbus_access $file, $SMBUS_READ, $command, $SMBUS_BLOCK_DATA, $data
- or return;
- shift @$data;
- return @$data;
-}
-
-# $_[0]: Reference to an opened filehandle
-# $_[1]: Command byte (usually register number)
-# @_[2..]: List of values to write
-# Returns: -1 on failure, 0 on success.
-# Note: some devices use the wrong endiannes; use swap_bytes to correct for
-# this.
-sub i2c_smbus_read_block_data
-{
- my ($file,$command,@data) = @_;
- i2c_smbus_access $file, $SMBUS_WRITE, $command, $SMBUS_BLOCK_DATA, \@data
- or return;
- return 0;
-}
-
-# $_[0]: Reference to an opened filehandle
-#######################
-# AUXILIARY FUNCTIONS #
-#######################
-
-sub swap_bytes
-{
- return (($_[0] & 0xff00) >> 8) + (($_[0] & 0x00ff) << 7)
-}
-
-
-################
-# MAIN PROGRAM #
-################
-
-my @hallo;
-
-intialize_proc_pci;
-adapter_pci_detection;
-
-# TEST!
-#open FILE, "+>/dev/i2c-0" or die "Can't open /dev/i2c-0!";
-#i2c_set_slave_addr \*FILE, 0x49 or die "Couldn't set slave addr!";
-#print (i2c_read_word_data \*FILE, 0), "\n";