mirror of
https://github.com/lm-sensors/lm-sensors.git
synced 2026-10-20 11:29:31 +00:00
mkpatch is now complete. It is not yet tested.
git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@515 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
1 parent
c937c1aa56
commit
dde88d36d8
2 files changed
+267
-20
No files matched your search
+1
-1
@@ -5,7 +5,7 @@ kernel/busses/i2c-piix4.c drivers/i2c/i2c-piix4.c
|
||||
kernel/busses/i2c-via.c drivers/i2c/i2c-via.c
|
||||
kernel/sensors.c drivers/sensors/sensors.c
|
||||
kernel/chips/adm1021.c drivers/sensors/adm1021.c
|
||||
kernel/chips/adm9024.c drivers/sensors/adm9024.c
|
||||
kernel/chips/adm9240.c drivers/sensors/adm9240.c
|
||||
kernel/chips/gl518sm.c drivers/sensors/gl518sm.c
|
||||
kernel/chips/lm75.c drivers/sensors/lm75.c
|
||||
kernel/chips/lm78.c drivers/sensors/lm78.c
|
||||
|
||||
+266
-19
@@ -141,12 +141,14 @@ sub gen_drivers_char_Config_in
|
||||
while(<INPUT>) {
|
||||
if (m@source drivers/i2c/Config.in@) {
|
||||
print OUTPUT;
|
||||
$_ = 'source drivers/sensors/Config.in';
|
||||
print OUTPUT 'source drivers/sensors/Config.in';
|
||||
$_ = <INPUT>;
|
||||
}
|
||||
if (m@sensors@) {
|
||||
$_ = <INPUT>;
|
||||
$_ = <INPUT> if (m@^$@);
|
||||
}
|
||||
print OUTPUT;
|
||||
}
|
||||
close INPUT;
|
||||
close OUTPUT;
|
||||
@@ -162,7 +164,6 @@ sub gen_drivers_char_mem_c
|
||||
my $kernel_file = "drivers/char/mem.c";
|
||||
my $package_file = "mkpatch/.temp";
|
||||
my $right_place = 0;
|
||||
my $with_video = 0;
|
||||
my $done = 0;
|
||||
my $atstart = 1;
|
||||
|
||||
@@ -173,33 +174,27 @@ sub gen_drivers_char_mem_c
|
||||
while(<INPUT>) {
|
||||
if ($atstart and m@#ifdef@) {
|
||||
print OUTPUT << 'EOF';
|
||||
#ifdef CONFIG_I2C
|
||||
extern void i2c_init_all(void);
|
||||
#ifdef CONFIG_SENSORS
|
||||
extern void sensors_init_all(void);
|
||||
#endif
|
||||
EOF
|
||||
$atstart = 0;
|
||||
}
|
||||
if (not $right_place and m@CONFIG_I2C@) {
|
||||
if (not $right_place and m@CONFIG_SENSORS@) {
|
||||
$_ = <INPUT> while not m@#endif@;
|
||||
$_ = <INPUT>;
|
||||
}
|
||||
$with_video = 1 if m@CONFIG_VIDEO_BT848@;
|
||||
$right_place = 1 if (m@lp_init\(\);@);
|
||||
if ($right_place and not $done and
|
||||
(m@CONFIG_I2C@ or m@CONFIG_VIDEO_BT848@ or m@return 0;@)) {
|
||||
(m@CONFIG_SENSORS@ or m@return 0;@)) {
|
||||
if (not m@return 0;@) {
|
||||
$_ = <INPUT> while not m@#endif@;
|
||||
$_ = <INPUT>;
|
||||
$_ = <INPUT> if m@^$@;
|
||||
}
|
||||
if ($with_video) {
|
||||
print OUTPUT '#if defined(CONFIG_I2C) || defined(CONFIG_VIDEO_BT848)';
|
||||
} else {
|
||||
print OUTPUT '#ifdef CONFIG_I2C';
|
||||
}
|
||||
print OUTPUT <<'EOF';
|
||||
|
||||
i2c_init_all();
|
||||
#ifdef CONFIG_SENSORS
|
||||
sensors_init_all();
|
||||
#endif
|
||||
|
||||
EOF
|
||||
@@ -211,12 +206,112 @@ EOF
|
||||
close OUTPUT;
|
||||
print_diff $package_root,$kernel_root,$kernel_file,$package_file;
|
||||
}
|
||||
|
||||
|
||||
|
||||
# $_[0]: sensors package root (like /tmp/sensors)
|
||||
# $_[1]: Linux kernel tree (like /usr/src/linux)
|
||||
sub gen_drivers_i2c_Config_in
|
||||
{
|
||||
my ($package_root,$kernel_root) = @_;
|
||||
my $kernel_file = "drivers/i2c/Config.in";
|
||||
my $package_file = "mkpatch/.temp";
|
||||
|
||||
open INPUT,"$kernel_root/$kernel_file"
|
||||
or die "Can't open `$kernel_root/$kernel_file'";
|
||||
open OUTPUT,">$package_root/mkpatch/.temp"
|
||||
or die "Can't open $package_root/$package_file";
|
||||
while(<INPUT>) {
|
||||
if (m@CONFIG_I2C_MAINBOARD@) {
|
||||
$_ = <INPUT> while not m@^ fi$@;
|
||||
$_ = <INPUT>;
|
||||
}
|
||||
if (m@CONFIG_I2C_CHARDEV@) {
|
||||
print OUTPUT << 'EOF'
|
||||
dep_bool 'I2C mainboard interfaces' CONFIG_I2C_SMBUS $CONFIG_I2C
|
||||
if [ "$CONFIG_I2C_MAINBOARD" = "y" ]; then
|
||||
dep_tristate ' Acer Labs ALI 1533 and 1543C' CONFIG_I2C_ALI5X3 $CONFIG_I2C_MAINBOARD
|
||||
dep_tristate ' Apple Hydra Mac I/O' CONFIG_I2C_HYDRA $CONFIG_I2C_MAINBOARD
|
||||
dep_tristate ' Intel 82371AB PIIX4(E)' CONFIG_I2C_PIIX4 $CONFIG_I2C_MAINBOARD
|
||||
dep_tristate ' VIA Technologies, Inc. VT82C586B' CONFIG_I2C_VIA $CONFIG_I2C_MAINBOARD
|
||||
fi
|
||||
|
||||
EOF
|
||||
}
|
||||
print OUTPUT;
|
||||
}
|
||||
close INPUT;
|
||||
close OUTPUT;
|
||||
print_diff $package_root,$kernel_root,$kernel_file,$package_file;
|
||||
}
|
||||
|
||||
# $_[0]: sensors package root (like /tmp/sensors)
|
||||
# $_[1]: Linux kernel tree (like /usr/src/linux)
|
||||
sub gen_drivers_i2c_Makefile
|
||||
{
|
||||
my ($package_root,$kernel_root) = @_;
|
||||
my $kernel_file = "drivers/i2c/Makefile";
|
||||
my $package_file = "mkpatch/.temp";
|
||||
|
||||
open INPUT,"$kernel_root/$kernel_file"
|
||||
or die "Can't open `$kernel_root/$kernel_file'";
|
||||
open OUTPUT,">$package_root/mkpatch/.temp"
|
||||
or die "Can't open $package_root/$package_file";
|
||||
while(<INPUT>) {
|
||||
while (m@CONFIG_I2C_ALI5X4@ or m@CONFIG_I2C_HYDRA@ or m@CONFIG_I2C_PIIX$@ or
|
||||
m@CONFIG_I2C_VIA@) {
|
||||
$_ = <INPUT> while not m@^endif@;
|
||||
$_ = <INPUT>;
|
||||
$_ = <INPUT> if m@^$@;
|
||||
}
|
||||
if (m@Rules.make@) {
|
||||
print OUTPUT << 'EOF'
|
||||
ifeq ($(CONFIG_I2C_ALI5X3),y)
|
||||
L_OBJS += i2c-ali5x3.c
|
||||
else
|
||||
ifeq ($(CONFIG_I2C_ALI5X3),m)
|
||||
M_OBJS += i2c-ali5x3.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_I2C_HYDRA),y)
|
||||
L_OBJS += i2c-hydra.c
|
||||
else
|
||||
ifeq ($(CONFIG_I2C_HYDRA),m)
|
||||
M_OBJS += i2c-hydra.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_I2C_PIIX4),y)
|
||||
L_OBJS += i2c-piix4.c
|
||||
else
|
||||
ifeq ($(CONFIG_I2C_PIIX4),m)
|
||||
M_OBJS += i2c-piix4.o
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(CONFIG_I2C_VIA),y)
|
||||
L_OBJS += i2c-via.c
|
||||
else
|
||||
ifeq ($(CONFIG_I2C_VIA),m)
|
||||
M_OBJS += i2c-via.o
|
||||
endif
|
||||
endif
|
||||
|
||||
EOF
|
||||
}
|
||||
print OUTPUT;
|
||||
}
|
||||
close INPUT;
|
||||
close OUTPUT;
|
||||
print_diff $package_root,$kernel_root,$kernel_file,$package_file;
|
||||
}
|
||||
|
||||
|
||||
|
||||
sub main
|
||||
{
|
||||
my ($package_root,$kernel_root,%files,%includes,$package_file,$kernel_file);
|
||||
my ($diff_command,$dummy,$data0,$data1,$sedscript);
|
||||
my ($diff_command,$dummy,$data0,$data1,$sedscript,$version_string);
|
||||
|
||||
# --> Read the command-lineo
|
||||
$package_root = $ARGV[0];
|
||||
@@ -245,8 +340,14 @@ sub main
|
||||
}
|
||||
close INPUT;
|
||||
|
||||
# --> Read "version.h"
|
||||
open INPUT, "$package_root/version.h"
|
||||
or die "Can't open `$package_root/version.h'";
|
||||
$version_string .= $_ while <INPUT>;
|
||||
close INPUT;
|
||||
|
||||
# --> Start generating
|
||||
foreach $package_file (keys %files) {
|
||||
foreach $package_file (sort keys %files) {
|
||||
$kernel_file = $files{$package_file};
|
||||
$diff_command = "diff -u2 ";
|
||||
if ( -f "$kernel_root/$kernel_file") {
|
||||
@@ -263,7 +364,151 @@ sub main
|
||||
|
||||
while (<INPUT>) {
|
||||
eval $sedscript;
|
||||
print;
|
||||
if (m@#\s*include\s*"version.h"@) {
|
||||
print $version_string;
|
||||
} elsif (m@#\s*include\s*"compat.h"@) {
|
||||
print << 'EOF';
|
||||
|
||||
/* --> COMPATIBILITY SECTION FOR OLD (2.0, 2.1) KERNELS */
|
||||
|
||||
#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 */
|
||||
|
||||
EOF
|
||||
if (`grep KERNEL_VERSION "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#include <linux/version.h>
|
||||
#ifndef KERNEL_VERSION
|
||||
#define KERNEL_VERSION(a,b,c) (((a) << 16) | ((b) << 8) | (c))
|
||||
#endif
|
||||
|
||||
EOF
|
||||
}
|
||||
if (`grep 'copy_from_user\|copy_to_user\|get_user_data' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
/* 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
|
||||
|
||||
EOF
|
||||
}
|
||||
if (`grep 'schedule_timeout' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
/* 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
|
||||
|
||||
EOF
|
||||
}
|
||||
if (`grep 'pci_' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
/* 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_word(device,com,res)
|
||||
#endif
|
||||
|
||||
EOF
|
||||
}
|
||||
if (`grep 'ioremap\|iounmap' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
/* I hope this is always correct, even for the PPC, but I really think so.
|
||||
And yes, the kernel version is exactly correct */
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,1,0))
|
||||
#include <linux/mm.h>
|
||||
#define ioremap vremap
|
||||
#define iounmap vfree
|
||||
#endif
|
||||
|
||||
EOF
|
||||
}
|
||||
if (`grep 'init_MUTEX' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,3,1))
|
||||
#define init_MUTEX(s) do { *(s) = MUTEX; } while(0)
|
||||
#endif
|
||||
EOF
|
||||
|
||||
}
|
||||
if (`grep 'PCI_DEVICE_ID_VIA_82C586_3' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,34))
|
||||
#define PCI_DEVICE_ID_VIA_82C586_3 0x3040
|
||||
#endif
|
||||
EOF
|
||||
|
||||
}
|
||||
if (`grep 'PCI_DEVICE_ID_AL_M7101' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,34))
|
||||
#define PCI_DEVICE_ID_AL_M7101 0x7101
|
||||
#endif
|
||||
EOF
|
||||
}
|
||||
if (`grep 'PCI_DEVICE_ID_INTEL_82371AB_3' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,31))
|
||||
#define PCI_DEVICE_ID_INTEL_82371AB_3 0x7113
|
||||
#endif
|
||||
EOF
|
||||
}
|
||||
if (`grep 'PCI_VENDOR_ID_APPLE' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,31))
|
||||
#define PCI_VENDOR_ID_APPLE 0x106b
|
||||
#endif
|
||||
EOF
|
||||
}
|
||||
if (`grep 'PCI_DEVICE_ID_APPLE_HYDRA' "$package_root/$package_file"`) {
|
||||
print << 'EOF';
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,0,31))
|
||||
#define PCI_DEVICE_ID_APPLE_HYDRA 0x000e
|
||||
#endif
|
||||
EOF
|
||||
}
|
||||
print << 'EOF';
|
||||
/* --> END OF COMPATIBILITY SECTION */
|
||||
|
||||
EOF
|
||||
} else {
|
||||
print;
|
||||
}
|
||||
}
|
||||
close INPUT;
|
||||
}
|
||||
@@ -271,7 +516,9 @@ sub main
|
||||
gen_Makefile $package_root, $kernel_root;
|
||||
gen_drivers_Makefile $package_root, $kernel_root;
|
||||
gen_drivers_char_Config_in $package_root, $kernel_root;
|
||||
# gen_drivers_char_mem_c $package_root, $kernel_root;
|
||||
gen_drivers_char_mem_c $package_root, $kernel_root;
|
||||
gen_drivers_i2c_Config_in $package_root, $kernel_root;
|
||||
gen_drivers_i2c_Makefile $package_root, $kernel_root;
|
||||
}
|
||||
|
||||
main;
|
||||
|
||||
Reference in new issue
Block a user