Commit 244dc4e5 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.infradead.org/users/dwmw2/random-2.6

* git://git.infradead.org/users/dwmw2/random-2.6:
  Fix autoloading of MacBook Pro backlight driver.
  Automatic MODULE_ALIAS() for DMI match tables.
  Remove asm/a.out.h files for all architectures without a.out support.
  Introduce HAVE_AOUT symbol to remove hard-coded arch list for BINFMT_AOUT
  Remove redundant CONFIG_ARCH_SUPPORTS_AOUT
  S390: Update comments about why we don't use <asm-generic/statfs.h>
  SPARC: Use <asm-generic/statfs.h>
  PowerPC: Use <asm-generic/statfs.h>
  PARISC: Use <asm-generic/statfs.h>
  x86_64: Use <asm-generic/statfs.h>
  IA64: Use <asm-generic/statfs.h>
  ARM: Use <asm-generic/statfs.h>
  Make <asm-generic/statfs.h> suitable for 64-bit platforms.
  Define and use PCI_DEVICE_ID_MARVELL_88ALP01_CCIC for CAFÉ camera driver
  [MTD] [NAND] Define and use PCI_DEVICE_ID_MARVELL_88ALP01_NAND for CAFÉ
  Use PCI_DEVICE_ID_88ALP01 for CAFÉ chip, rather than PCI_DEVICE_ID_CAFE.
  EFS: Don't set f_fsid in statfs().
