Commit 79cd7c1c authored by Linus Torvalds's avatar Linus Torvalds

Merge bk://linuxusb.bkbits.net/pci_hp-2.5

into home.transmeta.com:/home/torvalds/v2.5/linux
parents ab78bec6 9c076a26
...@@ -8,13 +8,17 @@ obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o ...@@ -8,13 +8,17 @@ obj-$(CONFIG_HOTPLUG_PCI) += pci_hotplug.o
obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o obj-$(CONFIG_HOTPLUG_PCI_COMPAQ) += cpqphp.o
obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o obj-$(CONFIG_HOTPLUG_PCI_IBM) += ibmphp.o
obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o obj-$(CONFIG_HOTPLUG_PCI_ACPI) += acpiphp.o
obj-$(CONFIG_HOTPLUG_PCI_CPCI) += cpci_hotplug.o
obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o obj-$(CONFIG_HOTPLUG_PCI_CPCI_ZT5550) += cpcihp_zt5550.o
obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o obj-$(CONFIG_HOTPLUG_PCI_CPCI_GENERIC) += cpcihp_generic.o
pci_hotplug-objs := pci_hotplug_core.o \ pci_hotplug-objs := pci_hotplug_core.o \
pci_hotplug_util.o pci_hotplug_util.o
ifdef CONFIG_HOTPLUG_PCI_CPCI
pci_hotplug-objs += cpci_hotplug_core.o \
cpci_hotplug_pci.o
endif
cpqphp-objs := cpqphp_core.o \ cpqphp-objs := cpqphp_core.o \
cpqphp_ctrl.o \ cpqphp_ctrl.o \
cpqphp_proc.o \ cpqphp_proc.o \
...@@ -31,9 +35,6 @@ acpiphp-objs := acpiphp_core.o \ ...@@ -31,9 +35,6 @@ acpiphp-objs := acpiphp_core.o \
acpiphp_pci.o \ acpiphp_pci.o \
acpiphp_res.o acpiphp_res.o
cpci_hotplug-objs := cpci_hotplug_core.o \
cpci_hotplug_pci.o
ifdef CONFIG_HOTPLUG_PCI_ACPI ifdef CONFIG_HOTPLUG_PCI_ACPI
EXTRA_CFLAGS += -D_LINUX -I$(TOPDIR)/drivers/acpi EXTRA_CFLAGS += -D_LINUX -I$(TOPDIR)/drivers/acpi
ifdef CONFIG_ACPI_DEBUG ifdef CONFIG_ACPI_DEBUG
......
...@@ -891,16 +891,17 @@ cleanup_slots(void) ...@@ -891,16 +891,17 @@ cleanup_slots(void)
return; return;
} }
static int __init int __init
cpci_hotplug_init(void) cpci_hotplug_init(int debug)
{ {
spin_lock_init(&list_lock); spin_lock_init(&list_lock);
cpci_debug = debug;
info(DRIVER_DESC " version: " DRIVER_VERSION); info(DRIVER_DESC " version: " DRIVER_VERSION);
return 0; return 0;
} }
static void __exit void __exit
cpci_hotplug_exit(void) cpci_hotplug_exit(void)
{ {
/* /*
...@@ -909,14 +910,6 @@ cpci_hotplug_exit(void) ...@@ -909,14 +910,6 @@ cpci_hotplug_exit(void)
cleanup_slots(); cleanup_slots();
} }
module_init(cpci_hotplug_init);
module_exit(cpci_hotplug_exit);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_LICENSE("GPL");
MODULE_PARM(cpci_debug, "i");
MODULE_PARM_DESC(cpci_debug, "Debugging mode");
EXPORT_SYMBOL_GPL(cpci_hp_register_controller); EXPORT_SYMBOL_GPL(cpci_hp_register_controller);
EXPORT_SYMBOL_GPL(cpci_hp_unregister_controller); EXPORT_SYMBOL_GPL(cpci_hp_unregister_controller);
......
...@@ -572,16 +572,16 @@ static int unconfigure_visit_pci_bus_phase2(struct pci_bus_wrapped *wrapped_bus, ...@@ -572,16 +572,16 @@ static int unconfigure_visit_pci_bus_phase2(struct pci_bus_wrapped *wrapped_bus,
} }
static struct pci_visit configure_functions = { static struct pci_visit configure_functions = {
visit_pci_dev:configure_visit_pci_dev, .visit_pci_dev = configure_visit_pci_dev,
}; };
static struct pci_visit unconfigure_functions_phase1 = { static struct pci_visit unconfigure_functions_phase1 = {
post_visit_pci_dev:unconfigure_visit_pci_dev_phase1 .post_visit_pci_dev = unconfigure_visit_pci_dev_phase1
}; };
static struct pci_visit unconfigure_functions_phase2 = { static struct pci_visit unconfigure_functions_phase2 = {
post_visit_pci_bus:unconfigure_visit_pci_bus_phase2, .post_visit_pci_bus = unconfigure_visit_pci_bus_phase2,
post_visit_pci_dev:unconfigure_visit_pci_dev_phase2 .post_visit_pci_dev = unconfigure_visit_pci_dev_phase2
}; };
......
...@@ -1240,11 +1240,11 @@ void ibmphp_free_ebda_pci_rsrc_queue (void) ...@@ -1240,11 +1240,11 @@ void ibmphp_free_ebda_pci_rsrc_queue (void)
static struct pci_device_id id_table[] __devinitdata = { static struct pci_device_id id_table[] __devinitdata = {
{ {
vendor: PCI_VENDOR_ID_IBM, .vendor = PCI_VENDOR_ID_IBM,
device: HPC_DEVICE_ID, .device = HPC_DEVICE_ID,
subvendor: PCI_VENDOR_ID_IBM, .subvendor = PCI_VENDOR_ID_IBM,
subdevice: HPC_SUBSYSTEM_ID, .subdevice = HPC_SUBSYSTEM_ID,
class: ((PCI_CLASS_SYSTEM_PCI_HOTPLUG << 8) | 0x00), .class = ((PCI_CLASS_SYSTEM_PCI_HOTPLUG << 8) | 0x00),
}, {} }, {}
}; };
...@@ -1252,9 +1252,9 @@ MODULE_DEVICE_TABLE(pci, id_table); ...@@ -1252,9 +1252,9 @@ MODULE_DEVICE_TABLE(pci, id_table);
static int ibmphp_probe (struct pci_dev *, const struct pci_device_id *); static int ibmphp_probe (struct pci_dev *, const struct pci_device_id *);
static struct pci_driver ibmphp_driver = { static struct pci_driver ibmphp_driver = {
name: "ibmphp", .name = "ibmphp",
id_table: id_table, .id_table = id_table,
probe: ibmphp_probe, .probe = ibmphp_probe,
}; };
int ibmphp_register_pci (void) int ibmphp_register_pci (void)
......
...@@ -60,8 +60,8 @@ ...@@ -60,8 +60,8 @@
/* local variables */ /* local variables */
static int debug; static int debug;
#define DRIVER_VERSION "0.4" #define DRIVER_VERSION "0.5"
#define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>" #define DRIVER_AUTHOR "Greg Kroah-Hartman <greg@kroah.com>, Scott Murray <scottm@somanetworks.com>"
#define DRIVER_DESC "PCI Hot Plug PCI Core" #define DRIVER_DESC "PCI Hot Plug PCI Core"
...@@ -89,7 +89,7 @@ static int pcihpfs_mount_count; /* times we have mounted our fs */ ...@@ -89,7 +89,7 @@ static int pcihpfs_mount_count; /* times we have mounted our fs */
static spinlock_t mount_lock; /* protects our mount_count */ static spinlock_t mount_lock; /* protects our mount_count */
static spinlock_t list_lock; static spinlock_t list_lock;
LIST_HEAD(pci_hotplug_slot_list); static LIST_HEAD(pci_hotplug_slot_list);
/* these strings match up with the values in pci_bus_speed */ /* these strings match up with the values in pci_bus_speed */
static char *pci_bus_speed_strings[] = { static char *pci_bus_speed_strings[] = {
...@@ -121,6 +121,14 @@ static struct proc_dir_entry *slotdir = NULL; ...@@ -121,6 +121,14 @@ static struct proc_dir_entry *slotdir = NULL;
static const char *slotdir_name = "slots"; static const char *slotdir_name = "slots";
#endif #endif
#ifdef CONFIG_HOTPLUG_PCI_CPCI
extern int cpci_hotplug_init(int debug);
extern void cpci_hotplug_exit(void);
#else
static inline int cpci_hotplug_init(int debug) { return 0; }
static inline void cpci_hotplug_exit(void) { }
#endif
static struct inode *pcihpfs_get_inode (struct super_block *sb, int mode, dev_t dev) static struct inode *pcihpfs_get_inode (struct super_block *sb, int mode, dev_t dev)
{ {
struct inode *inode = new_inode(sb); struct inode *inode = new_inode(sb);
...@@ -311,19 +319,19 @@ static struct file_operations presence_file_operations = { ...@@ -311,19 +319,19 @@ static struct file_operations presence_file_operations = {
/* file ops for the "max bus speed" files */ /* file ops for the "max bus speed" files */
static ssize_t max_bus_speed_read_file (struct file *file, char *buf, size_t count, loff_t *offset); static ssize_t max_bus_speed_read_file (struct file *file, char *buf, size_t count, loff_t *offset);
static struct file_operations max_bus_speed_file_operations = { static struct file_operations max_bus_speed_file_operations = {
read: max_bus_speed_read_file, .read = max_bus_speed_read_file,
write: default_write_file, .write = default_write_file,
open: default_open, .open = default_open,
llseek: default_file_lseek, .llseek = default_file_lseek,
}; };
/* file ops for the "current bus speed" files */ /* file ops for the "current bus speed" files */
static ssize_t cur_bus_speed_read_file (struct file *file, char *buf, size_t count, loff_t *offset); static ssize_t cur_bus_speed_read_file (struct file *file, char *buf, size_t count, loff_t *offset);
static struct file_operations cur_bus_speed_file_operations = { static struct file_operations cur_bus_speed_file_operations = {
read: cur_bus_speed_read_file, .read = cur_bus_speed_read_file,
write: default_write_file, .write = default_write_file,
open: default_open, .open = default_open,
llseek: default_file_lseek, .llseek = default_file_lseek,
}; };
/* file ops for the "test" files */ /* file ops for the "test" files */
...@@ -1273,19 +1281,30 @@ static int __init pci_hotplug_init (void) ...@@ -1273,19 +1281,30 @@ static int __init pci_hotplug_init (void)
goto exit; goto exit;
} }
result = cpci_hotplug_init(debug);
if (result) {
err ("cpci_hotplug_init with error %d\n", result);
goto error_fs;
}
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
/* create mount point for pcihpfs */ /* create mount point for pcihpfs */
slotdir = proc_mkdir(slotdir_name, proc_bus_pci_dir); slotdir = proc_mkdir(slotdir_name, proc_bus_pci_dir);
#endif #endif
info (DRIVER_DESC " version: " DRIVER_VERSION "\n"); info (DRIVER_DESC " version: " DRIVER_VERSION "\n");
goto exit;
error_fs:
unregister_filesystem(&pcihpfs_type);
exit: exit:
return result; return result;
} }
static void __exit pci_hotplug_exit (void) static void __exit pci_hotplug_exit (void)
{ {
cpci_hotplug_exit();
unregister_filesystem(&pcihpfs_type); unregister_filesystem(&pcihpfs_type);
#ifdef CONFIG_PROC_FS #ifdef CONFIG_PROC_FS
......
...@@ -383,7 +383,6 @@ struct pci_dev { ...@@ -383,7 +383,6 @@ struct pci_dev {
u8 rom_base_reg; /* which config register controls the ROM */ u8 rom_base_reg; /* which config register controls the ROM */
struct pci_driver *driver; /* which driver has allocated this device */ struct pci_driver *driver; /* which driver has allocated this device */
void *driver_data; /* data private to the driver */
u64 dma_mask; /* Mask of the bits of bus address this u64 dma_mask; /* Mask of the bits of bus address this
device implements. Normally this is device implements. Normally this is
0xffffffff. You only need to change 0xffffffff. You only need to change
...@@ -787,17 +786,17 @@ static inline int pci_module_init(struct pci_driver *drv) ...@@ -787,17 +786,17 @@ static inline int pci_module_init(struct pci_driver *drv)
pci_resource_start((dev),(bar)) + 1)) pci_resource_start((dev),(bar)) + 1))
/* Similar to the helpers above, these manipulate per-pci_dev /* Similar to the helpers above, these manipulate per-pci_dev
* driver-specific data. Currently stored as pci_dev::driver_data, * driver-specific data. They are really just a wrapper around
* a void pointer, but it is not present on older kernels. * the generic device structure functions of these calls.
*/ */
static inline void *pci_get_drvdata (struct pci_dev *pdev) static inline void *pci_get_drvdata (struct pci_dev *pdev)
{ {
return pdev->driver_data; return dev_get_drvdata(&pdev->dev);
} }
static inline void pci_set_drvdata (struct pci_dev *pdev, void *data) static inline void pci_set_drvdata (struct pci_dev *pdev, void *data)
{ {
pdev->driver_data = data; dev_set_drvdata(&pdev->dev, data);
} }
/* /*
......
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