Commit 21279db0 authored by Linus Torvalds's avatar Linus Torvalds

Import 2.3.31

parent f82e5610
......@@ -1720,6 +1720,19 @@ CONFIG_PCI_GOBIOS
kernel will try the direct access method and falls back to the BIOS
if that doesn't work. If unsure, go with the default.
PCI device name database
CONFIG_PCI_NAMES
By default, the kernel contains a database of all known PCI device
names to make the information in /proc/pci, /proc/ioports and similar
files comprehensible to the user. This database increases size of
the kernel image by about 80KB, but it gets freed after the system
boots up, so it doesn't take up kernel memory. Anyway, if you are
building an installation floppy or kernel for an embedded system
where kernel image size really matters, you can disable this feature
and you'll get device ID numbers instead of names.
When in doubt, say Y.
MCA support
CONFIG_MCA
MicroChannel Architecture is found in some IBM PS/2 machines and
......@@ -5554,13 +5567,13 @@ CONFIG_AIRONET4500_PCI
This option should be enabled for PCI cards
module aironet4500_card
Aironet 4500/4800 ISA broken support
Aironet 4500/4800 ISA broken support (EXPERIMENTAL)
CONFIG_AIRONET4500_ISA
This option enables support for ISA cards in non-PNP mode.
Does not operate correctly by now.
module aironet4500_card
Aironet 4500/4800 I365 broken support
Aironet 4500/4800 I365 broken support (EXPERIMENTAL)
CONFIG_AIRONET4500_I365
This option enables support for PCMCIA cards on i365 controller
_without_ cardservices. Doesnt have much sense and is not working
......
......@@ -928,6 +928,13 @@ L: linux-kernel@vger.rutgers.edu
W: http://www.kernel.dk
S: Maintained
USB SUBSYSTEM
P: Randy Dunlap
M: randy.dunlap@intel.com
L: linux-usb@suse.com
W: http://www.linux-usb.org
S: Supported
USB HUB AND UHCI DRIVERS
P: Johannes Erdfelt
M: jerdfelt@sventech.com
......
......@@ -400,7 +400,7 @@ clean: archclean
rm -f .tmp*
rm -f drivers/char/consolemap_deftbl.c drivers/video/promcon_tbl.c
rm -f drivers/char/conmakehash
rm -f drivers/pci/devlist.h drivers/pci/gen-devlist
rm -f drivers/pci/devlist.h drivers/pci/classlist.h drivers/pci/gen-devlist
rm -f drivers/sound/bin2hex drivers/sound/hex2hex
rm -f net/khttpd/make_times_h
rm -f net/khttpd/times.h
......
......@@ -178,6 +178,8 @@ then
bool 'Symmetric multi-processing support' CONFIG_SMP
fi
source drivers/pci/Config.in
bool 'Networking support' CONFIG_NET
bool 'System V IPC' CONFIG_SYSVIPC
bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT
......
......@@ -44,6 +44,7 @@ CONFIG_ALPHA_GENERIC=y
# CONFIG_ALPHA_SABLE is not set
# CONFIG_ALPHA_TAKARA is not set
CONFIG_PCI=y
CONFIG_PCI_NAMES=y
# CONFIG_SMP is not set
CONFIG_NET=y
CONFIG_SYSVIPC=y
......
......@@ -28,7 +28,6 @@
#include <asm/io.h>
#include <asm/bitops.h>
#include <asm/machvec.h>
#include <asm/spinlock.h>
#include "proto.h"
......
......@@ -110,6 +110,7 @@ fi
if [ "$CONFIG_ARCH_NEXUSPCI" = "y" -o \
"$CONFIG_HOST_FOOTBRIDGE" = "y" ]; then
define_bool CONFIG_PCI y
source drivers/pci/Config.h
fi
#
......
......@@ -18,6 +18,7 @@ CONFIG_ARCH_EBSA285=y
CONFIG_ARCH_NETWINDER=y
# CONFIG_ARCH_ACORN is not set
CONFIG_PCI=y
CONFIG_PCI_NAMES=y
CONFIG_ISA_DMA=y
CONFIG_CPU_32=y
# CONFIG_CPU_26 is not set
......
......@@ -95,8 +95,12 @@ else
define_bool CONFIG_PCI_DIRECT y
fi
fi
bool 'MCA support' CONFIG_MCA
fi
source drivers/pci/Config.in
if [ "$CONFIG_VISWS" != "y" ]; then
bool 'MCA support' CONFIG_MCA
fi
source drivers/pcmcia/Config.in
......
......@@ -51,6 +51,7 @@ CONFIG_PCI=y
CONFIG_PCI_GOANY=y
CONFIG_PCI_BIOS=y
CONFIG_PCI_DIRECT=y
CONFIG_PCI_NAMES=y
# CONFIG_MCA is not set
#
......
......@@ -593,6 +593,9 @@ ENTRY(sys_call_table)
.long SYMBOL_NAME(sys_vfork) /* 190 */
.long SYMBOL_NAME(sys_getrlimit)
.long SYMBOL_NAME(sys_mmap2)
.long SYMBOL_NAME(sys_truncate64)
.long SYMBOL_NAME(sys_ftruncate64)
/* 195 */
/*
* NOTE!! This doesn't have to be exact - we just have
......@@ -600,6 +603,6 @@ ENTRY(sys_call_table)
* entries. Don't panic if you notice that this hasn't
* been shrunk every time we add a new system call.
*/
.rept NR_syscalls-192
.rept NR_syscalls-194
.long SYMBOL_NAME(sys_ni_syscall)
.endr
......@@ -1371,9 +1371,9 @@ int get_cpuinfo(char * buffer)
char *p = buffer;
int sep_bug;
static char *x86_cap_flags[] = {
"fpu", "vme", "de", "pse", "tsc", "msr", "6", "mce",
"cx8", "9", "10", "sep", "mtrr", "pge", "14", "cmov",
"16", "17", "psn", "19", "20", "21", "22", "mmx",
"fpu", "vme", "de", "pse", "tsc", "msr", "pae", "mce",
"cx8", "apic", "10", "sep", "mtrr", "pge", "mca", "cmov",
"pat", "17", "psn", "19", "20", "21", "22", "mmx",
"24", "kni", "26", "27", "28", "29", "30", "31"
};
struct cpuinfo_x86 *c = cpu_data;
......@@ -1419,15 +1419,14 @@ int get_cpuinfo(char * buffer)
case X86_VENDOR_AMD:
if (c->x86 == 5 && c->x86_model == 6)
x86_cap_flags[10] = "sep";
x86_cap_flags[16] = "fcmov";
if (c->x86 < 6)
x86_cap_flags[16] = "fcmov";
x86_cap_flags[22] = "mmxext";
x86_cap_flags[30] = "3dnowext";
x86_cap_flags[31] = "3dnow";
break;
case X86_VENDOR_INTEL:
x86_cap_flags[6] = "pae";
x86_cap_flags[9] = "apic";
x86_cap_flags[14] = "mca";
x86_cap_flags[16] = "pat";
x86_cap_flags[17] = "pse36";
x86_cap_flags[18] = "psn";
x86_cap_flags[24] = "osfxsr";
......
......@@ -119,8 +119,18 @@ void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flag
/*
* Don't allow anybody to remap normal RAM that we're using..
*/
if (phys_addr < virt_to_phys(high_memory))
return NULL;
if (phys_addr < virt_to_phys(high_memory)) {
char *t_addr, *t_end;
int i;
t_addr = __va(phys_addr);
t_end = t_addr + (size - 1);
for(i = MAP_NR(t_addr); i < MAP_NR(t_end); i++) {
if(!PageReserved(mem_map + i))
return NULL;
}
}
/*
* Mappings have to be page-aligned
......
......@@ -124,6 +124,7 @@ if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
fi
fi
source drivers/pci/Config.in
endmenu
......
......@@ -100,6 +100,8 @@ if [ "$CONFIG_MODULES" = "y" ]; then
bool ' Kernel module loader' CONFIG_KMOD
fi
source drivers/pci/Config.in
endmenu
if [ "$CONFIG_DECSTATION" = "y" ]; then
......
......@@ -16,6 +16,7 @@
# CONFIG_SGI is not set
CONFIG_SNI_RM200_PCI=y
CONFIG_PCI=y
CONFIG_PCI_NAMES=y
#
# CPU selection
......
......@@ -106,6 +106,8 @@ define_bool CONFIG_BINFMT_ELF y
define_bool CONFIG_KERNEL_ELF y
tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC
source drivers/pci/Config.in
source drivers/pcmcia/Config.in
source drivers/parport/Config.in
......
......@@ -35,8 +35,8 @@ CONFIG_KMOD=y
#
# General setup
#
# CONFIG_PCI is not set
CONFIG_PCI=y
CONFIG_PCI_NAMES=y
CONFIG_NET=y
CONFIG_SYSCTL=y
CONFIG_SYSVIPC=y
......
......@@ -29,6 +29,7 @@ else
bool 'Support for SUN4 machines (disables SUN4[CDM] support)' CONFIG_SUN4
if [ "$CONFIG_SUN4" != "y" ]; then
bool ' Support for PCI and PS/2 keyboard/mouse' CONFIG_PCI
source drivers/pci/Config.in
fi
mainmenu_option next_comment
......
......@@ -23,6 +23,7 @@ CONFIG_VT_CONSOLE=y
# CONFIG_SMP is not set
# CONFIG_SUN4 is not set
# CONFIG_PCI is not set
# CONFIG_PCI_NAMES is not set
#
# Console drivers
......
......@@ -37,6 +37,7 @@ define_bool CONFIG_SUN_CONSOLE y
define_bool CONFIG_SUN_AUXIO y
define_bool CONFIG_SUN_IO y
bool 'PCI support' CONFIG_PCI
source drivers/pci/Config.in
source drivers/sbus/char/Config.in
source drivers/sbus/audio/Config.in
......
......@@ -60,6 +60,7 @@ CONFIG_SUN_CONSOLE=y
CONFIG_SUN_AUXIO=y
CONFIG_SUN_IO=y
CONFIG_PCI=y
CONFIG_PCI_NAMES=y
#
# Misc Linux/SPARC drivers
......
......@@ -226,4 +226,15 @@ if [ "$CONFIG_PCMCIA" != "n" ]; then
source drivers/char/pcmcia/Config.in
fi
if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then
dep_tristate '/dev/agpgart (AGP Support) (EXPERIMENTAL)' CONFIG_AGP m
if [ "$CONFIG_AGP" = "m" ]; then
bool ' Intel 440LX/BX/GX support' CONFIG_AGP_INTEL
bool ' Intel I810/I810 DC100/I810e support' CONFIG_AGP_I810
bool ' VIA VP3/MVP3/Apollo Pro support' CONFIG_AGP_VIA
bool ' AMD Irongate support' CONFIG_AGP_AMD
bool ' Generic SiS support' CONFIG_AGP_SIS
bool ' ALI M1541 support' CONFIG_AGP_ALI
fi
fi
endmenu
......@@ -636,6 +636,11 @@ else
endif
endif
ifeq ($(CONFIG_AGP), m)
ALL_SUB_DIRS += agp
MOD_SUB_DIRS += agp
endif
include $(TOPDIR)/Rules.make
fastdep:
......
#
# Makefile for the agpgart device driver. This driver adds a user
# space ioctl interface to use agp memory. It also adds a kernel interface
# that other drivers could use to manipulate agp memory.
M_OBJS := agpgart.o
CFLAGS_agp_backend.o :=
ifdef CONFIG_AGP_I810
CFLAGS_agp_backend.o += -DAGP_BUILD_INTEL_I810
endif
ifdef CONFIG_AGP_INTEL
CFLAGS_agp_backend.o += -DAGP_BUILD_INTEL_GENERIC
endif
ifdef CONFIG_AGP_VIA
CFLAGS_agp_backend.o += -DAGP_BUILD_VIA_GENERIC
endif
ifdef CONFIG_AGP_AMD
CFLAGS_agp_backend.o += -DAGP_BUILD_AMD_IRONGATE
endif
ifdef CONFIG_AGP_SIS
CFLAGS_agp_backend.o += -DAGP_BUILD_SIS_GENERIC
endif
ifdef CONFIG_AGP_ALI
CFLAGS_agp_backend.o += -DAGP_BUILD_ALI_M1541
endif
include $(TOPDIR)/Rules.make
agpgart.o: agp_backend.o agpgart_fe.o
$(LD) $(LD_RFLAG) -r -o $@ agp_backend.o agpgart_fe.o
This diff is collapsed.
/*
* AGPGART module version 0.99
* Copyright (C) 1999 Jeff Hartmann
* Copyright (C) 1999 Precision Insight
* Copyright (C) 1999 Xi Graphics
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef _AGP_BACKEND_PRIV_H
#define _AGP_BACKEND_PRIV_H 1
enum aper_size_type {
U8_APER_SIZE,
U16_APER_SIZE,
U32_APER_SIZE,
FIXED_APER_SIZE
};
typedef struct _gatt_mask {
unsigned long mask;
u32 type;
/* totally device specific, for integrated chipsets that
* might have different types of memory masks. For other
* devices this will probably be ignored */
} gatt_mask;
typedef struct _aper_size_info_8 {
int size;
int num_entries;
int page_order;
u8 size_value;
} aper_size_info_8;
typedef struct _aper_size_info_16 {
int size;
int num_entries;
int page_order;
u16 size_value;
} aper_size_info_16;
typedef struct _aper_size_info_32 {
int size;
int num_entries;
int page_order;
u32 size_value;
} aper_size_info_32;
typedef struct _aper_size_info_fixed {
int size;
int num_entries;
int page_order;
} aper_size_info_fixed;
struct agp_bridge_data {
agp_version *version;
void *aperture_sizes;
void *previous_size;
void *current_size;
void *dev_private_data;
struct pci_dev *dev;
gatt_mask *masks;
unsigned long *gatt_table;
unsigned long *gatt_table_real;
unsigned long scratch_page;
unsigned long gart_bus_addr;
unsigned long gatt_bus_addr;
u32 mode;
enum chipset_type type;
enum aper_size_type size_type;
u32 *key_list;
atomic_t current_memory_agp;
atomic_t agp_in_use;
int max_memory_agp; /* in number of pages */
int needs_scratch_page;
int aperture_size_idx;
int num_aperture_sizes;
int num_of_masks;
int capndx;
/* Links to driver specific functions */
int (*fetch_size) (void); /* returns the index into the size table */
int (*configure) (void);
void (*agp_enable) (u32);
void (*cleanup) (void);
void (*tlb_flush) (agp_memory *);
unsigned long (*mask_memory) (unsigned long, int);
void (*cache_flush) (void);
int (*create_gatt_table) (void);
int (*free_gatt_table) (void);
int (*insert_memory) (agp_memory *, off_t, int);
int (*remove_memory) (agp_memory *, off_t, int);
agp_memory *(*alloc_by_type) (size_t, int);
void (*free_by_type) (agp_memory *);
/* Links to vendor/device specific setup functions */
#ifdef AGP_BUILD_INTEL_GENERIC
void (*intel_generic_setup) (void);
#endif
#ifdef AGP_BUILD_INTEL_I810
void (*intel_i810_setup) (struct pci_dev *);
#endif
#ifdef AGP_BUILD_VIA_GENERIC
void (*via_generic_setup) (void);
#endif
#ifdef AGP_BUILD_SIS_GENERIC
void (*sis_generic_setup) (void);
#endif
#ifdef AGP_BUILD_AMD_IRONGATE
void (*amd_irongate_setup) (void);
#endif
#ifdef AGP_BUILD_ALI_M1541
void (*ali_generic_setup) (void);
#endif
};
#define OUTREG32(mmap, addr, val) *(volatile u32 *)(mmap + (addr)) = (val)
#define OUTREG16(mmap, addr, val) *(volatile u16 *)(mmap + (addr)) = (val)
#define OUTREG8 (mmap, addr, val) *(volatile u8 *) (mmap + (addr)) = (val)
#define INREG32(mmap, addr) *(volatile u32 *)(mmap + (addr))
#define INREG16(mmap, addr) *(volatile u16 *)(mmap + (addr))
#define INREG8 (mmap, addr) *(volatile u8 *) (mmap + (addr))
#ifndef min
#define min(a,b) (((a)<(b))?(a):(b))
#endif
#define PGE_EMPTY(p) (!(p) || (p) == (unsigned long) agp_bridge.scratch_page)
#ifndef PCI_DEVICE_ID_VIA_82C691_0
#define PCI_DEVICE_ID_VIA_82C691_0 0x0691
#endif
#ifndef PCI_DEVICE_ID_VIA_82C691_1
#define PCI_DEVICE_ID_VIA_82C691_1 0x8691
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_0
#define PCI_DEVICE_ID_INTEL_810_0 0x7120
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_DC100_0
#define PCI_DEVICE_ID_INTEL_810_DC100_0 0x7122
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_E_0
#define PCI_DEVICE_ID_INTEL_810_E_0 0x7124
#endif
#ifndef PCI_DEVICE_ID_INTEL_82443GX_0
#define PCI_DEVICE_ID_INTEL_82443GX_0 0x71a0
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_1
#define PCI_DEVICE_ID_INTEL_810_1 0x7121
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_DC100_1
#define PCI_DEVICE_ID_INTEL_810_DC100_1 0x7123
#endif
#ifndef PCI_DEVICE_ID_INTEL_810_E_1
#define PCI_DEVICE_ID_INTEL_810_E_1 0x7125
#endif
#ifndef PCI_DEVICE_ID_INTEL_82443GX_1
#define PCI_DEVICE_ID_INTEL_82443GX_1 0x71a1
#endif
#ifndef PCI_DEVICE_ID_AMD_IRONGATE_0
#define PCI_DEVICE_ID_AMD_IRONGATE_0 0x7006
#endif
#ifndef PCI_VENDOR_ID_AL
#define PCI_VENDOR_ID_AL 0x10b9
#endif
#ifndef PCI_DEVICE_ID_AL_M1541_0
#define PCI_DEVICE_ID_AL_M1541_0 0x1541
#endif
/* intel register */
#define INTEL_APBASE 0x10
#define INTEL_APSIZE 0xb4
#define INTEL_ATTBASE 0xb8
#define INTEL_AGPCTRL 0xb0
#define INTEL_NBXCFG 0x50
#define INTEL_ERRSTS 0x91
/* intel i810 registers */
#define I810_GMADDR 0x10
#define I810_MMADDR 0x14
#define I810_PTE_BASE 0x10000
#define I810_PTE_MAIN_UNCACHED 0x00000000
#define I810_PTE_LOCAL 0x00000002
#define I810_PTE_VALID 0x00000001
#define I810_SMRAM_MISCC 0x70
#define I810_GFX_MEM_WIN_SIZE 0x00010000
#define I810_GFX_MEM_WIN_32M 0x00010000
#define I810_GMS 0x000000c0
#define I810_GMS_DISABLE 0x00000000
#define I810_PGETBL_CTL 0x2020
#define I810_PGETBL_ENABLED 0x00000001
#define I810_DRAM_CTL 0x3000
#define I810_DRAM_ROW_0 0x00000001
#define I810_DRAM_ROW_0_SDRAM 0x00000001
/* VIA register */
#define VIA_APBASE 0x10
#define VIA_GARTCTRL 0x80
#define VIA_APSIZE 0x84
#define VIA_ATTBASE 0x88
/* SiS registers */
#define SIS_APBASE 0x10
#define SIS_ATTBASE 0x90
#define SIS_APSIZE 0x94
#define SIS_TLBCNTRL 0x97
#define SIS_TLBFLUSH 0x98
/* AMD registers */
#define AMD_APBASE 0x10
#define AMD_MMBASE 0x14
#define AMD_APSIZE 0xac
#define AMD_MODECNTL 0xb0
#define AMD_GARTENABLE 0x02 /* In mmio region (16-bit register) */
#define AMD_ATTBASE 0x04 /* In mmio region (32-bit register) */
#define AMD_TLBFLUSH 0x0c /* In mmio region (32-bit register) */
#define AMD_CACHEENTRY 0x10 /* In mmio region (32-bit register) */
/* ALi registers */
#define ALI_APBASE 0x10
#define ALI_AGPCTRL 0xb8
#define ALI_ATTBASE 0xbc
#define ALI_TLBCTRL 0xc0
#endif /* _AGP_BACKEND_PRIV_H */
This diff is collapsed.
......@@ -30,6 +30,7 @@
*/
#define __NO_VERSION__
#include <linux/config.h>
#include "drmP.h"
#include "linux/un.h"
......
......@@ -33,6 +33,7 @@
#define _DRM_P_H_
#ifdef __KERNEL__
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/miscdevice.h>
......
......@@ -30,6 +30,7 @@
*/
#define EXPORT_SYMTAB
#include <linux/config.h>
#include "drmP.h"
#include "gamma_drv.h"
EXPORT_SYMBOL(gamma_init);
......
......@@ -30,6 +30,7 @@
*/
#define EXPORT_SYMTAB
#include <linux/config.h>
#include "drmP.h"
#include "tdfx_drv.h"
EXPORT_SYMBOL(tdfx_init);
......
......@@ -248,17 +248,14 @@ if [ "$CONFIG_NET_RADIO" = "y" ]; then
tristate ' AT&T WaveLAN & DEC RoamAbout DS support' CONFIG_WAVELAN
tristate ' Aironet Arlan 655 & IC2200 DS support' CONFIG_ARLAN
tristate ' Aironet 4500/4800 series adapters' CONFIG_AIRONET4500
if [ ! "$CONFIG_AIRONET4500" = "n" ]; then
dep_tristate ' Aironet 4500/4800 ISA/PCI/PNP/365 support ' CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500
if [ ! "$CONFIG_AIRONET4500_NONCS" = "n" ]; then
bool ' Aironet 4500/4800 PNP support ' CONFIG_AIRONET4500_PNP $CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500
bool ' Aironet 4500/4800 PCI support ' CONFIG_AIRONET4500_PCI $CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500
bool ' Aironet 4500/4800 ISA broken support ' CONFIG_AIRONET4500_ISA $CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500 $CONFIG_EXPERIMENTAL
bool ' Aironet 4500/4800 I365 broken support ' CONFIG_AIRONET4500_I365 $CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500 $CONFIG_EXPERIMENTAL
fi
dep_tristate ' Aironet 4500/4800 PCMCIA support ' CONFIG_AIRONET4500_CS $CONFIG_AIRONET4500 $CONFIG_PCMCIA
dep_tristate ' Aironet 4500/4800 PROC interface ' CONFIG_AIRONET4500_PROC $CONFIG_AIRONET4500 m
dep_tristate ' Aironet 4500/4800 ISA/PCI/PNP/365 support ' CONFIG_AIRONET4500_NONCS $CONFIG_AIRONET4500
if [ "$CONFIG_AIRONET4500" != "n" -a "$CONFIG_AIRONET4500_NONCS" != "n" ]; then
bool ' Aironet 4500/4800 PNP support ' CONFIG_AIRONET4500_PNP
dep_bool ' Aironet 4500/4800 PCI support ' CONFIG_AIRONET4500_PCI $CONFIG_PCI
dep_bool ' Aironet 4500/4800 ISA broken support (EXPERIMENTAL)' CONFIG_AIRONET4500_ISA $CONFIG_EXPERIMENTAL
dep_bool ' Aironet 4500/4800 I365 broken support (EXPERIMENTAL)' CONFIG_AIRONET4500_I365 $CONFIG_EXPERIMENTAL
fi
dep_tristate ' Aironet 4500/4800 PROC interface ' CONFIG_AIRONET4500_PROC $CONFIG_AIRONET4500 m
fi
endmenu
......
......@@ -15,7 +15,6 @@
#define AIRONET4500_H
// redefined to avoid PCMCIA includes
#include <linux/config.h>
#include <linux/version.h>
#include <linux/module.h>
#include <linux/kernel.h>
......
......@@ -29,7 +29,6 @@ static const char *awc_version =
#include <asm/io.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <linux/timer.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
......
......@@ -10,7 +10,6 @@
*
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/netdevice.h>
......
......@@ -25,7 +25,6 @@
#include <asm/io.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <linux/timer.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
......
......@@ -10,7 +10,6 @@
*
*/
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
......
......@@ -437,9 +437,9 @@ int __init lance_probe1(struct net_device *dev, int ioaddr, int irq, int options
There are two HP versions, check the BIOS for the configuration port.
This method provided by L. Julliard, Laurent_Julliard@grenoble.hp.com.
*/
if (readw(0x000f0102) == 0x5048) {
if (isa_readw(0x000f0102) == 0x5048) {
static const short ioaddr_table[] = { 0x300, 0x320, 0x340, 0x360};
int hp_port = (readl(0x000f00f1) & 1) ? 0x499 : 0x99;
int hp_port = (isa_readl(0x000f00f1) & 1) ? 0x499 : 0x99;
/* We can have boards other than the built-in! Verify this is on-board. */
if ((inb(hp_port) & 0xc0) == 0x80
&& ioaddr_table[inb(hp_port) & 3] == ioaddr)
......
......@@ -14,7 +14,6 @@ static const char *awc_version =
"aironet4500_cs.c v0.1 1/1/99 Elmer Joandi, elmer@ylenurme.ee.\n";
#include <linux/config.h>
#include <linux/module.h>
//#include <pcmcia/config.h>
......@@ -29,7 +28,6 @@ static const char *awc_version =
#include <asm/io.h>
#include <asm/system.h>
#include <asm/bitops.h>
#include <linux/timer.h>
#include <linux/netdevice.h>
#include <linux/etherdevice.h>
......
#
# PCI configuration
#
if [ "$CONFIG_PCI" = "y" ]; then
bool 'PCI device name database' CONFIG_PCI_NAMES
fi
......@@ -33,10 +33,10 @@ endif
include $(TOPDIR)/Rules.make
names.o: names.c devlist.h
names.o: names.c devlist.h classlist.h
devlist.h: pci.ids gen-devlist
./gen-devlist <pci.ids >devlist.h
devlist.h classlist.h: pci.ids gen-devlist
./gen-devlist <pci.ids
gen-devlist: gen-devlist.c
$(HOSTCC) $(HOSTCFLAGS) -o gen-devlist gen-devlist.c
/*
* Generate devlist.h from the PCI ID file.
* Generate devlist.h and classlist.h from the PCI ID file.
*
* (c) 1999 Martin Mares <mj@suse.cz>
*/
......@@ -8,13 +8,13 @@
#include <string.h>
static void
pq(char *c)
pq(FILE *f, char *c)
{
while (*c) {
if (*c == '"')
printf("\\\"");
fprintf(f, "\\\"");
else
putchar(*c);
fputc(*c, f);
c++;
}
}
......@@ -24,6 +24,15 @@ main(void)
{
char line[1024], *c, vend[8];
int vendors = 0;
int mode = 0;
FILE *devf, *clsf;
devf = fopen("devlist.h", "w");
clsf = fopen("classlist.h", "w");
if (!devf || !clsf) {
fprintf(stderr, "Cannot create output file!\n");
return 1;
}
while (fgets(line, sizeof(line)-1, stdin)) {
if ((c = strchr(line, '\n')))
......@@ -31,36 +40,65 @@ main(void)
if (!line[0] || line[0] == '#')
continue;
if (line[1] == ' ') {
vend[0] = 0;
continue;
if (line[0] == 'C' && strlen(line) > 4 && line[4] == ' ') {
vend[0] = line[2];
vend[1] = line[3];
vend[2] = 0;
mode = 2;
} else goto err;
}
if (line[0] == '\t') {
if (vend[0] && strlen(line) > 5 && line[5] == ' ') {
c = line + 5;
while (*c == ' ')
*c++ = 0;
printf("\tDEVICE(%s,%s,\"", vend, line+1);
pq(c);
puts("\")");
else if (line[0] == '\t') {
if (line[1] == '\t')
continue;
switch (mode) {
case 1:
if (strlen(line) > 5 && line[5] == ' ') {
c = line + 5;
while (*c == ' ')
*c++ = 0;
fprintf(devf, "\tDEVICE(%s,%s,\"", vend, line+1);
pq(devf, c);
fputs("\")\n", devf);
} else goto err;
break;
case 2:
if (strlen(line) > 3 && line[3] == ' ') {
c = line + 3;
while (*c == ' ')
*c++ = 0;
fprintf(clsf, "CLASS(%s%s, \"%s\")\n", vend, line+1, c);
} else goto err;
break;
default:
goto err;
}
} else if (strlen(line) > 4 && line[4] == ' ') {
c = line + 4;
while (*c == ' ')
*c++ = 0;
if (vendors)
puts("ENDVENDOR()\n");
fputs("ENDVENDOR()\n\n", devf);
vendors++;
strcpy(vend, line);
printf("VENDOR(%s,\"", vend);
pq(c);
puts("\")");
fprintf(devf, "VENDOR(%s,\"", vend);
pq(devf, c);
fputs("\")\n", devf);
mode = 1;
} else {
err:
fprintf(stderr, "Syntax error in mode %d: %s\n", mode, line);
return 1;
}
}
puts("ENDVENDOR()\n\
fputs("ENDVENDOR()\n\
\n\
#undef VENDOR\n\
#undef DEVICE\n\
#undef ENDVENDOR");
#undef ENDVENDOR\n", devf);
fputs("\n#undef CLASS", clsf);
fclose(devf);
fclose(clsf);
return 0;
}
/*
* $Id: oldproc.c,v 1.24 1998/10/11 15:13:04 mj Exp $
* PCI Class and Device Name Tables
*
* Backward-compatible procfs interface for PCI.
*
* Copyright 1993, 1994, 1995, 1997 Drew Eckhardt, Frederic Potter,
* Copyright 1993--1999 Drew Eckhardt, Frederic Potter,
* David Mosberger-Tang, Martin Mares
*/
......@@ -12,6 +10,8 @@
#include <linux/pci.h>
#include <linux/init.h>
#ifdef CONFIG_PCI_NAMES
struct pci_device_info {
unsigned short device;
unsigned short seen;
......@@ -92,3 +92,43 @@ void __init pci_name_device(struct pci_dev *dev)
}
}
}
/*
* Class names. Not in .init section as they are needed in runtime.
*/
static u16 pci_class_numbers[] = {
#define CLASS(x,y) 0x##x,
#include "classlist.h"
};
static char *pci_class_names[] = {
#define CLASS(x,y) y,
#include "classlist.h"
};
char *
pci_class_name(u32 class)
{
int i;
for(i=0; i<sizeof(pci_class_numbers)/sizeof(pci_class_numbers[0]); i++)
if (pci_class_numbers[i] == class)
return pci_class_names[i];
return NULL;
}
#else
void __init pci_name_device(struct pci_dev *dev)
{
sprintf(dev->name, "PCI device %04x:%04x", dev->vendor, dev->device);
}
char *
pci_class_name(u32 class)
{
return NULL;
}
#endif
......@@ -491,13 +491,16 @@ static unsigned int __init pci_do_scan_bus(struct pci_bus *bus)
pci_read_config_word(dev, PCI_CB_SUBSYSTEM_ID, &dev->subsystem_device);
break;
default: /* unknown header */
bad:
printk(KERN_ERR "PCI: device %s has unknown header type %02x, ignoring.\n",
dev->slot_name, hdr_type);
continue;
bad:
printk(KERN_ERR "PCI: %s: class %x doesn't match header type %02x. Ignoring class.\n",
dev->slot_name, class, hdr_type);
dev->class = PCI_CLASS_NOT_DEFINED;
}
DBG("PCI: %02x:%02x [%04x/%04x]\n", bus->number, dev->devfn, dev->vendor, dev->device);
DBG("PCI: %02x:%02x [%04x/%04x] %06x %02x\n", bus->number, dev->devfn, dev->vendor, dev->device, class, hdr_type);
/*
* Put it into the global PCI device chain. It's used to
......
......@@ -4,7 +4,7 @@
# Maintained by Martin Mares <pci-ids@ucw.cz>
# If you have any new entries, send them to the maintainer.
#
# $Id: pci.ids,v 1.41 1999/10/30 09:25:10 mj Exp $
# $Id: pci.ids,v 1.43 1999/12/04 12:32:55 mj Exp $
#
# Vendors, devices and subsystems. Please keep sorted.
......@@ -221,6 +221,7 @@
1113 1207 EN-1207-TX Fast Ethernet
1109 2400 ANA-6944A/TX Fast Ethernet
1186 1100 DFE-500TX Fast Ethernet
1186 1112 DFE-570TX Fast Ethernet
1282 9100 AEF-380TXD Fast Ethernet
2646 0001 KNE100TX Fast Ethernet
000a 21230 Video Codec
......@@ -649,9 +650,12 @@
1092 0157 FIRE GL 1000 PRO
1097 3d01 Jeronimo Pro
3d3d 0100 Reference Permedia 2 3D
8000 LYNX FireWire Host Controller
8000 PCILynx/PCILynx2 IEEE 1394 Link Layer Controller
e4bf 1010 CF1-1-SNARE
e4bf 1020 CF1-2-SNARE
8009 OHCI Compliant FireWire Controller
8019 TSB12LV23 OHCI Compliant IEEE-1394 Controller
e4bf 1010 CF2-1-CYMBAL
a001 TDC1570
a100 TDC1561
ac10 PCI1050
......@@ -671,6 +675,7 @@
fe00 FireWire Host Controller
fe03 12C01A FireWire Host Controller
104d Sony Corporation
8039 CXD3222 iLINK Controller
104e Oak Technology, Inc
0017 OTI-64017
0107 OTI-107 [Spitfire]
......@@ -1236,6 +1241,8 @@
1683 IGA-1683
2000 CyberPro 2000
2010 CyberPro 2000A
5000 CyberPro 5000
5050 CyberPro 5050
10eb Artists Graphics
0101 3GA
8111 Twist3 Frame Grabber
......@@ -1483,7 +1490,7 @@
112e Infomedia Microelectronics Inc.
112f Imaging Technology Inc
0000 MVC IC-PCI
0001 Video frame grabber/processor
0001 MVC IM-PCI Video frame grabber/processor
1130 Computervision
1131 Philips Semiconductors
7145 SAA7145
......@@ -2202,6 +2209,7 @@
1280 Photoscript Group Ltd.
1281 Yokogawa Electric Corporation
1282 Davicom Semiconductor, Inc.
9102 Ethernet 100/10 MBit
1283 Integrated Technology Express, Inc.
673a IT8330G
8330 IT8330G
......@@ -2271,6 +2279,7 @@
12b8 Korg
12b9 US Robotics/3Com
1006 WinModem
1008 56K FaxModem Model 5610
12ba PMC Sierra
12bb Nippon Unisoft Corporation
12bc Array Microsystems
......@@ -2286,6 +2295,7 @@
12c4 Connect Tech Inc
12c5 Picture Elements Incorporated
0081 PCIVST [Grayscale Thresholding Engine]
0086 THR2 Thresholder
12c6 Mitani Corporation
12c7 Dialogic Corp
12c8 G Force Co, Ltd
......@@ -2436,22 +2446,40 @@
131d Sysmic, Inc.
131e Xinex Networks Inc
131f Siig Inc
1000 CyberSerial (1-port) 16550
1001 CyberSerial (1-port) 16650
1002 CyberSerial (1-port) 16850
1010 Duet 1S(16550)+1P
1011 Duet 1S(16650)+1P
1012 Duet 1S(16850)+1P
1020 CyberParallel (1-port)
1021 CyberParallel (2-port)
1030 CyberSerial (2-port) 16550
1031 CyberSerial (2-port) 16650
1032 CyberSerial (2-port) 16850
1034 Trio 2S(16550)+1P
1035 Trio 2S(16650)+1P
1036 Trio 2S(16850)+1P
1050 CyberSerial (4-port) 16550
1051 CyberSerial (4-port) 16650
1052 CyberSerial (4-port) 16850
2000 CyberSerial (1-port) 16550
2001 CyberSerial (1-port) 16650
2002 CyberSerial (1-port) 16850
2010 Duet 1S(16550)+1P
2011 Duet 1S(16650)+1P
2012 Duet 1S(16850)+1P
2020 CyberParallel (1-port)
2021 CyberParallel (2-port)
2030 CyberSerial (2-port) 16550
2031 CyberSerial (2-port) 16650
2032 CyberSerial (2-port) 16850
2040 Trio 1S(16550)+2P
2041 Trio 1S(16650)+2P
2042 Trio 1S(16850)+2P
2050 CyberSerial (4-port) 16550
2051 CyberSerial (4-port) 16650
2052 CyberSerial (4-port) 16850
2060 Trio 2S(16550)+1P
2061 Trio 2S(16650)+1P
2062 Trio 2S(16850)+1P
......@@ -2572,7 +2600,9 @@
1395 Ambicom Inc
1396 Cipher Systems Inc
1397 Cologne Chip Designs GmbH
2bd0 ISDN network controller
2bd0 ISDN network controller [HFC-PCI]
1397 2bd0 ISDN Board
e4bf 1000 CI1-1-Harp
1398 Clarion co. Ltd
1399 Rios systems Co Ltd
139a Alacritech Inc
......@@ -2705,6 +2735,7 @@
1410 Midas lab Inc
1411 Ikos Systems Inc
1412 IC Ensemble Inc
1712 ICE1712 [Envy24]
1413 Addonics
1414 Microsoft Corporation
1415 Oxford Semiconductor Ltd
......@@ -2969,7 +3000,10 @@
1517 ECHOTEK Corp
1518 PEP MODULAR Computers GmbH
1519 TELEFON AKTIEBOLAGET LM Ericsson
151a GLOBETEK Inc
151a Globetek
1002 PCI-1002
1004 PCI-1004
1008 PCI-1008
151b COMBOX Ltd
151c DIGITAL AUDIO LABS Inc
151d Fujitsu Computer Products Of America
......@@ -3310,6 +3344,11 @@
103c 10C7 MegaRaid T5
1111 1111 MegaRaid 466
113c 03A2 MegaRaid
2410 82801 82810 Chipset ISA Bridge (LPC)
2411 82801 82810 Chipset IDE
2412 82801 82810 Chipset USB
2413 82801 82810 Chipset SMBus
2418 82801 82810 PCI Bridge
5200 EtherExpress PRO/100
5201 EtherExpress PRO/100
7000 82371SB PIIX3 ISA [Natoma/Triton II]
......@@ -3485,6 +3524,7 @@ e159 Tiger Jet Network Inc.
0001 Model 300 128k
0059 0001 128k ISDN-S/T Adapter
0059 0003 128k ISDN-U Adapter
e4bf EKF Elektronik GmbH
eabb Aashima Technology B.V.
ecc0 Echo Corporation
edd8 ARK Logic Inc
......
......@@ -306,84 +306,6 @@ void __init proc_bus_pci_add(struct pci_bus *bus)
* Backward compatible /proc/pci interface.
*/
static const char *pci_strclass (unsigned int class)
{
switch (class >> 8) {
case PCI_CLASS_NOT_DEFINED: return "Non-VGA device";
case PCI_CLASS_NOT_DEFINED_VGA: return "VGA compatible device";
case PCI_CLASS_STORAGE_SCSI: return "SCSI storage controller";
case PCI_CLASS_STORAGE_IDE: return "IDE interface";
case PCI_CLASS_STORAGE_FLOPPY: return "Floppy disk controller";
case PCI_CLASS_STORAGE_IPI: return "IPI bus controller";
case PCI_CLASS_STORAGE_RAID: return "RAID bus controller";
case PCI_CLASS_STORAGE_OTHER: return "Unknown mass storage controller";
case PCI_CLASS_NETWORK_ETHERNET: return "Ethernet controller";
case PCI_CLASS_NETWORK_TOKEN_RING: return "Token ring network controller";
case PCI_CLASS_NETWORK_FDDI: return "FDDI network controller";
case PCI_CLASS_NETWORK_ATM: return "ATM network controller";
case PCI_CLASS_NETWORK_OTHER: return "Network controller";
case PCI_CLASS_DISPLAY_VGA: return "VGA compatible controller";
case PCI_CLASS_DISPLAY_XGA: return "XGA compatible controller";
case PCI_CLASS_DISPLAY_OTHER: return "Display controller";
case PCI_CLASS_MULTIMEDIA_VIDEO: return "Multimedia video controller";
case PCI_CLASS_MULTIMEDIA_AUDIO: return "Multimedia audio controller";
case PCI_CLASS_MULTIMEDIA_OTHER: return "Multimedia controller";
case PCI_CLASS_MEMORY_RAM: return "RAM memory";
case PCI_CLASS_MEMORY_FLASH: return "FLASH memory";
case PCI_CLASS_MEMORY_OTHER: return "Memory";
case PCI_CLASS_BRIDGE_HOST: return "Host bridge";
case PCI_CLASS_BRIDGE_ISA: return "ISA bridge";
case PCI_CLASS_BRIDGE_EISA: return "EISA bridge";
case PCI_CLASS_BRIDGE_MC: return "MicroChannel bridge";
case PCI_CLASS_BRIDGE_PCI: return "PCI bridge";
case PCI_CLASS_BRIDGE_PCMCIA: return "PCMCIA bridge";
case PCI_CLASS_BRIDGE_NUBUS: return "NuBus bridge";
case PCI_CLASS_BRIDGE_CARDBUS: return "CardBus bridge";
case PCI_CLASS_BRIDGE_OTHER: return "Bridge";
case PCI_CLASS_COMMUNICATION_SERIAL: return "Serial controller";
case PCI_CLASS_COMMUNICATION_PARALLEL: return "Parallel controller";
case PCI_CLASS_COMMUNICATION_OTHER: return "Communication controller";
case PCI_CLASS_SYSTEM_PIC: return "PIC";
case PCI_CLASS_SYSTEM_DMA: return "DMA controller";
case PCI_CLASS_SYSTEM_TIMER: return "Timer";
case PCI_CLASS_SYSTEM_RTC: return "RTC";
case PCI_CLASS_SYSTEM_OTHER: return "System peripheral";
case PCI_CLASS_INPUT_KEYBOARD: return "Keyboard controller";
case PCI_CLASS_INPUT_PEN: return "Digitizer Pen";
case PCI_CLASS_INPUT_MOUSE: return "Mouse controller";
case PCI_CLASS_INPUT_OTHER: return "Input device controller";
case PCI_CLASS_DOCKING_GENERIC: return "Generic Docking Station";
case PCI_CLASS_DOCKING_OTHER: return "Docking Station";
case PCI_CLASS_PROCESSOR_386: return "386";
case PCI_CLASS_PROCESSOR_486: return "486";
case PCI_CLASS_PROCESSOR_PENTIUM: return "Pentium";
case PCI_CLASS_PROCESSOR_ALPHA: return "Alpha";
case PCI_CLASS_PROCESSOR_POWERPC: return "Power PC";
case PCI_CLASS_PROCESSOR_CO: return "Co-processor";
case PCI_CLASS_SERIAL_FIREWIRE: return "FireWire (IEEE 1394)";
case PCI_CLASS_SERIAL_ACCESS: return "ACCESS Bus";
case PCI_CLASS_SERIAL_SSA: return "SSA";
case PCI_CLASS_SERIAL_USB: return "USB Controller";
case PCI_CLASS_SERIAL_FIBER: return "Fiber Channel";
case PCI_CLASS_HOT_SWAP_CONTROLLER: return "Hot Swap Controller";
default: return "Unknown class";
}
}
/*
* Convert some of the configuration space registers of the device at
* address (bus,devfn) into a string (possibly several lines each).
......@@ -392,8 +314,8 @@ static const char *pci_strclass (unsigned int class)
*/
static int sprint_dev_config(struct pci_dev *dev, char *buf, int size)
{
unsigned int class_rev;
unsigned char latency, min_gnt, max_lat;
u32 class_rev;
unsigned char latency, min_gnt, max_lat, *class;
int reg, len = 0;
pci_read_config_dword(dev, PCI_CLASS_REVISION, &class_rev);
......@@ -404,10 +326,12 @@ static int sprint_dev_config(struct pci_dev *dev, char *buf, int size)
return -1;
len += sprintf(buf + len, " Bus %2d, device %3d, function %2d:\n",
dev->bus->number, PCI_SLOT(dev->devfn), PCI_FUNC(dev->devfn));
len += sprintf(buf + len, " %s: %s (rev %d).\n",
pci_strclass(class_rev >> 8),
dev->name,
class_rev & 0xff);
class = pci_class_name(class_rev >> 16);
if (class)
len += sprintf(buf+len, " %s", class);
else
len += sprintf(buf+len, " Class %04x", class_rev >> 16);
len += sprintf(buf+len, ": %s (rev %d).\n", dev->name, class_rev & 0xff);
if (dev->irq) {
if (len + 40 > size)
......@@ -512,7 +436,7 @@ static int __init pci_proc_init(void)
{
if (pci_present()) {
proc_bus_pci_dir = proc_mkdir("pci", proc_bus);
create_proc_info_entry("devices",0, proc_bus_pci_dir,
create_proc_info_entry("devices", 0, proc_bus_pci_dir,
get_pci_dev_info);
proc_bus_pci_add(pci_root);
create_proc_read_entry("pci", 0, NULL, pci_read_proc, NULL);
......
......@@ -9084,7 +9084,7 @@ aic7xxx_detect(Scsi_Host_Template *template)
* aic7xxx_setup
*/
if(aic7xxx)
aic7xxx_setup(aic7xxx, NULL);
aic7xxx_setup(aic7xxx);
if(dummy_buffer[0] != 'P')
printk(KERN_WARNING "aic7xxx: Please read the file /usr/src/linux/drivers"
"/scsi/README.aic7xxx\n"
......
......@@ -257,7 +257,7 @@ static inline void init_hpc_chain(uchar *buf)
hcp->desc.pnext = PHYSADDR(buf);
}
int __init sgiwd93_detect(Scsi_Host_Template *HPsUX)
int __init sgiwd93_detect(Scsi_Host_Template *SGIblows)
{
static unsigned char called = 0;
struct hpc3_scsiregs *hregs = &hpc3c0->scsi_chan0;
......@@ -267,9 +267,9 @@ int __init sgiwd93_detect(Scsi_Host_Template *HPsUX)
if(called)
return 0; /* Should bitch on the console about this... */
HPsUX->proc_name = "SGIWD93";
SGIblows->proc_name = "SGIWD93";
sgiwd93_host = scsi_register(HPsUX, sizeof(struct WD33C93_hostdata));
sgiwd93_host = scsi_register(SGIblows, sizeof(struct WD33C93_hostdata));
sgiwd93_host->base = (unsigned char *) hregs;
sgiwd93_host->irq = 1;
......
......@@ -29,7 +29,6 @@ comment 'Miscellaneous USB options'
dep_tristate ' EZUSB Firmware downloader' CONFIG_USB_EZUSB $CONFIG_USB
comment 'USB Devices'
dep_tristate ' USB hub support (Required!)' CONFIG_USB_HUB $CONFIG_USB
dep_tristate ' USB mouse support' CONFIG_USB_MOUSE $CONFIG_USB
dep_tristate ' USB HP scanner support' CONFIG_USB_HP_SCANNER $CONFIG_USB
dep_tristate ' USB keyboard support' CONFIG_USB_KBD $CONFIG_USB
......
......@@ -72,14 +72,6 @@ ifeq ($(CONFIG_USB_HP_SCANNER),m)
MI_OBJS +=hp_scanner.o
endif
ifeq ($(CONFIG_USB_HUB),y)
L_OBJS += hub.o
endif
ifeq ($(CONFIG_USB_HUB),m)
M_OBJS += hub.o
MI_OBJS += hub.o
endif
ifeq ($(CONFIG_USB_ACM),y)
L_OBJS += acm.o
endif
......@@ -212,9 +204,11 @@ usb-ohci-hcd.o: ohci-hcd.o ohci-root-hub.o
$(LD) $(LD_RFLAG) -r -o $@ ohci-hcd.o ohci-root-hub.o
ifeq ($(CONFIG_USB_PROC),y)
usbcore.o: usb.o usb-debug.o usb-core.o proc_usb.o
$(LD) $(LD_RFLAG) -r -o $@ usb.o usb-debug.o usb-core.o proc_usb.o
usbcore.o: usb.o usb-debug.o usb-core.o proc_usb.o hub.o
$(LD) $(LD_RFLAG) -r -o $@ usb.o usb-debug.o usb-core.o proc_usb.o \
hub.o
else
usbcore.o: usb.o usb-debug.o usb-core.o
$(LD) $(LD_RFLAG) -r -o $@ usb.o usb-debug.o usb-core.o
usbcore.o: usb.o usb-debug.o usb-core.o hub.o
$(LD) $(LD_RFLAG) -r -o $@ usb.o usb-debug.o usb-core.o \
hub.o
endif
......@@ -11,7 +11,6 @@
#include <linux/list.h>
#include <linux/malloc.h>
#include <linux/smp_lock.h>
#include <linux/module.h>
#include <linux/spinlock.h>
#include <asm/uaccess.h>
......@@ -519,16 +518,3 @@ void usb_hub_cleanup(void)
*/
usb_deregister(&hub_driver);
} /* usb_hub_cleanup() */
#ifdef MODULE
int init_module(void)
{
return usb_hub_init();
}
void cleanup_module(void)
{
usb_hub_cleanup();
}
#endif
......@@ -33,6 +33,8 @@ int usb_init(void)
#ifdef CONFIG_USB_PROC
proc_usb_init();
#endif
usb_hub_init();
#ifndef CONFIG_USB_MODULE
# ifdef CONFIG_USB_UHCI
uhci_init();
......@@ -70,9 +72,6 @@ int usb_init(void)
# ifdef CONFIG_USB_DC2XX
usb_dc2xx_init();
# endif
# ifdef CONFIG_USB_HUB
usb_hub_init();
# endif
# ifdef CONFIG_USB_SCSI
usb_scsi_init();
# endif
......@@ -89,10 +88,8 @@ void cleanup_drivers(void)
#ifdef CONFIG_USB_PROC
proc_usb_cleanup ();
#endif
usb_hub_cleanup();
#ifndef MODULE
# ifdef CONFIG_USB_HUB
usb_hub_cleanup();
# endif
# ifdef CONFIG_USB_MOUSE
usb_mouse_cleanup();
# endif
......
......@@ -79,13 +79,18 @@ int do_truncate(struct dentry *dentry, loff_t length)
return error;
}
asmlinkage long sys_truncate(const char * path, unsigned long length)
static inline long do_sys_truncate(const char * path, loff_t length)
{
struct dentry * dentry;
struct inode * inode;
int error;
lock_kernel();
error = -EINVAL;
if (length < 0) /* sorry, but loff_t says... */
goto out;
dentry = namei(path);
error = PTR_ERR(dentry);
......@@ -128,13 +133,21 @@ asmlinkage long sys_truncate(const char * path, unsigned long length)
return error;
}
asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
asmlinkage long sys_truncate(const char * path, unsigned long length)
{
return do_sys_truncate(path, length);
}
static inline long do_sys_ftruncate(unsigned int fd, loff_t length)
{
struct inode * inode;
struct dentry *dentry;
struct file * file;
int error;
error = -EINVAL;
if (length < 0)
goto out;
error = -EBADF;
file = fget(fd);
if (!file)
......@@ -163,6 +176,24 @@ asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
return error;
}
asmlinkage long sys_ftruncate(unsigned int fd, unsigned long length)
{
return do_sys_ftruncate(fd, length);
}
/* LFS versions of truncate are only needed on 32 bit machines */
#if BITS_PER_LONG == 32
asmlinkage long sys_truncate64(const char * path, loff_t length)
{
return do_sys_truncate(path, length);
}
asmlinkage long sys_ftruncate64(unsigned int fd, loff_t length)
{
return do_sys_ftruncate(fd, length);
}
#endif
#if !(defined(__alpha__) || defined(__ia64__))
/*
......
......@@ -197,6 +197,8 @@
#define __NR_vfork 190
#define __NR_ugetrlimit 191 /* SuS compliant getrlimit */
#define __NR_mmap2 192
#define __NR_truncate64 193
#define __NR_ftruncate64 194
/* user-visible error numbers are in the range -1 - -124: see <asm-i386/errno.h> */
......
/*
* AGPGART module version 0.99
* Copyright (C) 1999 Jeff Hartmann
* Copyright (C) 1999 Precision Insight
* Copyright (C) 1999 Xi Graphics
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef _AGP_BACKEND_H
#define _AGP_BACKEND_H 1
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#define AGPGART_VERSION_MAJOR 0
#define AGPGART_VERSION_MINOR 99
enum chipset_type {
NOT_SUPPORTED,
INTEL_GENERIC,
INTEL_LX,
INTEL_BX,
INTEL_GX,
INTEL_I810,
VIA_GENERIC,
VIA_VP3,
VIA_MVP3,
VIA_APOLLO_PRO,
SIS_GENERIC,
AMD_GENERIC,
AMD_IRONGATE,
ALI_M1541,
ALI_GENERIC
};
typedef struct _agp_version {
u16 major;
u16 minor;
} agp_version;
typedef struct _agp_kern_info {
agp_version version;
struct pci_dev *device;
enum chipset_type chipset;
unsigned long mode;
off_t aper_base;
size_t aper_size;
int max_memory; /* In pages */
int current_memory;
} agp_kern_info;
/*
* The agp_memory structure has information
* about the block of agp memory allocated.
* A caller may manipulate the next and prev
* pointers to link each allocated item into
* a list. These pointers are ignored by the
* backend. Everything else should never be
* written to, but the caller may read any of
* the items to detrimine the status of this
* block of agp memory.
*
*/
typedef struct _agp_memory {
int key;
struct _agp_memory *next;
struct _agp_memory *prev;
size_t page_count;
int num_scratch_pages;
unsigned long *memory;
off_t pg_start;
u32 type;
u8 is_bound;
u8 is_flushed;
} agp_memory;
#define AGP_NORMAL_MEMORY 0
extern void agp_free_memory(agp_memory *);
/*
* void agp_free_memory(agp_memory *curr) :
*
* This function frees memory associated with
* an agp_memory pointer. It is the only function
* that can be called when the backend is not owned
* by the caller. (So it can free memory on client
* death.)
*
* It takes an agp_memory pointer as an argument.
*
*/
extern agp_memory *agp_allocate_memory(size_t, u32);
/*
* agp_memory *agp_allocate_memory(size_t page_count, u32 type) :
*
* This function allocates a group of pages of
* a certain type.
*
* It takes a size_t argument of the number of pages, and
* an u32 argument of the type of memory to be allocated.
* Every agp bridge device will allow you to allocate
* AGP_NORMAL_MEMORY which maps to physical ram. Any other
* type is device dependant.
*
* It returns NULL whenever memory is unavailable.
*
*/
extern void agp_copy_info(agp_kern_info *);
/*
* void agp_copy_info(agp_kern_info *info) :
*
* This function copies information about the
* agp bridge device and the state of the agp
* backend into an agp_kern_info pointer.
*
* It takes an agp_kern_info pointer as an
* argument. The caller should insure that
* this pointer is valid.
*
*/
extern int agp_bind_memory(agp_memory *, off_t);
/*
* int agp_bind_memory(agp_memory *curr, off_t pg_start) :
*
* This function binds an agp_memory structure
* into the graphics aperture translation table.
*
* It takes an agp_memory pointer and an offset into
* the graphics aperture translation table as arguments
*
* It returns -EINVAL if the pointer == NULL.
* It returns -EBUSY if the area of the table
* requested is already in use.
*
*/
extern int agp_unbind_memory(agp_memory *);
/*
* int agp_unbind_memory(agp_memory *curr) :
*
* This function removes an agp_memory structure
* from the graphics aperture translation table.
*
* It takes an agp_memory pointer as an argument.
*
* It returns -EINVAL if this piece of agp_memory
* is not currently bound to the graphics aperture
* translation table or if the agp_memory
* pointer == NULL
*
*/
extern void agp_enable(u32);
/*
* void agp_enable(u32 mode) :
*
* This function initializes the agp point-to-point
* connection.
*
* It takes an agp mode register as an argument
*
*/
extern int agp_backend_acquire(void);
/*
* int agp_backend_acquire(void) :
*
* This Function attempts to acquire the agp
* backend.
*
* returns -EBUSY if agp is in use,
* returns 0 if the caller owns the agp backend
*/
extern void agp_backend_release(void);
/*
* void agp_backend_release(void) :
*
* This Function releases the lock on the agp
* backend.
*
* The caller must insure that the graphics
* aperture translation table is read for use
* by another entity. (Ensure that all memory
* it bound is unbound.)
*
*/
#endif /* _AGP_BACKEND_H */
/*
* AGPGART module version 0.99
* Copyright (C) 1999 Jeff Hartmann
* Copyright (C) 1999 Precision Insight
* Copyright (C) 1999 Xi Graphics
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* JEFF HARTMANN, OR ANY OTHER CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
* OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*
*/
#ifndef _AGP_H
#define _AGP_H 1
#define AGPIOC_BASE 'A'
#define AGPIOC_INFO _IOR (AGPIOC_BASE, 0, agp_info*)
#define AGPIOC_ACQUIRE _IO (AGPIOC_BASE, 1)
#define AGPIOC_RELEASE _IO (AGPIOC_BASE, 2)
#define AGPIOC_SETUP _IOW (AGPIOC_BASE, 3, agp_setup*)
#define AGPIOC_RESERVE _IOW (AGPIOC_BASE, 4, agp_region*)
#define AGPIOC_PROTECT _IOW (AGPIOC_BASE, 5, agp_region*)
#define AGPIOC_ALLOCATE _IOWR(AGPIOC_BASE, 6, agp_allocate*)
#define AGPIOC_DEALLOCATE _IOW (AGPIOC_BASE, 7, int)
#define AGPIOC_BIND _IOW (AGPIOC_BASE, 8, agp_bind*)
#define AGPIOC_UNBIND _IOW (AGPIOC_BASE, 9, agp_unbind*)
#define AGP_DEVICE "/dev/agpgart"
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef __KERNEL__
#include <linux/types.h>
#include <asm/types.h>
typedef struct _agp_version {
__u16 major;
__u16 minor;
} agp_version;
typedef struct _agp_info {
agp_version version; /* version of the driver */
__u32 bridge_id; /* bridge vendor/device */
__u32 agp_mode; /* mode info of bridge */
off_t aper_base; /* base of aperture */
size_t aper_size; /* size of aperture */
size_t pg_total; /* max pages (swap + system) */
size_t pg_system; /* max pages (system) */
size_t pg_used; /* current pages used */
} agp_info;
typedef struct _agp_setup {
__u32 agp_mode; /* mode info of bridge */
} agp_setup;
/*
* The "prot" down below needs still a "sleep" flag somehow ...
*/
typedef struct _agp_segment {
off_t pg_start; /* starting page to populate */
size_t pg_count; /* number of pages */
int prot; /* prot flags for mmap */
} agp_segment;
typedef struct _agp_region {
pid_t pid; /* pid of process */
size_t seg_count; /* number of segments */
struct _agp_segment *seg_list;
} agp_region;
typedef struct _agp_allocate {
int key; /* tag of allocation */
size_t pg_count; /* number of pages */
__u32 type; /* 0 == normal, other devspec */
} agp_allocate;
typedef struct _agp_bind {
int key; /* tag of allocation */
off_t pg_start; /* starting page to populate */
} agp_bind;
typedef struct _agp_unbind {
int key; /* tag of allocation */
__u32 priority; /* priority for paging out */
} agp_unbind;
#else /* __KERNEL__ */
#define AGPGART_MINOR 175
#define AGP_UNLOCK() up(&(agp_fe.agp_mutex));
#define AGP_LOCK() down(&(agp_fe.agp_mutex));
#define AGP_LOCK_INIT() sema_init(&(agp_fe.agp_mutex), 1)
#ifndef _AGP_BACKEND_H
typedef struct _agp_version {
u16 major;
u16 minor;
} agp_version;
#endif
typedef struct _agp_info {
agp_version version; /* version of the driver */
u32 bridge_id; /* bridge vendor/device */
u32 agp_mode; /* mode info of bridge */
off_t aper_base; /* base of aperture */
size_t aper_size; /* size of aperture */
size_t pg_total; /* max pages (swap + system) */
size_t pg_system; /* max pages (system) */
size_t pg_used; /* current pages used */
} agp_info;
typedef struct _agp_setup {
u32 agp_mode; /* mode info of bridge */
} agp_setup;
/*
* The "prot" down below needs still a "sleep" flag somehow ...
*/
typedef struct _agp_segment {
off_t pg_start; /* starting page to populate */
size_t pg_count; /* number of pages */
int prot; /* prot flags for mmap */
} agp_segment;
typedef struct _agp_segment_priv {
off_t pg_start;
size_t pg_count;
pgprot_t prot;
} agp_segment_priv;
typedef struct _agp_region {
pid_t pid; /* pid of process */
size_t seg_count; /* number of segments */
struct _agp_segment *seg_list;
} agp_region;
typedef struct _agp_allocate {
int key; /* tag of allocation */
size_t pg_count; /* number of pages */
u32 type; /* 0 == normal, other devspec */
} agp_allocate;
typedef struct _agp_bind {
int key; /* tag of allocation */
off_t pg_start; /* starting page to populate */
} agp_bind;
typedef struct _agp_unbind {
int key; /* tag of allocation */
u32 priority; /* priority for paging out */
} agp_unbind;
typedef struct _agp_client {
struct _agp_client *next;
struct _agp_client *prev;
pid_t pid;
int num_segments;
agp_segment_priv **segments;
} agp_client;
typedef struct _agp_controller {
struct _agp_controller *next;
struct _agp_controller *prev;
pid_t pid;
int num_clients;
agp_memory *pool;
agp_client *clients;
} agp_controller;
#define AGP_FF_ALLOW_CLIENT 0
#define AGP_FF_ALLOW_CONTROLLER 1
#define AGP_FF_IS_CLIENT 2
#define AGP_FF_IS_CONTROLLER 3
#define AGP_FF_IS_VALID 4
typedef struct _agp_file_private {
struct _agp_file_private *next;
struct _agp_file_private *prev;
pid_t my_pid;
u32 access_flags;
} agp_file_private;
struct agp_front_data {
struct semaphore agp_mutex;
agp_controller *current_controller;
agp_controller *controllers;
agp_file_private *file_priv_list;
u8 used_by_controller;
u8 backend_acquired;
};
#endif /* __KERNEL__ */
#endif /* _AGP_H */
......@@ -450,6 +450,7 @@ struct pci_bus *pci_scan_bus(int bus, struct pci_ops *ops, void *sysdata);
int pci_proc_attach_device(struct pci_dev *dev);
int pci_proc_detach_device(struct pci_dev *dev);
void pci_name_device(struct pci_dev *dev);
char *pci_class_name(u32 class);
void pci_read_bridge_bases(struct pci_bus *child);
struct resource *pci_find_parent_resource(struct pci_dev *dev, struct resource *res);
......
......@@ -27,32 +27,37 @@
#define PCI_BASE_CLASS_DISPLAY 0x03
#define PCI_CLASS_DISPLAY_VGA 0x0300
#define PCI_CLASS_DISPLAY_XGA 0x0301
#define PCI_CLASS_DISPLAY_3D 0x0302
#define PCI_CLASS_DISPLAY_OTHER 0x0380
#define PCI_BASE_CLASS_MULTIMEDIA 0x04
#define PCI_CLASS_MULTIMEDIA_VIDEO 0x0400
#define PCI_CLASS_MULTIMEDIA_AUDIO 0x0401
#define PCI_CLASS_MULTIMEDIA_PHONE 0x0402
#define PCI_CLASS_MULTIMEDIA_OTHER 0x0480
#define PCI_BASE_CLASS_MEMORY 0x05
#define PCI_CLASS_MEMORY_RAM 0x0500
#define PCI_CLASS_MEMORY_FLASH 0x0501
#define PCI_CLASS_MEMORY_OTHER 0x0580
#define PCI_CLASS_MEMORY_RAM 0x0500
#define PCI_CLASS_MEMORY_FLASH 0x0501
#define PCI_CLASS_MEMORY_OTHER 0x0580
#define PCI_BASE_CLASS_BRIDGE 0x06
#define PCI_CLASS_BRIDGE_HOST 0x0600
#define PCI_CLASS_BRIDGE_ISA 0x0601
#define PCI_CLASS_BRIDGE_EISA 0x0602
#define PCI_CLASS_BRIDGE_MC 0x0603
#define PCI_CLASS_BRIDGE_PCI 0x0604
#define PCI_CLASS_BRIDGE_PCMCIA 0x0605
#define PCI_CLASS_BRIDGE_NUBUS 0x0606
#define PCI_CLASS_BRIDGE_CARDBUS 0x0607
#define PCI_CLASS_BRIDGE_OTHER 0x0680
#define PCI_CLASS_BRIDGE_HOST 0x0600
#define PCI_CLASS_BRIDGE_ISA 0x0601
#define PCI_CLASS_BRIDGE_EISA 0x0602
#define PCI_CLASS_BRIDGE_MC 0x0603
#define PCI_CLASS_BRIDGE_PCI 0x0604
#define PCI_CLASS_BRIDGE_PCMCIA 0x0605
#define PCI_CLASS_BRIDGE_NUBUS 0x0606
#define PCI_CLASS_BRIDGE_CARDBUS 0x0607
#define PCI_CLASS_BRIDGE_RACEWAY 0x0608
#define PCI_CLASS_BRIDGE_OTHER 0x0680
#define PCI_BASE_CLASS_COMMUNICATION 0x07
#define PCI_CLASS_COMMUNICATION_SERIAL 0x0700
#define PCI_CLASS_COMMUNICATION_PARALLEL 0x0701
#define PCI_CLASS_COMMUNICATION_MULTISERIAL 0x0702
#define PCI_CLASS_COMMUNICATION_MODEM 0x0703
#define PCI_CLASS_COMMUNICATION_OTHER 0x0780
#define PCI_BASE_CLASS_SYSTEM 0x08
......@@ -60,17 +65,20 @@
#define PCI_CLASS_SYSTEM_DMA 0x0801
#define PCI_CLASS_SYSTEM_TIMER 0x0802
#define PCI_CLASS_SYSTEM_RTC 0x0803
#define PCI_CLASS_SYSTEM_PCI_HOTPLUG 0x0804
#define PCI_CLASS_SYSTEM_OTHER 0x0880
#define PCI_BASE_CLASS_INPUT 0x09
#define PCI_CLASS_INPUT_KEYBOARD 0x0900
#define PCI_CLASS_INPUT_PEN 0x0901
#define PCI_CLASS_INPUT_MOUSE 0x0902
#define PCI_CLASS_INPUT_SCANNER 0x0903
#define PCI_CLASS_INPUT_GAMEPORT 0x0904
#define PCI_CLASS_INPUT_OTHER 0x0980
#define PCI_BASE_CLASS_DOCKING 0x0a
#define PCI_CLASS_DOCKING_GENERIC 0x0a00
#define PCI_CLASS_DOCKING_OTHER 0x0a01
#define PCI_CLASS_DOCKING_OTHER 0x0a80
#define PCI_BASE_CLASS_PROCESSOR 0x0b
#define PCI_CLASS_PROCESSOR_386 0x0b00
......@@ -78,6 +86,7 @@
#define PCI_CLASS_PROCESSOR_PENTIUM 0x0b02
#define PCI_CLASS_PROCESSOR_ALPHA 0x0b10
#define PCI_CLASS_PROCESSOR_POWERPC 0x0b20
#define PCI_CLASS_PROCESSOR_MIPS 0x0b30
#define PCI_CLASS_PROCESSOR_CO 0x0b40
#define PCI_BASE_CLASS_SERIAL 0x0c
......@@ -86,11 +95,25 @@
#define PCI_CLASS_SERIAL_SSA 0x0c02
#define PCI_CLASS_SERIAL_USB 0x0c03
#define PCI_CLASS_SERIAL_FIBER 0x0c04
#define PCI_CLASS_SERIAL_SMBUS 0x0c05
#define PCI_BASE_CLASS_INTELLIGENT 0x0e
#define PCI_CLASS_INTELLIGENT_I2O 0x0e00
#define PCI_CLASS_HOT_SWAP_CONTROLLER 0xff00
#define PCI_BASE_CLASS_SATELLITE 0x0f
#define PCI_CLASS_SATELLITE_TV 0x0f00
#define PCI_CLASS_SATELLITE_AUDIO 0x0f01
#define PCI_CLASS_SATELLITE_VOICE 0x0f03
#define PCI_CLASS_SATELLITE_DATA 0x0f04
#define PCI_BASE_CLASS_CRYPT 0x10
#define PCI_CLASS_CRYPT_NETWORK 0x1000
#define PCI_CLASS_CRYPT_ENTERTAINMENT 0x1001
#define PCI_CLASS_CRYPT_OTHER 0x1080
#define PCI_BASE_CLASS_SIGNAL_PROCESSING 0x11
#define PCI_CLASS_SP_DPIO 0x1100
#define PCI_CLASS_SP_OTHER 0x1180
#define PCI_CLASS_OTHERS 0xff
......
......@@ -9,7 +9,7 @@
#include <asm/uaccess.h>
/* Note: never hold tasklist_lock while spinning for this one */
spinlock_t task_capability_lock;
spinlock_t task_capability_lock = SPIN_LOCK_UNLOCKED;
/*
* For sys_getproccap() and sys_setproccap(), any of the three
......
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