parents e7f2f991 e758936e
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
config ALPHA config ALPHA
bool bool
default y default y
select HAVE_AOUT
select HAVE_IDE select HAVE_IDE
select HAVE_OPROFILE select HAVE_OPROFILE
help help
...@@ -68,9 +69,6 @@ config AUTO_IRQ_AFFINITY ...@@ -68,9 +69,6 @@ config AUTO_IRQ_AFFINITY
depends on SMP depends on SMP
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
source "init/Kconfig" source "init/Kconfig"
......
#ifndef _ALPHA_STATFS_H #ifndef _ALPHA_STATFS_H
#define _ALPHA_STATFS_H #define _ALPHA_STATFS_H
/* Alpha is the only 64-bit platform with 32-bit statfs. And doesn't
even seem to implement statfs64 */
#define __statfs_word __u32
#include <asm-generic/statfs.h> #include <asm-generic/statfs.h>
#endif #endif
...@@ -8,6 +8,7 @@ mainmenu "Linux Kernel Configuration" ...@@ -8,6 +8,7 @@ mainmenu "Linux Kernel Configuration"
config ARM config ARM
bool bool
default y default y
select HAVE_AOUT
select HAVE_IDE select HAVE_IDE
select RTC_LIB select RTC_LIB
select SYS_SUPPORTS_APM_EMULATION select SYS_SUPPORTS_APM_EMULATION
...@@ -140,9 +141,6 @@ config GENERIC_CALIBRATE_DELAY ...@@ -140,9 +141,6 @@ config GENERIC_CALIBRATE_DELAY
bool bool
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
config ARCH_MAY_HAVE_PC_FDC config ARCH_MAY_HAVE_PC_FDC
bool bool
......
#ifndef _ASMARM_STATFS_H #ifndef _ASMARM_STATFS_H
#define _ASMARM_STATFS_H #define _ASMARM_STATFS_H
#ifndef __KERNEL_STRICT_NAMES
# include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
struct statfs {
__u32 f_type;
__u32 f_bsize;
__u32 f_blocks;
__u32 f_bfree;
__u32 f_bavail;
__u32 f_files;
__u32 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
};
/* /*
* With EABI there is 4 bytes of padding added to this structure. * With EABI there is 4 bytes of padding added to this structure.
* Let's pack it so the padding goes away to simplify dual ABI support. * Let's pack it so the padding goes away to simplify dual ABI support.
* Note that user space does NOT have to pack this structure. * Note that user space does NOT have to pack this structure.
*/ */
struct statfs64 { #define ARCH_PACK_STATFS64 __attribute__((packed,aligned(4)))
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
} __attribute__ ((packed,aligned(4)));
#include <asm-generic/statfs.h>
#endif #endif
#ifndef __ASM_AVR32_A_OUT_H
#define __ASM_AVR32_A_OUT_H
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* __ASM_AVR32_A_OUT_H */
#ifndef __BFIN_A_OUT_H__
#define __BFIN_A_OUT_H__
struct exec {
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* __BFIN_A_OUT_H__ */
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
#include <sys/sysmacros.h> #include <sys/sysmacros.h>
#include <unistd.h> /* contains read/write */ #include <unistd.h> /* contains read/write */
#include <fcntl.h> #include <fcntl.h>
#include <linux/a.out.h>
#include <errno.h> #include <errno.h>
#define MINIX_HEADER 32 #define MINIX_HEADER 32
......
...@@ -66,9 +66,6 @@ config TIME_LOW_RES ...@@ -66,9 +66,6 @@ config TIME_LOW_RES
bool bool
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
config NO_IOPORT config NO_IOPORT
def_bool y def_bool y
......
#ifndef __H8300_A_OUT_H__
#define __H8300_A_OUT_H__
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* __H8300_A_OUT_H__ */
...@@ -34,7 +34,6 @@ ...@@ -34,7 +34,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/reboot.h> #include <linux/reboot.h>
#include <linux/fs.h> #include <linux/fs.h>
......
#ifndef _ASM_IA64_A_OUT_H
#define _ASM_IA64_A_OUT_H
/*
* No a.out format has been (or should be) defined so this file is
* just a dummy that allows us to get binfmt_elf compiled. It
* probably would be better to clean up binfmt_elf.c so it does not
* necessarily depend on there being a.out support.
*
* Modified 1998-2002
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co.
*/
#include <linux/types.h>
struct exec {
unsigned long a_info;
unsigned long a_text;
unsigned long a_data;
unsigned long a_bss;
unsigned long a_entry;
};
#define N_TXTADDR(x) 0
#define N_DATADDR(x) 0
#define N_BSSADDR(x) 0
#define N_DRSIZE(x) 0
#define N_TRSIZE(x) 0
#define N_SYMSIZE(x) 0
#define N_TXTOFF(x) 0
#endif /* _ASM_IA64_A_OUT_H */
...@@ -8,55 +8,13 @@ ...@@ -8,55 +8,13 @@
* David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co * David Mosberger-Tang <davidm@hpl.hp.com>, Hewlett-Packard Co
*/ */
#ifndef __KERNEL_STRICT_NAMES
# include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
/* /*
* This is ugly --- we're already 64-bit, so just duplicate the definitions * We need compat_statfs64 to be packed, because the i386 ABI won't
* add padding at the end to bring it to a multiple of 8 bytes, but
* the IA64 ABI will.
*/ */
struct statfs { #define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4)))
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct statfs64 {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct compat_statfs64 { #include <asm-generic/statfs.h>
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
} __attribute__((packed));
#endif /* _ASM_IA64_STATFS_H */ #endif /* _ASM_IA64_STATFS_H */
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/kexec.h> #include <linux/kexec.h>
#include <asm/a.out.h>
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/ia32.h> #include <asm/ia32.h>
#include <asm/io.h> #include <asm/io.h>
......
...@@ -36,9 +36,6 @@ config NO_IOPORT ...@@ -36,9 +36,6 @@ config NO_IOPORT
config NO_DMA config NO_DMA
def_bool y def_bool y
config ARCH_SUPPORTS_AOUT
def_bool y
config HZ config HZ
int int
default 100 default 100
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
config M68K config M68K
bool bool
default y default y
select HAVE_AOUT
select HAVE_IDE select HAVE_IDE
config MMU config MMU
...@@ -53,9 +54,6 @@ config NO_IOPORT ...@@ -53,9 +54,6 @@ config NO_IOPORT
config NO_DMA config NO_DMA
def_bool SUN3 def_bool SUN3
config ARCH_SUPPORTS_AOUT
def_bool y
config HZ config HZ
int int
default 100 default 100
......
...@@ -73,9 +73,6 @@ config GENERIC_CLOCKEVENTS ...@@ -73,9 +73,6 @@ config GENERIC_CLOCKEVENTS
config NO_IOPORT config NO_IOPORT
def_bool y def_bool y
config ARCH_SUPPORTS_AOUT
def_bool y
source "init/Kconfig" source "init/Kconfig"
menu "Processor type and features" menu "Processor type and features"
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/reboot.h> #include <linux/reboot.h>
#include <linux/fs.h> #include <linux/fs.h>
......
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/module.h> #include <linux/module.h>
#include <linux/types.h> #include <linux/types.h>
#include <linux/a.out.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/linkage.h> #include <linux/linkage.h>
......
/*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 1994 - 1999, 2003 by Ralf Baechle
*/
#ifndef _ASM_A_OUT_H
#define _ASM_A_OUT_H
#ifdef __KERNEL__
#endif
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for
file, in bytes */
unsigned a_syms; /* length of symbol table data in file,
in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in
bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* _ASM_A_OUT_H */
...@@ -22,7 +22,6 @@ ...@@ -22,7 +22,6 @@
#include <linux/personality.h> #include <linux/personality.h>
#include <linux/sys.h> #include <linux/sys.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/completion.h> #include <linux/completion.h>
#include <linux/kallsyms.h> #include <linux/kallsyms.h>
......
...@@ -7,7 +7,6 @@ ...@@ -7,7 +7,6 @@
* Copyright (C) 1999, 2000 Silicon Graphics, Inc. * Copyright (C) 1999, 2000 Silicon Graphics, Inc.
* Copyright (C) 2001 MIPS Technologies, Inc. * Copyright (C) 2001 MIPS Technologies, Inc.
*/ */
#include <linux/a.out.h>
#include <linux/capability.h> #include <linux/capability.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/linkage.h> #include <linux/linkage.h>
......
...@@ -53,9 +53,6 @@ config QUICKLIST ...@@ -53,9 +53,6 @@ config QUICKLIST
config ARCH_HAS_ILOG2_U32 config ARCH_HAS_ILOG2_U32
def_bool y def_bool y
config ARCH_SUPPORTS_AOUT
def_bool n
# Use the generic interrupt handling code in kernel/irq/ # Use the generic interrupt handling code in kernel/irq/
config GENERIC_HARDIRQS config GENERIC_HARDIRQS
def_bool y def_bool y
......
...@@ -76,9 +76,6 @@ config IRQ_PER_CPU ...@@ -76,9 +76,6 @@ config IRQ_PER_CPU
bool bool
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
# unless you want to implement ACPI on PA-RISC ... ;-) # unless you want to implement ACPI on PA-RISC ... ;-)
config PM config PM
bool bool
......
#ifndef _ASM_POWERPC_A_OUT_H
#define _ASM_POWERPC_A_OUT_H
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* _ASM_POWERPC_A_OUT_H */
#ifndef _ASM_POWERPC_STATFS_H #ifndef _ASM_POWERPC_STATFS_H
#define _ASM_POWERPC_STATFS_H #define _ASM_POWERPC_STATFS_H
/* For ppc32 we just use the generic definitions, not so simple on ppc64 */
#ifndef __powerpc64__
#include <asm-generic/statfs.h> #include <asm-generic/statfs.h>
#else
#ifndef __KERNEL_STRICT_NAMES
#include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
/*
* We're already 64-bit, so duplicate the definition
*/
struct statfs {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct statfs64 {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct compat_statfs64 {
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
};
#endif /* ! __powerpc64__ */
#endif #endif
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/init.h> #include <linux/init.h>
#include <linux/module.h> #include <linux/module.h>
......
...@@ -17,7 +17,6 @@ ...@@ -17,7 +17,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h> #include <linux/tty.h>
#include <linux/major.h> #include <linux/major.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
......
...@@ -23,7 +23,6 @@ ...@@ -23,7 +23,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h> #include <linux/tty.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/delay.h> #include <linux/delay.h>
......
...@@ -33,7 +33,6 @@ ...@@ -33,7 +33,6 @@
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h> #include <linux/tty.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/delay.h> #include <linux/delay.h>
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include <linux/unistd.h> #include <linux/unistd.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/user.h> #include <linux/user.h>
#include <linux/a.out.h>
#include <linux/tty.h> #include <linux/tty.h>
#include <linux/major.h> #include <linux/major.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
......
...@@ -12,19 +12,16 @@ ...@@ -12,19 +12,16 @@
#ifndef __s390x__ #ifndef __s390x__
#include <asm-generic/statfs.h> #include <asm-generic/statfs.h>
#else #else
/*
* We can't use <asm-generic/statfs.h> because in 64-bit mode
* we mix ints of different sizes in our struct statfs.
*/
#ifndef __KERNEL_STRICT_NAMES #ifndef __KERNEL_STRICT_NAMES
#include <linux/types.h> #include <linux/types.h>
typedef __kernel_fsid_t fsid_t; typedef __kernel_fsid_t fsid_t;
#endif #endif
/*
* This is ugly -- we're already 64-bit clean, so just duplicate the
* definitions.
*/
struct statfs { struct statfs {
int f_type; int f_type;
int f_bsize; int f_bsize;
......
...@@ -15,8 +15,6 @@ header-y += signal_32.h ...@@ -15,8 +15,6 @@ header-y += signal_32.h
header-y += signal_64.h header-y += signal_64.h
header-y += stat_32.h header-y += stat_32.h
header-y += stat_64.h header-y += stat_64.h
header-y += statfs_32.h
header-y += statfs_64.h
header-y += unistd_32.h header-y += unistd_32.h
header-y += unistd_64.h header-y += unistd_64.h
......
#ifndef ___ASM_SPARC_STATFS_H #ifndef ___ASM_SPARC_STATFS_H
#define ___ASM_SPARC_STATFS_H #define ___ASM_SPARC_STATFS_H
#if defined(__sparc__) && defined(__arch64__)
#include <asm/statfs_64.h> #include <asm-generic/statfs.h>
#else
#include <asm/statfs_32.h>
#endif
#endif #endif
#ifndef _SPARC_STATFS_H
#define _SPARC_STATFS_H
#include <asm-generic/statfs.h>
#endif
#ifndef _SPARC64_STATFS_H
#define _SPARC64_STATFS_H
#ifndef __KERNEL_STRICT_NAMES
#include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
struct statfs {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct statfs64 {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct compat_statfs64 {
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
};
#endif
...@@ -11,6 +11,7 @@ config UML_X86 ...@@ -11,6 +11,7 @@ config UML_X86
config X86_32 config X86_32
bool bool
default y default y
select HAVE_AOUT
config RWSEM_XCHGADD_ALGORITHM config RWSEM_XCHGADD_ALGORITHM
def_bool y def_bool y
...@@ -42,6 +43,3 @@ config ARCH_REUSE_HOST_VSYSCALL_AREA ...@@ -42,6 +43,3 @@ config ARCH_REUSE_HOST_VSYSCALL_AREA
config GENERIC_HWEIGHT config GENERIC_HWEIGHT
bool bool
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
...@@ -37,6 +37,3 @@ config SMP_BROKEN ...@@ -37,6 +37,3 @@ config SMP_BROKEN
config GENERIC_HWEIGHT config GENERIC_HWEIGHT
bool bool
default y default y
config ARCH_SUPPORTS_AOUT
def_bool y
...@@ -18,6 +18,7 @@ config X86_64 ...@@ -18,6 +18,7 @@ config X86_64
### Arch settings ### Arch settings
config X86 config X86
def_bool y def_bool y
select HAVE_AOUT if X86_32
select HAVE_UNSTABLE_SCHED_CLOCK select HAVE_UNSTABLE_SCHED_CLOCK
select HAVE_IDE select HAVE_IDE
select HAVE_OPROFILE select HAVE_OPROFILE
...@@ -152,9 +153,6 @@ config AUDIT_ARCH ...@@ -152,9 +153,6 @@ config AUDIT_ARCH
bool bool
default X86_64 default X86_64
config ARCH_SUPPORTS_AOUT
def_bool y
config ARCH_SUPPORTS_OPTIMIZED_INLINING config ARCH_SUPPORTS_OPTIMIZED_INLINING
def_bool y def_bool y
...@@ -1885,7 +1883,7 @@ config IA32_EMULATION ...@@ -1885,7 +1883,7 @@ config IA32_EMULATION
config IA32_AOUT config IA32_AOUT
tristate "IA32 a.out support" tristate "IA32 a.out support"
depends on IA32_EMULATION && ARCH_SUPPORTS_AOUT depends on IA32_EMULATION
help help
Support old a.out binaries in the 32bit emulation. Support old a.out binaries in the 32bit emulation.
......
...@@ -2092,15 +2092,8 @@ static int cafe_pci_probe(struct pci_dev *pdev, ...@@ -2092,15 +2092,8 @@ static int cafe_pci_probe(struct pci_dev *pdev,
const struct pci_device_id *id) const struct pci_device_id *id)
{ {
int ret; int ret;
u16 classword;
struct cafe_camera *cam; struct cafe_camera *cam;
/*
* Make sure we have a camera here - we'll get calls for
* the other cafe devices as well.
*/
pci_read_config_word(pdev, PCI_CLASS_DEVICE, &classword);
if (classword != PCI_CLASS_MULTIMEDIA_VIDEO)
return -ENODEV;
/* /*
* Start putting together one of our big camera structures. * Start putting together one of our big camera structures.
*/ */
...@@ -2288,8 +2281,8 @@ static int cafe_pci_resume(struct pci_dev *pdev) ...@@ -2288,8 +2281,8 @@ static int cafe_pci_resume(struct pci_dev *pdev)
static struct pci_device_id cafe_ids[] = { static struct pci_device_id cafe_ids[] = {
{ PCI_DEVICE(0x11ab, 0x4100) }, /* Eventual real ID */ { PCI_DEVICE(PCI_VENDOR_ID_MARVELL,
{ PCI_DEVICE(0x11ab, 0x4102) }, /* Really eventual real ID */ PCI_DEVICE_ID_MARVELL_88ALP01_CCIC) },
{ 0, } { 0, }
}; };
......
...@@ -327,7 +327,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = { ...@@ -327,7 +327,7 @@ static const struct pci_device_id pci_ids[] __devinitdata = {
{ {
.vendor = PCI_VENDOR_ID_MARVELL, .vendor = PCI_VENDOR_ID_MARVELL,
.device = PCI_DEVICE_ID_MARVELL_CAFE_SD, .device = PCI_DEVICE_ID_MARVELL_88ALP01_SD,
.subvendor = PCI_ANY_ID, .subvendor = PCI_ANY_ID,
.subdevice = PCI_ANY_ID, .subdevice = PCI_ANY_ID,
.driver_data = (kernel_ulong_t)&sdhci_cafe, .driver_data = (kernel_ulong_t)&sdhci_cafe,
......
/* /*
* Driver for One Laptop Per Child ‘CAFÉ’ controller, aka Marvell 88ALP01 * Driver for One Laptop Per Child ‘CAFÉ’ controller, aka Marvell 88ALP01
* *
* The data sheet for this device can be found at:
* http://www.marvell.com/products/pcconn/88ALP01.jsp
*
* Copyright © 2006 Red Hat, Inc. * Copyright © 2006 Red Hat, Inc.
* Copyright © 2006 David Woodhouse <dwmw2@infradead.org> * Copyright © 2006 David Woodhouse <dwmw2@infradead.org>
*/ */
...@@ -842,7 +845,8 @@ static void __devexit cafe_nand_remove(struct pci_dev *pdev) ...@@ -842,7 +845,8 @@ static void __devexit cafe_nand_remove(struct pci_dev *pdev)
} }
static struct pci_device_id cafe_nand_tbl[] = { static struct pci_device_id cafe_nand_tbl[] = {
{ 0x11ab, 0x4100, PCI_ANY_ID, PCI_ANY_ID }, { PCI_VENDOR_ID_MARVELL, PCI_DEVICE_ID_MARVELL_88ALP01_NAND,
PCI_ANY_ID, PCI_ANY_ID },
{ } { }
}; };
......
...@@ -111,6 +111,4 @@ module_exit(mbp_exit); ...@@ -111,6 +111,4 @@ module_exit(mbp_exit);
MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>"); MODULE_AUTHOR("Matthew Garrett <mjg@redhat.com>");
MODULE_DESCRIPTION("Nvidia-based Macbook Pro Backlight Driver"); MODULE_DESCRIPTION("Nvidia-based Macbook Pro Backlight Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("svnAppleInc.:pnMacBookPro3,1"); MODULE_DEVICE_TABLE(dmi, mbp_device_table);
MODULE_ALIAS("svnAppleInc.:pnMacBookPro3,2");
MODULE_ALIAS("svnAppleInc.:pnMacBookPro4,1");
...@@ -59,10 +59,12 @@ config BINFMT_SHARED_FLAT ...@@ -59,10 +59,12 @@ config BINFMT_SHARED_FLAT
help help
Support FLAT shared libraries Support FLAT shared libraries
config HAVE_AOUT
def_bool n
config BINFMT_AOUT config BINFMT_AOUT
tristate "Kernel support for a.out and ECOFF binaries" tristate "Kernel support for a.out and ECOFF binaries"
depends on ARCH_SUPPORTS_AOUT && \ depends on HAVE_AOUT
(X86_32 || ALPHA || ARM || M68K)
---help--- ---help---
A.out (Assembler.OUTput) is a set of formats for libraries and A.out (Assembler.OUTput) is a set of formats for libraries and
executables used in the earliest versions of UNIX. Linux used executables used in the earliest versions of UNIX. Linux used
......
...@@ -341,8 +341,6 @@ static int efs_statfs(struct dentry *dentry, struct kstatfs *buf) { ...@@ -341,8 +341,6 @@ static int efs_statfs(struct dentry *dentry, struct kstatfs *buf) {
sb->inode_blocks * sb->inode_blocks *
(EFS_BLOCKSIZE / sizeof(struct efs_dinode)); (EFS_BLOCKSIZE / sizeof(struct efs_dinode));
buf->f_ffree = sb->inode_free; /* free inodes */ buf->f_ffree = sb->inode_free; /* free inodes */
buf->f_fsid.val[0] = (sb->fs_magic >> 16) & 0xffff; /* fs ID */
buf->f_fsid.val[1] = sb->fs_magic & 0xffff; /* fs ID */
buf->f_namelen = EFS_MAXNAMELEN; /* max filename length */ buf->f_namelen = EFS_MAXNAMELEN; /* max filename length */
return 0; return 0;
......
#ifndef __CRIS_A_OUT_H__
#define __CRIS_A_OUT_H__
/* we don't support a.out binaries on Linux/CRIS anyway, so this is
* not really used but still needed because binfmt_elf.c for some reason
* wants to know about a.out even if there is no interpreter available...
*/
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif
...@@ -6,33 +6,64 @@ ...@@ -6,33 +6,64 @@
typedef __kernel_fsid_t fsid_t; typedef __kernel_fsid_t fsid_t;
#endif #endif
/*
* Most 64-bit platforms use 'long', while most 32-bit platforms use '__u32'.
* Yes, they differ in signedness as well as size.
* Special cases can override it for themselves -- except for S390x, which
* is just a little too special for us. And MIPS, which I'm not touching
* with a 10' pole.
*/
#ifndef __statfs_word
#if BITS_PER_LONG == 64
#define __statfs_word long
#else
#define __statfs_word __u32
#endif
#endif
struct statfs { struct statfs {
__u32 f_type; __statfs_word f_type;
__u32 f_bsize; __statfs_word f_bsize;
__u32 f_blocks; __statfs_word f_blocks;
__u32 f_bfree; __statfs_word f_bfree;
__u32 f_bavail; __statfs_word f_bavail;
__u32 f_files; __statfs_word f_files;
__u32 f_ffree; __statfs_word f_ffree;
__kernel_fsid_t f_fsid; __kernel_fsid_t f_fsid;
__u32 f_namelen; __statfs_word f_namelen;
__u32 f_frsize; __statfs_word f_frsize;
__u32 f_spare[5]; __statfs_word f_spare[5];
}; };
/*
* ARM needs to avoid the 32-bit padding at the end, for consistency
* between EABI and OABI
*/
#ifndef ARCH_PACK_STATFS64
#define ARCH_PACK_STATFS64
#endif
struct statfs64 { struct statfs64 {
__u32 f_type; __statfs_word f_type;
__u32 f_bsize; __statfs_word f_bsize;
__u64 f_blocks; __u64 f_blocks;
__u64 f_bfree; __u64 f_bfree;
__u64 f_bavail; __u64 f_bavail;
__u64 f_files; __u64 f_files;
__u64 f_ffree; __u64 f_ffree;
__kernel_fsid_t f_fsid; __kernel_fsid_t f_fsid;
__u32 f_namelen; __statfs_word f_namelen;
__u32 f_frsize; __statfs_word f_frsize;
__u32 f_spare[5]; __statfs_word f_spare[5];
}; } ARCH_PACK_STATFS64;
/*
* IA64 and x86_64 need to avoid the 32-bit padding at the end,
* to be compatible with the i386 ABI
*/
#ifndef ARCH_PACK_COMPAT_STATFS64
#define ARCH_PACK_COMPAT_STATFS64
#endif
struct compat_statfs64 { struct compat_statfs64 {
__u32 f_type; __u32 f_type;
...@@ -46,6 +77,6 @@ struct compat_statfs64 { ...@@ -46,6 +77,6 @@ struct compat_statfs64 {
__u32 f_namelen; __u32 f_namelen;
__u32 f_frsize; __u32 f_frsize;
__u32 f_spare[5]; __u32 f_spare[5];
}; } ARCH_PACK_COMPAT_STATFS64;
#endif #endif
#ifndef _ASM_M32R_A_OUT_H
#define _ASM_M32R_A_OUT_H
struct exec
{
unsigned long a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* _ASM_M32R_A_OUT_H */
#ifndef __PARISC_A_OUT_H__
#define __PARISC_A_OUT_H__
struct exec
{
unsigned int a_info; /* Use macros N_MAGIC, etc for access */
unsigned a_text; /* length of text, in bytes */
unsigned a_data; /* length of data, in bytes */
unsigned a_bss; /* length of uninitialized data area for file, in bytes */
unsigned a_syms; /* length of symbol table data in file, in bytes */
unsigned a_entry; /* start address */
unsigned a_trsize; /* length of relocation info for text, in bytes */
unsigned a_drsize; /* length of relocation info for data, in bytes */
};
#define N_TRSIZE(a) ((a).a_trsize)
#define N_DRSIZE(a) ((a).a_drsize)
#define N_SYMSIZE(a) ((a).a_syms)
#endif /* __A_OUT_GNU_H__ */
#ifndef _PARISC_STATFS_H #ifndef _PARISC_STATFS_H
#define _PARISC_STATFS_H #define _PARISC_STATFS_H
#ifndef __KERNEL_STRICT_NAMES #define __statfs_word long
#include <asm-generic/statfs.h>
#include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
/*
* It appears that PARISC could be 64 _or_ 32 bit.
* 64-bit fields must be explicitly 64-bit in statfs64.
*/
struct statfs {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct statfs64 {
long f_type;
long f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct compat_statfs64 {
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
};
#endif #endif
#ifndef ASM_X86__STATFS_H #ifndef ASM_X86__STATFS_H
#define ASM_X86__STATFS_H #define ASM_X86__STATFS_H
#ifdef __i386__
#include <asm-generic/statfs.h>
#else
#ifndef __KERNEL_STRICT_NAMES
#include <linux/types.h>
typedef __kernel_fsid_t fsid_t;
#endif
/* /*
* This is ugly -- we're already 64-bit clean, so just duplicate the * We need compat_statfs64 to be packed, because the i386 ABI won't
* definitions. * add padding at the end to bring it to a multiple of 8 bytes, but
* the x86_64 ABI will.
*/ */
struct statfs { #define ARCH_PACK_COMPAT_STATFS64 __attribute__((packed,aligned(4)))
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct statfs64 {
long f_type;
long f_bsize;
long f_blocks;
long f_bfree;
long f_bavail;
long f_files;
long f_ffree;
__kernel_fsid_t f_fsid;
long f_namelen;
long f_frsize;
long f_spare[5];
};
struct compat_statfs64 { #include <asm-generic/statfs.h>
__u32 f_type;
__u32 f_bsize;
__u64 f_blocks;
__u64 f_bfree;
__u64 f_bavail;
__u64 f_files;
__u64 f_ffree;
__kernel_fsid_t f_fsid;
__u32 f_namelen;
__u32 f_frsize;
__u32 f_spare[5];
} __attribute__((packed));
#endif /* !__i386__ */
#endif /* ASM_X86__STATFS_H */ #endif /* ASM_X86__STATFS_H */
/*
* include/asm-xtensa/a.out.h
*
* Dummy a.out file. Xtensa does not support the a.out format, but the kernel
* seems to depend on it.
*
* This file is subject to the terms and conditions of the GNU General Public
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
* Copyright (C) 2001 - 2005 Tensilica Inc.
*/
#ifndef _XTENSA_A_OUT_H
#define _XTENSA_A_OUT_H
struct exec
{
unsigned long a_info;
unsigned a_text;
unsigned a_data;
unsigned a_bss;
unsigned a_syms;
unsigned a_entry;
unsigned a_trsize;
unsigned a_drsize;
};
#endif /* _XTENSA_A_OUT_H */
...@@ -2,29 +2,9 @@ ...@@ -2,29 +2,9 @@
#define __DMI_H__ #define __DMI_H__
#include <linux/list.h> #include <linux/list.h>
#include <linux/mod_devicetable.h>
enum dmi_field { /* enum dmi_field is in mod_devicetable.h */
DMI_NONE,
DMI_BIOS_VENDOR,
DMI_BIOS_VERSION,
DMI_BIOS_DATE,
DMI_SYS_VENDOR,
DMI_PRODUCT_NAME,
DMI_PRODUCT_VERSION,
DMI_PRODUCT_SERIAL,
DMI_PRODUCT_UUID,
DMI_BOARD_VENDOR,
DMI_BOARD_NAME,
DMI_BOARD_VERSION,
DMI_BOARD_SERIAL,
DMI_BOARD_ASSET_TAG,
DMI_CHASSIS_VENDOR,
DMI_CHASSIS_TYPE,
DMI_CHASSIS_VERSION,
DMI_CHASSIS_SERIAL,
DMI_CHASSIS_ASSET_TAG,
DMI_STRING_MAX,
};
enum dmi_device_type { enum dmi_device_type {
DMI_DEV_TYPE_ANY = 0, DMI_DEV_TYPE_ANY = 0,
...@@ -48,23 +28,6 @@ struct dmi_header { ...@@ -48,23 +28,6 @@ struct dmi_header {
u16 handle; u16 handle;
}; };
/*
* DMI callbacks for problem boards
*/
struct dmi_strmatch {
u8 slot;
char *substr;
};
struct dmi_system_id {
int (*callback)(const struct dmi_system_id *);
const char *ident;
struct dmi_strmatch matches[4];
void *driver_data;
};
#define DMI_MATCH(a, b) { a, b }
struct dmi_device { struct dmi_device {
struct list_head list; struct list_head list;
int type; int type;
......
...@@ -388,5 +388,52 @@ struct i2c_device_id { ...@@ -388,5 +388,52 @@ struct i2c_device_id {
__attribute__((aligned(sizeof(kernel_ulong_t)))); __attribute__((aligned(sizeof(kernel_ulong_t))));
}; };
/* dmi */
enum dmi_field {
DMI_NONE,
DMI_BIOS_VENDOR,
DMI_BIOS_VERSION,
DMI_BIOS_DATE,
DMI_SYS_VENDOR,
DMI_PRODUCT_NAME,
DMI_PRODUCT_VERSION,
DMI_PRODUCT_SERIAL,
DMI_PRODUCT_UUID,
DMI_BOARD_VENDOR,
DMI_BOARD_NAME,
DMI_BOARD_VERSION,
DMI_BOARD_SERIAL,
DMI_BOARD_ASSET_TAG,
DMI_CHASSIS_VENDOR,
DMI_CHASSIS_TYPE,
DMI_CHASSIS_VERSION,
DMI_CHASSIS_SERIAL,
DMI_CHASSIS_ASSET_TAG,
DMI_STRING_MAX,
};
struct dmi_strmatch {
unsigned char slot;
char substr[79];
};
#ifndef __KERNEL__
struct dmi_system_id {
kernel_ulong_t callback;
kernel_ulong_t ident;
struct dmi_strmatch matches[4];
kernel_ulong_t driver_data
__attribute__((aligned(sizeof(kernel_ulong_t))));
};
#else
struct dmi_system_id {
int (*callback)(const struct dmi_system_id *);
const char *ident;
struct dmi_strmatch matches[4];
void *driver_data;
};
#endif
#define DMI_MATCH(a, b) { a, b }
#endif /* LINUX_MOD_DEVICETABLE_H */ #endif /* LINUX_MOD_DEVICETABLE_H */
...@@ -1533,7 +1533,9 @@ ...@@ -1533,7 +1533,9 @@
#define PCI_DEVICE_ID_MARVELL_GT64260 0x6430 #define PCI_DEVICE_ID_MARVELL_GT64260 0x6430
#define PCI_DEVICE_ID_MARVELL_MV64360 0x6460 #define PCI_DEVICE_ID_MARVELL_MV64360 0x6460
#define PCI_DEVICE_ID_MARVELL_MV64460 0x6480 #define PCI_DEVICE_ID_MARVELL_MV64460 0x6480
#define PCI_DEVICE_ID_MARVELL_CAFE_SD 0x4101 #define PCI_DEVICE_ID_MARVELL_88ALP01_NAND 0x4100
#define PCI_DEVICE_ID_MARVELL_88ALP01_SD 0x4101
#define PCI_DEVICE_ID_MARVELL_88ALP01_CCIC 0x4102
#define PCI_VENDOR_ID_V3 0x11b0 #define PCI_VENDOR_ID_V3 0x11b0
#define PCI_DEVICE_ID_V3_V960 0x0001 #define PCI_DEVICE_ID_V3_V960 0x0001
......
...@@ -629,6 +629,59 @@ static int do_i2c_entry(const char *filename, struct i2c_device_id *id, ...@@ -629,6 +629,59 @@ static int do_i2c_entry(const char *filename, struct i2c_device_id *id,
return 1; return 1;
} }
static const struct dmifield {
const char *prefix;
int field;
} dmi_fields[] = {
{ "bvn", DMI_BIOS_VENDOR },
{ "bvr", DMI_BIOS_VERSION },
{ "bd", DMI_BIOS_DATE },
{ "svn", DMI_SYS_VENDOR },
{ "pn", DMI_PRODUCT_NAME },
{ "pvr", DMI_PRODUCT_VERSION },
{ "rvn", DMI_BOARD_VENDOR },
{ "rn", DMI_BOARD_NAME },
{ "rvr", DMI_BOARD_VERSION },
{ "cvn", DMI_CHASSIS_VENDOR },
{ "ct", DMI_CHASSIS_TYPE },
{ "cvr", DMI_CHASSIS_VERSION },
{ NULL, DMI_NONE }
};
static void dmi_ascii_filter(char *d, const char *s)
{
/* Filter out characters we don't want to see in the modalias string */
for (; *s; s++)
if (*s > ' ' && *s < 127 && *s != ':')
*(d++) = *s;
*d = 0;
}
static int do_dmi_entry(const char *filename, struct dmi_system_id *id,
char *alias)
{
int i, j;
sprintf(alias, "dmi*");
for (i = 0; i < ARRAY_SIZE(dmi_fields); i++) {
for (j = 0; j < 4; j++) {
if (id->matches[j].slot &&
id->matches[j].slot == dmi_fields[i].field) {
sprintf(alias + strlen(alias), ":%s*",
dmi_fields[i].prefix);
dmi_ascii_filter(alias + strlen(alias),
id->matches[j].substr);
strcat(alias, "*");
}
}
}
strcat(alias, ":");
return 1;
}
/* Ignore any prefix, eg. some architectures prepend _ */ /* Ignore any prefix, eg. some architectures prepend _ */
static inline int sym_is(const char *symbol, const char *name) static inline int sym_is(const char *symbol, const char *name)
{ {
...@@ -760,6 +813,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info, ...@@ -760,6 +813,10 @@ void handle_moddevtable(struct module *mod, struct elf_info *info,
do_table(symval, sym->st_size, do_table(symval, sym->st_size,
sizeof(struct i2c_device_id), "i2c", sizeof(struct i2c_device_id), "i2c",
do_i2c_entry, mod); do_i2c_entry, mod);
else if (sym_is(symname, "__mod_dmi_device_table"))
do_table(symval, sym->st_size,
sizeof(struct dmi_system_id), "dmi",
do_dmi_entry, mod);
free(zeros); free(zeros);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment