提交 9662e32c 编写于 作者: B Bjorn Helgaas

Merge branch 'pci/trivial' into next

* pci/trivial:
  PCI: shpchp: Constify hpc_ops structure
  PCI: Use kobj_to_dev() instead of open-coding it
  PCI: Use to_pci_dev() instead of open-coding it
  PCI: Fix all whitespace issues
  PCI/MSI: Fix typos in <linux/msi.h>
...@@ -25,7 +25,7 @@ DEFINE_RAW_SPINLOCK(pci_lock); ...@@ -25,7 +25,7 @@ DEFINE_RAW_SPINLOCK(pci_lock);
#define PCI_word_BAD (pos & 1) #define PCI_word_BAD (pos & 1)
#define PCI_dword_BAD (pos & 3) #define PCI_dword_BAD (pos & 3)
#define PCI_OP_READ(size,type,len) \ #define PCI_OP_READ(size, type, len) \
int pci_bus_read_config_##size \ int pci_bus_read_config_##size \
(struct pci_bus *bus, unsigned int devfn, int pos, type *value) \ (struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
{ \ { \
...@@ -40,7 +40,7 @@ int pci_bus_read_config_##size \ ...@@ -40,7 +40,7 @@ int pci_bus_read_config_##size \
return res; \ return res; \
} }
#define PCI_OP_WRITE(size,type,len) \ #define PCI_OP_WRITE(size, type, len) \
int pci_bus_write_config_##size \ int pci_bus_write_config_##size \
(struct pci_bus *bus, unsigned int devfn, int pos, type value) \ (struct pci_bus *bus, unsigned int devfn, int pos, type value) \
{ \ { \
...@@ -231,7 +231,7 @@ static noinline void pci_wait_cfg(struct pci_dev *dev) ...@@ -231,7 +231,7 @@ static noinline void pci_wait_cfg(struct pci_dev *dev)
} }
/* Returns 0 on success, negative values indicate error. */ /* Returns 0 on success, negative values indicate error. */
#define PCI_USER_READ_CONFIG(size,type) \ #define PCI_USER_READ_CONFIG(size, type) \
int pci_user_read_config_##size \ int pci_user_read_config_##size \
(struct pci_dev *dev, int pos, type *val) \ (struct pci_dev *dev, int pos, type *val) \
{ \ { \
...@@ -251,7 +251,7 @@ int pci_user_read_config_##size \ ...@@ -251,7 +251,7 @@ int pci_user_read_config_##size \
EXPORT_SYMBOL_GPL(pci_user_read_config_##size); EXPORT_SYMBOL_GPL(pci_user_read_config_##size);
/* Returns 0 on success, negative values indicate error. */ /* Returns 0 on success, negative values indicate error. */
#define PCI_USER_WRITE_CONFIG(size,type) \ #define PCI_USER_WRITE_CONFIG(size, type) \
int pci_user_write_config_##size \ int pci_user_write_config_##size \
(struct pci_dev *dev, int pos, type val) \ (struct pci_dev *dev, int pos, type val) \
{ \ { \
......
...@@ -122,7 +122,7 @@ static int pcie_phy_wait_ack(void __iomem *dbi_base, int addr) ...@@ -122,7 +122,7 @@ static int pcie_phy_wait_ack(void __iomem *dbi_base, int addr)
} }
/* Read from the 16-bit PCIe PHY control registers (not memory-mapped) */ /* Read from the 16-bit PCIe PHY control registers (not memory-mapped) */
static int pcie_phy_read(void __iomem *dbi_base, int addr , int *data) static int pcie_phy_read(void __iomem *dbi_base, int addr, int *data)
{ {
u32 val, phy_ctl; u32 val, phy_ctl;
int ret; int ret;
......
...@@ -36,10 +36,10 @@ ...@@ -36,10 +36,10 @@
#define MY_NAME "acpi_pcihp" #define MY_NAME "acpi_pcihp"
#define dbg(fmt, arg...) do { if (debug_acpi) printk(KERN_DEBUG "%s: %s: " fmt , MY_NAME , __func__ , ## arg); } while (0) #define dbg(fmt, arg...) do { if (debug_acpi) printk(KERN_DEBUG "%s: %s: " fmt, MY_NAME, __func__, ## arg); } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format , MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
#define METHOD_NAME__SUN "_SUN" #define METHOD_NAME__SUN "_SUN"
#define METHOD_NAME_OSHP "OSHP" #define METHOD_NAME_OSHP "OSHP"
...@@ -132,7 +132,7 @@ int acpi_get_hp_hw_control_from_firmware(struct pci_dev *pdev, u32 flags) ...@@ -132,7 +132,7 @@ int acpi_get_hp_hw_control_from_firmware(struct pci_dev *pdev, u32 flags)
while (handle) { while (handle) {
acpi_get_name(handle, ACPI_FULL_PATHNAME, &string); acpi_get_name(handle, ACPI_FULL_PATHNAME, &string);
dbg("Trying to get hotplug control for %s \n", dbg("Trying to get hotplug control for %s\n",
(char *)string.pointer); (char *)string.pointer);
status = acpi_run_oshp(handle); status = acpi_run_oshp(handle);
if (ACPI_SUCCESS(status)) if (ACPI_SUCCESS(status))
......
...@@ -181,7 +181,7 @@ struct acpiphp_attention_info ...@@ -181,7 +181,7 @@ struct acpiphp_attention_info
/* function prototypes */ /* function prototypes */
/* acpiphp_core.c */ /* acpiphp_core.c */
int acpiphp_register_attention(struct acpiphp_attention_info*info); int acpiphp_register_attention(struct acpiphp_attention_info *info);
int acpiphp_unregister_attention(struct acpiphp_attention_info *info); int acpiphp_unregister_attention(struct acpiphp_attention_info *info);
int acpiphp_register_hotplug_slot(struct acpiphp_slot *slot, unsigned int sun); int acpiphp_register_hotplug_slot(struct acpiphp_slot *slot, unsigned int sun);
void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot); void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot);
......
...@@ -63,13 +63,13 @@ MODULE_LICENSE("GPL"); ...@@ -63,13 +63,13 @@ MODULE_LICENSE("GPL");
MODULE_PARM_DESC(disable, "disable acpiphp driver"); MODULE_PARM_DESC(disable, "disable acpiphp driver");
module_param_named(disable, acpiphp_disabled, bool, 0444); module_param_named(disable, acpiphp_disabled, bool, 0444);
static int enable_slot (struct hotplug_slot *slot); static int enable_slot(struct hotplug_slot *slot);
static int disable_slot (struct hotplug_slot *slot); static int disable_slot(struct hotplug_slot *slot);
static int set_attention_status (struct hotplug_slot *slot, u8 value); static int set_attention_status(struct hotplug_slot *slot, u8 value);
static int get_power_status (struct hotplug_slot *slot, u8 *value); static int get_power_status(struct hotplug_slot *slot, u8 *value);
static int get_attention_status (struct hotplug_slot *slot, u8 *value); static int get_attention_status(struct hotplug_slot *slot, u8 *value);
static int get_latch_status (struct hotplug_slot *slot, u8 *value); static int get_latch_status(struct hotplug_slot *slot, u8 *value);
static int get_adapter_status (struct hotplug_slot *slot, u8 *value); static int get_adapter_status(struct hotplug_slot *slot, u8 *value);
static struct hotplug_slot_ops acpi_hotplug_slot_ops = { static struct hotplug_slot_ops acpi_hotplug_slot_ops = {
.enable_slot = enable_slot, .enable_slot = enable_slot,
......
...@@ -707,7 +707,7 @@ static void acpiphp_sanitize_bus(struct pci_bus *bus) ...@@ -707,7 +707,7 @@ static void acpiphp_sanitize_bus(struct pci_bus *bus)
unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM; unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
list_for_each_entry_safe_reverse(dev, tmp, &bus->devices, bus_list) { list_for_each_entry_safe_reverse(dev, tmp, &bus->devices, bus_list) {
for (i=0; i<PCI_BRIDGE_RESOURCES; i++) { for (i = 0; i < PCI_BRIDGE_RESOURCES; i++) {
struct resource *res = &dev->resource[i]; struct resource *res = &dev->resource[i];
if ((res->flags & type_mask) && !res->start && if ((res->flags & type_mask) && !res->start &&
res->end) { res->end) {
......
...@@ -336,7 +336,7 @@ static int ibm_get_table_from_acpi(char **bufp) ...@@ -336,7 +336,7 @@ static int ibm_get_table_from_acpi(char **bufp)
} }
size = 0; size = 0;
for (i=0; i<package->package.count; i++) { for (i = 0; i < package->package.count; i++) {
memcpy(&lbuf[size], memcpy(&lbuf[size],
package->package.elements[i].buffer.pointer, package->package.elements[i].buffer.pointer,
package->package.elements[i].buffer.length); package->package.elements[i].buffer.length);
......
...@@ -52,13 +52,13 @@ struct slot { ...@@ -52,13 +52,13 @@ struct slot {
}; };
struct cpci_hp_controller_ops { struct cpci_hp_controller_ops {
int (*query_enum) (void); int (*query_enum)(void);
int (*enable_irq) (void); int (*enable_irq)(void);
int (*disable_irq) (void); int (*disable_irq)(void);
int (*check_irq) (void *dev_id); int (*check_irq)(void *dev_id);
int (*hardware_test) (struct slot *slot, u32 value); int (*hardware_test)(struct slot *slot, u32 value);
u8 (*get_power) (struct slot *slot); u8 (*get_power)(struct slot *slot);
int (*set_power) (struct slot *slot, int value); int (*set_power)(struct slot *slot, int value);
}; };
struct cpci_hp_controller { struct cpci_hp_controller {
......
...@@ -45,12 +45,12 @@ ...@@ -45,12 +45,12 @@
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (cpci_debug) \ if (cpci_debug) \
printk (KERN_DEBUG "%s: " format "\n", \ printk(KERN_DEBUG "%s: " format "\n", \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
/* local variables */ /* local variables */
static DECLARE_RWSEM(list_rwsem); static DECLARE_RWSEM(list_rwsem);
...@@ -238,21 +238,21 @@ cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last) ...@@ -238,21 +238,21 @@ cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last)
* with the pci_hotplug subsystem. * with the pci_hotplug subsystem.
*/ */
for (i = first; i <= last; ++i) { for (i = first; i <= last; ++i) {
slot = kzalloc(sizeof (struct slot), GFP_KERNEL); slot = kzalloc(sizeof(struct slot), GFP_KERNEL);
if (!slot) { if (!slot) {
status = -ENOMEM; status = -ENOMEM;
goto error; goto error;
} }
hotplug_slot = hotplug_slot =
kzalloc(sizeof (struct hotplug_slot), GFP_KERNEL); kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL);
if (!hotplug_slot) { if (!hotplug_slot) {
status = -ENOMEM; status = -ENOMEM;
goto error_slot; goto error_slot;
} }
slot->hotplug_slot = hotplug_slot; slot->hotplug_slot = hotplug_slot;
info = kzalloc(sizeof (struct hotplug_slot_info), GFP_KERNEL); info = kzalloc(sizeof(struct hotplug_slot_info), GFP_KERNEL);
if (!info) { if (!info) {
status = -ENOMEM; status = -ENOMEM;
goto error_hpslot; goto error_hpslot;
......
...@@ -38,12 +38,12 @@ extern int cpci_debug; ...@@ -38,12 +38,12 @@ extern int cpci_debug;
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (cpci_debug) \ if (cpci_debug) \
printk (KERN_DEBUG "%s: " format "\n", \ printk(KERN_DEBUG "%s: " format "\n", \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
u8 cpci_get_attention_status(struct slot *slot) u8 cpci_get_attention_status(struct slot *slot)
......
...@@ -54,12 +54,12 @@ ...@@ -54,12 +54,12 @@
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (debug) \ if (debug) \
printk (KERN_DEBUG "%s: " format "\n", \ printk(KERN_DEBUG "%s: " format "\n", \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
/* local variables */ /* local variables */
static bool debug; static bool debug;
...@@ -164,7 +164,7 @@ static int __init cpcihp_generic_init(void) ...@@ -164,7 +164,7 @@ static int __init cpcihp_generic_init(void)
bus = dev->subordinate; bus = dev->subordinate;
pci_dev_put(dev); pci_dev_put(dev);
memset(&generic_hpc, 0, sizeof (struct cpci_hp_controller)); memset(&generic_hpc, 0, sizeof(struct cpci_hp_controller));
generic_hpc_ops.query_enum = query_enum; generic_hpc_ops.query_enum = query_enum;
generic_hpc.ops = &generic_hpc_ops; generic_hpc.ops = &generic_hpc_ops;
......
...@@ -49,12 +49,12 @@ ...@@ -49,12 +49,12 @@
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (debug) \ if (debug) \
printk (KERN_DEBUG "%s: " format "\n", \ printk(KERN_DEBUG "%s: " format "\n", \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
/* local variables */ /* local variables */
static bool debug; static bool debug;
...@@ -204,7 +204,7 @@ static int zt5550_hc_disable_irq(void) ...@@ -204,7 +204,7 @@ static int zt5550_hc_disable_irq(void)
return 0; return 0;
} }
static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id *ent) static int zt5550_hc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
{ {
int status; int status;
...@@ -214,7 +214,7 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id ...@@ -214,7 +214,7 @@ static int zt5550_hc_init_one (struct pci_dev *pdev, const struct pci_device_id
dbg("returned from zt5550_hc_config"); dbg("returned from zt5550_hc_config");
memset(&zt5550_hpc, 0, sizeof (struct cpci_hp_controller)); memset(&zt5550_hpc, 0, sizeof(struct cpci_hp_controller));
zt5550_hpc_ops.query_enum = zt5550_hc_query_enum; zt5550_hpc_ops.query_enum = zt5550_hc_query_enum;
zt5550_hpc.ops = &zt5550_hpc_ops; zt5550_hpc.ops = &zt5550_hpc_ops;
if (!poll) { if (!poll) {
......
...@@ -36,10 +36,10 @@ ...@@ -36,10 +36,10 @@
#define MY_NAME "cpqphp" #define MY_NAME "cpqphp"
#define dbg(fmt, arg...) do { if (cpqhp_debug) printk(KERN_DEBUG "%s: " fmt , MY_NAME , ## arg); } while (0) #define dbg(fmt, arg...) do { if (cpqhp_debug) printk(KERN_DEBUG "%s: " fmt, MY_NAME, ## arg); } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format , MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
...@@ -424,7 +424,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func); ...@@ -424,7 +424,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func);
int cpqhp_hardware_test(struct controller *ctrl, int test_num); int cpqhp_hardware_test(struct controller *ctrl, int test_num);
/* resource functions */ /* resource functions */
int cpqhp_resource_sort_and_combine (struct pci_resource **head); int cpqhp_resource_sort_and_combine(struct pci_resource **head);
/* pci functions */ /* pci functions */
int cpqhp_set_irq(u8 bus_num, u8 dev_num, u8 int_pin, u8 irq_num); int cpqhp_set_irq(u8 bus_num, u8 dev_num, u8 int_pin, u8 irq_num);
...@@ -685,7 +685,7 @@ static inline int cpq_get_latch_status(struct controller *ctrl, ...@@ -685,7 +685,7 @@ static inline int cpq_get_latch_status(struct controller *ctrl,
u8 hp_slot; u8 hp_slot;
hp_slot = slot->device - ctrl->slot_device_offset; hp_slot = slot->device - ctrl->slot_device_offset;
dbg("%s: slot->device = %d, ctrl->slot_device_offset = %d \n", dbg("%s: slot->device = %d, ctrl->slot_device_offset = %d\n",
__func__, slot->device, ctrl->slot_device_offset); __func__, slot->device, ctrl->slot_device_offset);
status = (readl(ctrl->hpc_reg + INT_INPUT_CLEAR) & (0x01L << hp_slot)); status = (readl(ctrl->hpc_reg + INT_INPUT_CLEAR) & (0x01L << hp_slot));
...@@ -712,7 +712,7 @@ static inline int get_presence_status(struct controller *ctrl, ...@@ -712,7 +712,7 @@ static inline int get_presence_status(struct controller *ctrl,
static inline int wait_for_ctrl_irq(struct controller *ctrl) static inline int wait_for_ctrl_irq(struct controller *ctrl)
{ {
DECLARE_WAITQUEUE(wait, current); DECLARE_WAITQUEUE(wait, current);
int retval = 0; int retval = 0;
dbg("%s - start\n", __func__); dbg("%s - start\n", __func__);
......
...@@ -291,7 +291,7 @@ static void release_slot(struct hotplug_slot *hotplug_slot) ...@@ -291,7 +291,7 @@ static void release_slot(struct hotplug_slot *hotplug_slot)
kfree(slot); kfree(slot);
} }
static int ctrl_slot_cleanup (struct controller *ctrl) static int ctrl_slot_cleanup(struct controller *ctrl)
{ {
struct slot *old_slot, *next_slot; struct slot *old_slot, *next_slot;
...@@ -301,7 +301,7 @@ static int ctrl_slot_cleanup (struct controller *ctrl) ...@@ -301,7 +301,7 @@ static int ctrl_slot_cleanup (struct controller *ctrl)
while (old_slot) { while (old_slot) {
/* memory will be freed by the release_slot callback */ /* memory will be freed by the release_slot callback */
next_slot = old_slot->next; next_slot = old_slot->next;
pci_hp_deregister (old_slot->hotplug_slot); pci_hp_deregister(old_slot->hotplug_slot);
old_slot = next_slot; old_slot = next_slot;
} }
...@@ -413,9 +413,9 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func, ...@@ -413,9 +413,9 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
if (status == 1) if (status == 1)
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
else if (status == 0) else if (status == 0)
amber_LED_off (ctrl, hp_slot); amber_LED_off(ctrl, hp_slot);
else { else {
/* Done with exclusive hardware access */ /* Done with exclusive hardware access */
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -425,7 +425,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func, ...@@ -425,7 +425,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
/* Done with exclusive hardware access */ /* Done with exclusive hardware access */
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -439,7 +439,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func, ...@@ -439,7 +439,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
* @hotplug_slot: slot to change LED on * @hotplug_slot: slot to change LED on
* @status: LED control flag * @status: LED control flag
*/ */
static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 status)
{ {
struct pci_func *slot_func; struct pci_func *slot_func;
struct slot *slot = hotplug_slot->private; struct slot *slot = hotplug_slot->private;
...@@ -610,7 +610,7 @@ static int ctrl_slot_setup(struct controller *ctrl, ...@@ -610,7 +610,7 @@ static int ctrl_slot_setup(struct controller *ctrl,
u8 ctrl_slot; u8 ctrl_slot;
u32 tempdword; u32 tempdword;
char name[SLOT_NAME_SIZE]; char name[SLOT_NAME_SIZE];
void __iomem *slot_entry= NULL; void __iomem *slot_entry = NULL;
int result; int result;
dbg("%s\n", __func__); dbg("%s\n", __func__);
...@@ -755,7 +755,7 @@ static int one_time_init(void) ...@@ -755,7 +755,7 @@ static int one_time_init(void)
if (cpqhp_debug) if (cpqhp_debug)
pci_print_IRQ_route(); pci_print_IRQ_route();
dbg("Initialize + Start the notification mechanism \n"); dbg("Initialize + Start the notification mechanism\n");
retval = cpqhp_event_start_thread(); retval = cpqhp_event_start_thread();
if (retval) if (retval)
...@@ -772,7 +772,7 @@ static int one_time_init(void) ...@@ -772,7 +772,7 @@ static int one_time_init(void)
/* Map rom address */ /* Map rom address */
cpqhp_rom_start = ioremap(ROM_PHY_ADDR, ROM_PHY_LEN); cpqhp_rom_start = ioremap(ROM_PHY_ADDR, ROM_PHY_LEN);
if (!cpqhp_rom_start) { if (!cpqhp_rom_start) {
err ("Could not ioremap memory region for ROM\n"); err("Could not ioremap memory region for ROM\n");
retval = -EIO; retval = -EIO;
goto error; goto error;
} }
...@@ -786,7 +786,7 @@ static int one_time_init(void) ...@@ -786,7 +786,7 @@ static int one_time_init(void)
smbios_table = detect_SMBIOS_pointer(cpqhp_rom_start, smbios_table = detect_SMBIOS_pointer(cpqhp_rom_start,
cpqhp_rom_start + ROM_PHY_LEN); cpqhp_rom_start + ROM_PHY_LEN);
if (!smbios_table) { if (!smbios_table) {
err ("Could not find the SMBIOS pointer in memory\n"); err("Could not find the SMBIOS pointer in memory\n");
retval = -EIO; retval = -EIO;
goto error_rom_start; goto error_rom_start;
} }
...@@ -794,7 +794,7 @@ static int one_time_init(void) ...@@ -794,7 +794,7 @@ static int one_time_init(void)
smbios_start = ioremap(readl(smbios_table + ST_ADDRESS), smbios_start = ioremap(readl(smbios_table + ST_ADDRESS),
readw(smbios_table + ST_LENGTH)); readw(smbios_table + ST_LENGTH));
if (!smbios_start) { if (!smbios_start) {
err ("Could not ioremap memory region taken from SMBIOS values\n"); err("Could not ioremap memory region taken from SMBIOS values\n");
retval = -EIO; retval = -EIO;
goto error_smbios_start; goto error_smbios_start;
} }
...@@ -1181,7 +1181,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1181,7 +1181,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
* Finish setting up the hot plug ctrl device * Finish setting up the hot plug ctrl device
*/ */
ctrl->slot_device_offset = readb(ctrl->hpc_reg + SLOT_MASK) >> 4; ctrl->slot_device_offset = readb(ctrl->hpc_reg + SLOT_MASK) >> 4;
dbg("NumSlots %d \n", ctrl->slot_device_offset); dbg("NumSlots %d\n", ctrl->slot_device_offset);
ctrl->next_event = 0; ctrl->next_event = 0;
...@@ -1198,7 +1198,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -1198,7 +1198,7 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
writel(0xFFFFFFFFL, ctrl->hpc_reg + INT_MASK); writel(0xFFFFFFFFL, ctrl->hpc_reg + INT_MASK);
/* set up the interrupt */ /* set up the interrupt */
dbg("HPC interrupt = %d \n", ctrl->interrupt); dbg("HPC interrupt = %d\n", ctrl->interrupt);
if (request_irq(ctrl->interrupt, cpqhp_ctrl_intr, if (request_irq(ctrl->interrupt, cpqhp_ctrl_intr,
IRQF_SHARED, MY_NAME, ctrl)) { IRQF_SHARED, MY_NAME, ctrl)) {
err("Can't get irq %d for the hotplug pci controller\n", err("Can't get irq %d for the hotplug pci controller\n",
...@@ -1321,7 +1321,7 @@ static void __exit unload_cpqphpd(void) ...@@ -1321,7 +1321,7 @@ static void __exit unload_cpqphpd(void)
while (ctrl) { while (ctrl) {
if (ctrl->hpc_reg) { if (ctrl->hpc_reg) {
u16 misc; u16 misc;
rc = read_slot_enable (ctrl); rc = read_slot_enable(ctrl);
writeb(0, ctrl->hpc_reg + SLOT_SERR); writeb(0, ctrl->hpc_reg + SLOT_SERR);
writel(0xFFFFFFC0L | ~rc, ctrl->hpc_reg + INT_MASK); writel(0xFFFFFFC0L | ~rc, ctrl->hpc_reg + INT_MASK);
...@@ -1361,7 +1361,7 @@ static void __exit unload_cpqphpd(void) ...@@ -1361,7 +1361,7 @@ static void __exit unload_cpqphpd(void)
kfree(tres); kfree(tres);
} }
kfree (ctrl->pci_bus); kfree(ctrl->pci_bus);
tctrl = ctrl; tctrl = ctrl;
ctrl = ctrl->next; ctrl = ctrl->next;
...@@ -1446,7 +1446,7 @@ static int __init cpqhpc_init(void) ...@@ -1446,7 +1446,7 @@ static int __init cpqhpc_init(void)
cpqhp_debug = debug; cpqhp_debug = debug;
info (DRIVER_DESC " version: " DRIVER_VERSION "\n"); info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
cpqhp_initialize_debugfs(); cpqhp_initialize_debugfs();
result = pci_register_driver(&cpqhpc_driver); result = pci_register_driver(&cpqhpc_driver);
dbg("pci_register_driver = %d\n", result); dbg("pci_register_driver = %d\n", result);
......
...@@ -155,7 +155,7 @@ static u8 handle_presence_change(u16 change, struct controller *ctrl) ...@@ -155,7 +155,7 @@ static u8 handle_presence_change(u16 change, struct controller *ctrl)
* Presence Change * Presence Change
*/ */
dbg("cpqsbd: Presence/Notify input change.\n"); dbg("cpqsbd: Presence/Notify input change.\n");
dbg(" Changed bits are 0x%4.4x\n", change ); dbg(" Changed bits are 0x%4.4x\n", change);
for (hp_slot = 0; hp_slot < 6; hp_slot++) { for (hp_slot = 0; hp_slot < 6; hp_slot++) {
if (change & (0x0101 << hp_slot)) { if (change & (0x0101 << hp_slot)) {
...@@ -276,9 +276,9 @@ static u8 handle_power_fault(u8 change, struct controller *ctrl) ...@@ -276,9 +276,9 @@ static u8 handle_power_fault(u8 change, struct controller *ctrl)
taskInfo->event_type = INT_POWER_FAULT; taskInfo->event_type = INT_POWER_FAULT;
if (ctrl->rev < 4) { if (ctrl->rev < 4) {
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
set_SOGO (ctrl); set_SOGO(ctrl);
/* this is a fatal condition, we want /* this is a fatal condition, we want
* to crash the machine to protect from * to crash the machine to protect from
...@@ -438,7 +438,7 @@ static struct pci_resource *do_pre_bridge_resource_split(struct pci_resource **h ...@@ -438,7 +438,7 @@ static struct pci_resource *do_pre_bridge_resource_split(struct pci_resource **h
node = *head; node = *head;
if (node->length & (alignment -1)) { if (node->length & (alignment - 1)) {
/* this one isn't an aligned length, so we'll make a new entry /* this one isn't an aligned length, so we'll make a new entry
* and split it up. * and split it up.
*/ */
...@@ -835,13 +835,13 @@ int cpqhp_resource_sort_and_combine(struct pci_resource **head) ...@@ -835,13 +835,13 @@ int cpqhp_resource_sort_and_combine(struct pci_resource **head)
if (!(*head)) if (!(*head))
return 1; return 1;
dbg("*head->next = %p\n",(*head)->next); dbg("*head->next = %p\n", (*head)->next);
if (!(*head)->next) if (!(*head)->next)
return 0; /* only one item on the list, already sorted! */ return 0; /* only one item on the list, already sorted! */
dbg("*head->base = 0x%x\n",(*head)->base); dbg("*head->base = 0x%x\n", (*head)->base);
dbg("*head->next->base = 0x%x\n",(*head)->next->base); dbg("*head->next->base = 0x%x\n", (*head)->next->base);
while (out_of_order) { while (out_of_order) {
out_of_order = 0; out_of_order = 0;
...@@ -917,7 +917,7 @@ irqreturn_t cpqhp_ctrl_intr(int IRQ, void *data) ...@@ -917,7 +917,7 @@ irqreturn_t cpqhp_ctrl_intr(int IRQ, void *data)
/* Read to clear posted writes */ /* Read to clear posted writes */
misc = readw(ctrl->hpc_reg + MISC); misc = readw(ctrl->hpc_reg + MISC);
dbg ("%s - waking up\n", __func__); dbg("%s - waking up\n", __func__);
wake_up_interruptible(&ctrl->queue); wake_up_interruptible(&ctrl->queue);
} }
...@@ -1285,18 +1285,18 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1285,18 +1285,18 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
/* /*
* The board is already on * The board is already on
*/ */
else if (is_slot_enabled (ctrl, hp_slot)) else if (is_slot_enabled(ctrl, hp_slot))
rc = CARD_FUNCTIONING; rc = CARD_FUNCTIONING;
else { else {
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
/* turn on board without attaching to the bus */ /* turn on board without attaching to the bus */
enable_slot_power (ctrl, hp_slot); enable_slot_power(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
/* Change bits in slot power register to force another shift out /* Change bits in slot power register to force another shift out
* NOTE: this is to work around the timer bug */ * NOTE: this is to work around the timer bug */
...@@ -1307,7 +1307,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1307,7 +1307,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
adapter_speed = get_adapter_speed(ctrl, hp_slot); adapter_speed = get_adapter_speed(ctrl, hp_slot);
if (bus->cur_bus_speed != adapter_speed) if (bus->cur_bus_speed != adapter_speed)
...@@ -1315,12 +1315,12 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1315,12 +1315,12 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
rc = WRONG_BUS_FREQUENCY; rc = WRONG_BUS_FREQUENCY;
/* turn off board without attaching to the bus */ /* turn off board without attaching to the bus */
disable_slot_power (ctrl, hp_slot); disable_slot_power(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -1329,15 +1329,15 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1329,15 +1329,15 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
slot_enable (ctrl, hp_slot); slot_enable(ctrl, hp_slot);
green_LED_blink (ctrl, hp_slot); green_LED_blink(ctrl, hp_slot);
amber_LED_off (ctrl, hp_slot); amber_LED_off(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -1366,14 +1366,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1366,14 +1366,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
slot_disable (ctrl, hp_slot); slot_disable(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -1392,14 +1392,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl) ...@@ -1392,14 +1392,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
slot_disable (ctrl, hp_slot); slot_disable(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
} }
...@@ -1443,7 +1443,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1443,7 +1443,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
/* Change bits in slot power register to force another shift out /* Change bits in slot power register to force another shift out
* NOTE: this is to work around the timer bug * NOTE: this is to work around the timer bug
...@@ -1455,7 +1455,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1455,7 +1455,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
adapter_speed = get_adapter_speed(ctrl, hp_slot); adapter_speed = get_adapter_speed(ctrl, hp_slot);
if (bus->cur_bus_speed != adapter_speed) if (bus->cur_bus_speed != adapter_speed)
...@@ -1463,7 +1463,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1463,7 +1463,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
rc = WRONG_BUS_FREQUENCY; rc = WRONG_BUS_FREQUENCY;
/* turn off board without attaching to the bus */ /* turn off board without attaching to the bus */
disable_slot_power (ctrl, hp_slot); disable_slot_power(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
...@@ -1484,20 +1484,20 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1484,20 +1484,20 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
dbg("%s: after down\n", __func__); dbg("%s: after down\n", __func__);
dbg("%s: before slot_enable\n", __func__); dbg("%s: before slot_enable\n", __func__);
slot_enable (ctrl, hp_slot); slot_enable(ctrl, hp_slot);
dbg("%s: before green_LED_blink\n", __func__); dbg("%s: before green_LED_blink\n", __func__);
green_LED_blink (ctrl, hp_slot); green_LED_blink(ctrl, hp_slot);
dbg("%s: before amber_LED_blink\n", __func__); dbg("%s: before amber_LED_blink\n", __func__);
amber_LED_off (ctrl, hp_slot); amber_LED_off(ctrl, hp_slot);
dbg("%s: before set_SOGO\n", __func__); dbg("%s: before set_SOGO\n", __func__);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
dbg("%s: before wait_for_ctrl_irq\n", __func__); dbg("%s: before wait_for_ctrl_irq\n", __func__);
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
dbg("%s: after wait_for_ctrl_irq\n", __func__); dbg("%s: after wait_for_ctrl_irq\n", __func__);
dbg("%s: before up\n", __func__); dbg("%s: before up\n", __func__);
...@@ -1520,7 +1520,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1520,7 +1520,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
} else { } else {
/* Get vendor/device ID u32 */ /* Get vendor/device ID u32 */
ctrl->pci_bus->number = func->bus; ctrl->pci_bus->number = func->bus;
rc = pci_bus_read_config_dword (ctrl->pci_bus, PCI_DEVFN(func->device, func->function), PCI_VENDOR_ID, &temp_register); rc = pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(func->device, func->function), PCI_VENDOR_ID, &temp_register);
dbg("%s: pci_read_config_dword returns %d\n", __func__, rc); dbg("%s: pci_read_config_dword returns %d\n", __func__, rc);
dbg("%s: temp_register is %x\n", __func__, temp_register); dbg("%s: temp_register is %x\n", __func__, temp_register);
...@@ -1557,14 +1557,14 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1557,14 +1557,14 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
if (rc) { if (rc) {
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
slot_disable (ctrl, hp_slot); slot_disable(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
return rc; return rc;
...@@ -1589,25 +1589,25 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl) ...@@ -1589,25 +1589,25 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
green_LED_on (ctrl, hp_slot); green_LED_on(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
} else { } else {
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
amber_LED_on (ctrl, hp_slot); amber_LED_on(ctrl, hp_slot);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
slot_disable (ctrl, hp_slot); slot_disable(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -1672,8 +1672,8 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll ...@@ -1672,8 +1672,8 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll
mutex_lock(&ctrl->crit_sect); mutex_lock(&ctrl->crit_sect);
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
slot_disable (ctrl, hp_slot); slot_disable(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
...@@ -1683,7 +1683,7 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll ...@@ -1683,7 +1683,7 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll
writeb(temp_byte, ctrl->hpc_reg + SLOT_SERR); writeb(temp_byte, ctrl->hpc_reg + SLOT_SERR);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
...@@ -1755,7 +1755,7 @@ static int event_thread(void *data) ...@@ -1755,7 +1755,7 @@ static int event_thread(void *data)
if (pushbutton_pending) if (pushbutton_pending)
cpqhp_pushbutton_thread(pushbutton_pending); cpqhp_pushbutton_thread(pushbutton_pending);
else else
for (ctrl = cpqhp_ctrl_list; ctrl; ctrl=ctrl->next) for (ctrl = cpqhp_ctrl_list; ctrl; ctrl = ctrl->next)
interrupt_event_handler(ctrl); interrupt_event_handler(ctrl);
} }
dbg("event_thread signals exit\n"); dbg("event_thread signals exit\n");
...@@ -1766,7 +1766,7 @@ int cpqhp_event_start_thread(void) ...@@ -1766,7 +1766,7 @@ int cpqhp_event_start_thread(void)
{ {
cpqhp_event_thread = kthread_run(event_thread, NULL, "phpd_event"); cpqhp_event_thread = kthread_run(event_thread, NULL, "phpd_event");
if (IS_ERR(cpqhp_event_thread)) { if (IS_ERR(cpqhp_event_thread)) {
err ("Can't start up our event thread\n"); err("Can't start up our event thread\n");
return PTR_ERR(cpqhp_event_thread); return PTR_ERR(cpqhp_event_thread);
} }
...@@ -1794,7 +1794,7 @@ static int update_slot_info(struct controller *ctrl, struct slot *slot) ...@@ -1794,7 +1794,7 @@ static int update_slot_info(struct controller *ctrl, struct slot *slot)
info->latch_status = cpq_get_latch_status(ctrl, slot); info->latch_status = cpq_get_latch_status(ctrl, slot);
info->adapter_status = get_presence_status(ctrl, slot); info->adapter_status = get_presence_status(ctrl, slot);
result = pci_hp_change_slot_info(slot->hotplug_slot, info); result = pci_hp_change_slot_info(slot->hotplug_slot, info);
kfree (info); kfree(info);
return result; return result;
} }
...@@ -1837,23 +1837,23 @@ static void interrupt_event_handler(struct controller *ctrl) ...@@ -1837,23 +1837,23 @@ static void interrupt_event_handler(struct controller *ctrl)
if (p_slot->state == BLINKINGOFF_STATE) { if (p_slot->state == BLINKINGOFF_STATE) {
/* slot is on */ /* slot is on */
dbg("turn on green LED\n"); dbg("turn on green LED\n");
green_LED_on (ctrl, hp_slot); green_LED_on(ctrl, hp_slot);
} else if (p_slot->state == BLINKINGON_STATE) { } else if (p_slot->state == BLINKINGON_STATE) {
/* slot is off */ /* slot is off */
dbg("turn off green LED\n"); dbg("turn off green LED\n");
green_LED_off (ctrl, hp_slot); green_LED_off(ctrl, hp_slot);
} }
info(msg_button_cancel, p_slot->number); info(msg_button_cancel, p_slot->number);
p_slot->state = STATIC_STATE; p_slot->state = STATIC_STATE;
amber_LED_off (ctrl, hp_slot); amber_LED_off(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
} }
...@@ -1861,7 +1861,7 @@ static void interrupt_event_handler(struct controller *ctrl) ...@@ -1861,7 +1861,7 @@ static void interrupt_event_handler(struct controller *ctrl)
else if (ctrl->event_queue[loop].event_type == INT_BUTTON_RELEASE) { else if (ctrl->event_queue[loop].event_type == INT_BUTTON_RELEASE) {
dbg("button release\n"); dbg("button release\n");
if (is_slot_enabled (ctrl, hp_slot)) { if (is_slot_enabled(ctrl, hp_slot)) {
dbg("slot is on\n"); dbg("slot is on\n");
p_slot->state = BLINKINGOFF_STATE; p_slot->state = BLINKINGOFF_STATE;
info(msg_button_off, p_slot->number); info(msg_button_off, p_slot->number);
...@@ -1874,13 +1874,13 @@ static void interrupt_event_handler(struct controller *ctrl) ...@@ -1874,13 +1874,13 @@ static void interrupt_event_handler(struct controller *ctrl)
dbg("blink green LED and turn off amber\n"); dbg("blink green LED and turn off amber\n");
amber_LED_off (ctrl, hp_slot); amber_LED_off(ctrl, hp_slot);
green_LED_blink (ctrl, hp_slot); green_LED_blink(ctrl, hp_slot);
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
mutex_unlock(&ctrl->crit_sect); mutex_unlock(&ctrl->crit_sect);
init_timer(&p_slot->task_event); init_timer(&p_slot->task_event);
...@@ -1940,7 +1940,7 @@ void cpqhp_pushbutton_thread(unsigned long slot) ...@@ -1940,7 +1940,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
dbg("In power_down_board, func = %p, ctrl = %p\n", func, ctrl); dbg("In power_down_board, func = %p, ctrl = %p\n", func, ctrl);
if (!func) { if (!func) {
dbg("Error! func NULL in %s\n", __func__); dbg("Error! func NULL in %s\n", __func__);
return ; return;
} }
if (cpqhp_process_SS(ctrl, func) != 0) { if (cpqhp_process_SS(ctrl, func) != 0) {
...@@ -1962,7 +1962,7 @@ void cpqhp_pushbutton_thread(unsigned long slot) ...@@ -1962,7 +1962,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
dbg("In add_board, func = %p, ctrl = %p\n", func, ctrl); dbg("In add_board, func = %p, ctrl = %p\n", func, ctrl);
if (!func) { if (!func) {
dbg("Error! func NULL in %s\n", __func__); dbg("Error! func NULL in %s\n", __func__);
return ; return;
} }
if (ctrl != NULL) { if (ctrl != NULL) {
...@@ -1973,7 +1973,7 @@ void cpqhp_pushbutton_thread(unsigned long slot) ...@@ -1973,7 +1973,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
} }
} }
...@@ -2086,7 +2086,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func) ...@@ -2086,7 +2086,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func)
unsigned int devfn; unsigned int devfn;
struct slot *p_slot; struct slot *p_slot;
struct pci_bus *pci_bus = ctrl->pci_bus; struct pci_bus *pci_bus = ctrl->pci_bus;
int physical_slot=0; int physical_slot = 0;
device = func->device; device = func->device;
func = cpqhp_slot_find(ctrl->bus, device, index++); func = cpqhp_slot_find(ctrl->bus, device, index++);
...@@ -2100,7 +2100,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func) ...@@ -2100,7 +2100,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func)
devfn = PCI_DEVFN(func->device, func->function); devfn = PCI_DEVFN(func->device, func->function);
/* Check the Class Code */ /* Check the Class Code */
rc = pci_bus_read_config_byte (pci_bus, devfn, 0x0B, &class_code); rc = pci_bus_read_config_byte(pci_bus, devfn, 0x0B, &class_code);
if (rc) if (rc)
return rc; return rc;
...@@ -2109,13 +2109,13 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func) ...@@ -2109,13 +2109,13 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func)
rc = REMOVE_NOT_SUPPORTED; rc = REMOVE_NOT_SUPPORTED;
} else { } else {
/* See if it's a bridge */ /* See if it's a bridge */
rc = pci_bus_read_config_byte (pci_bus, devfn, PCI_HEADER_TYPE, &header_type); rc = pci_bus_read_config_byte(pci_bus, devfn, PCI_HEADER_TYPE, &header_type);
if (rc) if (rc)
return rc; return rc;
/* If it's a bridge, check the VGA Enable bit */ /* If it's a bridge, check the VGA Enable bit */
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
rc = pci_bus_read_config_byte (pci_bus, devfn, PCI_BRIDGE_CONTROL, &BCR); rc = pci_bus_read_config_byte(pci_bus, devfn, PCI_BRIDGE_CONTROL, &BCR);
if (rc) if (rc)
return rc; return rc;
...@@ -2217,7 +2217,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num) ...@@ -2217,7 +2217,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOGO interrupt */ /* Wait for SOGO interrupt */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
/* Get ready for next iteration */ /* Get ready for next iteration */
long_delay((3*HZ)/10); long_delay((3*HZ)/10);
...@@ -2227,7 +2227,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num) ...@@ -2227,7 +2227,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOGO interrupt */ /* Wait for SOGO interrupt */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
/* Get ready for next iteration */ /* Get ready for next iteration */
long_delay((3*HZ)/10); long_delay((3*HZ)/10);
...@@ -2243,7 +2243,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num) ...@@ -2243,7 +2243,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
set_SOGO(ctrl); set_SOGO(ctrl);
/* Wait for SOBS to be unset */ /* Wait for SOBS to be unset */
wait_for_ctrl_irq (ctrl); wait_for_ctrl_irq(ctrl);
break; break;
case 2: case 2:
/* Do other stuff here! */ /* Do other stuff here! */
...@@ -2279,7 +2279,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func ...@@ -2279,7 +2279,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func
dbg("%s\n", __func__); dbg("%s\n", __func__);
/* Check for Multi-function device */ /* Check for Multi-function device */
ctrl->pci_bus->number = func->bus; ctrl->pci_bus->number = func->bus;
rc = pci_bus_read_config_byte (ctrl->pci_bus, PCI_DEVFN(func->device, func->function), 0x0E, &temp_byte); rc = pci_bus_read_config_byte(ctrl->pci_bus, PCI_DEVFN(func->device, func->function), 0x0E, &temp_byte);
if (rc) { if (rc) {
dbg("%s: rc = %d\n", __func__, rc); dbg("%s: rc = %d\n", __func__, rc);
return rc; return rc;
...@@ -2296,7 +2296,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func ...@@ -2296,7 +2296,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func
rc = configure_new_function(ctrl, new_slot, behind_bridge, resources); rc = configure_new_function(ctrl, new_slot, behind_bridge, resources);
if (rc) { if (rc) {
dbg("configure_new_function failed %d\n",rc); dbg("configure_new_function failed %d\n", rc);
index = 0; index = 0;
while (new_slot) { while (new_slot) {
...@@ -2317,7 +2317,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func ...@@ -2317,7 +2317,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func
* and creates a board structure */ * and creates a board structure */
while ((function < max_functions) && (!stop_it)) { while ((function < max_functions) && (!stop_it)) {
pci_bus_read_config_dword (ctrl->pci_bus, PCI_DEVFN(func->device, function), 0x00, &ID); pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(func->device, function), 0x00, &ID);
if (ID == 0xFFFFFFFF) { if (ID == 0xFFFFFFFF) {
function++; function++;
...@@ -2543,10 +2543,10 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2543,10 +2543,10 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
/* set Pre Mem base and Limit registers */ /* set Pre Mem base and Limit registers */
temp_word = p_mem_node->base >> 16; temp_word = p_mem_node->base >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_PREF_MEMORY_BASE, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_PREF_MEMORY_BASE, temp_word);
temp_word = (p_mem_node->base + p_mem_node->length - 1) >> 16; temp_word = (p_mem_node->base + p_mem_node->length - 1) >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word);
/* Adjust this to compensate for extra adjustment in first loop /* Adjust this to compensate for extra adjustment in first loop
*/ */
...@@ -2560,7 +2560,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2560,7 +2560,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
ID = 0xFFFFFFFF; ID = 0xFFFFFFFF;
pci_bus->number = hold_bus_node->base; pci_bus->number = hold_bus_node->base;
pci_bus_read_config_dword (pci_bus, PCI_DEVFN(device, 0), 0x00, &ID); pci_bus_read_config_dword(pci_bus, PCI_DEVFN(device, 0), 0x00, &ID);
pci_bus->number = func->bus; pci_bus->number = func->bus;
if (ID != 0xFFFFFFFF) { /* device present */ if (ID != 0xFFFFFFFF) { /* device present */
...@@ -2579,7 +2579,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2579,7 +2579,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
new_slot->status = 0; new_slot->status = 0;
rc = configure_new_device(ctrl, new_slot, 1, &temp_resources); rc = configure_new_device(ctrl, new_slot, 1, &temp_resources);
dbg("configure_new_device rc=0x%x\n",rc); dbg("configure_new_device rc=0x%x\n", rc);
} /* End of IF (device in slot?) */ } /* End of IF (device in slot?) */
} /* End of FOR loop */ } /* End of FOR loop */
...@@ -2615,7 +2615,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2615,7 +2615,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
temp_byte = temp_resources.bus_head->base - 1; temp_byte = temp_resources.bus_head->base - 1;
/* set subordinate bus */ /* set subordinate bus */
rc = pci_bus_write_config_byte (pci_bus, devfn, PCI_SUBORDINATE_BUS, temp_byte); rc = pci_bus_write_config_byte(pci_bus, devfn, PCI_SUBORDINATE_BUS, temp_byte);
if (temp_resources.bus_head->length == 0) { if (temp_resources.bus_head->length == 0) {
kfree(temp_resources.bus_head); kfree(temp_resources.bus_head);
...@@ -2636,7 +2636,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2636,7 +2636,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
hold_IO_node->base = io_node->base + io_node->length; hold_IO_node->base = io_node->base + io_node->length;
temp_byte = (hold_IO_node->base) >> 8; temp_byte = (hold_IO_node->base) >> 8;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_IO_BASE, temp_byte); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_IO_BASE, temp_byte);
return_resource(&(resources->io_head), io_node); return_resource(&(resources->io_head), io_node);
} }
...@@ -2655,13 +2655,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2655,13 +2655,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
func->io_head = hold_IO_node; func->io_head = hold_IO_node;
temp_byte = (io_node->base - 1) >> 8; temp_byte = (io_node->base - 1) >> 8;
rc = pci_bus_write_config_byte (pci_bus, devfn, PCI_IO_LIMIT, temp_byte); rc = pci_bus_write_config_byte(pci_bus, devfn, PCI_IO_LIMIT, temp_byte);
return_resource(&(resources->io_head), io_node); return_resource(&(resources->io_head), io_node);
} else { } else {
/* it doesn't need any IO */ /* it doesn't need any IO */
temp_word = 0x0000; temp_word = 0x0000;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_IO_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_IO_LIMIT, temp_word);
return_resource(&(resources->io_head), io_node); return_resource(&(resources->io_head), io_node);
kfree(hold_IO_node); kfree(hold_IO_node);
...@@ -2687,7 +2687,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2687,7 +2687,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
hold_mem_node->base = mem_node->base + mem_node->length; hold_mem_node->base = mem_node->base + mem_node->length;
temp_word = (hold_mem_node->base) >> 16; temp_word = (hold_mem_node->base) >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_MEMORY_BASE, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_MEMORY_BASE, temp_word);
return_resource(&(resources->mem_head), mem_node); return_resource(&(resources->mem_head), mem_node);
} }
...@@ -2706,14 +2706,14 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2706,14 +2706,14 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
/* configure end address */ /* configure end address */
temp_word = (mem_node->base - 1) >> 16; temp_word = (mem_node->base - 1) >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_MEMORY_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_MEMORY_LIMIT, temp_word);
/* Return unused resources to the pool */ /* Return unused resources to the pool */
return_resource(&(resources->mem_head), mem_node); return_resource(&(resources->mem_head), mem_node);
} else { } else {
/* it doesn't need any Mem */ /* it doesn't need any Mem */
temp_word = 0x0000; temp_word = 0x0000;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_MEMORY_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_MEMORY_LIMIT, temp_word);
return_resource(&(resources->mem_head), mem_node); return_resource(&(resources->mem_head), mem_node);
kfree(hold_mem_node); kfree(hold_mem_node);
...@@ -2739,7 +2739,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2739,7 +2739,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
hold_p_mem_node->base = p_mem_node->base + p_mem_node->length; hold_p_mem_node->base = p_mem_node->base + p_mem_node->length;
temp_word = (hold_p_mem_node->base) >> 16; temp_word = (hold_p_mem_node->base) >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_PREF_MEMORY_BASE, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_PREF_MEMORY_BASE, temp_word);
return_resource(&(resources->p_mem_head), p_mem_node); return_resource(&(resources->p_mem_head), p_mem_node);
} }
...@@ -2758,13 +2758,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2758,13 +2758,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
func->p_mem_head = hold_p_mem_node; func->p_mem_head = hold_p_mem_node;
temp_word = (p_mem_node->base - 1) >> 16; temp_word = (p_mem_node->base - 1) >> 16;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word);
return_resource(&(resources->p_mem_head), p_mem_node); return_resource(&(resources->p_mem_head), p_mem_node);
} else { } else {
/* it doesn't need any PMem */ /* it doesn't need any PMem */
temp_word = 0x0000; temp_word = 0x0000;
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, temp_word);
return_resource(&(resources->p_mem_head), p_mem_node); return_resource(&(resources->p_mem_head), p_mem_node);
kfree(hold_p_mem_node); kfree(hold_p_mem_node);
...@@ -2790,16 +2790,16 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2790,16 +2790,16 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
* PCI_COMMAND_INVALIDATE | * PCI_COMMAND_INVALIDATE |
* PCI_COMMAND_PARITY | * PCI_COMMAND_PARITY |
* PCI_COMMAND_SERR */ * PCI_COMMAND_SERR */
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_COMMAND, command); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_COMMAND, command);
/* set Bridge Control Register */ /* set Bridge Control Register */
command = 0x07; /* = PCI_BRIDGE_CTL_PARITY | command = 0x07; /* = PCI_BRIDGE_CTL_PARITY |
* PCI_BRIDGE_CTL_SERR | * PCI_BRIDGE_CTL_SERR |
* PCI_BRIDGE_CTL_NO_ISA */ * PCI_BRIDGE_CTL_NO_ISA */
rc = pci_bus_write_config_word (pci_bus, devfn, PCI_BRIDGE_CONTROL, command); rc = pci_bus_write_config_word(pci_bus, devfn, PCI_BRIDGE_CONTROL, command);
} else if ((temp_byte & 0x7F) == PCI_HEADER_TYPE_NORMAL) { } else if ((temp_byte & 0x7F) == PCI_HEADER_TYPE_NORMAL) {
/* Standard device */ /* Standard device */
rc = pci_bus_read_config_byte (pci_bus, devfn, 0x0B, &class_code); rc = pci_bus_read_config_byte(pci_bus, devfn, 0x0B, &class_code);
if (class_code == PCI_BASE_CLASS_DISPLAY) { if (class_code == PCI_BASE_CLASS_DISPLAY) {
/* Display (video) adapter (not supported) */ /* Display (video) adapter (not supported) */
...@@ -2810,9 +2810,9 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2810,9 +2810,9 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
temp_register = 0xFFFFFFFF; temp_register = 0xFFFFFFFF;
dbg("CND: bus=%d, devfn=%d, offset=%d\n", pci_bus->number, devfn, cloop); dbg("CND: bus=%d, devfn=%d, offset=%d\n", pci_bus->number, devfn, cloop);
rc = pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register); rc = pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
rc = pci_bus_read_config_dword (pci_bus, devfn, cloop, &temp_register); rc = pci_bus_read_config_dword(pci_bus, devfn, cloop, &temp_register);
dbg("CND: base = 0x%x\n", temp_register); dbg("CND: base = 0x%x\n", temp_register);
if (temp_register) { /* If this register is implemented */ if (temp_register) { /* If this register is implemented */
...@@ -2891,7 +2891,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2891,7 +2891,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
} /* End of base register loop */ } /* End of base register loop */
if (cpqhp_legacy_mode) { if (cpqhp_legacy_mode) {
/* Figure out which interrupt pin this function uses */ /* Figure out which interrupt pin this function uses */
rc = pci_bus_read_config_byte (pci_bus, devfn, rc = pci_bus_read_config_byte(pci_bus, devfn,
PCI_INTERRUPT_PIN, &temp_byte); PCI_INTERRUPT_PIN, &temp_byte);
/* If this function needs an interrupt and we are behind /* If this function needs an interrupt and we are behind
...@@ -2905,7 +2905,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2905,7 +2905,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
resources->irqs->barber_pole - 1) & 0x03]; resources->irqs->barber_pole - 1) & 0x03];
} else { } else {
/* Program IRQ based on card type */ /* Program IRQ based on card type */
rc = pci_bus_read_config_byte (pci_bus, devfn, 0x0B, &class_code); rc = pci_bus_read_config_byte(pci_bus, devfn, 0x0B, &class_code);
if (class_code == PCI_BASE_CLASS_STORAGE) if (class_code == PCI_BASE_CLASS_STORAGE)
IRQ = cpqhp_disk_irq; IRQ = cpqhp_disk_irq;
...@@ -2914,7 +2914,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2914,7 +2914,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
} }
/* IRQ Line */ /* IRQ Line */
rc = pci_bus_write_config_byte (pci_bus, devfn, PCI_INTERRUPT_LINE, IRQ); rc = pci_bus_write_config_byte(pci_bus, devfn, PCI_INTERRUPT_LINE, IRQ);
} }
if (!behind_bridge) { if (!behind_bridge) {
...@@ -2950,7 +2950,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2950,7 +2950,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
* PCI_COMMAND_INVALIDATE | * PCI_COMMAND_INVALIDATE |
* PCI_COMMAND_PARITY | * PCI_COMMAND_PARITY |
* PCI_COMMAND_SERR */ * PCI_COMMAND_SERR */
rc = pci_bus_write_config_word (pci_bus, devfn, rc = pci_bus_write_config_word(pci_bus, devfn,
PCI_COMMAND, temp_word); PCI_COMMAND, temp_word);
} else { /* End of Not-A-Bridge else */ } else { /* End of Not-A-Bridge else */
/* It's some strange type of PCI adapter (Cardbus?) */ /* It's some strange type of PCI adapter (Cardbus?) */
...@@ -2961,11 +2961,11 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func ...@@ -2961,11 +2961,11 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
return 0; return 0;
free_and_out: free_and_out:
cpqhp_destroy_resource_list (&temp_resources); cpqhp_destroy_resource_list(&temp_resources);
return_resource(&(resources-> bus_head), hold_bus_node); return_resource(&(resources->bus_head), hold_bus_node);
return_resource(&(resources-> io_head), hold_IO_node); return_resource(&(resources->io_head), hold_IO_node);
return_resource(&(resources-> mem_head), hold_mem_node); return_resource(&(resources->mem_head), hold_mem_node);
return_resource(&(resources-> p_mem_head), hold_p_mem_node); return_resource(&(resources->p_mem_head), hold_p_mem_node);
return rc; return rc;
} }
...@@ -114,10 +114,10 @@ static u32 add_byte(u32 **p_buffer, u8 value, u32 *used, u32 *avail) ...@@ -114,10 +114,10 @@ static u32 add_byte(u32 **p_buffer, u8 value, u32 *used, u32 *avail)
if ((*used + 1) > *avail) if ((*used + 1) > *avail)
return(1); return(1);
*((u8*)*p_buffer) = value; *((u8 *)*p_buffer) = value;
tByte = (u8**)p_buffer; tByte = (u8 **)p_buffer;
(*tByte)++; (*tByte)++;
*used+=1; *used += 1;
return(0); return(0);
} }
...@@ -129,7 +129,7 @@ static u32 add_dword(u32 **p_buffer, u32 value, u32 *used, u32 *avail) ...@@ -129,7 +129,7 @@ static u32 add_dword(u32 **p_buffer, u32 value, u32 *used, u32 *avail)
**p_buffer = value; **p_buffer = value;
(*p_buffer)++; (*p_buffer)++;
*used+=4; *used += 4;
return(0); return(0);
} }
...@@ -141,7 +141,7 @@ static u32 add_dword(u32 **p_buffer, u32 value, u32 *used, u32 *avail) ...@@ -141,7 +141,7 @@ static u32 add_dword(u32 **p_buffer, u32 value, u32 *used, u32 *avail)
* *
* returns 0 for non-Compaq ROM, 1 for Compaq ROM * returns 0 for non-Compaq ROM, 1 for Compaq ROM
*/ */
static int check_for_compaq_ROM (void __iomem *rom_start) static int check_for_compaq_ROM(void __iomem *rom_start)
{ {
u8 temp1, temp2, temp3, temp4, temp5, temp6; u8 temp1, temp2, temp3, temp4, temp5, temp6;
int result = 0; int result = 0;
...@@ -160,12 +160,12 @@ static int check_for_compaq_ROM (void __iomem *rom_start) ...@@ -160,12 +160,12 @@ static int check_for_compaq_ROM (void __iomem *rom_start)
(temp6 == 'Q')) { (temp6 == 'Q')) {
result = 1; result = 1;
} }
dbg ("%s - returned %d\n", __func__, result); dbg("%s - returned %d\n", __func__, result);
return result; return result;
} }
static u32 access_EV (u16 operation, u8 *ev_name, u8 *buffer, u32 *buf_size) static u32 access_EV(u16 operation, u8 *ev_name, u8 *buffer, u32 *buf_size)
{ {
unsigned long flags; unsigned long flags;
int op = operation; int op = operation;
...@@ -197,7 +197,7 @@ static u32 access_EV (u16 operation, u8 *ev_name, u8 *buffer, u32 *buf_size) ...@@ -197,7 +197,7 @@ static u32 access_EV (u16 operation, u8 *ev_name, u8 *buffer, u32 *buf_size)
* *
* Read the hot plug Resource Table from NVRAM * Read the hot plug Resource Table from NVRAM
*/ */
static int load_HRT (void __iomem *rom_start) static int load_HRT(void __iomem *rom_start)
{ {
u32 available; u32 available;
u32 temp_dword; u32 temp_dword;
...@@ -232,7 +232,7 @@ static int load_HRT (void __iomem *rom_start) ...@@ -232,7 +232,7 @@ static int load_HRT (void __iomem *rom_start)
* *
* Save the hot plug Resource Table in NVRAM * Save the hot plug Resource Table in NVRAM
*/ */
static u32 store_HRT (void __iomem *rom_start) static u32 store_HRT(void __iomem *rom_start)
{ {
u32 *buffer; u32 *buffer;
u32 *pFill; u32 *pFill;
...@@ -252,7 +252,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -252,7 +252,7 @@ static u32 store_HRT (void __iomem *rom_start)
if (!check_for_compaq_ROM(rom_start)) if (!check_for_compaq_ROM(rom_start))
return(1); return(1);
buffer = (u32*) evbuffer; buffer = (u32 *) evbuffer;
if (!buffer) if (!buffer)
return(1); return(1);
...@@ -306,7 +306,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -306,7 +306,7 @@ static u32 store_HRT (void __iomem *rom_start)
loop = 0; loop = 0;
while (resNode) { while (resNode) {
loop ++; loop++;
/* base */ /* base */
rc = add_dword(&pFill, resNode->base, &usedbytes, &available); rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
...@@ -331,7 +331,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -331,7 +331,7 @@ static u32 store_HRT (void __iomem *rom_start)
loop = 0; loop = 0;
while (resNode) { while (resNode) {
loop ++; loop++;
/* base */ /* base */
rc = add_dword(&pFill, resNode->base, &usedbytes, &available); rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
...@@ -356,7 +356,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -356,7 +356,7 @@ static u32 store_HRT (void __iomem *rom_start)
loop = 0; loop = 0;
while (resNode) { while (resNode) {
loop ++; loop++;
/* base */ /* base */
rc = add_dword(&pFill, resNode->base, &usedbytes, &available); rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
...@@ -381,7 +381,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -381,7 +381,7 @@ static u32 store_HRT (void __iomem *rom_start)
loop = 0; loop = 0;
while (resNode) { while (resNode) {
loop ++; loop++;
/* base */ /* base */
rc = add_dword(&pFill, resNode->base, &usedbytes, &available); rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
...@@ -408,7 +408,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -408,7 +408,7 @@ static u32 store_HRT (void __iomem *rom_start)
temp_dword = usedbytes; temp_dword = usedbytes;
rc = access_EV(WRITE_EV, "CQTHPS", (u8*) buffer, &temp_dword); rc = access_EV(WRITE_EV, "CQTHPS", (u8 *) buffer, &temp_dword);
dbg("usedbytes = 0x%x, length = 0x%x\n", usedbytes, temp_dword); dbg("usedbytes = 0x%x, length = 0x%x\n", usedbytes, temp_dword);
...@@ -423,7 +423,7 @@ static u32 store_HRT (void __iomem *rom_start) ...@@ -423,7 +423,7 @@ static u32 store_HRT (void __iomem *rom_start)
} }
void compaq_nvram_init (void __iomem *rom_start) void compaq_nvram_init(void __iomem *rom_start)
{ {
if (rom_start) if (rom_start)
compaq_int15_entry_point = (rom_start + ROM_INT15_PHY_ADDR - ROM_PHY_ADDR); compaq_int15_entry_point = (rom_start + ROM_INT15_PHY_ADDR - ROM_PHY_ADDR);
...@@ -435,7 +435,7 @@ void compaq_nvram_init (void __iomem *rom_start) ...@@ -435,7 +435,7 @@ void compaq_nvram_init (void __iomem *rom_start)
} }
int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) int compaq_nvram_load(void __iomem *rom_start, struct controller *ctrl)
{ {
u8 bus, device, function; u8 bus, device, function;
u8 nummem, numpmem, numio, numbus; u8 nummem, numpmem, numio, numbus;
...@@ -451,7 +451,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -451,7 +451,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
if (!evbuffer_init) { if (!evbuffer_init) {
/* Read the resource list information in from NVRAM */ /* Read the resource list information in from NVRAM */
if (load_HRT(rom_start)) if (load_HRT(rom_start))
memset (evbuffer, 0, 1024); memset(evbuffer, 0, 1024);
evbuffer_init = 1; evbuffer_init = 1;
} }
...@@ -472,7 +472,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -472,7 +472,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
p_byte += 3; p_byte += 3;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
return 2; return 2;
bus = p_ev_ctrl->bus; bus = p_ev_ctrl->bus;
...@@ -489,20 +489,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -489,20 +489,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
return 2; return 2;
/* Skip forward to the next entry */ /* Skip forward to the next entry */
p_byte += (nummem + numpmem + numio + numbus) * 8; p_byte += (nummem + numpmem + numio + numbus) * 8;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
return 2; return 2;
p_ev_ctrl = (struct ev_hrt_ctrl *) p_byte; p_ev_ctrl = (struct ev_hrt_ctrl *) p_byte;
p_byte += 3; p_byte += 3;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
return 2; return 2;
bus = p_ev_ctrl->bus; bus = p_ev_ctrl->bus;
...@@ -517,7 +517,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -517,7 +517,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
return 2; return 2;
while (nummem--) { while (nummem--) {
...@@ -526,20 +526,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -526,20 +526,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
if (!mem_node) if (!mem_node)
break; break;
mem_node->base = *(u32*)p_byte; mem_node->base = *(u32 *)p_byte;
dbg("mem base = %8.8x\n",mem_node->base); dbg("mem base = %8.8x\n", mem_node->base);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(mem_node); kfree(mem_node);
return 2; return 2;
} }
mem_node->length = *(u32*)p_byte; mem_node->length = *(u32 *)p_byte;
dbg("mem length = %8.8x\n",mem_node->length); dbg("mem length = %8.8x\n", mem_node->length);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(mem_node); kfree(mem_node);
return 2; return 2;
} }
...@@ -554,20 +554,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -554,20 +554,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
if (!p_mem_node) if (!p_mem_node)
break; break;
p_mem_node->base = *(u32*)p_byte; p_mem_node->base = *(u32 *)p_byte;
dbg("pre-mem base = %8.8x\n",p_mem_node->base); dbg("pre-mem base = %8.8x\n", p_mem_node->base);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(p_mem_node); kfree(p_mem_node);
return 2; return 2;
} }
p_mem_node->length = *(u32*)p_byte; p_mem_node->length = *(u32 *)p_byte;
dbg("pre-mem length = %8.8x\n",p_mem_node->length); dbg("pre-mem length = %8.8x\n", p_mem_node->length);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(p_mem_node); kfree(p_mem_node);
return 2; return 2;
} }
...@@ -582,20 +582,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -582,20 +582,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
if (!io_node) if (!io_node)
break; break;
io_node->base = *(u32*)p_byte; io_node->base = *(u32 *)p_byte;
dbg("io base = %8.8x\n",io_node->base); dbg("io base = %8.8x\n", io_node->base);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(io_node); kfree(io_node);
return 2; return 2;
} }
io_node->length = *(u32*)p_byte; io_node->length = *(u32 *)p_byte;
dbg("io length = %8.8x\n",io_node->length); dbg("io length = %8.8x\n", io_node->length);
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(io_node); kfree(io_node);
return 2; return 2;
} }
...@@ -610,18 +610,18 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -610,18 +610,18 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
if (!bus_node) if (!bus_node)
break; break;
bus_node->base = *(u32*)p_byte; bus_node->base = *(u32 *)p_byte;
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(bus_node); kfree(bus_node);
return 2; return 2;
} }
bus_node->length = *(u32*)p_byte; bus_node->length = *(u32 *)p_byte;
p_byte += 4; p_byte += 4;
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) { if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
kfree(bus_node); kfree(bus_node);
return 2; return 2;
} }
...@@ -650,7 +650,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl) ...@@ -650,7 +650,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
} }
int compaq_nvram_store (void __iomem *rom_start) int compaq_nvram_store(void __iomem *rom_start)
{ {
int rc = 1; int rc = 1;
......
...@@ -81,7 +81,7 @@ static void __iomem *detect_HRT_floating_pointer(void __iomem *begin, void __iom ...@@ -81,7 +81,7 @@ static void __iomem *detect_HRT_floating_pointer(void __iomem *begin, void __iom
} }
int cpqhp_configure_device (struct controller *ctrl, struct pci_func *func) int cpqhp_configure_device(struct controller *ctrl, struct pci_func *func)
{ {
struct pci_bus *child; struct pci_bus *child;
int num; int num;
...@@ -89,7 +89,7 @@ int cpqhp_configure_device (struct controller *ctrl, struct pci_func *func) ...@@ -89,7 +89,7 @@ int cpqhp_configure_device (struct controller *ctrl, struct pci_func *func)
pci_lock_rescan_remove(); pci_lock_rescan_remove();
if (func->pci_dev == NULL) if (func->pci_dev == NULL)
func->pci_dev = pci_get_bus_and_slot(func->bus,PCI_DEVFN(func->device, func->function)); func->pci_dev = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, func->function));
/* No pci device, we need to create it then */ /* No pci device, we need to create it then */
if (func->pci_dev == NULL) { if (func->pci_dev == NULL) {
...@@ -128,7 +128,7 @@ int cpqhp_unconfigure_device(struct pci_func *func) ...@@ -128,7 +128,7 @@ int cpqhp_unconfigure_device(struct pci_func *func)
dbg("%s: bus/dev/func = %x/%x/%x\n", __func__, func->bus, func->device, func->function); dbg("%s: bus/dev/func = %x/%x/%x\n", __func__, func->bus, func->device, func->function);
pci_lock_rescan_remove(); pci_lock_rescan_remove();
for (j=0; j<8 ; j++) { for (j = 0; j < 8 ; j++) {
struct pci_dev *temp = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, j)); struct pci_dev *temp = pci_get_bus_and_slot(func->bus, PCI_DEVFN(func->device, j));
if (temp) { if (temp) {
pci_dev_put(temp); pci_dev_put(temp);
...@@ -143,11 +143,11 @@ static int PCI_RefinedAccessConfig(struct pci_bus *bus, unsigned int devfn, u8 o ...@@ -143,11 +143,11 @@ static int PCI_RefinedAccessConfig(struct pci_bus *bus, unsigned int devfn, u8 o
{ {
u32 vendID = 0; u32 vendID = 0;
if (pci_bus_read_config_dword (bus, devfn, PCI_VENDOR_ID, &vendID) == -1) if (pci_bus_read_config_dword(bus, devfn, PCI_VENDOR_ID, &vendID) == -1)
return -1; return -1;
if (vendID == 0xffffffff) if (vendID == 0xffffffff)
return -1; return -1;
return pci_bus_read_config_dword (bus, devfn, offset, value); return pci_bus_read_config_dword(bus, devfn, offset, value);
} }
...@@ -158,7 +158,7 @@ static int PCI_RefinedAccessConfig(struct pci_bus *bus, unsigned int devfn, u8 o ...@@ -158,7 +158,7 @@ static int PCI_RefinedAccessConfig(struct pci_bus *bus, unsigned int devfn, u8 o
* @dev_num: device number of PCI device * @dev_num: device number of PCI device
* @slot: pointer to u8 where slot number will be returned * @slot: pointer to u8 where slot number will be returned
*/ */
int cpqhp_set_irq (u8 bus_num, u8 dev_num, u8 int_pin, u8 irq_num) int cpqhp_set_irq(u8 bus_num, u8 dev_num, u8 int_pin, u8 irq_num)
{ {
int rc = 0; int rc = 0;
...@@ -230,7 +230,7 @@ static int PCI_ScanBusForNonBridge(struct controller *ctrl, u8 bus_num, u8 *dev_ ...@@ -230,7 +230,7 @@ static int PCI_ScanBusForNonBridge(struct controller *ctrl, u8 bus_num, u8 *dev_
dbg("Looking for bridge bus_num %d dev_num %d\n", bus_num, tdevice); dbg("Looking for bridge bus_num %d dev_num %d\n", bus_num, tdevice);
/* Yep we got one. bridge ? */ /* Yep we got one. bridge ? */
if ((work >> 8) == PCI_TO_PCI_BRIDGE_CLASS) { if ((work >> 8) == PCI_TO_PCI_BRIDGE_CLASS) {
pci_bus_read_config_byte (ctrl->pci_bus, PCI_DEVFN(tdevice, 0), PCI_SECONDARY_BUS, &tbus); pci_bus_read_config_byte(ctrl->pci_bus, PCI_DEVFN(tdevice, 0), PCI_SECONDARY_BUS, &tbus);
/* XXX: no recursion, wtf? */ /* XXX: no recursion, wtf? */
dbg("Recurse on bus_num %d tdevice %d\n", tbus, tdevice); dbg("Recurse on bus_num %d tdevice %d\n", tbus, tdevice);
return 0; return 0;
...@@ -257,16 +257,16 @@ static int PCI_GetBusDevHelper(struct controller *ctrl, u8 *bus_num, u8 *dev_num ...@@ -257,16 +257,16 @@ static int PCI_GetBusDevHelper(struct controller *ctrl, u8 *bus_num, u8 *dev_num
*bus_num = tbus; *bus_num = tbus;
*dev_num = tdevice; *dev_num = tdevice;
ctrl->pci_bus->number = tbus; ctrl->pci_bus->number = tbus;
pci_bus_read_config_dword (ctrl->pci_bus, *dev_num, PCI_VENDOR_ID, &work); pci_bus_read_config_dword(ctrl->pci_bus, *dev_num, PCI_VENDOR_ID, &work);
if (!nobridge || (work == 0xffffffff)) if (!nobridge || (work == 0xffffffff))
return 0; return 0;
dbg("bus_num %d devfn %d\n", *bus_num, *dev_num); dbg("bus_num %d devfn %d\n", *bus_num, *dev_num);
pci_bus_read_config_dword (ctrl->pci_bus, *dev_num, PCI_CLASS_REVISION, &work); pci_bus_read_config_dword(ctrl->pci_bus, *dev_num, PCI_CLASS_REVISION, &work);
dbg("work >> 8 (%x) = BRIDGE (%x)\n", work >> 8, PCI_TO_PCI_BRIDGE_CLASS); dbg("work >> 8 (%x) = BRIDGE (%x)\n", work >> 8, PCI_TO_PCI_BRIDGE_CLASS);
if ((work >> 8) == PCI_TO_PCI_BRIDGE_CLASS) { if ((work >> 8) == PCI_TO_PCI_BRIDGE_CLASS) {
pci_bus_read_config_byte (ctrl->pci_bus, *dev_num, PCI_SECONDARY_BUS, &tbus); pci_bus_read_config_byte(ctrl->pci_bus, *dev_num, PCI_SECONDARY_BUS, &tbus);
dbg("Scan bus for Non Bridge: bus %d\n", tbus); dbg("Scan bus for Non Bridge: bus %d\n", tbus);
if (PCI_ScanBusForNonBridge(ctrl, tbus, dev_num) == 0) { if (PCI_ScanBusForNonBridge(ctrl, tbus, dev_num) == 0) {
*bus_num = tbus; *bus_num = tbus;
...@@ -280,7 +280,7 @@ static int PCI_GetBusDevHelper(struct controller *ctrl, u8 *bus_num, u8 *dev_num ...@@ -280,7 +280,7 @@ static int PCI_GetBusDevHelper(struct controller *ctrl, u8 *bus_num, u8 *dev_num
} }
int cpqhp_get_bus_dev (struct controller *ctrl, u8 *bus_num, u8 *dev_num, u8 slot) int cpqhp_get_bus_dev(struct controller *ctrl, u8 *bus_num, u8 *dev_num, u8 slot)
{ {
/* plain (bridges allowed) */ /* plain (bridges allowed) */
return PCI_GetBusDevHelper(ctrl, bus_num, dev_num, slot, 0); return PCI_GetBusDevHelper(ctrl, bus_num, dev_num, slot, 0);
...@@ -419,7 +419,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug) ...@@ -419,7 +419,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
new_slot->pci_dev = pci_get_bus_and_slot(new_slot->bus, (new_slot->device << 3) | new_slot->function); new_slot->pci_dev = pci_get_bus_and_slot(new_slot->bus, (new_slot->device << 3) | new_slot->function);
for (cloop = 0; cloop < 0x20; cloop++) { for (cloop = 0; cloop < 0x20; cloop++) {
rc = pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(device, function), cloop << 2, (u32 *) & (new_slot-> config_space [cloop])); rc = pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(device, function), cloop << 2, (u32 *) &(new_slot->config_space[cloop]));
if (rc) if (rc)
return rc; return rc;
} }
...@@ -465,7 +465,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug) ...@@ -465,7 +465,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
* *
* returns 0 if success * returns 0 if success
*/ */
int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot) int cpqhp_save_slot_config(struct controller *ctrl, struct pci_func *new_slot)
{ {
long rc; long rc;
u8 class_code; u8 class_code;
...@@ -481,7 +481,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot) ...@@ -481,7 +481,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
ID = 0xFFFFFFFF; ID = 0xFFFFFFFF;
ctrl->pci_bus->number = new_slot->bus; ctrl->pci_bus->number = new_slot->bus;
pci_bus_read_config_dword (ctrl->pci_bus, PCI_DEVFN(new_slot->device, 0), PCI_VENDOR_ID, &ID); pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(new_slot->device, 0), PCI_VENDOR_ID, &ID);
if (ID == 0xFFFFFFFF) if (ID == 0xFFFFFFFF)
return 2; return 2;
...@@ -497,7 +497,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot) ...@@ -497,7 +497,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
while (function < max_functions) { while (function < max_functions) {
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
/* Recurse the subordinate bus */ /* Recurse the subordinate bus */
pci_bus_read_config_byte (ctrl->pci_bus, PCI_DEVFN(new_slot->device, function), PCI_SECONDARY_BUS, &secondary_bus); pci_bus_read_config_byte(ctrl->pci_bus, PCI_DEVFN(new_slot->device, function), PCI_SECONDARY_BUS, &secondary_bus);
sub_bus = (int) secondary_bus; sub_bus = (int) secondary_bus;
...@@ -514,7 +514,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot) ...@@ -514,7 +514,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
new_slot->status = 0; new_slot->status = 0;
for (cloop = 0; cloop < 0x20; cloop++) for (cloop = 0; cloop < 0x20; cloop++)
pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(new_slot->device, function), cloop << 2, (u32 *) & (new_slot-> config_space [cloop])); pci_bus_read_config_dword(ctrl->pci_bus, PCI_DEVFN(new_slot->device, function), cloop << 2, (u32 *) &(new_slot->config_space[cloop]));
function++; function++;
...@@ -571,10 +571,10 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func) ...@@ -571,10 +571,10 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
devfn = PCI_DEVFN(func->device, func->function); devfn = PCI_DEVFN(func->device, func->function);
/* Check for Bridge */ /* Check for Bridge */
pci_bus_read_config_byte (pci_bus, devfn, PCI_HEADER_TYPE, &header_type); pci_bus_read_config_byte(pci_bus, devfn, PCI_HEADER_TYPE, &header_type);
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
pci_bus_read_config_byte (pci_bus, devfn, PCI_SECONDARY_BUS, &secondary_bus); pci_bus_read_config_byte(pci_bus, devfn, PCI_SECONDARY_BUS, &secondary_bus);
sub_bus = (int) secondary_bus; sub_bus = (int) secondary_bus;
...@@ -595,8 +595,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func) ...@@ -595,8 +595,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
*/ */
for (cloop = 0x10; cloop <= 0x14; cloop += 4) { for (cloop = 0x10; cloop <= 0x14; cloop += 4) {
temp_register = 0xFFFFFFFF; temp_register = 0xFFFFFFFF;
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register); pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base); pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
/* If this register is implemented */ /* If this register is implemented */
if (base) { if (base) {
if (base & 0x01L) { if (base & 0x01L) {
...@@ -631,8 +631,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func) ...@@ -631,8 +631,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
/* Figure out IO and memory base lengths */ /* Figure out IO and memory base lengths */
for (cloop = 0x10; cloop <= 0x24; cloop += 4) { for (cloop = 0x10; cloop <= 0x24; cloop += 4) {
temp_register = 0xFFFFFFFF; temp_register = 0xFFFFFFFF;
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register); pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base); pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
/* If this register is implemented */ /* If this register is implemented */
if (base) { if (base) {
...@@ -686,7 +686,7 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func) ...@@ -686,7 +686,7 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
* *
* returns 0 if success * returns 0 if success
*/ */
int cpqhp_save_used_resources (struct controller *ctrl, struct pci_func *func) int cpqhp_save_used_resources(struct controller *ctrl, struct pci_func *func)
{ {
u8 cloop; u8 cloop;
u8 header_type; u8 header_type;
...@@ -791,7 +791,7 @@ int cpqhp_save_used_resources (struct controller *ctrl, struct pci_func *func) ...@@ -791,7 +791,7 @@ int cpqhp_save_used_resources (struct controller *ctrl, struct pci_func *func)
} }
/* Figure out IO and memory base lengths */ /* Figure out IO and memory base lengths */
for (cloop = 0x10; cloop <= 0x14; cloop += 4) { for (cloop = 0x10; cloop <= 0x14; cloop += 4) {
pci_bus_read_config_dword (pci_bus, devfn, cloop, &save_base); pci_bus_read_config_dword(pci_bus, devfn, cloop, &save_base);
temp_register = 0xFFFFFFFF; temp_register = 0xFFFFFFFF;
pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register); pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
...@@ -972,13 +972,13 @@ int cpqhp_configure_board(struct controller *ctrl, struct pci_func *func) ...@@ -972,13 +972,13 @@ int cpqhp_configure_board(struct controller *ctrl, struct pci_func *func)
* registers are programmed last * registers are programmed last
*/ */
for (cloop = 0x3C; cloop > 0; cloop -= 4) for (cloop = 0x3C; cloop > 0; cloop -= 4)
pci_bus_write_config_dword (pci_bus, devfn, cloop, func->config_space[cloop >> 2]); pci_bus_write_config_dword(pci_bus, devfn, cloop, func->config_space[cloop >> 2]);
pci_bus_read_config_byte (pci_bus, devfn, PCI_HEADER_TYPE, &header_type); pci_bus_read_config_byte(pci_bus, devfn, PCI_HEADER_TYPE, &header_type);
/* If this is a bridge device, restore subordinate devices */ /* If this is a bridge device, restore subordinate devices */
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
pci_bus_read_config_byte (pci_bus, devfn, PCI_SECONDARY_BUS, &secondary_bus); pci_bus_read_config_byte(pci_bus, devfn, PCI_SECONDARY_BUS, &secondary_bus);
sub_bus = (int) secondary_bus; sub_bus = (int) secondary_bus;
...@@ -998,7 +998,7 @@ int cpqhp_configure_board(struct controller *ctrl, struct pci_func *func) ...@@ -998,7 +998,7 @@ int cpqhp_configure_board(struct controller *ctrl, struct pci_func *func)
*/ */
for (cloop = 16; cloop < 40; cloop += 4) { for (cloop = 16; cloop < 40; cloop += 4) {
pci_bus_read_config_dword (pci_bus, devfn, cloop, &temp); pci_bus_read_config_dword(pci_bus, devfn, cloop, &temp);
if (temp != func->config_space[cloop >> 2]) { if (temp != func->config_space[cloop >> 2]) {
dbg("Config space compare failure!!! offset = %x\n", cloop); dbg("Config space compare failure!!! offset = %x\n", cloop);
...@@ -1050,7 +1050,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func) ...@@ -1050,7 +1050,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
pci_bus->number = func->bus; pci_bus->number = func->bus;
devfn = PCI_DEVFN(func->device, func->function); devfn = PCI_DEVFN(func->device, func->function);
pci_bus_read_config_dword (pci_bus, devfn, PCI_VENDOR_ID, &temp_register); pci_bus_read_config_dword(pci_bus, devfn, PCI_VENDOR_ID, &temp_register);
/* No adapter present */ /* No adapter present */
if (temp_register == 0xFFFFFFFF) if (temp_register == 0xFFFFFFFF)
...@@ -1060,14 +1060,14 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func) ...@@ -1060,14 +1060,14 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
return(ADAPTER_NOT_SAME); return(ADAPTER_NOT_SAME);
/* Check for same revision number and class code */ /* Check for same revision number and class code */
pci_bus_read_config_dword (pci_bus, devfn, PCI_CLASS_REVISION, &temp_register); pci_bus_read_config_dword(pci_bus, devfn, PCI_CLASS_REVISION, &temp_register);
/* Adapter not the same */ /* Adapter not the same */
if (temp_register != func->config_space[0x08 >> 2]) if (temp_register != func->config_space[0x08 >> 2])
return(ADAPTER_NOT_SAME); return(ADAPTER_NOT_SAME);
/* Check for Bridge */ /* Check for Bridge */
pci_bus_read_config_byte (pci_bus, devfn, PCI_HEADER_TYPE, &header_type); pci_bus_read_config_byte(pci_bus, devfn, PCI_HEADER_TYPE, &header_type);
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) { if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
/* In order to continue checking, we must program the /* In order to continue checking, we must program the
...@@ -1076,7 +1076,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func) ...@@ -1076,7 +1076,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
*/ */
temp_register = func->config_space[0x18 >> 2]; temp_register = func->config_space[0x18 >> 2];
pci_bus_write_config_dword (pci_bus, devfn, PCI_PRIMARY_BUS, temp_register); pci_bus_write_config_dword(pci_bus, devfn, PCI_PRIMARY_BUS, temp_register);
secondary_bus = (temp_register >> 8) & 0xFF; secondary_bus = (temp_register >> 8) & 0xFF;
...@@ -1094,7 +1094,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func) ...@@ -1094,7 +1094,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
/* Check to see if it is a standard config header */ /* Check to see if it is a standard config header */
else if ((header_type & 0x7F) == PCI_HEADER_TYPE_NORMAL) { else if ((header_type & 0x7F) == PCI_HEADER_TYPE_NORMAL) {
/* Check subsystem vendor and ID */ /* Check subsystem vendor and ID */
pci_bus_read_config_dword (pci_bus, devfn, PCI_SUBSYSTEM_VENDOR_ID, &temp_register); pci_bus_read_config_dword(pci_bus, devfn, PCI_SUBSYSTEM_VENDOR_ID, &temp_register);
if (temp_register != func->config_space[0x2C >> 2]) { if (temp_register != func->config_space[0x2C >> 2]) {
/* If it's a SMART-2 and the register isn't /* If it's a SMART-2 and the register isn't
...@@ -1108,8 +1108,8 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func) ...@@ -1108,8 +1108,8 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
/* Figure out IO and memory base lengths */ /* Figure out IO and memory base lengths */
for (cloop = 0x10; cloop <= 0x24; cloop += 4) { for (cloop = 0x10; cloop <= 0x24; cloop += 4) {
temp_register = 0xFFFFFFFF; temp_register = 0xFFFFFFFF;
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register); pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base); pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
/* If this register is implemented */ /* If this register is implemented */
if (base) { if (base) {
...@@ -1234,7 +1234,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st ...@@ -1234,7 +1234,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st
if (rc) if (rc)
return rc; return rc;
one_slot = rom_resource_table + sizeof (struct hrt); one_slot = rom_resource_table + sizeof(struct hrt);
i = readb(rom_resource_table + NUMBER_OF_ENTRIES); i = readb(rom_resource_table + NUMBER_OF_ENTRIES);
dbg("number_of_entries = %d\n", i); dbg("number_of_entries = %d\n", i);
...@@ -1263,12 +1263,12 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st ...@@ -1263,12 +1263,12 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st
/* If this entry isn't for our controller's bus, ignore it */ /* If this entry isn't for our controller's bus, ignore it */
if (primary_bus != ctrl->bus) { if (primary_bus != ctrl->bus) {
i--; i--;
one_slot += sizeof (struct slot_rt); one_slot += sizeof(struct slot_rt);
continue; continue;
} }
/* find out if this entry is for an occupied slot */ /* find out if this entry is for an occupied slot */
ctrl->pci_bus->number = primary_bus; ctrl->pci_bus->number = primary_bus;
pci_bus_read_config_dword (ctrl->pci_bus, dev_func, PCI_VENDOR_ID, &temp_dword); pci_bus_read_config_dword(ctrl->pci_bus, dev_func, PCI_VENDOR_ID, &temp_dword);
dbg("temp_D_word = %x\n", temp_dword); dbg("temp_D_word = %x\n", temp_dword);
if (temp_dword != 0xFFFFFFFF) { if (temp_dword != 0xFFFFFFFF) {
...@@ -1283,7 +1283,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st ...@@ -1283,7 +1283,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st
/* If we can't find a match, skip this table entry */ /* If we can't find a match, skip this table entry */
if (!func) { if (!func) {
i--; i--;
one_slot += sizeof (struct slot_rt); one_slot += sizeof(struct slot_rt);
continue; continue;
} }
/* this may not work and shouldn't be used */ /* this may not work and shouldn't be used */
...@@ -1395,7 +1395,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st ...@@ -1395,7 +1395,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st
} }
i--; i--;
one_slot += sizeof (struct slot_rt); one_slot += sizeof(struct slot_rt);
} }
/* If all of the following fail, we don't have any resources for /* If all of the following fail, we don't have any resources for
...@@ -1475,7 +1475,7 @@ int cpqhp_return_board_resources(struct pci_func *func, struct resource_lists *r ...@@ -1475,7 +1475,7 @@ int cpqhp_return_board_resources(struct pci_func *func, struct resource_lists *r
* *
* Puts node back in the resource list pointed to by head * Puts node back in the resource list pointed to by head
*/ */
void cpqhp_destroy_resource_list (struct resource_lists *resources) void cpqhp_destroy_resource_list(struct resource_lists *resources)
{ {
struct pci_resource *res, *tres; struct pci_resource *res, *tres;
...@@ -1522,7 +1522,7 @@ void cpqhp_destroy_resource_list (struct resource_lists *resources) ...@@ -1522,7 +1522,7 @@ void cpqhp_destroy_resource_list (struct resource_lists *resources)
* *
* Puts node back in the resource list pointed to by head * Puts node back in the resource list pointed to by head
*/ */
void cpqhp_destroy_board_resources (struct pci_func *func) void cpqhp_destroy_board_resources(struct pci_func *func)
{ {
struct pci_resource *res, *tres; struct pci_resource *res, *tres;
......
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
#include "cpqphp.h" #include "cpqphp.h"
static DEFINE_MUTEX(cpqphp_mutex); static DEFINE_MUTEX(cpqphp_mutex);
static int show_ctrl (struct controller *ctrl, char *buf) static int show_ctrl(struct controller *ctrl, char *buf)
{ {
char *out = buf; char *out = buf;
int index; int index;
...@@ -77,7 +77,7 @@ static int show_ctrl (struct controller *ctrl, char *buf) ...@@ -77,7 +77,7 @@ static int show_ctrl (struct controller *ctrl, char *buf)
return out - buf; return out - buf;
} }
static int show_dev (struct controller *ctrl, char *buf) static int show_dev(struct controller *ctrl, char *buf)
{ {
char *out = buf; char *out = buf;
int index; int index;
...@@ -119,7 +119,7 @@ static int show_dev (struct controller *ctrl, char *buf) ...@@ -119,7 +119,7 @@ static int show_dev (struct controller *ctrl, char *buf)
out += sprintf(out, "start = %8.8x, length = %8.8x\n", res->base, res->length); out += sprintf(out, "start = %8.8x, length = %8.8x\n", res->base, res->length);
res = res->next; res = res->next;
} }
slot=slot->next; slot = slot->next;
} }
return out - buf; return out - buf;
......
...@@ -39,11 +39,11 @@ extern int ibmphp_debug; ...@@ -39,11 +39,11 @@ extern int ibmphp_debug;
#else #else
#define MY_NAME THIS_MODULE->name #define MY_NAME THIS_MODULE->name
#endif #endif
#define debug(fmt, arg...) do { if (ibmphp_debug == 1) printk(KERN_DEBUG "%s: " fmt , MY_NAME , ## arg); } while (0) #define debug(fmt, arg...) do { if (ibmphp_debug == 1) printk(KERN_DEBUG "%s: " fmt, MY_NAME, ## arg); } while (0)
#define debug_pci(fmt, arg...) do { if (ibmphp_debug) printk(KERN_DEBUG "%s: " fmt , MY_NAME , ## arg); } while (0) #define debug_pci(fmt, arg...) do { if (ibmphp_debug) printk(KERN_DEBUG "%s: " fmt, MY_NAME, ## arg); } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format , MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
/* EBDA stuff */ /* EBDA stuff */
...@@ -603,7 +603,7 @@ void ibmphp_hpc_stop_poll_thread(void); ...@@ -603,7 +603,7 @@ void ibmphp_hpc_stop_poll_thread(void);
#define SLOT_CONNECT(s) ((u8) ((s & HPC_SLOT_CONNECT) \ #define SLOT_CONNECT(s) ((u8) ((s & HPC_SLOT_CONNECT) \
? HPC_SLOT_DISCONNECTED : HPC_SLOT_CONNECTED)) ? HPC_SLOT_DISCONNECTED : HPC_SLOT_CONNECTED))
#define SLOT_ATTN(s,es) ((u8) ((es & HPC_SLOT_BLINK_ATTN) \ #define SLOT_ATTN(s, es) ((u8) ((es & HPC_SLOT_BLINK_ATTN) \
? HPC_SLOT_ATTN_BLINK \ ? HPC_SLOT_ATTN_BLINK \
: ((s & HPC_SLOT_ATTN) ? HPC_SLOT_ATTN_ON : HPC_SLOT_ATTN_OFF))) : ((s & HPC_SLOT_ATTN) ? HPC_SLOT_ATTN_ON : HPC_SLOT_ATTN_OFF)))
......
...@@ -39,11 +39,11 @@ ...@@ -39,11 +39,11 @@
#include <asm/io_apic.h> #include <asm/io_apic.h>
#include "ibmphp.h" #include "ibmphp.h"
#define attn_on(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_ATTNON) #define attn_on(sl) ibmphp_hpc_writeslot(sl, HPC_SLOT_ATTNON)
#define attn_off(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_ATTNOFF) #define attn_off(sl) ibmphp_hpc_writeslot(sl, HPC_SLOT_ATTNOFF)
#define attn_LED_blink(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_BLINKLED) #define attn_LED_blink(sl) ibmphp_hpc_writeslot(sl, HPC_SLOT_BLINKLED)
#define get_ctrl_revision(sl, rev) ibmphp_hpc_readslot (sl, READ_REVLEVEL, rev) #define get_ctrl_revision(sl, rev) ibmphp_hpc_readslot(sl, READ_REVLEVEL, rev)
#define get_hpc_options(sl, opt) ibmphp_hpc_readslot (sl, READ_HPCOPTIONS, opt) #define get_hpc_options(sl, opt) ibmphp_hpc_readslot(sl, READ_HPCOPTIONS, opt)
#define DRIVER_VERSION "0.6" #define DRIVER_VERSION "0.6"
#define DRIVER_DESC "IBM Hot Plug PCI Controller Driver" #define DRIVER_DESC "IBM Hot Plug PCI Controller Driver"
...@@ -52,9 +52,9 @@ int ibmphp_debug; ...@@ -52,9 +52,9 @@ int ibmphp_debug;
static bool debug; static bool debug;
module_param(debug, bool, S_IRUGO | S_IWUSR); module_param(debug, bool, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC (debug, "Debugging mode enabled or not"); MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
MODULE_LICENSE ("GPL"); MODULE_LICENSE("GPL");
MODULE_DESCRIPTION (DRIVER_DESC); MODULE_DESCRIPTION(DRIVER_DESC);
struct pci_bus *ibmphp_pci_bus; struct pci_bus *ibmphp_pci_bus;
static int max_slots; static int max_slots;
...@@ -113,7 +113,7 @@ static inline int slot_update(struct slot **sl) ...@@ -113,7 +113,7 @@ static inline int slot_update(struct slot **sl)
return rc; return rc;
} }
static int __init get_max_slots (void) static int __init get_max_slots(void)
{ {
struct slot *slot_cur; struct slot *slot_cur;
u8 slot_count = 0; u8 slot_count = 0;
...@@ -457,7 +457,7 @@ static int get_max_adapter_speed_1(struct hotplug_slot *hotplug_slot, u8 *value, ...@@ -457,7 +457,7 @@ static int get_max_adapter_speed_1(struct hotplug_slot *hotplug_slot, u8 *value,
*value = SLOT_SPEED(myslot.ext_status); *value = SLOT_SPEED(myslot.ext_status);
} else } else
*value = MAX_ADAPTER_NONE; *value = MAX_ADAPTER_NONE;
} }
} }
if (flag) if (flag)
...@@ -612,11 +612,11 @@ int ibmphp_update_slot_info(struct slot *slot_cur) ...@@ -612,11 +612,11 @@ int ibmphp_update_slot_info(struct slot *slot_cur)
info->attention_status = SLOT_ATTN(slot_cur->status, info->attention_status = SLOT_ATTN(slot_cur->status,
slot_cur->ext_status); slot_cur->ext_status);
info->latch_status = SLOT_LATCH(slot_cur->status); info->latch_status = SLOT_LATCH(slot_cur->status);
if (!SLOT_PRESENT(slot_cur->status)) { if (!SLOT_PRESENT(slot_cur->status)) {
info->adapter_status = 0; info->adapter_status = 0;
/* info->max_adapter_speed_status = MAX_ADAPTER_NONE; */ /* info->max_adapter_speed_status = MAX_ADAPTER_NONE; */
} else { } else {
info->adapter_status = 1; info->adapter_status = 1;
/* get_max_adapter_speed_1(slot_cur->hotplug_slot, /* get_max_adapter_speed_1(slot_cur->hotplug_slot,
&info->max_adapter_speed_status, 0); */ &info->max_adapter_speed_status, 0); */
} }
...@@ -854,7 +854,7 @@ static int set_bus(struct slot *slot_cur) ...@@ -854,7 +854,7 @@ static int set_bus(struct slot *slot_cur)
int retval; int retval;
static struct pci_device_id ciobx[] = { static struct pci_device_id ciobx[] = {
{ PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, 0x0101) }, { PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, 0x0101) },
{ }, { },
}; };
debug("%s - entry slot # %d\n", __func__, slot_cur->number); debug("%s - entry slot # %d\n", __func__, slot_cur->number);
...@@ -1170,7 +1170,7 @@ static int enable_slot(struct hotplug_slot *hs) ...@@ -1170,7 +1170,7 @@ static int enable_slot(struct hotplug_slot *hs)
* HOT REMOVING ADAPTER CARD * * HOT REMOVING ADAPTER CARD *
* INPUT: POINTER TO THE HOTPLUG SLOT STRUCTURE * * INPUT: POINTER TO THE HOTPLUG SLOT STRUCTURE *
* OUTPUT: SUCCESS 0 ; FAILURE: UNCONFIGURE , VALIDATE * * OUTPUT: SUCCESS 0 ; FAILURE: UNCONFIGURE , VALIDATE *
DISABLE POWER , * * DISABLE POWER , *
**************************************************************/ **************************************************************/
static int ibmphp_disable_slot(struct hotplug_slot *hotplug_slot) static int ibmphp_disable_slot(struct hotplug_slot *hotplug_slot)
{ {
......
...@@ -49,32 +49,32 @@ ...@@ -49,32 +49,32 @@
*/ */
/* Global lists */ /* Global lists */
LIST_HEAD (ibmphp_ebda_pci_rsrc_head); LIST_HEAD(ibmphp_ebda_pci_rsrc_head);
LIST_HEAD (ibmphp_slot_head); LIST_HEAD(ibmphp_slot_head);
/* Local variables */ /* Local variables */
static struct ebda_hpc_list *hpc_list_ptr; static struct ebda_hpc_list *hpc_list_ptr;
static struct ebda_rsrc_list *rsrc_list_ptr; static struct ebda_rsrc_list *rsrc_list_ptr;
static struct rio_table_hdr *rio_table_ptr = NULL; static struct rio_table_hdr *rio_table_ptr = NULL;
static LIST_HEAD (ebda_hpc_head); static LIST_HEAD(ebda_hpc_head);
static LIST_HEAD (bus_info_head); static LIST_HEAD(bus_info_head);
static LIST_HEAD (rio_vg_head); static LIST_HEAD(rio_vg_head);
static LIST_HEAD (rio_lo_head); static LIST_HEAD(rio_lo_head);
static LIST_HEAD (opt_vg_head); static LIST_HEAD(opt_vg_head);
static LIST_HEAD (opt_lo_head); static LIST_HEAD(opt_lo_head);
static void __iomem *io_mem; static void __iomem *io_mem;
/* Local functions */ /* Local functions */
static int ebda_rsrc_controller (void); static int ebda_rsrc_controller(void);
static int ebda_rsrc_rsrc (void); static int ebda_rsrc_rsrc(void);
static int ebda_rio_table (void); static int ebda_rio_table(void);
static struct ebda_hpc_list * __init alloc_ebda_hpc_list (void) static struct ebda_hpc_list * __init alloc_ebda_hpc_list(void)
{ {
return kzalloc(sizeof(struct ebda_hpc_list), GFP_KERNEL); return kzalloc(sizeof(struct ebda_hpc_list), GFP_KERNEL);
} }
static struct controller *alloc_ebda_hpc (u32 slot_count, u32 bus_count) static struct controller *alloc_ebda_hpc(u32 slot_count, u32 bus_count)
{ {
struct controller *controller; struct controller *controller;
struct ebda_hpc_slot *slots; struct ebda_hpc_slot *slots;
...@@ -103,146 +103,146 @@ static struct controller *alloc_ebda_hpc (u32 slot_count, u32 bus_count) ...@@ -103,146 +103,146 @@ static struct controller *alloc_ebda_hpc (u32 slot_count, u32 bus_count)
return NULL; return NULL;
} }
static void free_ebda_hpc (struct controller *controller) static void free_ebda_hpc(struct controller *controller)
{ {
kfree (controller->slots); kfree(controller->slots);
kfree (controller->buses); kfree(controller->buses);
kfree (controller); kfree(controller);
} }
static struct ebda_rsrc_list * __init alloc_ebda_rsrc_list (void) static struct ebda_rsrc_list * __init alloc_ebda_rsrc_list(void)
{ {
return kzalloc(sizeof(struct ebda_rsrc_list), GFP_KERNEL); return kzalloc(sizeof(struct ebda_rsrc_list), GFP_KERNEL);
} }
static struct ebda_pci_rsrc *alloc_ebda_pci_rsrc (void) static struct ebda_pci_rsrc *alloc_ebda_pci_rsrc(void)
{ {
return kzalloc(sizeof(struct ebda_pci_rsrc), GFP_KERNEL); return kzalloc(sizeof(struct ebda_pci_rsrc), GFP_KERNEL);
} }
static void __init print_bus_info (void) static void __init print_bus_info(void)
{ {
struct bus_info *ptr; struct bus_info *ptr;
list_for_each_entry(ptr, &bus_info_head, bus_info_list) { list_for_each_entry(ptr, &bus_info_head, bus_info_list) {
debug ("%s - slot_min = %x\n", __func__, ptr->slot_min); debug("%s - slot_min = %x\n", __func__, ptr->slot_min);
debug ("%s - slot_max = %x\n", __func__, ptr->slot_max); debug("%s - slot_max = %x\n", __func__, ptr->slot_max);
debug ("%s - slot_count = %x\n", __func__, ptr->slot_count); debug("%s - slot_count = %x\n", __func__, ptr->slot_count);
debug ("%s - bus# = %x\n", __func__, ptr->busno); debug("%s - bus# = %x\n", __func__, ptr->busno);
debug ("%s - current_speed = %x\n", __func__, ptr->current_speed); debug("%s - current_speed = %x\n", __func__, ptr->current_speed);
debug ("%s - controller_id = %x\n", __func__, ptr->controller_id); debug("%s - controller_id = %x\n", __func__, ptr->controller_id);
debug ("%s - slots_at_33_conv = %x\n", __func__, ptr->slots_at_33_conv); debug("%s - slots_at_33_conv = %x\n", __func__, ptr->slots_at_33_conv);
debug ("%s - slots_at_66_conv = %x\n", __func__, ptr->slots_at_66_conv); debug("%s - slots_at_66_conv = %x\n", __func__, ptr->slots_at_66_conv);
debug ("%s - slots_at_66_pcix = %x\n", __func__, ptr->slots_at_66_pcix); debug("%s - slots_at_66_pcix = %x\n", __func__, ptr->slots_at_66_pcix);
debug ("%s - slots_at_100_pcix = %x\n", __func__, ptr->slots_at_100_pcix); debug("%s - slots_at_100_pcix = %x\n", __func__, ptr->slots_at_100_pcix);
debug ("%s - slots_at_133_pcix = %x\n", __func__, ptr->slots_at_133_pcix); debug("%s - slots_at_133_pcix = %x\n", __func__, ptr->slots_at_133_pcix);
} }
} }
static void print_lo_info (void) static void print_lo_info(void)
{ {
struct rio_detail *ptr; struct rio_detail *ptr;
debug ("print_lo_info ----\n"); debug("print_lo_info ----\n");
list_for_each_entry(ptr, &rio_lo_head, rio_detail_list) { list_for_each_entry(ptr, &rio_lo_head, rio_detail_list) {
debug ("%s - rio_node_id = %x\n", __func__, ptr->rio_node_id); debug("%s - rio_node_id = %x\n", __func__, ptr->rio_node_id);
debug ("%s - rio_type = %x\n", __func__, ptr->rio_type); debug("%s - rio_type = %x\n", __func__, ptr->rio_type);
debug ("%s - owner_id = %x\n", __func__, ptr->owner_id); debug("%s - owner_id = %x\n", __func__, ptr->owner_id);
debug ("%s - first_slot_num = %x\n", __func__, ptr->first_slot_num); debug("%s - first_slot_num = %x\n", __func__, ptr->first_slot_num);
debug ("%s - wpindex = %x\n", __func__, ptr->wpindex); debug("%s - wpindex = %x\n", __func__, ptr->wpindex);
debug ("%s - chassis_num = %x\n", __func__, ptr->chassis_num); debug("%s - chassis_num = %x\n", __func__, ptr->chassis_num);
} }
} }
static void print_vg_info (void) static void print_vg_info(void)
{ {
struct rio_detail *ptr; struct rio_detail *ptr;
debug ("%s ---\n", __func__); debug("%s ---\n", __func__);
list_for_each_entry(ptr, &rio_vg_head, rio_detail_list) { list_for_each_entry(ptr, &rio_vg_head, rio_detail_list) {
debug ("%s - rio_node_id = %x\n", __func__, ptr->rio_node_id); debug("%s - rio_node_id = %x\n", __func__, ptr->rio_node_id);
debug ("%s - rio_type = %x\n", __func__, ptr->rio_type); debug("%s - rio_type = %x\n", __func__, ptr->rio_type);
debug ("%s - owner_id = %x\n", __func__, ptr->owner_id); debug("%s - owner_id = %x\n", __func__, ptr->owner_id);
debug ("%s - first_slot_num = %x\n", __func__, ptr->first_slot_num); debug("%s - first_slot_num = %x\n", __func__, ptr->first_slot_num);
debug ("%s - wpindex = %x\n", __func__, ptr->wpindex); debug("%s - wpindex = %x\n", __func__, ptr->wpindex);
debug ("%s - chassis_num = %x\n", __func__, ptr->chassis_num); debug("%s - chassis_num = %x\n", __func__, ptr->chassis_num);
} }
} }
static void __init print_ebda_pci_rsrc (void) static void __init print_ebda_pci_rsrc(void)
{ {
struct ebda_pci_rsrc *ptr; struct ebda_pci_rsrc *ptr;
list_for_each_entry(ptr, &ibmphp_ebda_pci_rsrc_head, ebda_pci_rsrc_list) { list_for_each_entry(ptr, &ibmphp_ebda_pci_rsrc_head, ebda_pci_rsrc_list) {
debug ("%s - rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n", debug("%s - rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n",
__func__, ptr->rsrc_type ,ptr->bus_num, ptr->dev_fun,ptr->start_addr, ptr->end_addr); __func__, ptr->rsrc_type, ptr->bus_num, ptr->dev_fun, ptr->start_addr, ptr->end_addr);
} }
} }
static void __init print_ibm_slot (void) static void __init print_ibm_slot(void)
{ {
struct slot *ptr; struct slot *ptr;
list_for_each_entry(ptr, &ibmphp_slot_head, ibm_slot_list) { list_for_each_entry(ptr, &ibmphp_slot_head, ibm_slot_list) {
debug ("%s - slot_number: %x\n", __func__, ptr->number); debug("%s - slot_number: %x\n", __func__, ptr->number);
} }
} }
static void __init print_opt_vg (void) static void __init print_opt_vg(void)
{ {
struct opt_rio *ptr; struct opt_rio *ptr;
debug ("%s ---\n", __func__); debug("%s ---\n", __func__);
list_for_each_entry(ptr, &opt_vg_head, opt_rio_list) { list_for_each_entry(ptr, &opt_vg_head, opt_rio_list) {
debug ("%s - rio_type %x\n", __func__, ptr->rio_type); debug("%s - rio_type %x\n", __func__, ptr->rio_type);
debug ("%s - chassis_num: %x\n", __func__, ptr->chassis_num); debug("%s - chassis_num: %x\n", __func__, ptr->chassis_num);
debug ("%s - first_slot_num: %x\n", __func__, ptr->first_slot_num); debug("%s - first_slot_num: %x\n", __func__, ptr->first_slot_num);
debug ("%s - middle_num: %x\n", __func__, ptr->middle_num); debug("%s - middle_num: %x\n", __func__, ptr->middle_num);
} }
} }
static void __init print_ebda_hpc (void) static void __init print_ebda_hpc(void)
{ {
struct controller *hpc_ptr; struct controller *hpc_ptr;
u16 index; u16 index;
list_for_each_entry(hpc_ptr, &ebda_hpc_head, ebda_hpc_list) { list_for_each_entry(hpc_ptr, &ebda_hpc_head, ebda_hpc_list) {
for (index = 0; index < hpc_ptr->slot_count; index++) { for (index = 0; index < hpc_ptr->slot_count; index++) {
debug ("%s - physical slot#: %x\n", __func__, hpc_ptr->slots[index].slot_num); debug("%s - physical slot#: %x\n", __func__, hpc_ptr->slots[index].slot_num);
debug ("%s - pci bus# of the slot: %x\n", __func__, hpc_ptr->slots[index].slot_bus_num); debug("%s - pci bus# of the slot: %x\n", __func__, hpc_ptr->slots[index].slot_bus_num);
debug ("%s - index into ctlr addr: %x\n", __func__, hpc_ptr->slots[index].ctl_index); debug("%s - index into ctlr addr: %x\n", __func__, hpc_ptr->slots[index].ctl_index);
debug ("%s - cap of the slot: %x\n", __func__, hpc_ptr->slots[index].slot_cap); debug("%s - cap of the slot: %x\n", __func__, hpc_ptr->slots[index].slot_cap);
} }
for (index = 0; index < hpc_ptr->bus_count; index++) for (index = 0; index < hpc_ptr->bus_count; index++)
debug ("%s - bus# of each bus controlled by this ctlr: %x\n", __func__, hpc_ptr->buses[index].bus_num); debug("%s - bus# of each bus controlled by this ctlr: %x\n", __func__, hpc_ptr->buses[index].bus_num);
debug ("%s - type of hpc: %x\n", __func__, hpc_ptr->ctlr_type); debug("%s - type of hpc: %x\n", __func__, hpc_ptr->ctlr_type);
switch (hpc_ptr->ctlr_type) { switch (hpc_ptr->ctlr_type) {
case 1: case 1:
debug ("%s - bus: %x\n", __func__, hpc_ptr->u.pci_ctlr.bus); debug("%s - bus: %x\n", __func__, hpc_ptr->u.pci_ctlr.bus);
debug ("%s - dev_fun: %x\n", __func__, hpc_ptr->u.pci_ctlr.dev_fun); debug("%s - dev_fun: %x\n", __func__, hpc_ptr->u.pci_ctlr.dev_fun);
debug ("%s - irq: %x\n", __func__, hpc_ptr->irq); debug("%s - irq: %x\n", __func__, hpc_ptr->irq);
break; break;
case 0: case 0:
debug ("%s - io_start: %x\n", __func__, hpc_ptr->u.isa_ctlr.io_start); debug("%s - io_start: %x\n", __func__, hpc_ptr->u.isa_ctlr.io_start);
debug ("%s - io_end: %x\n", __func__, hpc_ptr->u.isa_ctlr.io_end); debug("%s - io_end: %x\n", __func__, hpc_ptr->u.isa_ctlr.io_end);
debug ("%s - irq: %x\n", __func__, hpc_ptr->irq); debug("%s - irq: %x\n", __func__, hpc_ptr->irq);
break; break;
case 2: case 2:
case 4: case 4:
debug ("%s - wpegbbar: %lx\n", __func__, hpc_ptr->u.wpeg_ctlr.wpegbbar); debug("%s - wpegbbar: %lx\n", __func__, hpc_ptr->u.wpeg_ctlr.wpegbbar);
debug ("%s - i2c_addr: %x\n", __func__, hpc_ptr->u.wpeg_ctlr.i2c_addr); debug("%s - i2c_addr: %x\n", __func__, hpc_ptr->u.wpeg_ctlr.i2c_addr);
debug ("%s - irq: %x\n", __func__, hpc_ptr->irq); debug("%s - irq: %x\n", __func__, hpc_ptr->irq);
break; break;
} }
} }
} }
int __init ibmphp_access_ebda (void) int __init ibmphp_access_ebda(void)
{ {
u8 format, num_ctlrs, rio_complete, hs_complete, ebda_sz; u8 format, num_ctlrs, rio_complete, hs_complete, ebda_sz;
u16 ebda_seg, num_entries, next_offset, offset, blk_id, sub_addr, re, rc_id, re_id, base; u16 ebda_seg, num_entries, next_offset, offset, blk_id, sub_addr, re, rc_id, re_id, base;
...@@ -252,12 +252,12 @@ int __init ibmphp_access_ebda (void) ...@@ -252,12 +252,12 @@ int __init ibmphp_access_ebda (void)
rio_complete = 0; rio_complete = 0;
hs_complete = 0; hs_complete = 0;
io_mem = ioremap ((0x40 << 4) + 0x0e, 2); io_mem = ioremap((0x40 << 4) + 0x0e, 2);
if (!io_mem ) if (!io_mem)
return -ENOMEM; return -ENOMEM;
ebda_seg = readw (io_mem); ebda_seg = readw(io_mem);
iounmap (io_mem); iounmap(io_mem);
debug ("returned ebda segment: %x\n", ebda_seg); debug("returned ebda segment: %x\n", ebda_seg);
io_mem = ioremap(ebda_seg<<4, 1); io_mem = ioremap(ebda_seg<<4, 1);
if (!io_mem) if (!io_mem)
...@@ -269,7 +269,7 @@ int __init ibmphp_access_ebda (void) ...@@ -269,7 +269,7 @@ int __init ibmphp_access_ebda (void)
return -ENOMEM; return -ENOMEM;
io_mem = ioremap(ebda_seg<<4, (ebda_sz * 1024)); io_mem = ioremap(ebda_seg<<4, (ebda_sz * 1024));
if (!io_mem ) if (!io_mem)
return -ENOMEM; return -ENOMEM;
next_offset = 0x180; next_offset = 0x180;
...@@ -281,12 +281,12 @@ int __init ibmphp_access_ebda (void) ...@@ -281,12 +281,12 @@ int __init ibmphp_access_ebda (void)
"ibmphp_ebda: next read is beyond ebda_sz\n")) "ibmphp_ebda: next read is beyond ebda_sz\n"))
break; break;
next_offset = readw (io_mem + offset); /* offset of next blk */ next_offset = readw(io_mem + offset); /* offset of next blk */
offset += 2; offset += 2;
if (next_offset == 0) /* 0 indicate it's last blk */ if (next_offset == 0) /* 0 indicate it's last blk */
break; break;
blk_id = readw (io_mem + offset); /* this blk id */ blk_id = readw(io_mem + offset); /* this blk id */
offset += 2; offset += 2;
/* check if it is hot swap block or rio block */ /* check if it is hot swap block or rio block */
...@@ -294,31 +294,31 @@ int __init ibmphp_access_ebda (void) ...@@ -294,31 +294,31 @@ int __init ibmphp_access_ebda (void)
continue; continue;
/* found hs table */ /* found hs table */
if (blk_id == 0x4853) { if (blk_id == 0x4853) {
debug ("now enter hot swap block---\n"); debug("now enter hot swap block---\n");
debug ("hot blk id: %x\n", blk_id); debug("hot blk id: %x\n", blk_id);
format = readb (io_mem + offset); format = readb(io_mem + offset);
offset += 1; offset += 1;
if (format != 4) if (format != 4)
goto error_nodev; goto error_nodev;
debug ("hot blk format: %x\n", format); debug("hot blk format: %x\n", format);
/* hot swap sub blk */ /* hot swap sub blk */
base = offset; base = offset;
sub_addr = base; sub_addr = base;
re = readw (io_mem + sub_addr); /* next sub blk */ re = readw(io_mem + sub_addr); /* next sub blk */
sub_addr += 2; sub_addr += 2;
rc_id = readw (io_mem + sub_addr); /* sub blk id */ rc_id = readw(io_mem + sub_addr); /* sub blk id */
sub_addr += 2; sub_addr += 2;
if (rc_id != 0x5243) if (rc_id != 0x5243)
goto error_nodev; goto error_nodev;
/* rc sub blk signature */ /* rc sub blk signature */
num_ctlrs = readb (io_mem + sub_addr); num_ctlrs = readb(io_mem + sub_addr);
sub_addr += 1; sub_addr += 1;
hpc_list_ptr = alloc_ebda_hpc_list (); hpc_list_ptr = alloc_ebda_hpc_list();
if (!hpc_list_ptr) { if (!hpc_list_ptr) {
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
...@@ -326,28 +326,28 @@ int __init ibmphp_access_ebda (void) ...@@ -326,28 +326,28 @@ int __init ibmphp_access_ebda (void)
hpc_list_ptr->format = format; hpc_list_ptr->format = format;
hpc_list_ptr->num_ctlrs = num_ctlrs; hpc_list_ptr->num_ctlrs = num_ctlrs;
hpc_list_ptr->phys_addr = sub_addr; /* offset of RSRC_CONTROLLER blk */ hpc_list_ptr->phys_addr = sub_addr; /* offset of RSRC_CONTROLLER blk */
debug ("info about hpc descriptor---\n"); debug("info about hpc descriptor---\n");
debug ("hot blk format: %x\n", format); debug("hot blk format: %x\n", format);
debug ("num of controller: %x\n", num_ctlrs); debug("num of controller: %x\n", num_ctlrs);
debug ("offset of hpc data structure entries: %x\n ", sub_addr); debug("offset of hpc data structure entries: %x\n ", sub_addr);
sub_addr = base + re; /* re sub blk */ sub_addr = base + re; /* re sub blk */
/* FIXME: rc is never used/checked */ /* FIXME: rc is never used/checked */
rc = readw (io_mem + sub_addr); /* next sub blk */ rc = readw(io_mem + sub_addr); /* next sub blk */
sub_addr += 2; sub_addr += 2;
re_id = readw (io_mem + sub_addr); /* sub blk id */ re_id = readw(io_mem + sub_addr); /* sub blk id */
sub_addr += 2; sub_addr += 2;
if (re_id != 0x5245) if (re_id != 0x5245)
goto error_nodev; goto error_nodev;
/* signature of re */ /* signature of re */
num_entries = readw (io_mem + sub_addr); num_entries = readw(io_mem + sub_addr);
sub_addr += 2; /* offset of RSRC_ENTRIES blk */ sub_addr += 2; /* offset of RSRC_ENTRIES blk */
rsrc_list_ptr = alloc_ebda_rsrc_list (); rsrc_list_ptr = alloc_ebda_rsrc_list();
if (!rsrc_list_ptr ) { if (!rsrc_list_ptr) {
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
} }
...@@ -355,26 +355,26 @@ int __init ibmphp_access_ebda (void) ...@@ -355,26 +355,26 @@ int __init ibmphp_access_ebda (void)
rsrc_list_ptr->num_entries = num_entries; rsrc_list_ptr->num_entries = num_entries;
rsrc_list_ptr->phys_addr = sub_addr; rsrc_list_ptr->phys_addr = sub_addr;
debug ("info about rsrc descriptor---\n"); debug("info about rsrc descriptor---\n");
debug ("format: %x\n", format); debug("format: %x\n", format);
debug ("num of rsrc: %x\n", num_entries); debug("num of rsrc: %x\n", num_entries);
debug ("offset of rsrc data structure entries: %x\n ", sub_addr); debug("offset of rsrc data structure entries: %x\n ", sub_addr);
hs_complete = 1; hs_complete = 1;
} else { } else {
/* found rio table, blk_id == 0x4752 */ /* found rio table, blk_id == 0x4752 */
debug ("now enter io table ---\n"); debug("now enter io table ---\n");
debug ("rio blk id: %x\n", blk_id); debug("rio blk id: %x\n", blk_id);
rio_table_ptr = kzalloc(sizeof(struct rio_table_hdr), GFP_KERNEL); rio_table_ptr = kzalloc(sizeof(struct rio_table_hdr), GFP_KERNEL);
if (!rio_table_ptr) { if (!rio_table_ptr) {
rc = -ENOMEM; rc = -ENOMEM;
goto out; goto out;
} }
rio_table_ptr->ver_num = readb (io_mem + offset); rio_table_ptr->ver_num = readb(io_mem + offset);
rio_table_ptr->scal_count = readb (io_mem + offset + 1); rio_table_ptr->scal_count = readb(io_mem + offset + 1);
rio_table_ptr->riodev_count = readb (io_mem + offset + 2); rio_table_ptr->riodev_count = readb(io_mem + offset + 2);
rio_table_ptr->offset = offset +3 ; rio_table_ptr->offset = offset + 3 ;
debug("info about rio table hdr ---\n"); debug("info about rio table hdr ---\n");
debug("ver_num: %x\nscal_count: %x\nriodev_count: %x\noffset of rio table: %x\n ", debug("ver_num: %x\nscal_count: %x\nriodev_count: %x\noffset of rio table: %x\n ",
...@@ -390,28 +390,28 @@ int __init ibmphp_access_ebda (void) ...@@ -390,28 +390,28 @@ int __init ibmphp_access_ebda (void)
if (rio_table_ptr) { if (rio_table_ptr) {
if (rio_complete && rio_table_ptr->ver_num == 3) { if (rio_complete && rio_table_ptr->ver_num == 3) {
rc = ebda_rio_table (); rc = ebda_rio_table();
if (rc) if (rc)
goto out; goto out;
} }
} }
rc = ebda_rsrc_controller (); rc = ebda_rsrc_controller();
if (rc) if (rc)
goto out; goto out;
rc = ebda_rsrc_rsrc (); rc = ebda_rsrc_rsrc();
goto out; goto out;
error_nodev: error_nodev:
rc = -ENODEV; rc = -ENODEV;
out: out:
iounmap (io_mem); iounmap(io_mem);
return rc; return rc;
} }
/* /*
* map info of scalability details and rio details from physical address * map info of scalability details and rio details from physical address
*/ */
static int __init ebda_rio_table (void) static int __init ebda_rio_table(void)
{ {
u16 offset; u16 offset;
u8 i; u8 i;
...@@ -425,39 +425,39 @@ static int __init ebda_rio_table (void) ...@@ -425,39 +425,39 @@ static int __init ebda_rio_table (void)
rio_detail_ptr = kzalloc(sizeof(struct rio_detail), GFP_KERNEL); rio_detail_ptr = kzalloc(sizeof(struct rio_detail), GFP_KERNEL);
if (!rio_detail_ptr) if (!rio_detail_ptr)
return -ENOMEM; return -ENOMEM;
rio_detail_ptr->rio_node_id = readb (io_mem + offset); rio_detail_ptr->rio_node_id = readb(io_mem + offset);
rio_detail_ptr->bbar = readl (io_mem + offset + 1); rio_detail_ptr->bbar = readl(io_mem + offset + 1);
rio_detail_ptr->rio_type = readb (io_mem + offset + 5); rio_detail_ptr->rio_type = readb(io_mem + offset + 5);
rio_detail_ptr->owner_id = readb (io_mem + offset + 6); rio_detail_ptr->owner_id = readb(io_mem + offset + 6);
rio_detail_ptr->port0_node_connect = readb (io_mem + offset + 7); rio_detail_ptr->port0_node_connect = readb(io_mem + offset + 7);
rio_detail_ptr->port0_port_connect = readb (io_mem + offset + 8); rio_detail_ptr->port0_port_connect = readb(io_mem + offset + 8);
rio_detail_ptr->port1_node_connect = readb (io_mem + offset + 9); rio_detail_ptr->port1_node_connect = readb(io_mem + offset + 9);
rio_detail_ptr->port1_port_connect = readb (io_mem + offset + 10); rio_detail_ptr->port1_port_connect = readb(io_mem + offset + 10);
rio_detail_ptr->first_slot_num = readb (io_mem + offset + 11); rio_detail_ptr->first_slot_num = readb(io_mem + offset + 11);
rio_detail_ptr->status = readb (io_mem + offset + 12); rio_detail_ptr->status = readb(io_mem + offset + 12);
rio_detail_ptr->wpindex = readb (io_mem + offset + 13); rio_detail_ptr->wpindex = readb(io_mem + offset + 13);
rio_detail_ptr->chassis_num = readb (io_mem + offset + 14); rio_detail_ptr->chassis_num = readb(io_mem + offset + 14);
// debug ("rio_node_id: %x\nbbar: %x\nrio_type: %x\nowner_id: %x\nport0_node: %x\nport0_port: %x\nport1_node: %x\nport1_port: %x\nfirst_slot_num: %x\nstatus: %x\n", rio_detail_ptr->rio_node_id, rio_detail_ptr->bbar, rio_detail_ptr->rio_type, rio_detail_ptr->owner_id, rio_detail_ptr->port0_node_connect, rio_detail_ptr->port0_port_connect, rio_detail_ptr->port1_node_connect, rio_detail_ptr->port1_port_connect, rio_detail_ptr->first_slot_num, rio_detail_ptr->status); // debug("rio_node_id: %x\nbbar: %x\nrio_type: %x\nowner_id: %x\nport0_node: %x\nport0_port: %x\nport1_node: %x\nport1_port: %x\nfirst_slot_num: %x\nstatus: %x\n", rio_detail_ptr->rio_node_id, rio_detail_ptr->bbar, rio_detail_ptr->rio_type, rio_detail_ptr->owner_id, rio_detail_ptr->port0_node_connect, rio_detail_ptr->port0_port_connect, rio_detail_ptr->port1_node_connect, rio_detail_ptr->port1_port_connect, rio_detail_ptr->first_slot_num, rio_detail_ptr->status);
//create linked list of chassis //create linked list of chassis
if (rio_detail_ptr->rio_type == 4 || rio_detail_ptr->rio_type == 5) if (rio_detail_ptr->rio_type == 4 || rio_detail_ptr->rio_type == 5)
list_add (&rio_detail_ptr->rio_detail_list, &rio_vg_head); list_add(&rio_detail_ptr->rio_detail_list, &rio_vg_head);
//create linked list of expansion box //create linked list of expansion box
else if (rio_detail_ptr->rio_type == 6 || rio_detail_ptr->rio_type == 7) else if (rio_detail_ptr->rio_type == 6 || rio_detail_ptr->rio_type == 7)
list_add (&rio_detail_ptr->rio_detail_list, &rio_lo_head); list_add(&rio_detail_ptr->rio_detail_list, &rio_lo_head);
else else
// not in my concern // not in my concern
kfree (rio_detail_ptr); kfree(rio_detail_ptr);
offset += 15; offset += 15;
} }
print_lo_info (); print_lo_info();
print_vg_info (); print_vg_info();
return 0; return 0;
} }
/* /*
* reorganizing linked list of chassis * reorganizing linked list of chassis
*/ */
static struct opt_rio *search_opt_vg (u8 chassis_num) static struct opt_rio *search_opt_vg(u8 chassis_num)
{ {
struct opt_rio *ptr; struct opt_rio *ptr;
list_for_each_entry(ptr, &opt_vg_head, opt_rio_list) { list_for_each_entry(ptr, &opt_vg_head, opt_rio_list) {
...@@ -467,13 +467,13 @@ static struct opt_rio *search_opt_vg (u8 chassis_num) ...@@ -467,13 +467,13 @@ static struct opt_rio *search_opt_vg (u8 chassis_num)
return NULL; return NULL;
} }
static int __init combine_wpg_for_chassis (void) static int __init combine_wpg_for_chassis(void)
{ {
struct opt_rio *opt_rio_ptr = NULL; struct opt_rio *opt_rio_ptr = NULL;
struct rio_detail *rio_detail_ptr = NULL; struct rio_detail *rio_detail_ptr = NULL;
list_for_each_entry(rio_detail_ptr, &rio_vg_head, rio_detail_list) { list_for_each_entry(rio_detail_ptr, &rio_vg_head, rio_detail_list) {
opt_rio_ptr = search_opt_vg (rio_detail_ptr->chassis_num); opt_rio_ptr = search_opt_vg(rio_detail_ptr->chassis_num);
if (!opt_rio_ptr) { if (!opt_rio_ptr) {
opt_rio_ptr = kzalloc(sizeof(struct opt_rio), GFP_KERNEL); opt_rio_ptr = kzalloc(sizeof(struct opt_rio), GFP_KERNEL);
if (!opt_rio_ptr) if (!opt_rio_ptr)
...@@ -482,20 +482,20 @@ static int __init combine_wpg_for_chassis (void) ...@@ -482,20 +482,20 @@ static int __init combine_wpg_for_chassis (void)
opt_rio_ptr->chassis_num = rio_detail_ptr->chassis_num; opt_rio_ptr->chassis_num = rio_detail_ptr->chassis_num;
opt_rio_ptr->first_slot_num = rio_detail_ptr->first_slot_num; opt_rio_ptr->first_slot_num = rio_detail_ptr->first_slot_num;
opt_rio_ptr->middle_num = rio_detail_ptr->first_slot_num; opt_rio_ptr->middle_num = rio_detail_ptr->first_slot_num;
list_add (&opt_rio_ptr->opt_rio_list, &opt_vg_head); list_add(&opt_rio_ptr->opt_rio_list, &opt_vg_head);
} else { } else {
opt_rio_ptr->first_slot_num = min (opt_rio_ptr->first_slot_num, rio_detail_ptr->first_slot_num); opt_rio_ptr->first_slot_num = min(opt_rio_ptr->first_slot_num, rio_detail_ptr->first_slot_num);
opt_rio_ptr->middle_num = max (opt_rio_ptr->middle_num, rio_detail_ptr->first_slot_num); opt_rio_ptr->middle_num = max(opt_rio_ptr->middle_num, rio_detail_ptr->first_slot_num);
} }
} }
print_opt_vg (); print_opt_vg();
return 0; return 0;
} }
/* /*
* reorganizing linked list of expansion box * reorganizing linked list of expansion box
*/ */
static struct opt_rio_lo *search_opt_lo (u8 chassis_num) static struct opt_rio_lo *search_opt_lo(u8 chassis_num)
{ {
struct opt_rio_lo *ptr; struct opt_rio_lo *ptr;
list_for_each_entry(ptr, &opt_lo_head, opt_rio_lo_list) { list_for_each_entry(ptr, &opt_lo_head, opt_rio_lo_list) {
...@@ -505,13 +505,13 @@ static struct opt_rio_lo *search_opt_lo (u8 chassis_num) ...@@ -505,13 +505,13 @@ static struct opt_rio_lo *search_opt_lo (u8 chassis_num)
return NULL; return NULL;
} }
static int combine_wpg_for_expansion (void) static int combine_wpg_for_expansion(void)
{ {
struct opt_rio_lo *opt_rio_lo_ptr = NULL; struct opt_rio_lo *opt_rio_lo_ptr = NULL;
struct rio_detail *rio_detail_ptr = NULL; struct rio_detail *rio_detail_ptr = NULL;
list_for_each_entry(rio_detail_ptr, &rio_lo_head, rio_detail_list) { list_for_each_entry(rio_detail_ptr, &rio_lo_head, rio_detail_list) {
opt_rio_lo_ptr = search_opt_lo (rio_detail_ptr->chassis_num); opt_rio_lo_ptr = search_opt_lo(rio_detail_ptr->chassis_num);
if (!opt_rio_lo_ptr) { if (!opt_rio_lo_ptr) {
opt_rio_lo_ptr = kzalloc(sizeof(struct opt_rio_lo), GFP_KERNEL); opt_rio_lo_ptr = kzalloc(sizeof(struct opt_rio_lo), GFP_KERNEL);
if (!opt_rio_lo_ptr) if (!opt_rio_lo_ptr)
...@@ -522,10 +522,10 @@ static int combine_wpg_for_expansion (void) ...@@ -522,10 +522,10 @@ static int combine_wpg_for_expansion (void)
opt_rio_lo_ptr->middle_num = rio_detail_ptr->first_slot_num; opt_rio_lo_ptr->middle_num = rio_detail_ptr->first_slot_num;
opt_rio_lo_ptr->pack_count = 1; opt_rio_lo_ptr->pack_count = 1;
list_add (&opt_rio_lo_ptr->opt_rio_lo_list, &opt_lo_head); list_add(&opt_rio_lo_ptr->opt_rio_lo_list, &opt_lo_head);
} else { } else {
opt_rio_lo_ptr->first_slot_num = min (opt_rio_lo_ptr->first_slot_num, rio_detail_ptr->first_slot_num); opt_rio_lo_ptr->first_slot_num = min(opt_rio_lo_ptr->first_slot_num, rio_detail_ptr->first_slot_num);
opt_rio_lo_ptr->middle_num = max (opt_rio_lo_ptr->middle_num, rio_detail_ptr->first_slot_num); opt_rio_lo_ptr->middle_num = max(opt_rio_lo_ptr->middle_num, rio_detail_ptr->first_slot_num);
opt_rio_lo_ptr->pack_count = 2; opt_rio_lo_ptr->pack_count = 2;
} }
} }
...@@ -538,7 +538,7 @@ static int combine_wpg_for_expansion (void) ...@@ -538,7 +538,7 @@ static int combine_wpg_for_expansion (void)
* Arguments: slot_num, 1st slot number of the chassis we think we are on, * Arguments: slot_num, 1st slot number of the chassis we think we are on,
* var (0 = chassis, 1 = expansion box) * var (0 = chassis, 1 = expansion box)
*/ */
static int first_slot_num (u8 slot_num, u8 first_slot, u8 var) static int first_slot_num(u8 slot_num, u8 first_slot, u8 var)
{ {
struct opt_rio *opt_vg_ptr = NULL; struct opt_rio *opt_vg_ptr = NULL;
struct opt_rio_lo *opt_lo_ptr = NULL; struct opt_rio_lo *opt_lo_ptr = NULL;
...@@ -562,25 +562,25 @@ static int first_slot_num (u8 slot_num, u8 first_slot, u8 var) ...@@ -562,25 +562,25 @@ static int first_slot_num (u8 slot_num, u8 first_slot, u8 var)
return rc; return rc;
} }
static struct opt_rio_lo *find_rxe_num (u8 slot_num) static struct opt_rio_lo *find_rxe_num(u8 slot_num)
{ {
struct opt_rio_lo *opt_lo_ptr; struct opt_rio_lo *opt_lo_ptr;
list_for_each_entry(opt_lo_ptr, &opt_lo_head, opt_rio_lo_list) { list_for_each_entry(opt_lo_ptr, &opt_lo_head, opt_rio_lo_list) {
//check to see if this slot_num belongs to expansion box //check to see if this slot_num belongs to expansion box
if ((slot_num >= opt_lo_ptr->first_slot_num) && (!first_slot_num (slot_num, opt_lo_ptr->first_slot_num, 1))) if ((slot_num >= opt_lo_ptr->first_slot_num) && (!first_slot_num(slot_num, opt_lo_ptr->first_slot_num, 1)))
return opt_lo_ptr; return opt_lo_ptr;
} }
return NULL; return NULL;
} }
static struct opt_rio *find_chassis_num (u8 slot_num) static struct opt_rio *find_chassis_num(u8 slot_num)
{ {
struct opt_rio *opt_vg_ptr; struct opt_rio *opt_vg_ptr;
list_for_each_entry(opt_vg_ptr, &opt_vg_head, opt_rio_list) { list_for_each_entry(opt_vg_ptr, &opt_vg_head, opt_rio_list) {
//check to see if this slot_num belongs to chassis //check to see if this slot_num belongs to chassis
if ((slot_num >= opt_vg_ptr->first_slot_num) && (!first_slot_num (slot_num, opt_vg_ptr->first_slot_num, 0))) if ((slot_num >= opt_vg_ptr->first_slot_num) && (!first_slot_num(slot_num, opt_vg_ptr->first_slot_num, 0)))
return opt_vg_ptr; return opt_vg_ptr;
} }
return NULL; return NULL;
...@@ -589,7 +589,7 @@ static struct opt_rio *find_chassis_num (u8 slot_num) ...@@ -589,7 +589,7 @@ static struct opt_rio *find_chassis_num (u8 slot_num)
/* This routine will find out how many slots are in the chassis, so that /* This routine will find out how many slots are in the chassis, so that
* the slot numbers for rxe100 would start from 1, and not from 7, or 6 etc * the slot numbers for rxe100 would start from 1, and not from 7, or 6 etc
*/ */
static u8 calculate_first_slot (u8 slot_num) static u8 calculate_first_slot(u8 slot_num)
{ {
u8 first_slot = 1; u8 first_slot = 1;
struct slot *slot_cur; struct slot *slot_cur;
...@@ -606,7 +606,7 @@ static u8 calculate_first_slot (u8 slot_num) ...@@ -606,7 +606,7 @@ static u8 calculate_first_slot (u8 slot_num)
#define SLOT_NAME_SIZE 30 #define SLOT_NAME_SIZE 30
static char *create_file_name (struct slot *slot_cur) static char *create_file_name(struct slot *slot_cur)
{ {
struct opt_rio *opt_vg_ptr = NULL; struct opt_rio *opt_vg_ptr = NULL;
struct opt_rio_lo *opt_lo_ptr = NULL; struct opt_rio_lo *opt_lo_ptr = NULL;
...@@ -618,18 +618,18 @@ static char *create_file_name (struct slot *slot_cur) ...@@ -618,18 +618,18 @@ static char *create_file_name (struct slot *slot_cur)
u8 flag = 0; u8 flag = 0;
if (!slot_cur) { if (!slot_cur) {
err ("Structure passed is empty\n"); err("Structure passed is empty\n");
return NULL; return NULL;
} }
slot_num = slot_cur->number; slot_num = slot_cur->number;
memset (str, 0, sizeof(str)); memset(str, 0, sizeof(str));
if (rio_table_ptr) { if (rio_table_ptr) {
if (rio_table_ptr->ver_num == 3) { if (rio_table_ptr->ver_num == 3) {
opt_vg_ptr = find_chassis_num (slot_num); opt_vg_ptr = find_chassis_num(slot_num);
opt_lo_ptr = find_rxe_num (slot_num); opt_lo_ptr = find_rxe_num(slot_num);
} }
} }
if (opt_vg_ptr) { if (opt_vg_ptr) {
...@@ -662,7 +662,7 @@ static char *create_file_name (struct slot *slot_cur) ...@@ -662,7 +662,7 @@ static char *create_file_name (struct slot *slot_cur)
} }
if (!flag) { if (!flag) {
if (slot_cur->ctrl->ctlr_type == 4) { if (slot_cur->ctrl->ctlr_type == 4) {
first_slot = calculate_first_slot (slot_num); first_slot = calculate_first_slot(slot_num);
which = 1; which = 1;
} else { } else {
which = 0; which = 0;
...@@ -698,7 +698,7 @@ static int fillslotinfo(struct hotplug_slot *hotplug_slot) ...@@ -698,7 +698,7 @@ static int fillslotinfo(struct hotplug_slot *hotplug_slot)
hotplug_slot->info->latch_status = SLOT_LATCH(slot->status); hotplug_slot->info->latch_status = SLOT_LATCH(slot->status);
// pci board - present:1 not:0 // pci board - present:1 not:0
if (SLOT_PRESENT (slot->status)) if (SLOT_PRESENT(slot->status))
hotplug_slot->info->adapter_status = 1; hotplug_slot->info->adapter_status = 1;
else else
hotplug_slot->info->adapter_status = 0; hotplug_slot->info->adapter_status = 0;
...@@ -729,7 +729,7 @@ static void release_slot(struct hotplug_slot *hotplug_slot) ...@@ -729,7 +729,7 @@ static void release_slot(struct hotplug_slot *hotplug_slot)
/* we don't want to actually remove the resources, since free_resources will do just that */ /* we don't want to actually remove the resources, since free_resources will do just that */
ibmphp_unconfigure_card(&slot, -1); ibmphp_unconfigure_card(&slot, -1);
kfree (slot); kfree(slot);
} }
static struct pci_driver ibmphp_driver; static struct pci_driver ibmphp_driver;
...@@ -739,7 +739,7 @@ static struct pci_driver ibmphp_driver; ...@@ -739,7 +739,7 @@ static struct pci_driver ibmphp_driver;
* each hpc from physical address to a list of hot plug controllers based on * each hpc from physical address to a list of hot plug controllers based on
* hpc descriptors. * hpc descriptors.
*/ */
static int __init ebda_rsrc_controller (void) static int __init ebda_rsrc_controller(void)
{ {
u16 addr, addr_slot, addr_bus; u16 addr, addr_slot, addr_bus;
u8 ctlr_id, temp, bus_index; u8 ctlr_id, temp, bus_index;
...@@ -757,25 +757,25 @@ static int __init ebda_rsrc_controller (void) ...@@ -757,25 +757,25 @@ static int __init ebda_rsrc_controller (void)
addr = hpc_list_ptr->phys_addr; addr = hpc_list_ptr->phys_addr;
for (ctlr = 0; ctlr < hpc_list_ptr->num_ctlrs; ctlr++) { for (ctlr = 0; ctlr < hpc_list_ptr->num_ctlrs; ctlr++) {
bus_index = 1; bus_index = 1;
ctlr_id = readb (io_mem + addr); ctlr_id = readb(io_mem + addr);
addr += 1; addr += 1;
slot_num = readb (io_mem + addr); slot_num = readb(io_mem + addr);
addr += 1; addr += 1;
addr_slot = addr; /* offset of slot structure */ addr_slot = addr; /* offset of slot structure */
addr += (slot_num * 4); addr += (slot_num * 4);
bus_num = readb (io_mem + addr); bus_num = readb(io_mem + addr);
addr += 1; addr += 1;
addr_bus = addr; /* offset of bus */ addr_bus = addr; /* offset of bus */
addr += (bus_num * 9); /* offset of ctlr_type */ addr += (bus_num * 9); /* offset of ctlr_type */
temp = readb (io_mem + addr); temp = readb(io_mem + addr);
addr += 1; addr += 1;
/* init hpc structure */ /* init hpc structure */
hpc_ptr = alloc_ebda_hpc (slot_num, bus_num); hpc_ptr = alloc_ebda_hpc(slot_num, bus_num);
if (!hpc_ptr ) { if (!hpc_ptr) {
rc = -ENOMEM; rc = -ENOMEM;
goto error_no_hpc; goto error_no_hpc;
} }
...@@ -783,23 +783,23 @@ static int __init ebda_rsrc_controller (void) ...@@ -783,23 +783,23 @@ static int __init ebda_rsrc_controller (void)
hpc_ptr->ctlr_relative_id = ctlr; hpc_ptr->ctlr_relative_id = ctlr;
hpc_ptr->slot_count = slot_num; hpc_ptr->slot_count = slot_num;
hpc_ptr->bus_count = bus_num; hpc_ptr->bus_count = bus_num;
debug ("now enter ctlr data structure ---\n"); debug("now enter ctlr data structure ---\n");
debug ("ctlr id: %x\n", ctlr_id); debug("ctlr id: %x\n", ctlr_id);
debug ("ctlr_relative_id: %x\n", hpc_ptr->ctlr_relative_id); debug("ctlr_relative_id: %x\n", hpc_ptr->ctlr_relative_id);
debug ("count of slots controlled by this ctlr: %x\n", slot_num); debug("count of slots controlled by this ctlr: %x\n", slot_num);
debug ("count of buses controlled by this ctlr: %x\n", bus_num); debug("count of buses controlled by this ctlr: %x\n", bus_num);
/* init slot structure, fetch slot, bus, cap... */ /* init slot structure, fetch slot, bus, cap... */
slot_ptr = hpc_ptr->slots; slot_ptr = hpc_ptr->slots;
for (slot = 0; slot < slot_num; slot++) { for (slot = 0; slot < slot_num; slot++) {
slot_ptr->slot_num = readb (io_mem + addr_slot); slot_ptr->slot_num = readb(io_mem + addr_slot);
slot_ptr->slot_bus_num = readb (io_mem + addr_slot + slot_num); slot_ptr->slot_bus_num = readb(io_mem + addr_slot + slot_num);
slot_ptr->ctl_index = readb (io_mem + addr_slot + 2*slot_num); slot_ptr->ctl_index = readb(io_mem + addr_slot + 2*slot_num);
slot_ptr->slot_cap = readb (io_mem + addr_slot + 3*slot_num); slot_ptr->slot_cap = readb(io_mem + addr_slot + 3*slot_num);
// create bus_info lined list --- if only one slot per bus: slot_min = slot_max // create bus_info lined list --- if only one slot per bus: slot_min = slot_max
bus_info_ptr2 = ibmphp_find_same_bus_num (slot_ptr->slot_bus_num); bus_info_ptr2 = ibmphp_find_same_bus_num(slot_ptr->slot_bus_num);
if (!bus_info_ptr2) { if (!bus_info_ptr2) {
bus_info_ptr1 = kzalloc(sizeof(struct bus_info), GFP_KERNEL); bus_info_ptr1 = kzalloc(sizeof(struct bus_info), GFP_KERNEL);
if (!bus_info_ptr1) { if (!bus_info_ptr1) {
...@@ -816,11 +816,11 @@ static int __init ebda_rsrc_controller (void) ...@@ -816,11 +816,11 @@ static int __init ebda_rsrc_controller (void)
bus_info_ptr1->controller_id = hpc_ptr->ctlr_id; bus_info_ptr1->controller_id = hpc_ptr->ctlr_id;
list_add_tail (&bus_info_ptr1->bus_info_list, &bus_info_head); list_add_tail(&bus_info_ptr1->bus_info_list, &bus_info_head);
} else { } else {
bus_info_ptr2->slot_min = min (bus_info_ptr2->slot_min, slot_ptr->slot_num); bus_info_ptr2->slot_min = min(bus_info_ptr2->slot_min, slot_ptr->slot_num);
bus_info_ptr2->slot_max = max (bus_info_ptr2->slot_max, slot_ptr->slot_num); bus_info_ptr2->slot_max = max(bus_info_ptr2->slot_max, slot_ptr->slot_num);
bus_info_ptr2->slot_count += 1; bus_info_ptr2->slot_count += 1;
} }
...@@ -834,17 +834,17 @@ static int __init ebda_rsrc_controller (void) ...@@ -834,17 +834,17 @@ static int __init ebda_rsrc_controller (void)
/* init bus structure */ /* init bus structure */
bus_ptr = hpc_ptr->buses; bus_ptr = hpc_ptr->buses;
for (bus = 0; bus < bus_num; bus++) { for (bus = 0; bus < bus_num; bus++) {
bus_ptr->bus_num = readb (io_mem + addr_bus + bus); bus_ptr->bus_num = readb(io_mem + addr_bus + bus);
bus_ptr->slots_at_33_conv = readb (io_mem + addr_bus + bus_num + 8 * bus); bus_ptr->slots_at_33_conv = readb(io_mem + addr_bus + bus_num + 8 * bus);
bus_ptr->slots_at_66_conv = readb (io_mem + addr_bus + bus_num + 8 * bus + 1); bus_ptr->slots_at_66_conv = readb(io_mem + addr_bus + bus_num + 8 * bus + 1);
bus_ptr->slots_at_66_pcix = readb (io_mem + addr_bus + bus_num + 8 * bus + 2); bus_ptr->slots_at_66_pcix = readb(io_mem + addr_bus + bus_num + 8 * bus + 2);
bus_ptr->slots_at_100_pcix = readb (io_mem + addr_bus + bus_num + 8 * bus + 3); bus_ptr->slots_at_100_pcix = readb(io_mem + addr_bus + bus_num + 8 * bus + 3);
bus_ptr->slots_at_133_pcix = readb (io_mem + addr_bus + bus_num + 8 * bus + 4); bus_ptr->slots_at_133_pcix = readb(io_mem + addr_bus + bus_num + 8 * bus + 4);
bus_info_ptr2 = ibmphp_find_same_bus_num (bus_ptr->bus_num); bus_info_ptr2 = ibmphp_find_same_bus_num(bus_ptr->bus_num);
if (bus_info_ptr2) { if (bus_info_ptr2) {
bus_info_ptr2->slots_at_33_conv = bus_ptr->slots_at_33_conv; bus_info_ptr2->slots_at_33_conv = bus_ptr->slots_at_33_conv;
bus_info_ptr2->slots_at_66_conv = bus_ptr->slots_at_66_conv; bus_info_ptr2->slots_at_66_conv = bus_ptr->slots_at_66_conv;
...@@ -859,33 +859,33 @@ static int __init ebda_rsrc_controller (void) ...@@ -859,33 +859,33 @@ static int __init ebda_rsrc_controller (void)
switch (hpc_ptr->ctlr_type) { switch (hpc_ptr->ctlr_type) {
case 1: case 1:
hpc_ptr->u.pci_ctlr.bus = readb (io_mem + addr); hpc_ptr->u.pci_ctlr.bus = readb(io_mem + addr);
hpc_ptr->u.pci_ctlr.dev_fun = readb (io_mem + addr + 1); hpc_ptr->u.pci_ctlr.dev_fun = readb(io_mem + addr + 1);
hpc_ptr->irq = readb (io_mem + addr + 2); hpc_ptr->irq = readb(io_mem + addr + 2);
addr += 3; addr += 3;
debug ("ctrl bus = %x, ctlr devfun = %x, irq = %x\n", debug("ctrl bus = %x, ctlr devfun = %x, irq = %x\n",
hpc_ptr->u.pci_ctlr.bus, hpc_ptr->u.pci_ctlr.bus,
hpc_ptr->u.pci_ctlr.dev_fun, hpc_ptr->irq); hpc_ptr->u.pci_ctlr.dev_fun, hpc_ptr->irq);
break; break;
case 0: case 0:
hpc_ptr->u.isa_ctlr.io_start = readw (io_mem + addr); hpc_ptr->u.isa_ctlr.io_start = readw(io_mem + addr);
hpc_ptr->u.isa_ctlr.io_end = readw (io_mem + addr + 2); hpc_ptr->u.isa_ctlr.io_end = readw(io_mem + addr + 2);
if (!request_region (hpc_ptr->u.isa_ctlr.io_start, if (!request_region(hpc_ptr->u.isa_ctlr.io_start,
(hpc_ptr->u.isa_ctlr.io_end - hpc_ptr->u.isa_ctlr.io_start + 1), (hpc_ptr->u.isa_ctlr.io_end - hpc_ptr->u.isa_ctlr.io_start + 1),
"ibmphp")) { "ibmphp")) {
rc = -ENODEV; rc = -ENODEV;
goto error_no_hp_slot; goto error_no_hp_slot;
} }
hpc_ptr->irq = readb (io_mem + addr + 4); hpc_ptr->irq = readb(io_mem + addr + 4);
addr += 5; addr += 5;
break; break;
case 2: case 2:
case 4: case 4:
hpc_ptr->u.wpeg_ctlr.wpegbbar = readl (io_mem + addr); hpc_ptr->u.wpeg_ctlr.wpegbbar = readl(io_mem + addr);
hpc_ptr->u.wpeg_ctlr.i2c_addr = readb (io_mem + addr + 4); hpc_ptr->u.wpeg_ctlr.i2c_addr = readb(io_mem + addr + 4);
hpc_ptr->irq = readb (io_mem + addr + 5); hpc_ptr->irq = readb(io_mem + addr + 5);
addr += 6; addr += 6;
break; break;
default: default:
...@@ -894,8 +894,8 @@ static int __init ebda_rsrc_controller (void) ...@@ -894,8 +894,8 @@ static int __init ebda_rsrc_controller (void)
} }
//reorganize chassis' linked list //reorganize chassis' linked list
combine_wpg_for_chassis (); combine_wpg_for_chassis();
combine_wpg_for_expansion (); combine_wpg_for_expansion();
hpc_ptr->revision = 0xff; hpc_ptr->revision = 0xff;
hpc_ptr->options = 0xff; hpc_ptr->options = 0xff;
hpc_ptr->starting_slot_num = hpc_ptr->slots[0].slot_num; hpc_ptr->starting_slot_num = hpc_ptr->slots[0].slot_num;
...@@ -940,7 +940,7 @@ static int __init ebda_rsrc_controller (void) ...@@ -940,7 +940,7 @@ static int __init ebda_rsrc_controller (void)
tmp_slot->bus = hpc_ptr->slots[index].slot_bus_num; tmp_slot->bus = hpc_ptr->slots[index].slot_bus_num;
bus_info_ptr1 = ibmphp_find_same_bus_num (hpc_ptr->slots[index].slot_bus_num); bus_info_ptr1 = ibmphp_find_same_bus_num(hpc_ptr->slots[index].slot_bus_num);
if (!bus_info_ptr1) { if (!bus_info_ptr1) {
kfree(tmp_slot); kfree(tmp_slot);
rc = -ENODEV; rc = -ENODEV;
...@@ -961,18 +961,18 @@ static int __init ebda_rsrc_controller (void) ...@@ -961,18 +961,18 @@ static int __init ebda_rsrc_controller (void)
if (rc) if (rc)
goto error; goto error;
rc = ibmphp_init_devno ((struct slot **) &hp_slot_ptr->private); rc = ibmphp_init_devno((struct slot **) &hp_slot_ptr->private);
if (rc) if (rc)
goto error; goto error;
hp_slot_ptr->ops = &ibmphp_hotplug_slot_ops; hp_slot_ptr->ops = &ibmphp_hotplug_slot_ops;
// end of registering ibm slot with hotplug core // end of registering ibm slot with hotplug core
list_add (& ((struct slot *)(hp_slot_ptr->private))->ibm_slot_list, &ibmphp_slot_head); list_add(&((struct slot *)(hp_slot_ptr->private))->ibm_slot_list, &ibmphp_slot_head);
} }
print_bus_info (); print_bus_info();
list_add (&hpc_ptr->ebda_hpc_list, &ebda_hpc_head ); list_add(&hpc_ptr->ebda_hpc_list, &ebda_hpc_head);
} /* each hpc */ } /* each hpc */
...@@ -982,20 +982,20 @@ static int __init ebda_rsrc_controller (void) ...@@ -982,20 +982,20 @@ static int __init ebda_rsrc_controller (void)
pci_find_bus(0, tmp_slot->bus), tmp_slot->device, name); pci_find_bus(0, tmp_slot->bus), tmp_slot->device, name);
} }
print_ebda_hpc (); print_ebda_hpc();
print_ibm_slot (); print_ibm_slot();
return 0; return 0;
error: error:
kfree (hp_slot_ptr->private); kfree(hp_slot_ptr->private);
error_no_slot: error_no_slot:
kfree (hp_slot_ptr->info); kfree(hp_slot_ptr->info);
error_no_hp_info: error_no_hp_info:
kfree (hp_slot_ptr); kfree(hp_slot_ptr);
error_no_hp_slot: error_no_hp_slot:
free_ebda_hpc (hpc_ptr); free_ebda_hpc(hpc_ptr);
error_no_hpc: error_no_hpc:
iounmap (io_mem); iounmap(io_mem);
return rc; return rc;
} }
...@@ -1003,7 +1003,7 @@ static int __init ebda_rsrc_controller (void) ...@@ -1003,7 +1003,7 @@ static int __init ebda_rsrc_controller (void)
* map info (bus, devfun, start addr, end addr..) of i/o, memory, * map info (bus, devfun, start addr, end addr..) of i/o, memory,
* pfm from the physical addr to a list of resource. * pfm from the physical addr to a list of resource.
*/ */
static int __init ebda_rsrc_rsrc (void) static int __init ebda_rsrc_rsrc(void)
{ {
u16 addr; u16 addr;
short rsrc; short rsrc;
...@@ -1011,69 +1011,69 @@ static int __init ebda_rsrc_rsrc (void) ...@@ -1011,69 +1011,69 @@ static int __init ebda_rsrc_rsrc (void)
struct ebda_pci_rsrc *rsrc_ptr; struct ebda_pci_rsrc *rsrc_ptr;
addr = rsrc_list_ptr->phys_addr; addr = rsrc_list_ptr->phys_addr;
debug ("now entering rsrc land\n"); debug("now entering rsrc land\n");
debug ("offset of rsrc: %x\n", rsrc_list_ptr->phys_addr); debug("offset of rsrc: %x\n", rsrc_list_ptr->phys_addr);
for (rsrc = 0; rsrc < rsrc_list_ptr->num_entries; rsrc++) { for (rsrc = 0; rsrc < rsrc_list_ptr->num_entries; rsrc++) {
type = readb (io_mem + addr); type = readb(io_mem + addr);
addr += 1; addr += 1;
rsrc_type = type & EBDA_RSRC_TYPE_MASK; rsrc_type = type & EBDA_RSRC_TYPE_MASK;
if (rsrc_type == EBDA_IO_RSRC_TYPE) { if (rsrc_type == EBDA_IO_RSRC_TYPE) {
rsrc_ptr = alloc_ebda_pci_rsrc (); rsrc_ptr = alloc_ebda_pci_rsrc();
if (!rsrc_ptr) { if (!rsrc_ptr) {
iounmap (io_mem); iounmap(io_mem);
return -ENOMEM; return -ENOMEM;
} }
rsrc_ptr->rsrc_type = type; rsrc_ptr->rsrc_type = type;
rsrc_ptr->bus_num = readb (io_mem + addr); rsrc_ptr->bus_num = readb(io_mem + addr);
rsrc_ptr->dev_fun = readb (io_mem + addr + 1); rsrc_ptr->dev_fun = readb(io_mem + addr + 1);
rsrc_ptr->start_addr = readw (io_mem + addr + 2); rsrc_ptr->start_addr = readw(io_mem + addr + 2);
rsrc_ptr->end_addr = readw (io_mem + addr + 4); rsrc_ptr->end_addr = readw(io_mem + addr + 4);
addr += 6; addr += 6;
debug ("rsrc from io type ----\n"); debug("rsrc from io type ----\n");
debug ("rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n", debug("rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n",
rsrc_ptr->rsrc_type, rsrc_ptr->bus_num, rsrc_ptr->dev_fun, rsrc_ptr->start_addr, rsrc_ptr->end_addr); rsrc_ptr->rsrc_type, rsrc_ptr->bus_num, rsrc_ptr->dev_fun, rsrc_ptr->start_addr, rsrc_ptr->end_addr);
list_add (&rsrc_ptr->ebda_pci_rsrc_list, &ibmphp_ebda_pci_rsrc_head); list_add(&rsrc_ptr->ebda_pci_rsrc_list, &ibmphp_ebda_pci_rsrc_head);
} }
if (rsrc_type == EBDA_MEM_RSRC_TYPE || rsrc_type == EBDA_PFM_RSRC_TYPE) { if (rsrc_type == EBDA_MEM_RSRC_TYPE || rsrc_type == EBDA_PFM_RSRC_TYPE) {
rsrc_ptr = alloc_ebda_pci_rsrc (); rsrc_ptr = alloc_ebda_pci_rsrc();
if (!rsrc_ptr ) { if (!rsrc_ptr) {
iounmap (io_mem); iounmap(io_mem);
return -ENOMEM; return -ENOMEM;
} }
rsrc_ptr->rsrc_type = type; rsrc_ptr->rsrc_type = type;
rsrc_ptr->bus_num = readb (io_mem + addr); rsrc_ptr->bus_num = readb(io_mem + addr);
rsrc_ptr->dev_fun = readb (io_mem + addr + 1); rsrc_ptr->dev_fun = readb(io_mem + addr + 1);
rsrc_ptr->start_addr = readl (io_mem + addr + 2); rsrc_ptr->start_addr = readl(io_mem + addr + 2);
rsrc_ptr->end_addr = readl (io_mem + addr + 6); rsrc_ptr->end_addr = readl(io_mem + addr + 6);
addr += 10; addr += 10;
debug ("rsrc from mem or pfm ---\n"); debug("rsrc from mem or pfm ---\n");
debug ("rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n", debug("rsrc type: %x bus#: %x dev_func: %x start addr: %x end addr: %x\n",
rsrc_ptr->rsrc_type, rsrc_ptr->bus_num, rsrc_ptr->dev_fun, rsrc_ptr->start_addr, rsrc_ptr->end_addr); rsrc_ptr->rsrc_type, rsrc_ptr->bus_num, rsrc_ptr->dev_fun, rsrc_ptr->start_addr, rsrc_ptr->end_addr);
list_add (&rsrc_ptr->ebda_pci_rsrc_list, &ibmphp_ebda_pci_rsrc_head); list_add(&rsrc_ptr->ebda_pci_rsrc_list, &ibmphp_ebda_pci_rsrc_head);
} }
} }
kfree (rsrc_list_ptr); kfree(rsrc_list_ptr);
rsrc_list_ptr = NULL; rsrc_list_ptr = NULL;
print_ebda_pci_rsrc (); print_ebda_pci_rsrc();
return 0; return 0;
} }
u16 ibmphp_get_total_controllers (void) u16 ibmphp_get_total_controllers(void)
{ {
return hpc_list_ptr->num_ctlrs; return hpc_list_ptr->num_ctlrs;
} }
struct slot *ibmphp_get_slot_from_physical_num (u8 physical_num) struct slot *ibmphp_get_slot_from_physical_num(u8 physical_num)
{ {
struct slot *slot; struct slot *slot;
...@@ -1090,7 +1090,7 @@ struct slot *ibmphp_get_slot_from_physical_num (u8 physical_num) ...@@ -1090,7 +1090,7 @@ struct slot *ibmphp_get_slot_from_physical_num (u8 physical_num)
* - the total number of the slots based on each bus * - the total number of the slots based on each bus
* (if only one slot per bus slot_min = slot_max ) * (if only one slot per bus slot_min = slot_max )
*/ */
struct bus_info *ibmphp_find_same_bus_num (u32 num) struct bus_info *ibmphp_find_same_bus_num(u32 num)
{ {
struct bus_info *ptr; struct bus_info *ptr;
...@@ -1104,7 +1104,7 @@ struct bus_info *ibmphp_find_same_bus_num (u32 num) ...@@ -1104,7 +1104,7 @@ struct bus_info *ibmphp_find_same_bus_num (u32 num)
/* Finding relative bus number, in order to map corresponding /* Finding relative bus number, in order to map corresponding
* bus register * bus register
*/ */
int ibmphp_get_bus_index (u8 num) int ibmphp_get_bus_index(u8 num)
{ {
struct bus_info *ptr; struct bus_info *ptr;
...@@ -1115,7 +1115,7 @@ int ibmphp_get_bus_index (u8 num) ...@@ -1115,7 +1115,7 @@ int ibmphp_get_bus_index (u8 num)
return -ENODEV; return -ENODEV;
} }
void ibmphp_free_bus_info_queue (void) void ibmphp_free_bus_info_queue(void)
{ {
struct bus_info *bus_info, *next; struct bus_info *bus_info, *next;
...@@ -1125,7 +1125,7 @@ void ibmphp_free_bus_info_queue (void) ...@@ -1125,7 +1125,7 @@ void ibmphp_free_bus_info_queue (void)
} }
} }
void ibmphp_free_ebda_hpc_queue (void) void ibmphp_free_ebda_hpc_queue(void)
{ {
struct controller *controller = NULL, *next; struct controller *controller = NULL, *next;
int pci_flag = 0; int pci_flag = 0;
...@@ -1133,16 +1133,16 @@ void ibmphp_free_ebda_hpc_queue (void) ...@@ -1133,16 +1133,16 @@ void ibmphp_free_ebda_hpc_queue (void)
list_for_each_entry_safe(controller, next, &ebda_hpc_head, list_for_each_entry_safe(controller, next, &ebda_hpc_head,
ebda_hpc_list) { ebda_hpc_list) {
if (controller->ctlr_type == 0) if (controller->ctlr_type == 0)
release_region (controller->u.isa_ctlr.io_start, (controller->u.isa_ctlr.io_end - controller->u.isa_ctlr.io_start + 1)); release_region(controller->u.isa_ctlr.io_start, (controller->u.isa_ctlr.io_end - controller->u.isa_ctlr.io_start + 1));
else if ((controller->ctlr_type == 1) && (!pci_flag)) { else if ((controller->ctlr_type == 1) && (!pci_flag)) {
++pci_flag; ++pci_flag;
pci_unregister_driver (&ibmphp_driver); pci_unregister_driver(&ibmphp_driver);
} }
free_ebda_hpc (controller); free_ebda_hpc(controller);
} }
} }
void ibmphp_free_ebda_pci_rsrc_queue (void) void ibmphp_free_ebda_pci_rsrc_queue(void)
{ {
struct ebda_pci_rsrc *resource, *next; struct ebda_pci_rsrc *resource, *next;
...@@ -1165,14 +1165,14 @@ static struct pci_device_id id_table[] = { ...@@ -1165,14 +1165,14 @@ static struct pci_device_id id_table[] = {
MODULE_DEVICE_TABLE(pci, id_table); 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)
{ {
struct controller *ctrl; struct controller *ctrl;
int rc = 0; int rc = 0;
...@@ -1185,18 +1185,18 @@ int ibmphp_register_pci (void) ...@@ -1185,18 +1185,18 @@ int ibmphp_register_pci (void)
} }
return rc; return rc;
} }
static int ibmphp_probe (struct pci_dev *dev, const struct pci_device_id *ids) static int ibmphp_probe(struct pci_dev *dev, const struct pci_device_id *ids)
{ {
struct controller *ctrl; struct controller *ctrl;
debug ("inside ibmphp_probe\n"); debug("inside ibmphp_probe\n");
list_for_each_entry(ctrl, &ebda_hpc_head, ebda_hpc_list) { list_for_each_entry(ctrl, &ebda_hpc_head, ebda_hpc_list) {
if (ctrl->ctlr_type == 1) { if (ctrl->ctlr_type == 1) {
if ((dev->devfn == ctrl->u.pci_ctlr.dev_fun) && (dev->bus->number == ctrl->u.pci_ctlr.bus)) { if ((dev->devfn == ctrl->u.pci_ctlr.dev_fun) && (dev->bus->number == ctrl->u.pci_ctlr.bus)) {
ctrl->ctrl_dev = dev; ctrl->ctrl_dev = dev;
debug ("found device!!!\n"); debug("found device!!!\n");
debug ("dev->device = %x, dev->subsystem_device = %x\n", dev->device, dev->subsystem_device); debug("dev->device = %x, dev->subsystem_device = %x\n", dev->device, dev->subsystem_device);
return 0; return 0;
} }
} }
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
#include "ibmphp.h" #include "ibmphp.h"
static int to_debug = 0; static int to_debug = 0;
#define debug_polling(fmt, arg...) do { if (to_debug) debug (fmt, arg); } while (0) #define debug_polling(fmt, arg...) do { if (to_debug) debug(fmt, arg); } while (0)
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// timeout values // timeout values
...@@ -110,16 +110,16 @@ static struct task_struct *ibmphp_poll_thread; ...@@ -110,16 +110,16 @@ static struct task_struct *ibmphp_poll_thread;
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
// local function prototypes // local function prototypes
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
static u8 i2c_ctrl_read (struct controller *, void __iomem *, u8); static u8 i2c_ctrl_read(struct controller *, void __iomem *, u8);
static u8 i2c_ctrl_write (struct controller *, void __iomem *, u8, u8); static u8 i2c_ctrl_write(struct controller *, void __iomem *, u8, u8);
static u8 hpc_writecmdtoindex (u8, u8); static u8 hpc_writecmdtoindex(u8, u8);
static u8 hpc_readcmdtoindex (u8, u8); static u8 hpc_readcmdtoindex(u8, u8);
static void get_hpc_access (void); static void get_hpc_access(void);
static void free_hpc_access (void); static void free_hpc_access(void);
static int poll_hpc(void *data); static int poll_hpc(void *data);
static int process_changeinstatus (struct slot *, struct slot *); static int process_changeinstatus(struct slot *, struct slot *);
static int process_changeinlatch (u8, u8, struct controller *); static int process_changeinlatch(u8, u8, struct controller *);
static int hpc_wait_ctlr_notworking (int, struct controller *, void __iomem *, u8 *); static int hpc_wait_ctlr_notworking(int, struct controller *, void __iomem *, u8 *);
//---------------------------------------------------------------------------- //----------------------------------------------------------------------------
...@@ -128,16 +128,16 @@ static int hpc_wait_ctlr_notworking (int, struct controller *, void __iomem *, u ...@@ -128,16 +128,16 @@ static int hpc_wait_ctlr_notworking (int, struct controller *, void __iomem *, u
* *
* Action: initialize semaphores and variables * Action: initialize semaphores and variables
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
void __init ibmphp_hpc_initvars (void) void __init ibmphp_hpc_initvars(void)
{ {
debug ("%s - Entry\n", __func__); debug("%s - Entry\n", __func__);
mutex_init(&sem_hpcaccess); mutex_init(&sem_hpcaccess);
sema_init(&semOperations, 1); sema_init(&semOperations, 1);
sema_init(&sem_exit, 0); sema_init(&sem_exit, 0);
to_debug = 0; to_debug = 0;
debug ("%s - Exit\n", __func__); debug("%s - Exit\n", __func__);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
...@@ -146,7 +146,7 @@ void __init ibmphp_hpc_initvars (void) ...@@ -146,7 +146,7 @@ void __init ibmphp_hpc_initvars (void)
* Action: read from HPC over I2C * Action: read from HPC over I2C
* *
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 index) static u8 i2c_ctrl_read(struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 index)
{ {
u8 status; u8 status;
int i; int i;
...@@ -155,7 +155,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -155,7 +155,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
unsigned long ultemp; unsigned long ultemp;
unsigned long data; // actual data HILO format unsigned long data; // actual data HILO format
debug_polling ("%s - Entry WPGBbar[%p] index[%x] \n", __func__, WPGBbar, index); debug_polling("%s - Entry WPGBbar[%p] index[%x] \n", __func__, WPGBbar, index);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// READ - step 1 // READ - step 1
...@@ -178,28 +178,28 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -178,28 +178,28 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
ultemp = ultemp << 8; ultemp = ultemp << 8;
data |= ultemp; data |= ultemp;
} else { } else {
err ("this controller type is not supported \n"); err("this controller type is not supported \n");
return HPC_ERROR; return HPC_ERROR;
} }
wpg_data = swab32 (data); // swap data before writing wpg_data = swab32(data); // swap data before writing
wpg_addr = WPGBbar + WPG_I2CMOSUP_OFFSET; wpg_addr = WPGBbar + WPG_I2CMOSUP_OFFSET;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// READ - step 2 : clear the message buffer // READ - step 2 : clear the message buffer
data = 0x00000000; data = 0x00000000;
wpg_data = swab32 (data); wpg_data = swab32(data);
wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET; wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// READ - step 3 : issue start operation, I2C master control bit 30:ON // READ - step 3 : issue start operation, I2C master control bit 30:ON
// 2020 : [20] OR operation at [20] offset 0x20 // 2020 : [20] OR operation at [20] offset 0x20
data = WPG_I2CMCNTL_STARTOP_MASK; data = WPG_I2CMCNTL_STARTOP_MASK;
wpg_data = swab32 (data); wpg_data = swab32(data);
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET + WPG_I2C_OR; wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET + WPG_I2C_OR;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// READ - step 4 : wait until start operation bit clears // READ - step 4 : wait until start operation bit clears
...@@ -207,14 +207,14 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -207,14 +207,14 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
while (i) { while (i) {
msleep(10); msleep(10);
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET; wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET;
wpg_data = readl (wpg_addr); wpg_data = readl(wpg_addr);
data = swab32 (wpg_data); data = swab32(wpg_data);
if (!(data & WPG_I2CMCNTL_STARTOP_MASK)) if (!(data & WPG_I2CMCNTL_STARTOP_MASK))
break; break;
i--; i--;
} }
if (i == 0) { if (i == 0) {
debug ("%s - Error : WPG timeout\n", __func__); debug("%s - Error : WPG timeout\n", __func__);
return HPC_ERROR; return HPC_ERROR;
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -223,26 +223,26 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -223,26 +223,26 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
while (i) { while (i) {
msleep(10); msleep(10);
wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET; wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET;
wpg_data = readl (wpg_addr); wpg_data = readl(wpg_addr);
data = swab32 (wpg_data); data = swab32(wpg_data);
if (HPC_I2CSTATUS_CHECK (data)) if (HPC_I2CSTATUS_CHECK(data))
break; break;
i--; i--;
} }
if (i == 0) { if (i == 0) {
debug ("ctrl_read - Exit Error:I2C timeout\n"); debug("ctrl_read - Exit Error:I2C timeout\n");
return HPC_ERROR; return HPC_ERROR;
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// READ - step 6 : get DATA // READ - step 6 : get DATA
wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET; wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET;
wpg_data = readl (wpg_addr); wpg_data = readl(wpg_addr);
data = swab32 (wpg_data); data = swab32(wpg_data);
status = (u8) data; status = (u8) data;
debug_polling ("%s - Exit index[%x] status[%x]\n", __func__, index, status); debug_polling("%s - Exit index[%x] status[%x]\n", __func__, index, status);
return (status); return (status);
} }
...@@ -254,7 +254,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -254,7 +254,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
* *
* Return 0 or error codes * Return 0 or error codes
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 index, u8 cmd) static u8 i2c_ctrl_write(struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 index, u8 cmd)
{ {
u8 rc; u8 rc;
void __iomem *wpg_addr; // base addr + offset void __iomem *wpg_addr; // base addr + offset
...@@ -263,7 +263,7 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -263,7 +263,7 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
unsigned long data; // actual data HILO format unsigned long data; // actual data HILO format
int i; int i;
debug_polling ("%s - Entry WPGBbar[%p] index[%x] cmd[%x]\n", __func__, WPGBbar, index, cmd); debug_polling("%s - Entry WPGBbar[%p] index[%x] cmd[%x]\n", __func__, WPGBbar, index, cmd);
rc = 0; rc = 0;
//-------------------------------------------------------------------- //--------------------------------------------------------------------
...@@ -289,28 +289,28 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -289,28 +289,28 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
ultemp = ultemp << 8; ultemp = ultemp << 8;
data |= ultemp; data |= ultemp;
} else { } else {
err ("this controller type is not supported \n"); err("this controller type is not supported \n");
return HPC_ERROR; return HPC_ERROR;
} }
wpg_data = swab32 (data); // swap data before writing wpg_data = swab32(data); // swap data before writing
wpg_addr = WPGBbar + WPG_I2CMOSUP_OFFSET; wpg_addr = WPGBbar + WPG_I2CMOSUP_OFFSET;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// WRITE - step 2 : clear the message buffer // WRITE - step 2 : clear the message buffer
data = 0x00000000 | (unsigned long)cmd; data = 0x00000000 | (unsigned long)cmd;
wpg_data = swab32 (data); wpg_data = swab32(data);
wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET; wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// WRITE - step 3 : issue start operation,I2C master control bit 30:ON // WRITE - step 3 : issue start operation,I2C master control bit 30:ON
// 2020 : [20] OR operation at [20] offset 0x20 // 2020 : [20] OR operation at [20] offset 0x20
data = WPG_I2CMCNTL_STARTOP_MASK; data = WPG_I2CMCNTL_STARTOP_MASK;
wpg_data = swab32 (data); wpg_data = swab32(data);
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET + WPG_I2C_OR; wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET + WPG_I2C_OR;
writel (wpg_data, wpg_addr); writel(wpg_data, wpg_addr);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// WRITE - step 4 : wait until start operation bit clears // WRITE - step 4 : wait until start operation bit clears
...@@ -318,14 +318,14 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -318,14 +318,14 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
while (i) { while (i) {
msleep(10); msleep(10);
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET; wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET;
wpg_data = readl (wpg_addr); wpg_data = readl(wpg_addr);
data = swab32 (wpg_data); data = swab32(wpg_data);
if (!(data & WPG_I2CMCNTL_STARTOP_MASK)) if (!(data & WPG_I2CMCNTL_STARTOP_MASK))
break; break;
i--; i--;
} }
if (i == 0) { if (i == 0) {
debug ("%s - Exit Error:WPG timeout\n", __func__); debug("%s - Exit Error:WPG timeout\n", __func__);
rc = HPC_ERROR; rc = HPC_ERROR;
} }
...@@ -335,25 +335,25 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8 ...@@ -335,25 +335,25 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
while (i) { while (i) {
msleep(10); msleep(10);
wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET; wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET;
wpg_data = readl (wpg_addr); wpg_data = readl(wpg_addr);
data = swab32 (wpg_data); data = swab32(wpg_data);
if (HPC_I2CSTATUS_CHECK (data)) if (HPC_I2CSTATUS_CHECK(data))
break; break;
i--; i--;
} }
if (i == 0) { if (i == 0) {
debug ("ctrl_read - Error : I2C timeout\n"); debug("ctrl_read - Error : I2C timeout\n");
rc = HPC_ERROR; rc = HPC_ERROR;
} }
debug_polling ("%s Exit rc[%x]\n", __func__, rc); debug_polling("%s Exit rc[%x]\n", __func__, rc);
return (rc); return (rc);
} }
//------------------------------------------------------------ //------------------------------------------------------------
// Read from ISA type HPC // Read from ISA type HPC
//------------------------------------------------------------ //------------------------------------------------------------
static u8 isa_ctrl_read (struct controller *ctlr_ptr, u8 offset) static u8 isa_ctrl_read(struct controller *ctlr_ptr, u8 offset)
{ {
u16 start_address; u16 start_address;
u16 end_address; u16 end_address;
...@@ -361,56 +361,56 @@ static u8 isa_ctrl_read (struct controller *ctlr_ptr, u8 offset) ...@@ -361,56 +361,56 @@ static u8 isa_ctrl_read (struct controller *ctlr_ptr, u8 offset)
start_address = ctlr_ptr->u.isa_ctlr.io_start; start_address = ctlr_ptr->u.isa_ctlr.io_start;
end_address = ctlr_ptr->u.isa_ctlr.io_end; end_address = ctlr_ptr->u.isa_ctlr.io_end;
data = inb (start_address + offset); data = inb(start_address + offset);
return data; return data;
} }
//-------------------------------------------------------------- //--------------------------------------------------------------
// Write to ISA type HPC // Write to ISA type HPC
//-------------------------------------------------------------- //--------------------------------------------------------------
static void isa_ctrl_write (struct controller *ctlr_ptr, u8 offset, u8 data) static void isa_ctrl_write(struct controller *ctlr_ptr, u8 offset, u8 data)
{ {
u16 start_address; u16 start_address;
u16 port_address; u16 port_address;
start_address = ctlr_ptr->u.isa_ctlr.io_start; start_address = ctlr_ptr->u.isa_ctlr.io_start;
port_address = start_address + (u16) offset; port_address = start_address + (u16) offset;
outb (data, port_address); outb(data, port_address);
} }
static u8 pci_ctrl_read (struct controller *ctrl, u8 offset) static u8 pci_ctrl_read(struct controller *ctrl, u8 offset)
{ {
u8 data = 0x00; u8 data = 0x00;
debug ("inside pci_ctrl_read\n"); debug("inside pci_ctrl_read\n");
if (ctrl->ctrl_dev) if (ctrl->ctrl_dev)
pci_read_config_byte (ctrl->ctrl_dev, HPC_PCI_OFFSET + offset, &data); pci_read_config_byte(ctrl->ctrl_dev, HPC_PCI_OFFSET + offset, &data);
return data; return data;
} }
static u8 pci_ctrl_write (struct controller *ctrl, u8 offset, u8 data) static u8 pci_ctrl_write(struct controller *ctrl, u8 offset, u8 data)
{ {
u8 rc = -ENODEV; u8 rc = -ENODEV;
debug ("inside pci_ctrl_write\n"); debug("inside pci_ctrl_write\n");
if (ctrl->ctrl_dev) { if (ctrl->ctrl_dev) {
pci_write_config_byte (ctrl->ctrl_dev, HPC_PCI_OFFSET + offset, data); pci_write_config_byte(ctrl->ctrl_dev, HPC_PCI_OFFSET + offset, data);
rc = 0; rc = 0;
} }
return rc; return rc;
} }
static u8 ctrl_read (struct controller *ctlr, void __iomem *base, u8 offset) static u8 ctrl_read(struct controller *ctlr, void __iomem *base, u8 offset)
{ {
u8 rc; u8 rc;
switch (ctlr->ctlr_type) { switch (ctlr->ctlr_type) {
case 0: case 0:
rc = isa_ctrl_read (ctlr, offset); rc = isa_ctrl_read(ctlr, offset);
break; break;
case 1: case 1:
rc = pci_ctrl_read (ctlr, offset); rc = pci_ctrl_read(ctlr, offset);
break; break;
case 2: case 2:
case 4: case 4:
rc = i2c_ctrl_read (ctlr, base, offset); rc = i2c_ctrl_read(ctlr, base, offset);
break; break;
default: default:
return -ENODEV; return -ENODEV;
...@@ -418,7 +418,7 @@ static u8 ctrl_read (struct controller *ctlr, void __iomem *base, u8 offset) ...@@ -418,7 +418,7 @@ static u8 ctrl_read (struct controller *ctlr, void __iomem *base, u8 offset)
return rc; return rc;
} }
static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8 data) static u8 ctrl_write(struct controller *ctlr, void __iomem *base, u8 offset, u8 data)
{ {
u8 rc = 0; u8 rc = 0;
switch (ctlr->ctlr_type) { switch (ctlr->ctlr_type) {
...@@ -426,7 +426,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8 ...@@ -426,7 +426,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8
isa_ctrl_write(ctlr, offset, data); isa_ctrl_write(ctlr, offset, data);
break; break;
case 1: case 1:
rc = pci_ctrl_write (ctlr, offset, data); rc = pci_ctrl_write(ctlr, offset, data);
break; break;
case 2: case 2:
case 4: case 4:
...@@ -444,7 +444,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8 ...@@ -444,7 +444,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8
* *
* Return index, HPC_ERROR * Return index, HPC_ERROR
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static u8 hpc_writecmdtoindex (u8 cmd, u8 index) static u8 hpc_writecmdtoindex(u8 cmd, u8 index)
{ {
u8 rc; u8 rc;
...@@ -476,7 +476,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index) ...@@ -476,7 +476,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index)
break; break;
default: default:
err ("hpc_writecmdtoindex - Error invalid cmd[%x]\n", cmd); err("hpc_writecmdtoindex - Error invalid cmd[%x]\n", cmd);
rc = HPC_ERROR; rc = HPC_ERROR;
} }
...@@ -490,7 +490,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index) ...@@ -490,7 +490,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index)
* *
* Return index, HPC_ERROR * Return index, HPC_ERROR
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static u8 hpc_readcmdtoindex (u8 cmd, u8 index) static u8 hpc_readcmdtoindex(u8 cmd, u8 index)
{ {
u8 rc; u8 rc;
...@@ -533,7 +533,7 @@ static u8 hpc_readcmdtoindex (u8 cmd, u8 index) ...@@ -533,7 +533,7 @@ static u8 hpc_readcmdtoindex (u8 cmd, u8 index)
* *
* Return 0 or error codes * Return 0 or error codes
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) int ibmphp_hpc_readslot(struct slot *pslot, u8 cmd, u8 *pstatus)
{ {
void __iomem *wpg_bbar = NULL; void __iomem *wpg_bbar = NULL;
struct controller *ctlr_ptr; struct controller *ctlr_ptr;
...@@ -541,69 +541,69 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) ...@@ -541,69 +541,69 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
int rc = 0; int rc = 0;
int busindex; int busindex;
debug_polling ("%s - Entry pslot[%p] cmd[%x] pstatus[%p]\n", __func__, pslot, cmd, pstatus); debug_polling("%s - Entry pslot[%p] cmd[%x] pstatus[%p]\n", __func__, pslot, cmd, pstatus);
if ((pslot == NULL) if ((pslot == NULL)
|| ((pstatus == NULL) && (cmd != READ_ALLSTAT) && (cmd != READ_BUSSTATUS))) { || ((pstatus == NULL) && (cmd != READ_ALLSTAT) && (cmd != READ_BUSSTATUS))) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Error invalid pointer, rc[%d]\n", __func__, rc); err("%s - Error invalid pointer, rc[%d]\n", __func__, rc);
return rc; return rc;
} }
if (cmd == READ_BUSSTATUS) { if (cmd == READ_BUSSTATUS) {
busindex = ibmphp_get_bus_index (pslot->bus); busindex = ibmphp_get_bus_index(pslot->bus);
if (busindex < 0) { if (busindex < 0) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Exit Error:invalid bus, rc[%d]\n", __func__, rc); err("%s - Exit Error:invalid bus, rc[%d]\n", __func__, rc);
return rc; return rc;
} else } else
index = (u8) busindex; index = (u8) busindex;
} else } else
index = pslot->ctlr_index; index = pslot->ctlr_index;
index = hpc_readcmdtoindex (cmd, index); index = hpc_readcmdtoindex(cmd, index);
if (index == HPC_ERROR) { if (index == HPC_ERROR) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Exit Error:invalid index, rc[%d]\n", __func__, rc); err("%s - Exit Error:invalid index, rc[%d]\n", __func__, rc);
return rc; return rc;
} }
ctlr_ptr = pslot->ctrl; ctlr_ptr = pslot->ctrl;
get_hpc_access (); get_hpc_access();
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// map physical address to logical address // map physical address to logical address
//-------------------------------------------------------------------- //--------------------------------------------------------------------
if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4)) if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4))
wpg_bbar = ioremap (ctlr_ptr->u.wpeg_ctlr.wpegbbar, WPG_I2C_IOREMAP_SIZE); wpg_bbar = ioremap(ctlr_ptr->u.wpeg_ctlr.wpegbbar, WPG_I2C_IOREMAP_SIZE);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// check controller status before reading // check controller status before reading
//-------------------------------------------------------------------- //--------------------------------------------------------------------
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, &status); rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, &status);
if (!rc) { if (!rc) {
switch (cmd) { switch (cmd) {
case READ_ALLSTAT: case READ_ALLSTAT:
// update the slot structure // update the slot structure
pslot->ctrl->status = status; pslot->ctrl->status = status;
pslot->status = ctrl_read (ctlr_ptr, wpg_bbar, index); pslot->status = ctrl_read(ctlr_ptr, wpg_bbar, index);
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar,
&status); &status);
if (!rc) if (!rc)
pslot->ext_status = ctrl_read (ctlr_ptr, wpg_bbar, index + WPG_1ST_EXTSLOT_INDEX); pslot->ext_status = ctrl_read(ctlr_ptr, wpg_bbar, index + WPG_1ST_EXTSLOT_INDEX);
break; break;
case READ_SLOTSTATUS: case READ_SLOTSTATUS:
// DO NOT update the slot structure // DO NOT update the slot structure
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
case READ_EXTSLOTSTATUS: case READ_EXTSLOTSTATUS:
// DO NOT update the slot structure // DO NOT update the slot structure
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
case READ_CTLRSTATUS: case READ_CTLRSTATUS:
...@@ -612,17 +612,17 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) ...@@ -612,17 +612,17 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
break; break;
case READ_BUSSTATUS: case READ_BUSSTATUS:
pslot->busstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); pslot->busstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
case READ_REVLEVEL: case READ_REVLEVEL:
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
case READ_HPCOPTIONS: case READ_HPCOPTIONS:
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
case READ_SLOTLATCHLOWREG: case READ_SLOTLATCHLOWREG:
// DO NOT update the slot structure // DO NOT update the slot structure
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
break; break;
// Not used // Not used
...@@ -630,18 +630,18 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) ...@@ -630,18 +630,18 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
list_for_each_entry(pslot, &ibmphp_slot_head, list_for_each_entry(pslot, &ibmphp_slot_head,
ibm_slot_list) { ibm_slot_list) {
index = pslot->ctlr_index; index = pslot->ctlr_index;
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr,
wpg_bbar, &status); wpg_bbar, &status);
if (!rc) { if (!rc) {
pslot->status = ctrl_read (ctlr_ptr, wpg_bbar, index); pslot->status = ctrl_read(ctlr_ptr, wpg_bbar, index);
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT,
ctlr_ptr, wpg_bbar, &status); ctlr_ptr, wpg_bbar, &status);
if (!rc) if (!rc)
pslot->ext_status = pslot->ext_status =
ctrl_read (ctlr_ptr, wpg_bbar, ctrl_read(ctlr_ptr, wpg_bbar,
index + WPG_1ST_EXTSLOT_INDEX); index + WPG_1ST_EXTSLOT_INDEX);
} else { } else {
err ("%s - Error ctrl_read failed\n", __func__); err("%s - Error ctrl_read failed\n", __func__);
rc = -EINVAL; rc = -EINVAL;
break; break;
} }
...@@ -658,11 +658,11 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) ...@@ -658,11 +658,11 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
// remove physical to logical address mapping // remove physical to logical address mapping
if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4)) if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4))
iounmap (wpg_bbar); iounmap(wpg_bbar);
free_hpc_access (); free_hpc_access();
debug_polling ("%s - Exit rc[%d]\n", __func__, rc); debug_polling("%s - Exit rc[%d]\n", __func__, rc);
return rc; return rc;
} }
...@@ -671,7 +671,7 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus) ...@@ -671,7 +671,7 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
* *
* Action: issue a WRITE command to HPC * Action: issue a WRITE command to HPC
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) int ibmphp_hpc_writeslot(struct slot *pslot, u8 cmd)
{ {
void __iomem *wpg_bbar = NULL; void __iomem *wpg_bbar = NULL;
struct controller *ctlr_ptr; struct controller *ctlr_ptr;
...@@ -681,55 +681,55 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) ...@@ -681,55 +681,55 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
int rc = 0; int rc = 0;
int timeout; int timeout;
debug_polling ("%s - Entry pslot[%p] cmd[%x]\n", __func__, pslot, cmd); debug_polling("%s - Entry pslot[%p] cmd[%x]\n", __func__, pslot, cmd);
if (pslot == NULL) { if (pslot == NULL) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Error Exit rc[%d]\n", __func__, rc); err("%s - Error Exit rc[%d]\n", __func__, rc);
return rc; return rc;
} }
if ((cmd == HPC_BUS_33CONVMODE) || (cmd == HPC_BUS_66CONVMODE) || if ((cmd == HPC_BUS_33CONVMODE) || (cmd == HPC_BUS_66CONVMODE) ||
(cmd == HPC_BUS_66PCIXMODE) || (cmd == HPC_BUS_100PCIXMODE) || (cmd == HPC_BUS_66PCIXMODE) || (cmd == HPC_BUS_100PCIXMODE) ||
(cmd == HPC_BUS_133PCIXMODE)) { (cmd == HPC_BUS_133PCIXMODE)) {
busindex = ibmphp_get_bus_index (pslot->bus); busindex = ibmphp_get_bus_index(pslot->bus);
if (busindex < 0) { if (busindex < 0) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Exit Error:invalid bus, rc[%d]\n", __func__, rc); err("%s - Exit Error:invalid bus, rc[%d]\n", __func__, rc);
return rc; return rc;
} else } else
index = (u8) busindex; index = (u8) busindex;
} else } else
index = pslot->ctlr_index; index = pslot->ctlr_index;
index = hpc_writecmdtoindex (cmd, index); index = hpc_writecmdtoindex(cmd, index);
if (index == HPC_ERROR) { if (index == HPC_ERROR) {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Error Exit rc[%d]\n", __func__, rc); err("%s - Error Exit rc[%d]\n", __func__, rc);
return rc; return rc;
} }
ctlr_ptr = pslot->ctrl; ctlr_ptr = pslot->ctrl;
get_hpc_access (); get_hpc_access();
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// map physical address to logical address // map physical address to logical address
//-------------------------------------------------------------------- //--------------------------------------------------------------------
if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4)) { if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4)) {
wpg_bbar = ioremap (ctlr_ptr->u.wpeg_ctlr.wpegbbar, WPG_I2C_IOREMAP_SIZE); wpg_bbar = ioremap(ctlr_ptr->u.wpeg_ctlr.wpegbbar, WPG_I2C_IOREMAP_SIZE);
debug ("%s - ctlr id[%x] physical[%lx] logical[%lx] i2c[%x]\n", __func__, debug("%s - ctlr id[%x] physical[%lx] logical[%lx] i2c[%x]\n", __func__,
ctlr_ptr->ctlr_id, (ulong) (ctlr_ptr->u.wpeg_ctlr.wpegbbar), (ulong) wpg_bbar, ctlr_ptr->ctlr_id, (ulong) (ctlr_ptr->u.wpeg_ctlr.wpegbbar), (ulong) wpg_bbar,
ctlr_ptr->u.wpeg_ctlr.i2c_addr); ctlr_ptr->u.wpeg_ctlr.i2c_addr);
} }
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// check controller status before writing // check controller status before writing
//-------------------------------------------------------------------- //--------------------------------------------------------------------
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, &status); rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, &status);
if (!rc) { if (!rc) {
ctrl_write (ctlr_ptr, wpg_bbar, index, cmd); ctrl_write(ctlr_ptr, wpg_bbar, index, cmd);
//-------------------------------------------------------------------- //--------------------------------------------------------------------
// check controller is still not working on the command // check controller is still not working on the command
...@@ -737,11 +737,11 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) ...@@ -737,11 +737,11 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
timeout = CMD_COMPLETE_TOUT_SEC; timeout = CMD_COMPLETE_TOUT_SEC;
done = 0; done = 0;
while (!done) { while (!done) {
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar, rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar,
&status); &status);
if (!rc) { if (!rc) {
if (NEEDTOCHECK_CMDSTATUS (cmd)) { if (NEEDTOCHECK_CMDSTATUS(cmd)) {
if (CTLR_FINISHED (status) == HPC_CTLR_FINISHED_YES) if (CTLR_FINISHED(status) == HPC_CTLR_FINISHED_YES)
done = 1; done = 1;
} else } else
done = 1; done = 1;
...@@ -750,7 +750,7 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) ...@@ -750,7 +750,7 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
msleep(1000); msleep(1000);
if (timeout < 1) { if (timeout < 1) {
done = 1; done = 1;
err ("%s - Error command complete timeout\n", __func__); err("%s - Error command complete timeout\n", __func__);
rc = -EFAULT; rc = -EFAULT;
} else } else
timeout--; timeout--;
...@@ -762,10 +762,10 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) ...@@ -762,10 +762,10 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
// remove physical to logical address mapping // remove physical to logical address mapping
if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4)) if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4))
iounmap (wpg_bbar); iounmap(wpg_bbar);
free_hpc_access (); free_hpc_access();
debug_polling ("%s - Exit rc[%d]\n", __func__, rc); debug_polling("%s - Exit rc[%d]\n", __func__, rc);
return rc; return rc;
} }
...@@ -774,7 +774,7 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd) ...@@ -774,7 +774,7 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
* *
* Action: make sure only one process can access HPC at one time * Action: make sure only one process can access HPC at one time
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static void get_hpc_access (void) static void get_hpc_access(void)
{ {
mutex_lock(&sem_hpcaccess); mutex_lock(&sem_hpcaccess);
} }
...@@ -782,7 +782,7 @@ static void get_hpc_access (void) ...@@ -782,7 +782,7 @@ static void get_hpc_access (void)
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
* Name: free_hpc_access() * Name: free_hpc_access()
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
void free_hpc_access (void) void free_hpc_access(void)
{ {
mutex_unlock(&sem_hpcaccess); mutex_unlock(&sem_hpcaccess);
} }
...@@ -792,21 +792,21 @@ void free_hpc_access (void) ...@@ -792,21 +792,21 @@ void free_hpc_access (void)
* *
* Action: make sure only one process can change the data structure * Action: make sure only one process can change the data structure
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
void ibmphp_lock_operations (void) void ibmphp_lock_operations(void)
{ {
down (&semOperations); down(&semOperations);
to_debug = 1; to_debug = 1;
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
* Name: ibmphp_unlock_operations() * Name: ibmphp_unlock_operations()
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
void ibmphp_unlock_operations (void) void ibmphp_unlock_operations(void)
{ {
debug ("%s - Entry\n", __func__); debug("%s - Entry\n", __func__);
up (&semOperations); up(&semOperations);
to_debug = 0; to_debug = 0;
debug ("%s - Exit\n", __func__); debug("%s - Exit\n", __func__);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
...@@ -826,11 +826,11 @@ static int poll_hpc(void *data) ...@@ -826,11 +826,11 @@ static int poll_hpc(void *data)
int poll_count = 0; int poll_count = 0;
u8 ctrl_count = 0x00; u8 ctrl_count = 0x00;
debug ("%s - Entry\n", __func__); debug("%s - Entry\n", __func__);
while (!kthread_should_stop()) { while (!kthread_should_stop()) {
/* try to get the lock to do some kind of hardware access */ /* try to get the lock to do some kind of hardware access */
down (&semOperations); down(&semOperations);
switch (poll_state) { switch (poll_state) {
case POLL_LATCH_REGISTER: case POLL_LATCH_REGISTER:
...@@ -842,12 +842,12 @@ static int poll_hpc(void *data) ...@@ -842,12 +842,12 @@ static int poll_hpc(void *data)
break; break;
if (pslot->ctrl->ctlr_relative_id == ctrl_count) { if (pslot->ctrl->ctlr_relative_id == ctrl_count) {
ctrl_count++; ctrl_count++;
if (READ_SLOT_LATCH (pslot->ctrl)) { if (READ_SLOT_LATCH(pslot->ctrl)) {
rc = ibmphp_hpc_readslot (pslot, rc = ibmphp_hpc_readslot(pslot,
READ_SLOTLATCHLOWREG, READ_SLOTLATCHLOWREG,
&curlatchlow); &curlatchlow);
if (oldlatchlow != curlatchlow) if (oldlatchlow != curlatchlow)
process_changeinlatch (oldlatchlow, process_changeinlatch(oldlatchlow,
curlatchlow, curlatchlow,
pslot->ctrl); pslot->ctrl);
} }
...@@ -860,12 +860,12 @@ static int poll_hpc(void *data) ...@@ -860,12 +860,12 @@ static int poll_hpc(void *data)
list_for_each_entry(pslot, &ibmphp_slot_head, list_for_each_entry(pslot, &ibmphp_slot_head,
ibm_slot_list) { ibm_slot_list) {
// make a copy of the old status // make a copy of the old status
memcpy ((void *) &myslot, (void *) pslot, memcpy((void *) &myslot, (void *) pslot,
sizeof (struct slot)); sizeof(struct slot));
rc = ibmphp_hpc_readslot (pslot, READ_ALLSTAT, NULL); rc = ibmphp_hpc_readslot(pslot, READ_ALLSTAT, NULL);
if ((myslot.status != pslot->status) if ((myslot.status != pslot->status)
|| (myslot.ext_status != pslot->ext_status)) || (myslot.ext_status != pslot->ext_status))
process_changeinstatus (pslot, &myslot); process_changeinstatus(pslot, &myslot);
} }
ctrl_count = 0x00; ctrl_count = 0x00;
list_for_each_entry(pslot, &ibmphp_slot_head, list_for_each_entry(pslot, &ibmphp_slot_head,
...@@ -874,8 +874,8 @@ static int poll_hpc(void *data) ...@@ -874,8 +874,8 @@ static int poll_hpc(void *data)
break; break;
if (pslot->ctrl->ctlr_relative_id == ctrl_count) { if (pslot->ctrl->ctlr_relative_id == ctrl_count) {
ctrl_count++; ctrl_count++;
if (READ_SLOT_LATCH (pslot->ctrl)) if (READ_SLOT_LATCH(pslot->ctrl))
rc = ibmphp_hpc_readslot (pslot, rc = ibmphp_hpc_readslot(pslot,
READ_SLOTLATCHLOWREG, READ_SLOTLATCHLOWREG,
&curlatchlow); &curlatchlow);
} }
...@@ -885,13 +885,13 @@ static int poll_hpc(void *data) ...@@ -885,13 +885,13 @@ static int poll_hpc(void *data)
break; break;
case POLL_SLEEP: case POLL_SLEEP:
/* don't sleep with a lock on the hardware */ /* don't sleep with a lock on the hardware */
up (&semOperations); up(&semOperations);
msleep(POLL_INTERVAL_SEC * 1000); msleep(POLL_INTERVAL_SEC * 1000);
if (kthread_should_stop()) if (kthread_should_stop())
goto out_sleep; goto out_sleep;
down (&semOperations); down(&semOperations);
if (poll_count >= POLL_LATCH_CNT) { if (poll_count >= POLL_LATCH_CNT) {
poll_count = 0; poll_count = 0;
...@@ -901,13 +901,13 @@ static int poll_hpc(void *data) ...@@ -901,13 +901,13 @@ static int poll_hpc(void *data)
break; break;
} }
/* give up the hardware semaphore */ /* give up the hardware semaphore */
up (&semOperations); up(&semOperations);
/* sleep for a short time just for good measure */ /* sleep for a short time just for good measure */
out_sleep: out_sleep:
msleep(100); msleep(100);
} }
up (&sem_exit); up(&sem_exit);
debug ("%s - Exit\n", __func__); debug("%s - Exit\n", __func__);
return 0; return 0;
} }
...@@ -927,14 +927,14 @@ static int poll_hpc(void *data) ...@@ -927,14 +927,14 @@ static int poll_hpc(void *data)
* *
* Notes: * Notes:
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static int process_changeinstatus (struct slot *pslot, struct slot *poldslot) static int process_changeinstatus(struct slot *pslot, struct slot *poldslot)
{ {
u8 status; u8 status;
int rc = 0; int rc = 0;
u8 disable = 0; u8 disable = 0;
u8 update = 0; u8 update = 0;
debug ("process_changeinstatus - Entry pslot[%p], poldslot[%p]\n", pslot, poldslot); debug("process_changeinstatus - Entry pslot[%p], poldslot[%p]\n", pslot, poldslot);
// bit 0 - HPC_SLOT_POWER // bit 0 - HPC_SLOT_POWER
if ((pslot->status & 0x01) != (poldslot->status & 0x01)) if ((pslot->status & 0x01) != (poldslot->status & 0x01))
...@@ -956,7 +956,7 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot) ...@@ -956,7 +956,7 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
// bit 5 - HPC_SLOT_PWRGD // bit 5 - HPC_SLOT_PWRGD
if ((pslot->status & 0x20) != (poldslot->status & 0x20)) if ((pslot->status & 0x20) != (poldslot->status & 0x20))
// OFF -> ON: ignore, ON -> OFF: disable slot // OFF -> ON: ignore, ON -> OFF: disable slot
if ((poldslot->status & 0x20) && (SLOT_CONNECT (poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT (poldslot->status))) if ((poldslot->status & 0x20) && (SLOT_CONNECT(poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT(poldslot->status)))
disable = 1; disable = 1;
// bit 6 - HPC_SLOT_BUS_SPEED // bit 6 - HPC_SLOT_BUS_SPEED
...@@ -967,20 +967,20 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot) ...@@ -967,20 +967,20 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
update = 1; update = 1;
// OPEN -> CLOSE // OPEN -> CLOSE
if (pslot->status & 0x80) { if (pslot->status & 0x80) {
if (SLOT_PWRGD (pslot->status)) { if (SLOT_PWRGD(pslot->status)) {
// power goes on and off after closing latch // power goes on and off after closing latch
// check again to make sure power is still ON // check again to make sure power is still ON
msleep(1000); msleep(1000);
rc = ibmphp_hpc_readslot (pslot, READ_SLOTSTATUS, &status); rc = ibmphp_hpc_readslot(pslot, READ_SLOTSTATUS, &status);
if (SLOT_PWRGD (status)) if (SLOT_PWRGD(status))
update = 1; update = 1;
else // overwrite power in pslot to OFF else // overwrite power in pslot to OFF
pslot->status &= ~HPC_SLOT_POWER; pslot->status &= ~HPC_SLOT_POWER;
} }
} }
// CLOSE -> OPEN // CLOSE -> OPEN
else if ((SLOT_PWRGD (poldslot->status) == HPC_SLOT_PWRGD_GOOD) else if ((SLOT_PWRGD(poldslot->status) == HPC_SLOT_PWRGD_GOOD)
&& (SLOT_CONNECT (poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT (poldslot->status))) { && (SLOT_CONNECT(poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT(poldslot->status))) {
disable = 1; disable = 1;
} }
// else - ignore // else - ignore
...@@ -990,15 +990,15 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot) ...@@ -990,15 +990,15 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
update = 1; update = 1;
if (disable) { if (disable) {
debug ("process_changeinstatus - disable slot\n"); debug("process_changeinstatus - disable slot\n");
pslot->flag = 0; pslot->flag = 0;
rc = ibmphp_do_disable_slot (pslot); rc = ibmphp_do_disable_slot(pslot);
} }
if (update || disable) if (update || disable)
ibmphp_update_slot_info (pslot); ibmphp_update_slot_info(pslot);
debug ("%s - Exit rc[%d] disable[%x] update[%x]\n", __func__, rc, disable, update); debug("%s - Exit rc[%d] disable[%x] update[%x]\n", __func__, rc, disable, update);
return rc; return rc;
} }
...@@ -1013,32 +1013,32 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot) ...@@ -1013,32 +1013,32 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
* Return 0 or error codes * Return 0 or error codes
* Value: * Value:
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static int process_changeinlatch (u8 old, u8 new, struct controller *ctrl) static int process_changeinlatch(u8 old, u8 new, struct controller *ctrl)
{ {
struct slot myslot, *pslot; struct slot myslot, *pslot;
u8 i; u8 i;
u8 mask; u8 mask;
int rc = 0; int rc = 0;
debug ("%s - Entry old[%x], new[%x]\n", __func__, old, new); debug("%s - Entry old[%x], new[%x]\n", __func__, old, new);
// bit 0 reserved, 0 is LSB, check bit 1-6 for 6 slots // bit 0 reserved, 0 is LSB, check bit 1-6 for 6 slots
for (i = ctrl->starting_slot_num; i <= ctrl->ending_slot_num; i++) { for (i = ctrl->starting_slot_num; i <= ctrl->ending_slot_num; i++) {
mask = 0x01 << i; mask = 0x01 << i;
if ((mask & old) != (mask & new)) { if ((mask & old) != (mask & new)) {
pslot = ibmphp_get_slot_from_physical_num (i); pslot = ibmphp_get_slot_from_physical_num(i);
if (pslot) { if (pslot) {
memcpy ((void *) &myslot, (void *) pslot, sizeof (struct slot)); memcpy((void *) &myslot, (void *) pslot, sizeof(struct slot));
rc = ibmphp_hpc_readslot (pslot, READ_ALLSTAT, NULL); rc = ibmphp_hpc_readslot(pslot, READ_ALLSTAT, NULL);
debug ("%s - call process_changeinstatus for slot[%d]\n", __func__, i); debug("%s - call process_changeinstatus for slot[%d]\n", __func__, i);
process_changeinstatus (pslot, &myslot); process_changeinstatus(pslot, &myslot);
} else { } else {
rc = -EINVAL; rc = -EINVAL;
err ("%s - Error bad pointer for slot[%d]\n", __func__, i); err("%s - Error bad pointer for slot[%d]\n", __func__, i);
} }
} }
} }
debug ("%s - Exit rc[%d]\n", __func__, rc); debug("%s - Exit rc[%d]\n", __func__, rc);
return rc; return rc;
} }
...@@ -1047,13 +1047,13 @@ static int process_changeinlatch (u8 old, u8 new, struct controller *ctrl) ...@@ -1047,13 +1047,13 @@ static int process_changeinlatch (u8 old, u8 new, struct controller *ctrl)
* *
* Action: start polling thread * Action: start polling thread
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
int __init ibmphp_hpc_start_poll_thread (void) int __init ibmphp_hpc_start_poll_thread(void)
{ {
debug ("%s - Entry\n", __func__); debug("%s - Entry\n", __func__);
ibmphp_poll_thread = kthread_run(poll_hpc, NULL, "hpc_poll"); ibmphp_poll_thread = kthread_run(poll_hpc, NULL, "hpc_poll");
if (IS_ERR(ibmphp_poll_thread)) { if (IS_ERR(ibmphp_poll_thread)) {
err ("%s - Error, thread not started\n", __func__); err("%s - Error, thread not started\n", __func__);
return PTR_ERR(ibmphp_poll_thread); return PTR_ERR(ibmphp_poll_thread);
} }
return 0; return 0;
...@@ -1064,30 +1064,30 @@ int __init ibmphp_hpc_start_poll_thread (void) ...@@ -1064,30 +1064,30 @@ int __init ibmphp_hpc_start_poll_thread (void)
* *
* Action: stop polling thread and cleanup * Action: stop polling thread and cleanup
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
void __exit ibmphp_hpc_stop_poll_thread (void) void __exit ibmphp_hpc_stop_poll_thread(void)
{ {
debug ("%s - Entry\n", __func__); debug("%s - Entry\n", __func__);
kthread_stop(ibmphp_poll_thread); kthread_stop(ibmphp_poll_thread);
debug ("before locking operations \n"); debug("before locking operations\n");
ibmphp_lock_operations (); ibmphp_lock_operations();
debug ("after locking operations \n"); debug("after locking operations\n");
// wait for poll thread to exit // wait for poll thread to exit
debug ("before sem_exit down \n"); debug("before sem_exit down\n");
down (&sem_exit); down(&sem_exit);
debug ("after sem_exit down \n"); debug("after sem_exit down\n");
// cleanup // cleanup
debug ("before free_hpc_access \n"); debug("before free_hpc_access\n");
free_hpc_access (); free_hpc_access();
debug ("after free_hpc_access \n"); debug("after free_hpc_access\n");
ibmphp_unlock_operations (); ibmphp_unlock_operations();
debug ("after unlock operations \n"); debug("after unlock operations\n");
up (&sem_exit); up(&sem_exit);
debug ("after sem exit up\n"); debug("after sem exit up\n");
debug ("%s - Exit\n", __func__); debug("%s - Exit\n", __func__);
} }
/*---------------------------------------------------------------------- /*----------------------------------------------------------------------
...@@ -1098,32 +1098,32 @@ void __exit ibmphp_hpc_stop_poll_thread (void) ...@@ -1098,32 +1098,32 @@ void __exit ibmphp_hpc_stop_poll_thread (void)
* Return 0, HPC_ERROR * Return 0, HPC_ERROR
* Value: * Value:
*---------------------------------------------------------------------*/ *---------------------------------------------------------------------*/
static int hpc_wait_ctlr_notworking (int timeout, struct controller *ctlr_ptr, void __iomem *wpg_bbar, static int hpc_wait_ctlr_notworking(int timeout, struct controller *ctlr_ptr, void __iomem *wpg_bbar,
u8 *pstatus) u8 *pstatus)
{ {
int rc = 0; int rc = 0;
u8 done = 0; u8 done = 0;
debug_polling ("hpc_wait_ctlr_notworking - Entry timeout[%d]\n", timeout); debug_polling("hpc_wait_ctlr_notworking - Entry timeout[%d]\n", timeout);
while (!done) { while (!done) {
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, WPG_CTLR_INDEX); *pstatus = ctrl_read(ctlr_ptr, wpg_bbar, WPG_CTLR_INDEX);
if (*pstatus == HPC_ERROR) { if (*pstatus == HPC_ERROR) {
rc = HPC_ERROR; rc = HPC_ERROR;
done = 1; done = 1;
} }
if (CTLR_WORKING (*pstatus) == HPC_CTLR_WORKING_NO) if (CTLR_WORKING(*pstatus) == HPC_CTLR_WORKING_NO)
done = 1; done = 1;
if (!done) { if (!done) {
msleep(1000); msleep(1000);
if (timeout < 1) { if (timeout < 1) {
done = 1; done = 1;
err ("HPCreadslot - Error ctlr timeout\n"); err("HPCreadslot - Error ctlr timeout\n");
rc = HPC_ERROR; rc = HPC_ERROR;
} else } else
timeout--; timeout--;
} }
} }
debug_polling ("hpc_wait_ctlr_notworking - Exit rc[%x] status[%x]\n", rc, *pstatus); debug_polling("hpc_wait_ctlr_notworking - Exit rc[%x] status[%x]\n", rc, *pstatus);
return rc; return rc;
} }
...@@ -37,8 +37,8 @@ ...@@ -37,8 +37,8 @@
static int configure_device(struct pci_func *); static int configure_device(struct pci_func *);
static int configure_bridge(struct pci_func **, u8); static int configure_bridge(struct pci_func **, u8);
static struct res_needed *scan_behind_bridge(struct pci_func *, u8); static struct res_needed *scan_behind_bridge(struct pci_func *, u8);
static int add_new_bus (struct bus_node *, struct resource_node *, struct resource_node *, struct resource_node *, u8); static int add_new_bus(struct bus_node *, struct resource_node *, struct resource_node *, struct resource_node *, u8);
static u8 find_sec_number (u8 primary_busno, u8 slotno); static u8 find_sec_number(u8 primary_busno, u8 slotno);
/* /*
* NOTE..... If BIOS doesn't provide default routing, we assign: * NOTE..... If BIOS doesn't provide default routing, we assign:
...@@ -47,7 +47,7 @@ static u8 find_sec_number (u8 primary_busno, u8 slotno); ...@@ -47,7 +47,7 @@ static u8 find_sec_number (u8 primary_busno, u8 slotno);
* We also assign the same irq numbers for multi function devices. * We also assign the same irq numbers for multi function devices.
* These are PIC mode, so shouldn't matter n.e.ways (hopefully) * These are PIC mode, so shouldn't matter n.e.ways (hopefully)
*/ */
static void assign_alt_irq (struct pci_func *cur_func, u8 class_code) static void assign_alt_irq(struct pci_func *cur_func, u8 class_code)
{ {
int j; int j;
for (j = 0; j < 4; j++) { for (j = 0; j < 4; j++) {
...@@ -78,7 +78,7 @@ static void assign_alt_irq (struct pci_func *cur_func, u8 class_code) ...@@ -78,7 +78,7 @@ static void assign_alt_irq (struct pci_func *cur_func, u8 class_code)
* if there is an error, will need to go through all previous functions and * if there is an error, will need to go through all previous functions and
* unconfigure....or can add some code into unconfigure_card.... * unconfigure....or can add some code into unconfigure_card....
*/ */
int ibmphp_configure_card (struct pci_func *func, u8 slotno) int ibmphp_configure_card(struct pci_func *func, u8 slotno)
{ {
u16 vendor_id; u16 vendor_id;
u32 class; u32 class;
...@@ -92,7 +92,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -92,7 +92,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
u8 flag; u8 flag;
u8 valid_device = 0x00; /* to see if we are able to read from card any device info at all */ u8 valid_device = 0x00; /* to see if we are able to read from card any device info at all */
debug ("inside configure_card, func->busno = %x\n", func->busno); debug("inside configure_card, func->busno = %x\n", func->busno);
device = func->device; device = func->device;
cur_func = func; cur_func = func;
...@@ -109,15 +109,15 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -109,15 +109,15 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
cur_func->function = function; cur_func->function = function;
debug ("inside the loop, cur_func->busno = %x, cur_func->device = %x, cur_func->function = %x\n", debug("inside the loop, cur_func->busno = %x, cur_func->device = %x, cur_func->function = %x\n",
cur_func->busno, cur_func->device, cur_func->function); cur_func->busno, cur_func->device, cur_func->function);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id);
debug ("vendor_id is %x\n", vendor_id); debug("vendor_id is %x\n", vendor_id);
if (vendor_id != PCI_VENDOR_ID_NOTVALID) { if (vendor_id != PCI_VENDOR_ID_NOTVALID) {
/* found correct device!!! */ /* found correct device!!! */
debug ("found valid device, vendor_id = %x\n", vendor_id); debug("found valid device, vendor_id = %x\n", vendor_id);
++valid_device; ++valid_device;
...@@ -126,29 +126,29 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -126,29 +126,29 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
* |_=> 0 = single function device, 1 = multi-function device * |_=> 0 = single function device, 1 = multi-function device
*/ */
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class);
class_code = class >> 24; class_code = class >> 24;
debug ("hrd_type = %x, class = %x, class_code %x\n", hdr_type, class, class_code); debug("hrd_type = %x, class = %x, class_code %x\n", hdr_type, class, class_code);
class >>= 8; /* to take revision out, class = class.subclass.prog i/f */ class >>= 8; /* to take revision out, class = class.subclass.prog i/f */
if (class == PCI_CLASS_NOT_DEFINED_VGA) { if (class == PCI_CLASS_NOT_DEFINED_VGA) {
err ("The device %x is VGA compatible and as is not supported for hot plugging. " err("The device %x is VGA compatible and as is not supported for hot plugging. "
"Please choose another device.\n", cur_func->device); "Please choose another device.\n", cur_func->device);
return -ENODEV; return -ENODEV;
} else if (class == PCI_CLASS_DISPLAY_VGA) { } else if (class == PCI_CLASS_DISPLAY_VGA) {
err ("The device %x is not supported for hot plugging. Please choose another device.\n", err("The device %x is not supported for hot plugging. Please choose another device.\n",
cur_func->device); cur_func->device);
return -ENODEV; return -ENODEV;
} }
switch (hdr_type) { switch (hdr_type) {
case PCI_HEADER_TYPE_NORMAL: case PCI_HEADER_TYPE_NORMAL:
debug ("single device case.... vendor id = %x, hdr_type = %x, class = %x\n", vendor_id, hdr_type, class); debug("single device case.... vendor id = %x, hdr_type = %x, class = %x\n", vendor_id, hdr_type, class);
assign_alt_irq (cur_func, class_code); assign_alt_irq(cur_func, class_code);
rc = configure_device(cur_func); rc = configure_device(cur_func);
if (rc < 0) { if (rc < 0) {
/* We need to do this in case some other BARs were properly inserted */ /* We need to do this in case some other BARs were properly inserted */
err ("was not able to configure devfunc %x on bus %x.\n", err("was not able to configure devfunc %x on bus %x.\n",
cur_func->device, cur_func->busno); cur_func->device, cur_func->busno);
cleanup_count = 6; cleanup_count = 6;
goto error; goto error;
...@@ -157,18 +157,18 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -157,18 +157,18 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
function = 0x8; function = 0x8;
break; break;
case PCI_HEADER_TYPE_MULTIDEVICE: case PCI_HEADER_TYPE_MULTIDEVICE:
assign_alt_irq (cur_func, class_code); assign_alt_irq(cur_func, class_code);
rc = configure_device(cur_func); rc = configure_device(cur_func);
if (rc < 0) { if (rc < 0) {
/* We need to do this in case some other BARs were properly inserted */ /* We need to do this in case some other BARs were properly inserted */
err ("was not able to configure devfunc %x on bus %x...bailing out\n", err("was not able to configure devfunc %x on bus %x...bailing out\n",
cur_func->device, cur_func->busno); cur_func->device, cur_func->busno);
cleanup_count = 6; cleanup_count = 6;
goto error; goto error;
} }
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL); newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
if (!newfunc) { if (!newfunc) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
newfunc->busno = cur_func->busno; newfunc->busno = cur_func->busno;
...@@ -181,32 +181,32 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -181,32 +181,32 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
case PCI_HEADER_TYPE_MULTIBRIDGE: case PCI_HEADER_TYPE_MULTIBRIDGE:
class >>= 8; class >>= 8;
if (class != PCI_CLASS_BRIDGE_PCI) { if (class != PCI_CLASS_BRIDGE_PCI) {
err ("This %x is not PCI-to-PCI bridge, and as is not supported for hot-plugging. Please insert another card.\n", err("This %x is not PCI-to-PCI bridge, and as is not supported for hot-plugging. Please insert another card.\n",
cur_func->device); cur_func->device);
return -ENODEV; return -ENODEV;
} }
assign_alt_irq (cur_func, class_code); assign_alt_irq(cur_func, class_code);
rc = configure_bridge (&cur_func, slotno); rc = configure_bridge(&cur_func, slotno);
if (rc == -ENODEV) { if (rc == -ENODEV) {
err ("You chose to insert Single Bridge, or nested bridges, this is not supported...\n"); err("You chose to insert Single Bridge, or nested bridges, this is not supported...\n");
err ("Bus %x, devfunc %x\n", cur_func->busno, cur_func->device); err("Bus %x, devfunc %x\n", cur_func->busno, cur_func->device);
return rc; return rc;
} }
if (rc) { if (rc) {
/* We need to do this in case some other BARs were properly inserted */ /* We need to do this in case some other BARs were properly inserted */
err ("was not able to hot-add PPB properly.\n"); err("was not able to hot-add PPB properly.\n");
func->bus = 1; /* To indicate to the unconfigure function that this is a PPB */ func->bus = 1; /* To indicate to the unconfigure function that this is a PPB */
cleanup_count = 2; cleanup_count = 2;
goto error; goto error;
} }
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number);
flag = 0; flag = 0;
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
if (func->devices[i]) { if (func->devices[i]) {
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL); newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
if (!newfunc) { if (!newfunc) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
newfunc->busno = sec_number; newfunc->busno = sec_number;
...@@ -220,7 +220,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -220,7 +220,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
} else } else
cur_func->next = newfunc; cur_func->next = newfunc;
rc = ibmphp_configure_card (newfunc, slotno); rc = ibmphp_configure_card(newfunc, slotno);
/* This could only happen if kmalloc failed */ /* This could only happen if kmalloc failed */
if (rc) { if (rc) {
/* We need to do this in case bridge itself got configured properly, but devices behind it failed */ /* We need to do this in case bridge itself got configured properly, but devices behind it failed */
...@@ -234,53 +234,53 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -234,53 +234,53 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL); newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
if (!newfunc) { if (!newfunc) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
newfunc->busno = cur_func->busno; newfunc->busno = cur_func->busno;
newfunc->device = device; newfunc->device = device;
for (j = 0; j < 4; j++) for (j = 0; j < 4; j++)
newfunc->irq[j] = cur_func->irq[j]; newfunc->irq[j] = cur_func->irq[j];
for (prev_func = cur_func; prev_func->next; prev_func = prev_func->next) ; for (prev_func = cur_func; prev_func->next; prev_func = prev_func->next);
prev_func->next = newfunc; prev_func->next = newfunc;
cur_func = newfunc; cur_func = newfunc;
break; break;
case PCI_HEADER_TYPE_BRIDGE: case PCI_HEADER_TYPE_BRIDGE:
class >>= 8; class >>= 8;
debug ("class now is %x\n", class); debug("class now is %x\n", class);
if (class != PCI_CLASS_BRIDGE_PCI) { if (class != PCI_CLASS_BRIDGE_PCI) {
err ("This %x is not PCI-to-PCI bridge, and as is not supported for hot-plugging. Please insert another card.\n", err("This %x is not PCI-to-PCI bridge, and as is not supported for hot-plugging. Please insert another card.\n",
cur_func->device); cur_func->device);
return -ENODEV; return -ENODEV;
} }
assign_alt_irq (cur_func, class_code); assign_alt_irq(cur_func, class_code);
debug ("cur_func->busno b4 configure_bridge is %x\n", cur_func->busno); debug("cur_func->busno b4 configure_bridge is %x\n", cur_func->busno);
rc = configure_bridge (&cur_func, slotno); rc = configure_bridge(&cur_func, slotno);
if (rc == -ENODEV) { if (rc == -ENODEV) {
err ("You chose to insert Single Bridge, or nested bridges, this is not supported...\n"); err("You chose to insert Single Bridge, or nested bridges, this is not supported...\n");
err ("Bus %x, devfunc %x\n", cur_func->busno, cur_func->device); err("Bus %x, devfunc %x\n", cur_func->busno, cur_func->device);
return rc; return rc;
} }
if (rc) { if (rc) {
/* We need to do this in case some other BARs were properly inserted */ /* We need to do this in case some other BARs were properly inserted */
func->bus = 1; /* To indicate to the unconfigure function that this is a PPB */ func->bus = 1; /* To indicate to the unconfigure function that this is a PPB */
err ("was not able to hot-add PPB properly.\n"); err("was not able to hot-add PPB properly.\n");
cleanup_count = 2; cleanup_count = 2;
goto error; goto error;
} }
debug ("cur_func->busno = %x, device = %x, function = %x\n", debug("cur_func->busno = %x, device = %x, function = %x\n",
cur_func->busno, device, function); cur_func->busno, device, function);
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number);
debug ("after configuring bridge..., sec_number = %x\n", sec_number); debug("after configuring bridge..., sec_number = %x\n", sec_number);
flag = 0; flag = 0;
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
if (func->devices[i]) { if (func->devices[i]) {
debug ("inside for loop, device is %x\n", i); debug("inside for loop, device is %x\n", i);
newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL); newfunc = kzalloc(sizeof(*newfunc), GFP_KERNEL);
if (!newfunc) { if (!newfunc) {
err (" out of system memory\n"); err(" out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
newfunc->busno = sec_number; newfunc->busno = sec_number;
...@@ -289,12 +289,12 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -289,12 +289,12 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
newfunc->irq[j] = cur_func->irq[j]; newfunc->irq[j] = cur_func->irq[j];
if (flag) { if (flag) {
for (prev_func = cur_func; prev_func->next; prev_func = prev_func->next) ; for (prev_func = cur_func; prev_func->next; prev_func = prev_func->next);
prev_func->next = newfunc; prev_func->next = newfunc;
} else } else
cur_func->next = newfunc; cur_func->next = newfunc;
rc = ibmphp_configure_card (newfunc, slotno); rc = ibmphp_configure_card(newfunc, slotno);
/* Again, this case should not happen... For complete paranoia, will need to call remove_bus */ /* Again, this case should not happen... For complete paranoia, will need to call remove_bus */
if (rc) { if (rc) {
...@@ -310,7 +310,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -310,7 +310,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
function = 0x8; function = 0x8;
break; break;
default: default:
err ("MAJOR PROBLEM!!!!, header type not supported? %x\n", hdr_type); err("MAJOR PROBLEM!!!!, header type not supported? %x\n", hdr_type);
return -ENXIO; return -ENXIO;
break; break;
} /* end of switch */ } /* end of switch */
...@@ -318,7 +318,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -318,7 +318,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
} /* end of for */ } /* end of for */
if (!valid_device) { if (!valid_device) {
err ("Cannot find any valid devices on the card. Or unable to read from card.\n"); err("Cannot find any valid devices on the card. Or unable to read from card.\n");
return -ENODEV; return -ENODEV;
} }
...@@ -327,13 +327,13 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -327,13 +327,13 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
error: error:
for (i = 0; i < cleanup_count; i++) { for (i = 0; i < cleanup_count; i++) {
if (cur_func->io[i]) { if (cur_func->io[i]) {
ibmphp_remove_resource (cur_func->io[i]); ibmphp_remove_resource(cur_func->io[i]);
cur_func->io[i] = NULL; cur_func->io[i] = NULL;
} else if (cur_func->pfmem[i]) { } else if (cur_func->pfmem[i]) {
ibmphp_remove_resource (cur_func->pfmem[i]); ibmphp_remove_resource(cur_func->pfmem[i]);
cur_func->pfmem[i] = NULL; cur_func->pfmem[i] = NULL;
} else if (cur_func->mem[i]) { } else if (cur_func->mem[i]) {
ibmphp_remove_resource (cur_func->mem[i]); ibmphp_remove_resource(cur_func->mem[i]);
cur_func->mem[i] = NULL; cur_func->mem[i] = NULL;
} }
} }
...@@ -345,7 +345,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno) ...@@ -345,7 +345,7 @@ int ibmphp_configure_card (struct pci_func *func, u8 slotno)
* Input: pointer to the pci_func * Input: pointer to the pci_func
* Output: configured PCI, 0, or error * Output: configured PCI, 0, or error
*/ */
static int configure_device (struct pci_func *func) static int configure_device(struct pci_func *func)
{ {
u32 bar[6]; u32 bar[6];
u32 address[] = { u32 address[] = {
...@@ -366,7 +366,7 @@ static int configure_device (struct pci_func *func) ...@@ -366,7 +366,7 @@ static int configure_device (struct pci_func *func)
struct resource_node *pfmem[6]; struct resource_node *pfmem[6];
unsigned int devfn; unsigned int devfn;
debug ("%s - inside\n", __func__); debug("%s - inside\n", __func__);
devfn = PCI_DEVFN(func->device, func->function); devfn = PCI_DEVFN(func->device, func->function);
ibmphp_pci_bus->number = func->busno; ibmphp_pci_bus->number = func->busno;
...@@ -386,27 +386,27 @@ static int configure_device (struct pci_func *func) ...@@ -386,27 +386,27 @@ static int configure_device (struct pci_func *func)
pcibios_write_config_dword(cur_func->busno, cur_func->device, pcibios_write_config_dword(cur_func->busno, cur_func->device,
PCI_BASE_ADDRESS_0 + 4 * count, 0xFFFFFFFF); PCI_BASE_ADDRESS_0 + 4 * count, 0xFFFFFFFF);
*/ */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
if (!bar[count]) /* This BAR is not implemented */ if (!bar[count]) /* This BAR is not implemented */
continue; continue;
debug ("Device %x BAR %d wants %x\n", func->device, count, bar[count]); debug("Device %x BAR %d wants %x\n", func->device, count, bar[count]);
if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) { if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) {
/* This is IO */ /* This is IO */
debug ("inside IO SPACE\n"); debug("inside IO SPACE\n");
len[count] = bar[count] & 0xFFFFFFFC; len[count] = bar[count] & 0xFFFFFFFC;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in IO %x, count %d\n", len[count], count); debug("len[count] in IO %x, count %d\n", len[count], count);
io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!io[count]) { if (!io[count]) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
io[count]->type = IO; io[count]->type = IO;
...@@ -414,36 +414,36 @@ static int configure_device (struct pci_func *func) ...@@ -414,36 +414,36 @@ static int configure_device (struct pci_func *func)
io[count]->devfunc = PCI_DEVFN(func->device, func->function); io[count]->devfunc = PCI_DEVFN(func->device, func->function);
io[count]->len = len[count]; io[count]->len = len[count];
if (ibmphp_check_resource(io[count], 0) == 0) { if (ibmphp_check_resource(io[count], 0) == 0) {
ibmphp_add_resource (io[count]); ibmphp_add_resource(io[count]);
func->io[count] = io[count]; func->io[count] = io[count];
} else { } else {
err ("cannot allocate requested io for bus %x device %x function %x len %x\n", err("cannot allocate requested io for bus %x device %x function %x len %x\n",
func->busno, func->device, func->function, len[count]); func->busno, func->device, func->function, len[count]);
kfree (io[count]); kfree(io[count]);
return -EIO; return -EIO;
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->io[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->io[count]->start);
/* _______________This is for debugging purposes only_____________________ */ /* _______________This is for debugging purposes only_____________________ */
debug ("b4 writing, the IO address is %x\n", func->io[count]->start); debug("b4 writing, the IO address is %x\n", func->io[count]->start);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
debug ("after writing.... the start address is %x\n", bar[count]); debug("after writing.... the start address is %x\n", bar[count]);
/* _________________________________________________________________________*/ /* _________________________________________________________________________*/
} else { } else {
/* This is Memory */ /* This is Memory */
if (bar[count] & PCI_BASE_ADDRESS_MEM_PREFETCH) { if (bar[count] & PCI_BASE_ADDRESS_MEM_PREFETCH) {
/* pfmem */ /* pfmem */
debug ("PFMEM SPACE\n"); debug("PFMEM SPACE\n");
len[count] = bar[count] & 0xFFFFFFF0; len[count] = bar[count] & 0xFFFFFFF0;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in PFMEM %x, count %d\n", len[count], count); debug("len[count] in PFMEM %x, count %d\n", len[count], count);
pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!pfmem[count]) { if (!pfmem[count]) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
pfmem[count]->type = PFMEM; pfmem[count]->type = PFMEM;
...@@ -452,64 +452,64 @@ static int configure_device (struct pci_func *func) ...@@ -452,64 +452,64 @@ static int configure_device (struct pci_func *func)
func->function); func->function);
pfmem[count]->len = len[count]; pfmem[count]->len = len[count];
pfmem[count]->fromMem = 0; pfmem[count]->fromMem = 0;
if (ibmphp_check_resource (pfmem[count], 0) == 0) { if (ibmphp_check_resource(pfmem[count], 0) == 0) {
ibmphp_add_resource (pfmem[count]); ibmphp_add_resource(pfmem[count]);
func->pfmem[count] = pfmem[count]; func->pfmem[count] = pfmem[count];
} else { } else {
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL); mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
if (!mem_tmp) { if (!mem_tmp) {
err ("out of system memory\n"); err("out of system memory\n");
kfree (pfmem[count]); kfree(pfmem[count]);
return -ENOMEM; return -ENOMEM;
} }
mem_tmp->type = MEM; mem_tmp->type = MEM;
mem_tmp->busno = pfmem[count]->busno; mem_tmp->busno = pfmem[count]->busno;
mem_tmp->devfunc = pfmem[count]->devfunc; mem_tmp->devfunc = pfmem[count]->devfunc;
mem_tmp->len = pfmem[count]->len; mem_tmp->len = pfmem[count]->len;
debug ("there's no pfmem... going into mem.\n"); debug("there's no pfmem... going into mem.\n");
if (ibmphp_check_resource (mem_tmp, 0) == 0) { if (ibmphp_check_resource(mem_tmp, 0) == 0) {
ibmphp_add_resource (mem_tmp); ibmphp_add_resource(mem_tmp);
pfmem[count]->fromMem = 1; pfmem[count]->fromMem = 1;
pfmem[count]->rangeno = mem_tmp->rangeno; pfmem[count]->rangeno = mem_tmp->rangeno;
pfmem[count]->start = mem_tmp->start; pfmem[count]->start = mem_tmp->start;
pfmem[count]->end = mem_tmp->end; pfmem[count]->end = mem_tmp->end;
ibmphp_add_pfmem_from_mem (pfmem[count]); ibmphp_add_pfmem_from_mem(pfmem[count]);
func->pfmem[count] = pfmem[count]; func->pfmem[count] = pfmem[count];
} else { } else {
err ("cannot allocate requested pfmem for bus %x, device %x, len %x\n", err("cannot allocate requested pfmem for bus %x, device %x, len %x\n",
func->busno, func->device, len[count]); func->busno, func->device, len[count]);
kfree (mem_tmp); kfree(mem_tmp);
kfree (pfmem[count]); kfree(pfmem[count]);
return -EIO; return -EIO;
} }
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->pfmem[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->pfmem[count]->start);
/*_______________This is for debugging purposes only______________________________*/ /*_______________This is for debugging purposes only______________________________*/
debug ("b4 writing, start address is %x\n", func->pfmem[count]->start); debug("b4 writing, start address is %x\n", func->pfmem[count]->start);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
debug ("after writing, start address is %x\n", bar[count]); debug("after writing, start address is %x\n", bar[count]);
/*_________________________________________________________________________________*/ /*_________________________________________________________________________________*/
if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) { /* takes up another dword */ if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) { /* takes up another dword */
debug ("inside the mem 64 case, count %d\n", count); debug("inside the mem 64 case, count %d\n", count);
count += 1; count += 1;
/* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */ /* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0x00000000);
} }
} else { } else {
/* regular memory */ /* regular memory */
debug ("REGULAR MEM SPACE\n"); debug("REGULAR MEM SPACE\n");
len[count] = bar[count] & 0xFFFFFFF0; len[count] = bar[count] & 0xFFFFFFF0;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in Mem %x, count %d\n", len[count], count); debug("len[count] in Mem %x, count %d\n", len[count], count);
mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!mem[count]) { if (!mem[count]) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
mem[count]->type = MEM; mem[count]->type = MEM;
...@@ -517,43 +517,43 @@ static int configure_device (struct pci_func *func) ...@@ -517,43 +517,43 @@ static int configure_device (struct pci_func *func)
mem[count]->devfunc = PCI_DEVFN(func->device, mem[count]->devfunc = PCI_DEVFN(func->device,
func->function); func->function);
mem[count]->len = len[count]; mem[count]->len = len[count];
if (ibmphp_check_resource (mem[count], 0) == 0) { if (ibmphp_check_resource(mem[count], 0) == 0) {
ibmphp_add_resource (mem[count]); ibmphp_add_resource(mem[count]);
func->mem[count] = mem[count]; func->mem[count] = mem[count];
} else { } else {
err ("cannot allocate requested mem for bus %x, device %x, len %x\n", err("cannot allocate requested mem for bus %x, device %x, len %x\n",
func->busno, func->device, len[count]); func->busno, func->device, len[count]);
kfree (mem[count]); kfree(mem[count]);
return -EIO; return -EIO;
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->mem[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->mem[count]->start);
/* _______________________This is for debugging purposes only _______________________*/ /* _______________________This is for debugging purposes only _______________________*/
debug ("b4 writing, start address is %x\n", func->mem[count]->start); debug("b4 writing, start address is %x\n", func->mem[count]->start);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
debug ("after writing, the address is %x\n", bar[count]); debug("after writing, the address is %x\n", bar[count]);
/* __________________________________________________________________________________*/ /* __________________________________________________________________________________*/
if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) { if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) {
/* takes up another dword */ /* takes up another dword */
debug ("inside mem 64 case, reg. mem, count %d\n", count); debug("inside mem 64 case, reg. mem, count %d\n", count);
count += 1; count += 1;
/* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */ /* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0x00000000);
} }
} }
} /* end of mem */ } /* end of mem */
} /* end of for */ } /* end of for */
func->bus = 0; /* To indicate that this is not a PPB */ func->bus = 0; /* To indicate that this is not a PPB */
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_INTERRUPT_PIN, &irq); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_INTERRUPT_PIN, &irq);
if ((irq > 0x00) && (irq < 0x05)) if ((irq > 0x00) && (irq < 0x05))
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_INTERRUPT_LINE, func->irq[irq - 1]); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_INTERRUPT_LINE, func->irq[irq - 1]);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_CACHE_LINE_SIZE, CACHE); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_CACHE_LINE_SIZE, CACHE);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_LATENCY_TIMER, LATENCY); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_LATENCY_TIMER, LATENCY);
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, PCI_ROM_ADDRESS, 0x00L); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, PCI_ROM_ADDRESS, 0x00L);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_COMMAND, DEVICEENABLE); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_COMMAND, DEVICEENABLE);
return 0; return 0;
} }
...@@ -563,7 +563,7 @@ static int configure_device (struct pci_func *func) ...@@ -563,7 +563,7 @@ static int configure_device (struct pci_func *func)
* Parameters: pci_func * Parameters: pci_func
* Returns: * Returns:
******************************************************************************/ ******************************************************************************/
static int configure_bridge (struct pci_func **func_passed, u8 slotno) static int configure_bridge(struct pci_func **func_passed, u8 slotno)
{ {
int count; int count;
int i; int i;
...@@ -597,7 +597,7 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -597,7 +597,7 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
u8 irq; u8 irq;
int retval; int retval;
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
devfn = PCI_DEVFN(func->function, func->device); devfn = PCI_DEVFN(func->function, func->device);
ibmphp_pci_bus->number = func->busno; ibmphp_pci_bus->number = func->busno;
...@@ -606,43 +606,43 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -606,43 +606,43 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
* behind it * behind it
*/ */
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, func->busno); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, func->busno);
/* _____________________For debugging purposes only __________________________ /* _____________________For debugging purposes only __________________________
pci_bus_config_byte (ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, &pri_number); pci_bus_config_byte(ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, &pri_number);
debug ("primary # written into the bridge is %x\n", pri_number); debug("primary # written into the bridge is %x\n", pri_number);
___________________________________________________________________________*/ ___________________________________________________________________________*/
/* in EBDA, only get allocated 1 additional bus # per slot */ /* in EBDA, only get allocated 1 additional bus # per slot */
sec_number = find_sec_number (func->busno, slotno); sec_number = find_sec_number(func->busno, slotno);
if (sec_number == 0xff) { if (sec_number == 0xff) {
err ("cannot allocate secondary bus number for the bridged device\n"); err("cannot allocate secondary bus number for the bridged device\n");
return -EINVAL; return -EINVAL;
} }
debug ("after find_sec_number, the number we got is %x\n", sec_number); debug("after find_sec_number, the number we got is %x\n", sec_number);
debug ("AFTER FIND_SEC_NUMBER, func->busno IS %x\n", func->busno); debug("AFTER FIND_SEC_NUMBER, func->busno IS %x\n", func->busno);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, sec_number); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, sec_number);
/* __________________For debugging purposes only __________________________________ /* __________________For debugging purposes only __________________________________
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number);
debug ("sec_number after write/read is %x\n", sec_number); debug("sec_number after write/read is %x\n", sec_number);
________________________________________________________________________________*/ ________________________________________________________________________________*/
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, sec_number); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, sec_number);
/* __________________For debugging purposes only ____________________________________ /* __________________For debugging purposes only ____________________________________
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, &sec_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, &sec_number);
debug ("subordinate number after write/read is %x\n", sec_number); debug("subordinate number after write/read is %x\n", sec_number);
__________________________________________________________________________________*/ __________________________________________________________________________________*/
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_CACHE_LINE_SIZE, CACHE); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_CACHE_LINE_SIZE, CACHE);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_LATENCY_TIMER, LATENCY); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_LATENCY_TIMER, LATENCY);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_SEC_LATENCY_TIMER, LATENCY); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_SEC_LATENCY_TIMER, LATENCY);
debug ("func->busno is %x\n", func->busno); debug("func->busno is %x\n", func->busno);
debug ("sec_number after writing is %x\n", sec_number); debug("sec_number after writing is %x\n", sec_number);
/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
...@@ -652,29 +652,29 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -652,29 +652,29 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
/* First we need to allocate mem/io for the bridge itself in case it needs it */ /* First we need to allocate mem/io for the bridge itself in case it needs it */
for (count = 0; address[count]; count++) { /* for 2 BARs */ for (count = 0; address[count]; count++) { /* for 2 BARs */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
if (!bar[count]) { if (!bar[count]) {
/* This BAR is not implemented */ /* This BAR is not implemented */
debug ("so we come here then, eh?, count = %d\n", count); debug("so we come here then, eh?, count = %d\n", count);
continue; continue;
} }
// tmp_bar = bar[count]; // tmp_bar = bar[count];
debug ("Bar %d wants %x\n", count, bar[count]); debug("Bar %d wants %x\n", count, bar[count]);
if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) { if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) {
/* This is IO */ /* This is IO */
len[count] = bar[count] & 0xFFFFFFFC; len[count] = bar[count] & 0xFFFFFFFC;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in IO = %x\n", len[count]); debug("len[count] in IO = %x\n", len[count]);
bus_io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); bus_io[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!bus_io[count]) { if (!bus_io[count]) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -683,17 +683,17 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -683,17 +683,17 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
bus_io[count]->devfunc = PCI_DEVFN(func->device, bus_io[count]->devfunc = PCI_DEVFN(func->device,
func->function); func->function);
bus_io[count]->len = len[count]; bus_io[count]->len = len[count];
if (ibmphp_check_resource (bus_io[count], 0) == 0) { if (ibmphp_check_resource(bus_io[count], 0) == 0) {
ibmphp_add_resource (bus_io[count]); ibmphp_add_resource(bus_io[count]);
func->io[count] = bus_io[count]; func->io[count] = bus_io[count];
} else { } else {
err ("cannot allocate requested io for bus %x, device %x, len %x\n", err("cannot allocate requested io for bus %x, device %x, len %x\n",
func->busno, func->device, len[count]); func->busno, func->device, len[count]);
kfree (bus_io[count]); kfree(bus_io[count]);
return -EIO; return -EIO;
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->io[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->io[count]->start);
} else { } else {
/* This is Memory */ /* This is Memory */
...@@ -702,11 +702,11 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -702,11 +702,11 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
len[count] = bar[count] & 0xFFFFFFF0; len[count] = bar[count] & 0xFFFFFFF0;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in PFMEM = %x\n", len[count]); debug("len[count] in PFMEM = %x\n", len[count]);
bus_pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); bus_pfmem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!bus_pfmem[count]) { if (!bus_pfmem[count]) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -716,13 +716,13 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -716,13 +716,13 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
func->function); func->function);
bus_pfmem[count]->len = len[count]; bus_pfmem[count]->len = len[count];
bus_pfmem[count]->fromMem = 0; bus_pfmem[count]->fromMem = 0;
if (ibmphp_check_resource (bus_pfmem[count], 0) == 0) { if (ibmphp_check_resource(bus_pfmem[count], 0) == 0) {
ibmphp_add_resource (bus_pfmem[count]); ibmphp_add_resource(bus_pfmem[count]);
func->pfmem[count] = bus_pfmem[count]; func->pfmem[count] = bus_pfmem[count];
} else { } else {
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL); mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
if (!mem_tmp) { if (!mem_tmp) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -730,28 +730,28 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -730,28 +730,28 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
mem_tmp->busno = bus_pfmem[count]->busno; mem_tmp->busno = bus_pfmem[count]->busno;
mem_tmp->devfunc = bus_pfmem[count]->devfunc; mem_tmp->devfunc = bus_pfmem[count]->devfunc;
mem_tmp->len = bus_pfmem[count]->len; mem_tmp->len = bus_pfmem[count]->len;
if (ibmphp_check_resource (mem_tmp, 0) == 0) { if (ibmphp_check_resource(mem_tmp, 0) == 0) {
ibmphp_add_resource (mem_tmp); ibmphp_add_resource(mem_tmp);
bus_pfmem[count]->fromMem = 1; bus_pfmem[count]->fromMem = 1;
bus_pfmem[count]->rangeno = mem_tmp->rangeno; bus_pfmem[count]->rangeno = mem_tmp->rangeno;
ibmphp_add_pfmem_from_mem (bus_pfmem[count]); ibmphp_add_pfmem_from_mem(bus_pfmem[count]);
func->pfmem[count] = bus_pfmem[count]; func->pfmem[count] = bus_pfmem[count];
} else { } else {
err ("cannot allocate requested pfmem for bus %x, device %x, len %x\n", err("cannot allocate requested pfmem for bus %x, device %x, len %x\n",
func->busno, func->device, len[count]); func->busno, func->device, len[count]);
kfree (mem_tmp); kfree(mem_tmp);
kfree (bus_pfmem[count]); kfree(bus_pfmem[count]);
return -EIO; return -EIO;
} }
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->pfmem[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->pfmem[count]->start);
if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) { if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) {
/* takes up another dword */ /* takes up another dword */
count += 1; count += 1;
/* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */ /* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0x00000000);
} }
} else { } else {
...@@ -759,11 +759,11 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -759,11 +759,11 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
len[count] = bar[count] & 0xFFFFFFF0; len[count] = bar[count] & 0xFFFFFFF0;
len[count] = ~len[count] + 1; len[count] = ~len[count] + 1;
debug ("len[count] in Memory is %x\n", len[count]); debug("len[count] in Memory is %x\n", len[count]);
bus_mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL); bus_mem[count] = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!bus_mem[count]) { if (!bus_mem[count]) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -772,23 +772,23 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -772,23 +772,23 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
bus_mem[count]->devfunc = PCI_DEVFN(func->device, bus_mem[count]->devfunc = PCI_DEVFN(func->device,
func->function); func->function);
bus_mem[count]->len = len[count]; bus_mem[count]->len = len[count];
if (ibmphp_check_resource (bus_mem[count], 0) == 0) { if (ibmphp_check_resource(bus_mem[count], 0) == 0) {
ibmphp_add_resource (bus_mem[count]); ibmphp_add_resource(bus_mem[count]);
func->mem[count] = bus_mem[count]; func->mem[count] = bus_mem[count];
} else { } else {
err ("cannot allocate requested mem for bus %x, device %x, len %x\n", err("cannot allocate requested mem for bus %x, device %x, len %x\n",
func->busno, func->device, len[count]); func->busno, func->device, len[count]);
kfree (bus_mem[count]); kfree(bus_mem[count]);
return -EIO; return -EIO;
} }
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], func->mem[count]->start); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], func->mem[count]->start);
if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) { if (bar[count] & PCI_BASE_ADDRESS_MEM_TYPE_64) {
/* takes up another dword */ /* takes up another dword */
count += 1; count += 1;
/* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */ /* on the 2nd dword, write all 0s, since we can't handle them n.e.ways */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0x00000000);
} }
} }
...@@ -796,45 +796,45 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -796,45 +796,45 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
} /* end of for */ } /* end of for */
/* Now need to see how much space the devices behind the bridge needed */ /* Now need to see how much space the devices behind the bridge needed */
amount_needed = scan_behind_bridge (func, sec_number); amount_needed = scan_behind_bridge(func, sec_number);
if (amount_needed == NULL) if (amount_needed == NULL)
return -ENOMEM; return -ENOMEM;
ibmphp_pci_bus->number = func->busno; ibmphp_pci_bus->number = func->busno;
debug ("after coming back from scan_behind_bridge\n"); debug("after coming back from scan_behind_bridge\n");
debug ("amount_needed->not_correct = %x\n", amount_needed->not_correct); debug("amount_needed->not_correct = %x\n", amount_needed->not_correct);
debug ("amount_needed->io = %x\n", amount_needed->io); debug("amount_needed->io = %x\n", amount_needed->io);
debug ("amount_needed->mem = %x\n", amount_needed->mem); debug("amount_needed->mem = %x\n", amount_needed->mem);
debug ("amount_needed->pfmem = %x\n", amount_needed->pfmem); debug("amount_needed->pfmem = %x\n", amount_needed->pfmem);
if (amount_needed->not_correct) { if (amount_needed->not_correct) {
debug ("amount_needed is not correct\n"); debug("amount_needed is not correct\n");
for (count = 0; address[count]; count++) { for (count = 0; address[count]; count++) {
/* for 2 BARs */ /* for 2 BARs */
if (bus_io[count]) { if (bus_io[count]) {
ibmphp_remove_resource (bus_io[count]); ibmphp_remove_resource(bus_io[count]);
func->io[count] = NULL; func->io[count] = NULL;
} else if (bus_pfmem[count]) { } else if (bus_pfmem[count]) {
ibmphp_remove_resource (bus_pfmem[count]); ibmphp_remove_resource(bus_pfmem[count]);
func->pfmem[count] = NULL; func->pfmem[count] = NULL;
} else if (bus_mem[count]) { } else if (bus_mem[count]) {
ibmphp_remove_resource (bus_mem[count]); ibmphp_remove_resource(bus_mem[count]);
func->mem[count] = NULL; func->mem[count] = NULL;
} }
} }
kfree (amount_needed); kfree(amount_needed);
return -ENODEV; return -ENODEV;
} }
if (!amount_needed->io) { if (!amount_needed->io) {
debug ("it doesn't want IO?\n"); debug("it doesn't want IO?\n");
flag_io = 1; flag_io = 1;
} else { } else {
debug ("it wants %x IO behind the bridge\n", amount_needed->io); debug("it wants %x IO behind the bridge\n", amount_needed->io);
io = kzalloc(sizeof(*io), GFP_KERNEL); io = kzalloc(sizeof(*io), GFP_KERNEL);
if (!io) { if (!io) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -842,21 +842,21 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -842,21 +842,21 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
io->busno = func->busno; io->busno = func->busno;
io->devfunc = PCI_DEVFN(func->device, func->function); io->devfunc = PCI_DEVFN(func->device, func->function);
io->len = amount_needed->io; io->len = amount_needed->io;
if (ibmphp_check_resource (io, 1) == 0) { if (ibmphp_check_resource(io, 1) == 0) {
debug ("were we able to add io\n"); debug("were we able to add io\n");
ibmphp_add_resource (io); ibmphp_add_resource(io);
flag_io = 1; flag_io = 1;
} }
} }
if (!amount_needed->mem) { if (!amount_needed->mem) {
debug ("it doesn't want n.e.memory?\n"); debug("it doesn't want n.e.memory?\n");
flag_mem = 1; flag_mem = 1;
} else { } else {
debug ("it wants %x memory behind the bridge\n", amount_needed->mem); debug("it wants %x memory behind the bridge\n", amount_needed->mem);
mem = kzalloc(sizeof(*mem), GFP_KERNEL); mem = kzalloc(sizeof(*mem), GFP_KERNEL);
if (!mem) { if (!mem) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -864,21 +864,21 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -864,21 +864,21 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
mem->busno = func->busno; mem->busno = func->busno;
mem->devfunc = PCI_DEVFN(func->device, func->function); mem->devfunc = PCI_DEVFN(func->device, func->function);
mem->len = amount_needed->mem; mem->len = amount_needed->mem;
if (ibmphp_check_resource (mem, 1) == 0) { if (ibmphp_check_resource(mem, 1) == 0) {
ibmphp_add_resource (mem); ibmphp_add_resource(mem);
flag_mem = 1; flag_mem = 1;
debug ("were we able to add mem\n"); debug("were we able to add mem\n");
} }
} }
if (!amount_needed->pfmem) { if (!amount_needed->pfmem) {
debug ("it doesn't want n.e.pfmem mem?\n"); debug("it doesn't want n.e.pfmem mem?\n");
flag_pfmem = 1; flag_pfmem = 1;
} else { } else {
debug ("it wants %x pfmemory behind the bridge\n", amount_needed->pfmem); debug("it wants %x pfmemory behind the bridge\n", amount_needed->pfmem);
pfmem = kzalloc(sizeof(*pfmem), GFP_KERNEL); pfmem = kzalloc(sizeof(*pfmem), GFP_KERNEL);
if (!pfmem) { if (!pfmem) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -887,13 +887,13 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -887,13 +887,13 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
pfmem->devfunc = PCI_DEVFN(func->device, func->function); pfmem->devfunc = PCI_DEVFN(func->device, func->function);
pfmem->len = amount_needed->pfmem; pfmem->len = amount_needed->pfmem;
pfmem->fromMem = 0; pfmem->fromMem = 0;
if (ibmphp_check_resource (pfmem, 1) == 0) { if (ibmphp_check_resource(pfmem, 1) == 0) {
ibmphp_add_resource (pfmem); ibmphp_add_resource(pfmem);
flag_pfmem = 1; flag_pfmem = 1;
} else { } else {
mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL); mem_tmp = kzalloc(sizeof(*mem_tmp), GFP_KERNEL);
if (!mem_tmp) { if (!mem_tmp) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
...@@ -901,18 +901,18 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -901,18 +901,18 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
mem_tmp->busno = pfmem->busno; mem_tmp->busno = pfmem->busno;
mem_tmp->devfunc = pfmem->devfunc; mem_tmp->devfunc = pfmem->devfunc;
mem_tmp->len = pfmem->len; mem_tmp->len = pfmem->len;
if (ibmphp_check_resource (mem_tmp, 1) == 0) { if (ibmphp_check_resource(mem_tmp, 1) == 0) {
ibmphp_add_resource (mem_tmp); ibmphp_add_resource(mem_tmp);
pfmem->fromMem = 1; pfmem->fromMem = 1;
pfmem->rangeno = mem_tmp->rangeno; pfmem->rangeno = mem_tmp->rangeno;
ibmphp_add_pfmem_from_mem (pfmem); ibmphp_add_pfmem_from_mem(pfmem);
flag_pfmem = 1; flag_pfmem = 1;
} }
} }
} }
debug ("b4 if (flag_io && flag_mem && flag_pfmem)\n"); debug("b4 if (flag_io && flag_mem && flag_pfmem)\n");
debug ("flag_io = %x, flag_mem = %x, flag_pfmem = %x\n", flag_io, flag_mem, flag_pfmem); debug("flag_io = %x, flag_mem = %x, flag_pfmem = %x\n", flag_io, flag_mem, flag_pfmem);
if (flag_io && flag_mem && flag_pfmem) { if (flag_io && flag_mem && flag_pfmem) {
/* If on bootup, there was a bridged card in this slot, /* If on bootup, there was a bridged card in this slot,
...@@ -920,127 +920,127 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -920,127 +920,127 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
* back again, there's no way for us to remove the bus * back again, there's no way for us to remove the bus
* struct, so no need to kmalloc, can use existing node * struct, so no need to kmalloc, can use existing node
*/ */
bus = ibmphp_find_res_bus (sec_number); bus = ibmphp_find_res_bus(sec_number);
if (!bus) { if (!bus) {
bus = kzalloc(sizeof(*bus), GFP_KERNEL); bus = kzalloc(sizeof(*bus), GFP_KERNEL);
if (!bus) { if (!bus) {
err ("out of system memory\n"); err("out of system memory\n");
retval = -ENOMEM; retval = -ENOMEM;
goto error; goto error;
} }
bus->busno = sec_number; bus->busno = sec_number;
debug ("b4 adding new bus\n"); debug("b4 adding new bus\n");
rc = add_new_bus (bus, io, mem, pfmem, func->busno); rc = add_new_bus(bus, io, mem, pfmem, func->busno);
} else if (!(bus->rangeIO) && !(bus->rangeMem) && !(bus->rangePFMem)) } else if (!(bus->rangeIO) && !(bus->rangeMem) && !(bus->rangePFMem))
rc = add_new_bus (bus, io, mem, pfmem, 0xFF); rc = add_new_bus(bus, io, mem, pfmem, 0xFF);
else { else {
err ("expected bus structure not empty?\n"); err("expected bus structure not empty?\n");
retval = -EIO; retval = -EIO;
goto error; goto error;
} }
if (rc) { if (rc) {
if (rc == -ENOMEM) { if (rc == -ENOMEM) {
ibmphp_remove_bus (bus, func->busno); ibmphp_remove_bus(bus, func->busno);
kfree (amount_needed); kfree(amount_needed);
return rc; return rc;
} }
retval = rc; retval = rc;
goto error; goto error;
} }
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_IO_BASE, &io_base); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_IO_BASE, &io_base);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &pfmem_base); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &pfmem_base);
if ((io_base & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) { if ((io_base & PCI_IO_RANGE_TYPE_MASK) == PCI_IO_RANGE_TYPE_32) {
debug ("io 32\n"); debug("io 32\n");
need_io_upper = 1; need_io_upper = 1;
} }
if ((pfmem_base & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) { if ((pfmem_base & PCI_PREF_RANGE_TYPE_MASK) == PCI_PREF_RANGE_TYPE_64) {
debug ("pfmem 64\n"); debug("pfmem 64\n");
need_pfmem_upper = 1; need_pfmem_upper = 1;
} }
if (bus->noIORanges) { if (bus->noIORanges) {
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_IO_BASE, 0x00 | bus->rangeIO->start >> 8); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_IO_BASE, 0x00 | bus->rangeIO->start >> 8);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_IO_LIMIT, 0x00 | bus->rangeIO->end >> 8); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_IO_LIMIT, 0x00 | bus->rangeIO->end >> 8);
/* _______________This is for debugging purposes only ____________________ /* _______________This is for debugging purposes only ____________________
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_IO_BASE, &temp); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_IO_BASE, &temp);
debug ("io_base = %x\n", (temp & PCI_IO_RANGE_TYPE_MASK) << 8); debug("io_base = %x\n", (temp & PCI_IO_RANGE_TYPE_MASK) << 8);
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_IO_LIMIT, &temp); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_IO_LIMIT, &temp);
debug ("io_limit = %x\n", (temp & PCI_IO_RANGE_TYPE_MASK) << 8); debug("io_limit = %x\n", (temp & PCI_IO_RANGE_TYPE_MASK) << 8);
________________________________________________________________________*/ ________________________________________________________________________*/
if (need_io_upper) { /* since can't support n.e.ways */ if (need_io_upper) { /* since can't support n.e.ways */
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_IO_BASE_UPPER16, 0x0000); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_IO_BASE_UPPER16, 0x0000);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_IO_LIMIT_UPPER16, 0x0000); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_IO_LIMIT_UPPER16, 0x0000);
} }
} else { } else {
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_IO_BASE, 0x00); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_IO_BASE, 0x00);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_IO_LIMIT, 0x00); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_IO_LIMIT, 0x00);
} }
if (bus->noMemRanges) { if (bus->noMemRanges) {
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, 0x0000 | bus->rangeMem->start >> 16); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, 0x0000 | bus->rangeMem->start >> 16);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, 0x0000 | bus->rangeMem->end >> 16); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, 0x0000 | bus->rangeMem->end >> 16);
/* ____________________This is for debugging purposes only ________________________ /* ____________________This is for debugging purposes only ________________________
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, &temp); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, &temp);
debug ("mem_base = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16); debug("mem_base = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, &temp); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, &temp);
debug ("mem_limit = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16); debug("mem_limit = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16);
__________________________________________________________________________________*/ __________________________________________________________________________________*/
} else { } else {
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, 0xffff); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, 0xffff);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, 0x0000); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, 0x0000);
} }
if (bus->noPFMemRanges) { if (bus->noPFMemRanges) {
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, 0x0000 | bus->rangePFMem->start >> 16); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, 0x0000 | bus->rangePFMem->start >> 16);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, 0x0000 | bus->rangePFMem->end >> 16); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, 0x0000 | bus->rangePFMem->end >> 16);
/* __________________________This is for debugging purposes only _______________________ /* __________________________This is for debugging purposes only _______________________
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &temp); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &temp);
debug ("pfmem_base = %x", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16); debug("pfmem_base = %x", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, &temp); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, &temp);
debug ("pfmem_limit = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16); debug("pfmem_limit = %x\n", (temp & PCI_MEMORY_RANGE_TYPE_MASK) << 16);
______________________________________________________________________________________*/ ______________________________________________________________________________________*/
if (need_pfmem_upper) { /* since can't support n.e.ways */ if (need_pfmem_upper) { /* since can't support n.e.ways */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, PCI_PREF_BASE_UPPER32, 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, PCI_PREF_BASE_UPPER32, 0x00000000);
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, PCI_PREF_LIMIT_UPPER32, 0x00000000); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, PCI_PREF_LIMIT_UPPER32, 0x00000000);
} }
} else { } else {
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, 0xffff); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, 0xffff);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, 0x0000); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, 0x0000);
} }
debug ("b4 writing control information\n"); debug("b4 writing control information\n");
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_INTERRUPT_PIN, &irq); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_INTERRUPT_PIN, &irq);
if ((irq > 0x00) && (irq < 0x05)) if ((irq > 0x00) && (irq < 0x05))
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_INTERRUPT_LINE, func->irq[irq - 1]); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_INTERRUPT_LINE, func->irq[irq - 1]);
/* /*
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, ctrl); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, ctrl);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, PCI_BRIDGE_CTL_PARITY); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, PCI_BRIDGE_CTL_PARITY);
pci_bus_write_config_byte (ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, PCI_BRIDGE_CTL_SERR); pci_bus_write_config_byte(ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, PCI_BRIDGE_CTL_SERR);
*/ */
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_COMMAND, DEVICEENABLE); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_COMMAND, DEVICEENABLE);
pci_bus_write_config_word (ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, 0x07); pci_bus_write_config_word(ibmphp_pci_bus, devfn, PCI_BRIDGE_CONTROL, 0x07);
for (i = 0; i < 32; i++) { for (i = 0; i < 32; i++) {
if (amount_needed->devices[i]) { if (amount_needed->devices[i]) {
debug ("device where devices[i] is 1 = %x\n", i); debug("device where devices[i] is 1 = %x\n", i);
func->devices[i] = 1; func->devices[i] = 1;
} }
} }
func->bus = 1; /* For unconfiguring, to indicate it's PPB */ func->bus = 1; /* For unconfiguring, to indicate it's PPB */
func_passed = &func; func_passed = &func;
debug ("func->busno b4 returning is %x\n", func->busno); debug("func->busno b4 returning is %x\n", func->busno);
debug ("func->busno b4 returning in the other structure is %x\n", (*func_passed)->busno); debug("func->busno b4 returning in the other structure is %x\n", (*func_passed)->busno);
kfree (amount_needed); kfree(amount_needed);
return 0; return 0;
} else { } else {
err ("Configuring bridge was unsuccessful...\n"); err("Configuring bridge was unsuccessful...\n");
mem_tmp = NULL; mem_tmp = NULL;
retval = -EIO; retval = -EIO;
goto error; goto error;
...@@ -1049,20 +1049,20 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -1049,20 +1049,20 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
error: error:
kfree(amount_needed); kfree(amount_needed);
if (pfmem) if (pfmem)
ibmphp_remove_resource (pfmem); ibmphp_remove_resource(pfmem);
if (io) if (io)
ibmphp_remove_resource (io); ibmphp_remove_resource(io);
if (mem) if (mem)
ibmphp_remove_resource (mem); ibmphp_remove_resource(mem);
for (i = 0; i < 2; i++) { /* for 2 BARs */ for (i = 0; i < 2; i++) { /* for 2 BARs */
if (bus_io[i]) { if (bus_io[i]) {
ibmphp_remove_resource (bus_io[i]); ibmphp_remove_resource(bus_io[i]);
func->io[i] = NULL; func->io[i] = NULL;
} else if (bus_pfmem[i]) { } else if (bus_pfmem[i]) {
ibmphp_remove_resource (bus_pfmem[i]); ibmphp_remove_resource(bus_pfmem[i]);
func->pfmem[i] = NULL; func->pfmem[i] = NULL;
} else if (bus_mem[i]) { } else if (bus_mem[i]) {
ibmphp_remove_resource (bus_mem[i]); ibmphp_remove_resource(bus_mem[i]);
func->mem[i] = NULL; func->mem[i] = NULL;
} }
} }
...@@ -1075,7 +1075,7 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno) ...@@ -1075,7 +1075,7 @@ static int configure_bridge (struct pci_func **func_passed, u8 slotno)
* Input: bridge function * Input: bridge function
* Output: amount of resources needed * Output: amount of resources needed
*****************************************************************************/ *****************************************************************************/
static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno) static struct res_needed *scan_behind_bridge(struct pci_func *func, u8 busno)
{ {
int count, len[6]; int count, len[6];
u16 vendor_id; u16 vendor_id;
...@@ -1102,36 +1102,36 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno) ...@@ -1102,36 +1102,36 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno)
ibmphp_pci_bus->number = busno; ibmphp_pci_bus->number = busno;
debug ("the bus_no behind the bridge is %x\n", busno); debug("the bus_no behind the bridge is %x\n", busno);
debug ("scanning devices behind the bridge...\n"); debug("scanning devices behind the bridge...\n");
for (device = 0; device < 32; device++) { for (device = 0; device < 32; device++) {
amount->devices[device] = 0; amount->devices[device] = 0;
for (function = 0; function < 8; function++) { for (function = 0; function < 8; function++) {
devfn = PCI_DEVFN(device, function); devfn = PCI_DEVFN(device, function);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id);
if (vendor_id != PCI_VENDOR_ID_NOTVALID) { if (vendor_id != PCI_VENDOR_ID_NOTVALID) {
/* found correct device!!! */ /* found correct device!!! */
howmany++; howmany++;
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class);
debug ("hdr_type behind the bridge is %x\n", hdr_type); debug("hdr_type behind the bridge is %x\n", hdr_type);
if ((hdr_type & 0x7f) == PCI_HEADER_TYPE_BRIDGE) { if ((hdr_type & 0x7f) == PCI_HEADER_TYPE_BRIDGE) {
err ("embedded bridges not supported for hot-plugging.\n"); err("embedded bridges not supported for hot-plugging.\n");
amount->not_correct = 1; amount->not_correct = 1;
return amount; return amount;
} }
class >>= 8; /* to take revision out, class = class.subclass.prog i/f */ class >>= 8; /* to take revision out, class = class.subclass.prog i/f */
if (class == PCI_CLASS_NOT_DEFINED_VGA) { if (class == PCI_CLASS_NOT_DEFINED_VGA) {
err ("The device %x is VGA compatible and as is not supported for hot plugging. Please choose another device.\n", device); err("The device %x is VGA compatible and as is not supported for hot plugging. Please choose another device.\n", device);
amount->not_correct = 1; amount->not_correct = 1;
return amount; return amount;
} else if (class == PCI_CLASS_DISPLAY_VGA) { } else if (class == PCI_CLASS_DISPLAY_VGA) {
err ("The device %x is not supported for hot plugging. Please choose another device.\n", device); err("The device %x is not supported for hot plugging. Please choose another device.\n", device);
amount->not_correct = 1; amount->not_correct = 1;
return amount; return amount;
} }
...@@ -1141,23 +1141,23 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno) ...@@ -1141,23 +1141,23 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno)
for (count = 0; address[count]; count++) { for (count = 0; address[count]; count++) {
/* for 6 BARs */ /* for 6 BARs */
/* /*
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, address[count], &tmp); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, address[count], &tmp);
if (tmp & 0x01) // IO if (tmp & 0x01) // IO
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFD); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFD);
else // MEMORY else // MEMORY
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF);
*/ */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &bar[count]); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &bar[count]);
debug ("what is bar[count]? %x, count = %d\n", bar[count], count); debug("what is bar[count]? %x, count = %d\n", bar[count], count);
if (!bar[count]) /* This BAR is not implemented */ if (!bar[count]) /* This BAR is not implemented */
continue; continue;
//tmp_bar = bar[count]; //tmp_bar = bar[count];
debug ("count %d device %x function %x wants %x resources\n", count, device, function, bar[count]); debug("count %d device %x function %x wants %x resources\n", count, device, function, bar[count]);
if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) { if (bar[count] & PCI_BASE_ADDRESS_SPACE_IO) {
/* This is IO */ /* This is IO */
...@@ -1211,7 +1211,7 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno) ...@@ -1211,7 +1211,7 @@ static struct res_needed *scan_behind_bridge (struct pci_func *func, u8 busno)
* Change: we also call these functions even if we configured the card ourselves (i.e., not * Change: we also call these functions even if we configured the card ourselves (i.e., not
* the bootup case), since it should work same way * the bootup case), since it should work same way
*/ */
static int unconfigure_boot_device (u8 busno, u8 device, u8 function) static int unconfigure_boot_device(u8 busno, u8 device, u8 function)
{ {
u32 start_address; u32 start_address;
u32 address[] = { u32 address[] = {
...@@ -1234,30 +1234,30 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function) ...@@ -1234,30 +1234,30 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
u32 tmp_address; u32 tmp_address;
unsigned int devfn; unsigned int devfn;
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
bus = ibmphp_find_res_bus (busno); bus = ibmphp_find_res_bus(busno);
if (!bus) { if (!bus) {
debug ("cannot find corresponding bus.\n"); debug("cannot find corresponding bus.\n");
return -EINVAL; return -EINVAL;
} }
devfn = PCI_DEVFN(device, function); devfn = PCI_DEVFN(device, function);
ibmphp_pci_bus->number = busno; ibmphp_pci_bus->number = busno;
for (count = 0; address[count]; count++) { /* for 6 BARs */ for (count = 0; address[count]; count++) { /* for 6 BARs */
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &start_address); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &start_address);
/* We can do this here, b/c by that time the device driver of the card has been stopped */ /* We can do this here, b/c by that time the device driver of the card has been stopped */
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], 0xFFFFFFFF);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &size); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &size);
pci_bus_write_config_dword (ibmphp_pci_bus, devfn, address[count], start_address); pci_bus_write_config_dword(ibmphp_pci_bus, devfn, address[count], start_address);
debug ("start_address is %x\n", start_address); debug("start_address is %x\n", start_address);
debug ("busno, device, function %x %x %x\n", busno, device, function); debug("busno, device, function %x %x %x\n", busno, device, function);
if (!size) { if (!size) {
/* This BAR is not implemented */ /* This BAR is not implemented */
debug ("is this bar no implemented?, count = %d\n", count); debug("is this bar no implemented?, count = %d\n", count);
continue; continue;
} }
tmp_address = start_address; tmp_address = start_address;
...@@ -1267,24 +1267,24 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function) ...@@ -1267,24 +1267,24 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
size = size & 0xFFFFFFFC; size = size & 0xFFFFFFFC;
size = ~size + 1; size = ~size + 1;
end_address = start_address + size - 1; end_address = start_address + size - 1;
if (ibmphp_find_resource (bus, start_address, &io, IO) < 0) { if (ibmphp_find_resource(bus, start_address, &io, IO) < 0) {
err ("cannot find corresponding IO resource to remove\n"); err("cannot find corresponding IO resource to remove\n");
return -EIO; return -EIO;
} }
debug ("io->start = %x\n", io->start); debug("io->start = %x\n", io->start);
temp_end = io->end; temp_end = io->end;
start_address = io->end + 1; start_address = io->end + 1;
ibmphp_remove_resource (io); ibmphp_remove_resource(io);
/* This is needed b/c of the old I/O restrictions in the BIOS */ /* This is needed b/c of the old I/O restrictions in the BIOS */
while (temp_end < end_address) { while (temp_end < end_address) {
if (ibmphp_find_resource (bus, start_address, &io, IO) < 0) { if (ibmphp_find_resource(bus, start_address, &io, IO) < 0) {
err ("cannot find corresponding IO resource to remove\n"); err("cannot find corresponding IO resource to remove\n");
return -EIO; return -EIO;
} }
debug ("io->start = %x\n", io->start); debug("io->start = %x\n", io->start);
temp_end = io->end; temp_end = io->end;
start_address = io->end + 1; start_address = io->end + 1;
ibmphp_remove_resource (io); ibmphp_remove_resource(io);
} }
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */ /* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
...@@ -1292,29 +1292,29 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function) ...@@ -1292,29 +1292,29 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
/* This is Memory */ /* This is Memory */
if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) { if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
/* pfmem */ /* pfmem */
debug ("start address of pfmem is %x\n", start_address); debug("start address of pfmem is %x\n", start_address);
start_address &= PCI_BASE_ADDRESS_MEM_MASK; start_address &= PCI_BASE_ADDRESS_MEM_MASK;
if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) { if (ibmphp_find_resource(bus, start_address, &pfmem, PFMEM) < 0) {
err ("cannot find corresponding PFMEM resource to remove\n"); err("cannot find corresponding PFMEM resource to remove\n");
return -EIO; return -EIO;
} }
if (pfmem) { if (pfmem) {
debug ("pfmem->start = %x\n", pfmem->start); debug("pfmem->start = %x\n", pfmem->start);
ibmphp_remove_resource(pfmem); ibmphp_remove_resource(pfmem);
} }
} else { } else {
/* regular memory */ /* regular memory */
debug ("start address of mem is %x\n", start_address); debug("start address of mem is %x\n", start_address);
start_address &= PCI_BASE_ADDRESS_MEM_MASK; start_address &= PCI_BASE_ADDRESS_MEM_MASK;
if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) { if (ibmphp_find_resource(bus, start_address, &mem, MEM) < 0) {
err ("cannot find corresponding MEM resource to remove\n"); err("cannot find corresponding MEM resource to remove\n");
return -EIO; return -EIO;
} }
if (mem) { if (mem) {
debug ("mem->start = %x\n", mem->start); debug("mem->start = %x\n", mem->start);
ibmphp_remove_resource(mem); ibmphp_remove_resource(mem);
} }
...@@ -1329,7 +1329,7 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function) ...@@ -1329,7 +1329,7 @@ static int unconfigure_boot_device (u8 busno, u8 device, u8 function)
return 0; return 0;
} }
static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function) static int unconfigure_boot_bridge(u8 busno, u8 device, u8 function)
{ {
int count; int count;
int bus_no, pri_no, sub_no, sec_no = 0; int bus_no, pri_no, sub_no, sec_no = 0;
...@@ -1349,40 +1349,40 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function) ...@@ -1349,40 +1349,40 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
devfn = PCI_DEVFN(device, function); devfn = PCI_DEVFN(device, function);
ibmphp_pci_bus->number = busno; ibmphp_pci_bus->number = busno;
bus_no = (int) busno; bus_no = (int) busno;
debug ("busno is %x\n", busno); debug("busno is %x\n", busno);
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, &pri_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_PRIMARY_BUS, &pri_number);
debug ("%s - busno = %x, primary_number = %x\n", __func__, busno, pri_number); debug("%s - busno = %x, primary_number = %x\n", __func__, busno, pri_number);
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_number);
debug ("sec_number is %x\n", sec_number); debug("sec_number is %x\n", sec_number);
sec_no = (int) sec_number; sec_no = (int) sec_number;
pri_no = (int) pri_number; pri_no = (int) pri_number;
if (pri_no != bus_no) { if (pri_no != bus_no) {
err ("primary numbers in our structures and pci config space don't match.\n"); err("primary numbers in our structures and pci config space don't match.\n");
return -EINVAL; return -EINVAL;
} }
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, &sub_number); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SUBORDINATE_BUS, &sub_number);
sub_no = (int) sub_number; sub_no = (int) sub_number;
debug ("sub_no is %d, sec_no is %d\n", sub_no, sec_no); debug("sub_no is %d, sec_no is %d\n", sub_no, sec_no);
if (sec_no != sub_number) { if (sec_no != sub_number) {
err ("there're more buses behind this bridge. Hot removal is not supported. Please choose another card\n"); err("there're more buses behind this bridge. Hot removal is not supported. Please choose another card\n");
return -ENODEV; return -ENODEV;
} }
bus = ibmphp_find_res_bus (sec_number); bus = ibmphp_find_res_bus(sec_number);
if (!bus) { if (!bus) {
err ("cannot find Bus structure for the bridged device\n"); err("cannot find Bus structure for the bridged device\n");
return -EINVAL; return -EINVAL;
} }
debug("bus->busno is %x\n", bus->busno); debug("bus->busno is %x\n", bus->busno);
debug("sec_number is %x\n", sec_number); debug("sec_number is %x\n", sec_number);
ibmphp_remove_bus (bus, busno); ibmphp_remove_bus(bus, busno);
for (count = 0; address[count]; count++) { for (count = 0; address[count]; count++) {
/* for 2 BARs */ /* for 2 BARs */
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, address[count], &start_address); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, address[count], &start_address);
if (!start_address) { if (!start_address) {
/* This BAR is not implemented */ /* This BAR is not implemented */
...@@ -1394,14 +1394,14 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function) ...@@ -1394,14 +1394,14 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
if (start_address & PCI_BASE_ADDRESS_SPACE_IO) { if (start_address & PCI_BASE_ADDRESS_SPACE_IO) {
/* This is IO */ /* This is IO */
start_address &= PCI_BASE_ADDRESS_IO_MASK; start_address &= PCI_BASE_ADDRESS_IO_MASK;
if (ibmphp_find_resource (bus, start_address, &io, IO) < 0) { if (ibmphp_find_resource(bus, start_address, &io, IO) < 0) {
err ("cannot find corresponding IO resource to remove\n"); err("cannot find corresponding IO resource to remove\n");
return -EIO; return -EIO;
} }
if (io) if (io)
debug ("io->start = %x\n", io->start); debug("io->start = %x\n", io->start);
ibmphp_remove_resource (io); ibmphp_remove_resource(io);
/* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */ /* ????????? DO WE NEED TO WRITE ANYTHING INTO THE PCI CONFIG SPACE BACK ?????????? */
} else { } else {
...@@ -1409,24 +1409,24 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function) ...@@ -1409,24 +1409,24 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) { if (start_address & PCI_BASE_ADDRESS_MEM_PREFETCH) {
/* pfmem */ /* pfmem */
start_address &= PCI_BASE_ADDRESS_MEM_MASK; start_address &= PCI_BASE_ADDRESS_MEM_MASK;
if (ibmphp_find_resource (bus, start_address, &pfmem, PFMEM) < 0) { if (ibmphp_find_resource(bus, start_address, &pfmem, PFMEM) < 0) {
err ("cannot find corresponding PFMEM resource to remove\n"); err("cannot find corresponding PFMEM resource to remove\n");
return -EINVAL; return -EINVAL;
} }
if (pfmem) { if (pfmem) {
debug ("pfmem->start = %x\n", pfmem->start); debug("pfmem->start = %x\n", pfmem->start);
ibmphp_remove_resource(pfmem); ibmphp_remove_resource(pfmem);
} }
} else { } else {
/* regular memory */ /* regular memory */
start_address &= PCI_BASE_ADDRESS_MEM_MASK; start_address &= PCI_BASE_ADDRESS_MEM_MASK;
if (ibmphp_find_resource (bus, start_address, &mem, MEM) < 0) { if (ibmphp_find_resource(bus, start_address, &mem, MEM) < 0) {
err ("cannot find corresponding MEM resource to remove\n"); err("cannot find corresponding MEM resource to remove\n");
return -EINVAL; return -EINVAL;
} }
if (mem) { if (mem) {
debug ("mem->start = %x\n", mem->start); debug("mem->start = %x\n", mem->start);
ibmphp_remove_resource(mem); ibmphp_remove_resource(mem);
} }
...@@ -1437,11 +1437,11 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function) ...@@ -1437,11 +1437,11 @@ static int unconfigure_boot_bridge (u8 busno, u8 device, u8 function)
} }
} /* end of mem */ } /* end of mem */
} /* end of for */ } /* end of for */
debug ("%s - exiting, returning success\n", __func__); debug("%s - exiting, returning success\n", __func__);
return 0; return 0;
} }
static int unconfigure_boot_card (struct slot *slot_cur) static int unconfigure_boot_card(struct slot *slot_cur)
{ {
u16 vendor_id; u16 vendor_id;
u32 class; u32 class;
...@@ -1453,57 +1453,57 @@ static int unconfigure_boot_card (struct slot *slot_cur) ...@@ -1453,57 +1453,57 @@ static int unconfigure_boot_card (struct slot *slot_cur)
unsigned int devfn; unsigned int devfn;
u8 valid_device = 0x00; /* To see if we are ever able to find valid device and read it */ u8 valid_device = 0x00; /* To see if we are ever able to find valid device and read it */
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
device = slot_cur->device; device = slot_cur->device;
busno = slot_cur->bus; busno = slot_cur->bus;
debug ("b4 for loop, device is %x\n", device); debug("b4 for loop, device is %x\n", device);
/* For every function on the card */ /* For every function on the card */
for (function = 0x0; function < 0x08; function++) { for (function = 0x0; function < 0x08; function++) {
devfn = PCI_DEVFN(device, function); devfn = PCI_DEVFN(device, function);
ibmphp_pci_bus->number = busno; ibmphp_pci_bus->number = busno;
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id);
if (vendor_id != PCI_VENDOR_ID_NOTVALID) { if (vendor_id != PCI_VENDOR_ID_NOTVALID) {
/* found correct device!!! */ /* found correct device!!! */
++valid_device; ++valid_device;
debug ("%s - found correct device\n", __func__); debug("%s - found correct device\n", __func__);
/* header: x x x x x x x x /* header: x x x x x x x x
* | |___________|=> 1=PPB bridge, 0=normal device, 2=CardBus Bridge * | |___________|=> 1=PPB bridge, 0=normal device, 2=CardBus Bridge
* |_=> 0 = single function device, 1 = multi-function device * |_=> 0 = single function device, 1 = multi-function device
*/ */
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, PCI_CLASS_REVISION, &class);
debug ("hdr_type %x, class %x\n", hdr_type, class); debug("hdr_type %x, class %x\n", hdr_type, class);
class >>= 8; /* to take revision out, class = class.subclass.prog i/f */ class >>= 8; /* to take revision out, class = class.subclass.prog i/f */
if (class == PCI_CLASS_NOT_DEFINED_VGA) { if (class == PCI_CLASS_NOT_DEFINED_VGA) {
err ("The device %x function %x is VGA compatible and is not supported for hot removing. Please choose another device.\n", device, function); err("The device %x function %x is VGA compatible and is not supported for hot removing. Please choose another device.\n", device, function);
return -ENODEV; return -ENODEV;
} else if (class == PCI_CLASS_DISPLAY_VGA) { } else if (class == PCI_CLASS_DISPLAY_VGA) {
err ("The device %x function %x is not supported for hot removing. Please choose another device.\n", device, function); err("The device %x function %x is not supported for hot removing. Please choose another device.\n", device, function);
return -ENODEV; return -ENODEV;
} }
switch (hdr_type) { switch (hdr_type) {
case PCI_HEADER_TYPE_NORMAL: case PCI_HEADER_TYPE_NORMAL:
rc = unconfigure_boot_device (busno, device, function); rc = unconfigure_boot_device(busno, device, function);
if (rc) { if (rc) {
err ("was not able to unconfigure device %x func %x on bus %x. bailing out...\n", err("was not able to unconfigure device %x func %x on bus %x. bailing out...\n",
device, function, busno); device, function, busno);
return rc; return rc;
} }
function = 0x8; function = 0x8;
break; break;
case PCI_HEADER_TYPE_MULTIDEVICE: case PCI_HEADER_TYPE_MULTIDEVICE:
rc = unconfigure_boot_device (busno, device, function); rc = unconfigure_boot_device(busno, device, function);
if (rc) { if (rc) {
err ("was not able to unconfigure device %x func %x on bus %x. bailing out...\n", err("was not able to unconfigure device %x func %x on bus %x. bailing out...\n",
device, function, busno); device, function, busno);
return rc; return rc;
} }
...@@ -1511,12 +1511,12 @@ static int unconfigure_boot_card (struct slot *slot_cur) ...@@ -1511,12 +1511,12 @@ static int unconfigure_boot_card (struct slot *slot_cur)
case PCI_HEADER_TYPE_BRIDGE: case PCI_HEADER_TYPE_BRIDGE:
class >>= 8; class >>= 8;
if (class != PCI_CLASS_BRIDGE_PCI) { if (class != PCI_CLASS_BRIDGE_PCI) {
err ("This device %x function %x is not PCI-to-PCI bridge, and is not supported for hot-removing. Please try another card.\n", device, function); err("This device %x function %x is not PCI-to-PCI bridge, and is not supported for hot-removing. Please try another card.\n", device, function);
return -ENODEV; return -ENODEV;
} }
rc = unconfigure_boot_bridge (busno, device, function); rc = unconfigure_boot_bridge(busno, device, function);
if (rc != 0) { if (rc != 0) {
err ("was not able to hot-remove PPB properly.\n"); err("was not able to hot-remove PPB properly.\n");
return rc; return rc;
} }
...@@ -1525,17 +1525,17 @@ static int unconfigure_boot_card (struct slot *slot_cur) ...@@ -1525,17 +1525,17 @@ static int unconfigure_boot_card (struct slot *slot_cur)
case PCI_HEADER_TYPE_MULTIBRIDGE: case PCI_HEADER_TYPE_MULTIBRIDGE:
class >>= 8; class >>= 8;
if (class != PCI_CLASS_BRIDGE_PCI) { if (class != PCI_CLASS_BRIDGE_PCI) {
err ("This device %x function %x is not PCI-to-PCI bridge, and is not supported for hot-removing. Please try another card.\n", device, function); err("This device %x function %x is not PCI-to-PCI bridge, and is not supported for hot-removing. Please try another card.\n", device, function);
return -ENODEV; return -ENODEV;
} }
rc = unconfigure_boot_bridge (busno, device, function); rc = unconfigure_boot_bridge(busno, device, function);
if (rc != 0) { if (rc != 0) {
err ("was not able to hot-remove PPB properly.\n"); err("was not able to hot-remove PPB properly.\n");
return rc; return rc;
} }
break; break;
default: default:
err ("MAJOR PROBLEM!!!! Cannot read device's header\n"); err("MAJOR PROBLEM!!!! Cannot read device's header\n");
return -1; return -1;
break; break;
} /* end of switch */ } /* end of switch */
...@@ -1543,7 +1543,7 @@ static int unconfigure_boot_card (struct slot *slot_cur) ...@@ -1543,7 +1543,7 @@ static int unconfigure_boot_card (struct slot *slot_cur)
} /* end of for */ } /* end of for */
if (!valid_device) { if (!valid_device) {
err ("Could not find device to unconfigure. Or could not read the card.\n"); err("Could not find device to unconfigure. Or could not read the card.\n");
return -1; return -1;
} }
return 0; return 0;
...@@ -1558,7 +1558,7 @@ static int unconfigure_boot_card (struct slot *slot_cur) ...@@ -1558,7 +1558,7 @@ static int unconfigure_boot_card (struct slot *slot_cur)
* !!!!!!!!!!!!!!!!!!!!!!!!!FOR BUSES!!!!!!!!!!!! * !!!!!!!!!!!!!!!!!!!!!!!!!FOR BUSES!!!!!!!!!!!!
* Returns: 0, -1, -ENODEV * Returns: 0, -1, -ENODEV
*/ */
int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end) int ibmphp_unconfigure_card(struct slot **slot_cur, int the_end)
{ {
int i; int i;
int count; int count;
...@@ -1567,11 +1567,11 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end) ...@@ -1567,11 +1567,11 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end)
struct pci_func *cur_func = NULL; struct pci_func *cur_func = NULL;
struct pci_func *temp_func; struct pci_func *temp_func;
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
if (!the_end) { if (!the_end) {
/* Need to unconfigure the card */ /* Need to unconfigure the card */
rc = unconfigure_boot_card (sl); rc = unconfigure_boot_card(sl);
if ((rc == -ENODEV) || (rc == -EIO) || (rc == -EINVAL)) { if ((rc == -ENODEV) || (rc == -EIO) || (rc == -EINVAL)) {
/* In all other cases, will still need to get rid of func structure if it exists */ /* In all other cases, will still need to get rid of func structure if it exists */
return rc; return rc;
...@@ -1591,34 +1591,34 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end) ...@@ -1591,34 +1591,34 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end)
for (i = 0; i < count; i++) { for (i = 0; i < count; i++) {
if (cur_func->io[i]) { if (cur_func->io[i]) {
debug ("io[%d] exists\n", i); debug("io[%d] exists\n", i);
if (the_end > 0) if (the_end > 0)
ibmphp_remove_resource (cur_func->io[i]); ibmphp_remove_resource(cur_func->io[i]);
cur_func->io[i] = NULL; cur_func->io[i] = NULL;
} }
if (cur_func->mem[i]) { if (cur_func->mem[i]) {
debug ("mem[%d] exists\n", i); debug("mem[%d] exists\n", i);
if (the_end > 0) if (the_end > 0)
ibmphp_remove_resource (cur_func->mem[i]); ibmphp_remove_resource(cur_func->mem[i]);
cur_func->mem[i] = NULL; cur_func->mem[i] = NULL;
} }
if (cur_func->pfmem[i]) { if (cur_func->pfmem[i]) {
debug ("pfmem[%d] exists\n", i); debug("pfmem[%d] exists\n", i);
if (the_end > 0) if (the_end > 0)
ibmphp_remove_resource (cur_func->pfmem[i]); ibmphp_remove_resource(cur_func->pfmem[i]);
cur_func->pfmem[i] = NULL; cur_func->pfmem[i] = NULL;
} }
} }
temp_func = cur_func->next; temp_func = cur_func->next;
kfree (cur_func); kfree(cur_func);
cur_func = temp_func; cur_func = temp_func;
} }
} }
sl->func = NULL; sl->func = NULL;
*slot_cur = sl; *slot_cur = sl;
debug ("%s - exit\n", __func__); debug("%s - exit\n", __func__);
return 0; return 0;
} }
...@@ -1630,7 +1630,7 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end) ...@@ -1630,7 +1630,7 @@ int ibmphp_unconfigure_card (struct slot **slot_cur, int the_end)
* Output: bus added to the correct spot * Output: bus added to the correct spot
* 0, -1, error * 0, -1, error
*/ */
static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct resource_node *mem, struct resource_node *pfmem, u8 parent_busno) static int add_new_bus(struct bus_node *bus, struct resource_node *io, struct resource_node *mem, struct resource_node *pfmem, u8 parent_busno)
{ {
struct range_node *io_range = NULL; struct range_node *io_range = NULL;
struct range_node *mem_range = NULL; struct range_node *mem_range = NULL;
...@@ -1639,18 +1639,18 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r ...@@ -1639,18 +1639,18 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r
/* Trying to find the parent bus number */ /* Trying to find the parent bus number */
if (parent_busno != 0xFF) { if (parent_busno != 0xFF) {
cur_bus = ibmphp_find_res_bus (parent_busno); cur_bus = ibmphp_find_res_bus(parent_busno);
if (!cur_bus) { if (!cur_bus) {
err ("strange, cannot find bus which is supposed to be at the system... something is terribly wrong...\n"); err("strange, cannot find bus which is supposed to be at the system... something is terribly wrong...\n");
return -ENODEV; return -ENODEV;
} }
list_add (&bus->bus_list, &cur_bus->bus_list); list_add(&bus->bus_list, &cur_bus->bus_list);
} }
if (io) { if (io) {
io_range = kzalloc(sizeof(*io_range), GFP_KERNEL); io_range = kzalloc(sizeof(*io_range), GFP_KERNEL);
if (!io_range) { if (!io_range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
io_range->start = io->start; io_range->start = io->start;
...@@ -1662,7 +1662,7 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r ...@@ -1662,7 +1662,7 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r
if (mem) { if (mem) {
mem_range = kzalloc(sizeof(*mem_range), GFP_KERNEL); mem_range = kzalloc(sizeof(*mem_range), GFP_KERNEL);
if (!mem_range) { if (!mem_range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
mem_range->start = mem->start; mem_range->start = mem->start;
...@@ -1674,7 +1674,7 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r ...@@ -1674,7 +1674,7 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r
if (pfmem) { if (pfmem) {
pfmem_range = kzalloc(sizeof(*pfmem_range), GFP_KERNEL); pfmem_range = kzalloc(sizeof(*pfmem_range), GFP_KERNEL);
if (!pfmem_range) { if (!pfmem_range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
pfmem_range->start = pfmem->start; pfmem_range->start = pfmem->start;
...@@ -1691,27 +1691,27 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r ...@@ -1691,27 +1691,27 @@ static int add_new_bus (struct bus_node *bus, struct resource_node *io, struct r
* Parameters: bus_number of the primary bus * Parameters: bus_number of the primary bus
* Returns: bus_number of the secondary bus or 0xff in case of failure * Returns: bus_number of the secondary bus or 0xff in case of failure
*/ */
static u8 find_sec_number (u8 primary_busno, u8 slotno) static u8 find_sec_number(u8 primary_busno, u8 slotno)
{ {
int min, max; int min, max;
u8 busno; u8 busno;
struct bus_info *bus; struct bus_info *bus;
struct bus_node *bus_cur; struct bus_node *bus_cur;
bus = ibmphp_find_same_bus_num (primary_busno); bus = ibmphp_find_same_bus_num(primary_busno);
if (!bus) { if (!bus) {
err ("cannot get slot range of the bus from the BIOS\n"); err("cannot get slot range of the bus from the BIOS\n");
return 0xff; return 0xff;
} }
max = bus->slot_max; max = bus->slot_max;
min = bus->slot_min; min = bus->slot_min;
if ((slotno > max) || (slotno < min)) { if ((slotno > max) || (slotno < min)) {
err ("got the wrong range\n"); err("got the wrong range\n");
return 0xff; return 0xff;
} }
busno = (u8) (slotno - (u8) min); busno = (u8) (slotno - (u8) min);
busno += primary_busno + 0x01; busno += primary_busno + 0x01;
bus_cur = ibmphp_find_res_bus (busno); bus_cur = ibmphp_find_res_bus(busno);
/* either there is no such bus number, or there are no ranges, which /* either there is no such bus number, or there are no ranges, which
* can only happen if we removed the bridged device in previous load * can only happen if we removed the bridged device in previous load
* of the driver, and now only have the skeleton bus struct * of the driver, and now only have the skeleton bus struct
......
...@@ -36,28 +36,28 @@ ...@@ -36,28 +36,28 @@
static int flags = 0; /* for testing */ static int flags = 0; /* for testing */
static void update_resources (struct bus_node *bus_cur, int type, int rangeno); static void update_resources(struct bus_node *bus_cur, int type, int rangeno);
static int once_over (void); static int once_over(void);
static int remove_ranges (struct bus_node *, struct bus_node *); static int remove_ranges(struct bus_node *, struct bus_node *);
static int update_bridge_ranges (struct bus_node **); static int update_bridge_ranges(struct bus_node **);
static int add_bus_range (int type, struct range_node *, struct bus_node *); static int add_bus_range(int type, struct range_node *, struct bus_node *);
static void fix_resources (struct bus_node *); static void fix_resources(struct bus_node *);
static struct bus_node *find_bus_wprev (u8, struct bus_node **, u8); static struct bus_node *find_bus_wprev(u8, struct bus_node **, u8);
static LIST_HEAD(gbuses); static LIST_HEAD(gbuses);
static struct bus_node * __init alloc_error_bus (struct ebda_pci_rsrc *curr, u8 busno, int flag) static struct bus_node * __init alloc_error_bus(struct ebda_pci_rsrc *curr, u8 busno, int flag)
{ {
struct bus_node *newbus; struct bus_node *newbus;
if (!(curr) && !(flag)) { if (!(curr) && !(flag)) {
err ("NULL pointer passed\n"); err("NULL pointer passed\n");
return NULL; return NULL;
} }
newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL); newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL);
if (!newbus) { if (!newbus) {
err ("out of system memory\n"); err("out of system memory\n");
return NULL; return NULL;
} }
...@@ -65,22 +65,22 @@ static struct bus_node * __init alloc_error_bus (struct ebda_pci_rsrc *curr, u8 ...@@ -65,22 +65,22 @@ static struct bus_node * __init alloc_error_bus (struct ebda_pci_rsrc *curr, u8
newbus->busno = busno; newbus->busno = busno;
else else
newbus->busno = curr->bus_num; newbus->busno = curr->bus_num;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
return newbus; return newbus;
} }
static struct resource_node * __init alloc_resources (struct ebda_pci_rsrc *curr) static struct resource_node * __init alloc_resources(struct ebda_pci_rsrc *curr)
{ {
struct resource_node *rs; struct resource_node *rs;
if (!curr) { if (!curr) {
err ("NULL passed to allocate\n"); err("NULL passed to allocate\n");
return NULL; return NULL;
} }
rs = kzalloc(sizeof(struct resource_node), GFP_KERNEL); rs = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!rs) { if (!rs) {
err ("out of system memory\n"); err("out of system memory\n");
return NULL; return NULL;
} }
rs->busno = curr->bus_num; rs->busno = curr->bus_num;
...@@ -91,7 +91,7 @@ static struct resource_node * __init alloc_resources (struct ebda_pci_rsrc *curr ...@@ -91,7 +91,7 @@ static struct resource_node * __init alloc_resources (struct ebda_pci_rsrc *curr
return rs; return rs;
} }
static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node **new_range, struct ebda_pci_rsrc *curr, int flag, u8 first_bus) static int __init alloc_bus_range(struct bus_node **new_bus, struct range_node **new_range, struct ebda_pci_rsrc *curr, int flag, u8 first_bus)
{ {
struct bus_node *newbus; struct bus_node *newbus;
struct range_node *newrange; struct range_node *newrange;
...@@ -100,7 +100,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -100,7 +100,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
if (first_bus) { if (first_bus) {
newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL); newbus = kzalloc(sizeof(struct bus_node), GFP_KERNEL);
if (!newbus) { if (!newbus) {
err ("out of system memory.\n"); err("out of system memory.\n");
return -ENOMEM; return -ENOMEM;
} }
newbus->busno = curr->bus_num; newbus->busno = curr->bus_num;
...@@ -122,8 +122,8 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -122,8 +122,8 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
newrange = kzalloc(sizeof(struct range_node), GFP_KERNEL); newrange = kzalloc(sizeof(struct range_node), GFP_KERNEL);
if (!newrange) { if (!newrange) {
if (first_bus) if (first_bus)
kfree (newbus); kfree(newbus);
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
newrange->start = curr->start_addr; newrange->start = curr->start_addr;
...@@ -133,8 +133,8 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -133,8 +133,8 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
newrange->rangeno = 1; newrange->rangeno = 1;
else { else {
/* need to insert our range */ /* need to insert our range */
add_bus_range (flag, newrange, newbus); add_bus_range(flag, newrange, newbus);
debug ("%d resource Primary Bus inserted on bus %x [%x - %x]\n", flag, newbus->busno, newrange->start, newrange->end); debug("%d resource Primary Bus inserted on bus %x [%x - %x]\n", flag, newbus->busno, newrange->start, newrange->end);
} }
switch (flag) { switch (flag) {
...@@ -143,9 +143,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -143,9 +143,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
if (first_bus) if (first_bus)
newbus->noMemRanges = 1; newbus->noMemRanges = 1;
else { else {
debug ("First Memory Primary on bus %x, [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("First Memory Primary on bus %x, [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
++newbus->noMemRanges; ++newbus->noMemRanges;
fix_resources (newbus); fix_resources(newbus);
} }
break; break;
case IO: case IO:
...@@ -153,9 +153,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -153,9 +153,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
if (first_bus) if (first_bus)
newbus->noIORanges = 1; newbus->noIORanges = 1;
else { else {
debug ("First IO Primary on bus %x, [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("First IO Primary on bus %x, [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
++newbus->noIORanges; ++newbus->noIORanges;
fix_resources (newbus); fix_resources(newbus);
} }
break; break;
case PFMEM: case PFMEM:
...@@ -163,9 +163,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -163,9 +163,9 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
if (first_bus) if (first_bus)
newbus->noPFMemRanges = 1; newbus->noPFMemRanges = 1;
else { else {
debug ("1st PFMemory Primary on Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("1st PFMemory Primary on Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
++newbus->noPFMemRanges; ++newbus->noPFMemRanges;
fix_resources (newbus); fix_resources(newbus);
} }
break; break;
...@@ -183,7 +183,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -183,7 +183,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
* 2. If cannot allocate out of PFMem range, allocate from Mem ranges. PFmemFromMem * 2. If cannot allocate out of PFMem range, allocate from Mem ranges. PFmemFromMem
* are not sorted. (no need since use mem node). To not change the entire code, we * are not sorted. (no need since use mem node). To not change the entire code, we
* also add mem node whenever this case happens so as not to change * also add mem node whenever this case happens so as not to change
* ibmphp_check_mem_resource etc (and since it really is taking Mem resource) * ibmphp_check_mem_resource etc(and since it really is taking Mem resource)
*/ */
/***************************************************************************** /*****************************************************************************
...@@ -196,7 +196,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node ...@@ -196,7 +196,7 @@ static int __init alloc_bus_range (struct bus_node **new_bus, struct range_node
* Input: ptr to the head of the resource list from EBDA * Input: ptr to the head of the resource list from EBDA
* Output: 0, -1 or error codes * Output: 0, -1 or error codes
***************************************************************************/ ***************************************************************************/
int __init ibmphp_rsrc_init (void) int __init ibmphp_rsrc_init(void)
{ {
struct ebda_pci_rsrc *curr; struct ebda_pci_rsrc *curr;
struct range_node *newrange = NULL; struct range_node *newrange = NULL;
...@@ -212,7 +212,7 @@ int __init ibmphp_rsrc_init (void) ...@@ -212,7 +212,7 @@ int __init ibmphp_rsrc_init (void)
ebda_pci_rsrc_list) { ebda_pci_rsrc_list) {
if (!(curr->rsrc_type & PCIDEVMASK)) { if (!(curr->rsrc_type & PCIDEVMASK)) {
/* EBDA still lists non PCI devices, so ignore... */ /* EBDA still lists non PCI devices, so ignore... */
debug ("this is not a PCI DEVICE in rsrc_init, please take care\n"); debug("this is not a PCI DEVICE in rsrc_init, please take care\n");
// continue; // continue;
} }
...@@ -221,17 +221,17 @@ int __init ibmphp_rsrc_init (void) ...@@ -221,17 +221,17 @@ int __init ibmphp_rsrc_init (void)
/* memory */ /* memory */
if ((curr->rsrc_type & RESTYPE) == MMASK) { if ((curr->rsrc_type & RESTYPE) == MMASK) {
/* no bus structure exists in place yet */ /* no bus structure exists in place yet */
if (list_empty (&gbuses)) { if (list_empty(&gbuses)) {
rc = alloc_bus_range(&newbus, &newrange, curr, MEM, 1); rc = alloc_bus_range(&newbus, &newrange, curr, MEM, 1);
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("gbuses = NULL, Memory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("gbuses = NULL, Memory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} else { } else {
bus_cur = find_bus_wprev (curr->bus_num, &bus_prev, 1); bus_cur = find_bus_wprev(curr->bus_num, &bus_prev, 1);
/* found our bus */ /* found our bus */
if (bus_cur) { if (bus_cur) {
rc = alloc_bus_range (&bus_cur, &newrange, curr, MEM, 0); rc = alloc_bus_range(&bus_cur, &newrange, curr, MEM, 0);
if (rc) if (rc)
return rc; return rc;
} else { } else {
...@@ -240,24 +240,24 @@ int __init ibmphp_rsrc_init (void) ...@@ -240,24 +240,24 @@ int __init ibmphp_rsrc_init (void)
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("New Bus, Memory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("New Bus, Memory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} }
} }
} else if ((curr->rsrc_type & RESTYPE) == PFMASK) { } else if ((curr->rsrc_type & RESTYPE) == PFMASK) {
/* prefetchable memory */ /* prefetchable memory */
if (list_empty (&gbuses)) { if (list_empty(&gbuses)) {
/* no bus structure exists in place yet */ /* no bus structure exists in place yet */
rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1); rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1);
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("gbuses = NULL, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("gbuses = NULL, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} else { } else {
bus_cur = find_bus_wprev (curr->bus_num, &bus_prev, 1); bus_cur = find_bus_wprev(curr->bus_num, &bus_prev, 1);
if (bus_cur) { if (bus_cur) {
/* found our bus */ /* found our bus */
rc = alloc_bus_range (&bus_cur, &newrange, curr, PFMEM, 0); rc = alloc_bus_range(&bus_cur, &newrange, curr, PFMEM, 0);
if (rc) if (rc)
return rc; return rc;
} else { } else {
...@@ -265,23 +265,23 @@ int __init ibmphp_rsrc_init (void) ...@@ -265,23 +265,23 @@ int __init ibmphp_rsrc_init (void)
rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1); rc = alloc_bus_range(&newbus, &newrange, curr, PFMEM, 1);
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("1st Bus, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("1st Bus, PFMemory Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} }
} }
} else if ((curr->rsrc_type & RESTYPE) == IOMASK) { } else if ((curr->rsrc_type & RESTYPE) == IOMASK) {
/* IO */ /* IO */
if (list_empty (&gbuses)) { if (list_empty(&gbuses)) {
/* no bus structure exists in place yet */ /* no bus structure exists in place yet */
rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1); rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1);
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("gbuses = NULL, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("gbuses = NULL, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} else { } else {
bus_cur = find_bus_wprev (curr->bus_num, &bus_prev, 1); bus_cur = find_bus_wprev(curr->bus_num, &bus_prev, 1);
if (bus_cur) { if (bus_cur) {
rc = alloc_bus_range (&bus_cur, &newrange, curr, IO, 0); rc = alloc_bus_range(&bus_cur, &newrange, curr, IO, 0);
if (rc) if (rc)
return rc; return rc;
} else { } else {
...@@ -289,8 +289,8 @@ int __init ibmphp_rsrc_init (void) ...@@ -289,8 +289,8 @@ int __init ibmphp_rsrc_init (void)
rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1); rc = alloc_bus_range(&newbus, &newrange, curr, IO, 1);
if (rc) if (rc)
return rc; return rc;
list_add_tail (&newbus->bus_list, &gbuses); list_add_tail(&newbus->bus_list, &gbuses);
debug ("1st Bus, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end); debug("1st Bus, IO Primary Bus %x [%x - %x]\n", newbus->busno, newrange->start, newrange->end);
} }
} }
...@@ -302,7 +302,7 @@ int __init ibmphp_rsrc_init (void) ...@@ -302,7 +302,7 @@ int __init ibmphp_rsrc_init (void)
/* regular pci device resource */ /* regular pci device resource */
if ((curr->rsrc_type & RESTYPE) == MMASK) { if ((curr->rsrc_type & RESTYPE) == MMASK) {
/* Memory resource */ /* Memory resource */
new_mem = alloc_resources (curr); new_mem = alloc_resources(curr);
if (!new_mem) if (!new_mem)
return -ENOMEM; return -ENOMEM;
new_mem->type = MEM; new_mem->type = MEM;
...@@ -313,25 +313,25 @@ int __init ibmphp_rsrc_init (void) ...@@ -313,25 +313,25 @@ int __init ibmphp_rsrc_init (void)
* assign a -1 and then update once the range * assign a -1 and then update once the range
* actually appears... * actually appears...
*/ */
if (ibmphp_add_resource (new_mem) < 0) { if (ibmphp_add_resource(new_mem) < 0) {
newbus = alloc_error_bus (curr, 0, 0); newbus = alloc_error_bus(curr, 0, 0);
if (!newbus) if (!newbus)
return -ENOMEM; return -ENOMEM;
newbus->firstMem = new_mem; newbus->firstMem = new_mem;
++newbus->needMemUpdate; ++newbus->needMemUpdate;
new_mem->rangeno = -1; new_mem->rangeno = -1;
} }
debug ("Memory resource for device %x, bus %x, [%x - %x]\n", new_mem->devfunc, new_mem->busno, new_mem->start, new_mem->end); debug("Memory resource for device %x, bus %x, [%x - %x]\n", new_mem->devfunc, new_mem->busno, new_mem->start, new_mem->end);
} else if ((curr->rsrc_type & RESTYPE) == PFMASK) { } else if ((curr->rsrc_type & RESTYPE) == PFMASK) {
/* PFMemory resource */ /* PFMemory resource */
new_pfmem = alloc_resources (curr); new_pfmem = alloc_resources(curr);
if (!new_pfmem) if (!new_pfmem)
return -ENOMEM; return -ENOMEM;
new_pfmem->type = PFMEM; new_pfmem->type = PFMEM;
new_pfmem->fromMem = 0; new_pfmem->fromMem = 0;
if (ibmphp_add_resource (new_pfmem) < 0) { if (ibmphp_add_resource(new_pfmem) < 0) {
newbus = alloc_error_bus (curr, 0, 0); newbus = alloc_error_bus(curr, 0, 0);
if (!newbus) if (!newbus)
return -ENOMEM; return -ENOMEM;
newbus->firstPFMem = new_pfmem; newbus->firstPFMem = new_pfmem;
...@@ -339,10 +339,10 @@ int __init ibmphp_rsrc_init (void) ...@@ -339,10 +339,10 @@ int __init ibmphp_rsrc_init (void)
new_pfmem->rangeno = -1; new_pfmem->rangeno = -1;
} }
debug ("PFMemory resource for device %x, bus %x, [%x - %x]\n", new_pfmem->devfunc, new_pfmem->busno, new_pfmem->start, new_pfmem->end); debug("PFMemory resource for device %x, bus %x, [%x - %x]\n", new_pfmem->devfunc, new_pfmem->busno, new_pfmem->start, new_pfmem->end);
} else if ((curr->rsrc_type & RESTYPE) == IOMASK) { } else if ((curr->rsrc_type & RESTYPE) == IOMASK) {
/* IO resource */ /* IO resource */
new_io = alloc_resources (curr); new_io = alloc_resources(curr);
if (!new_io) if (!new_io)
return -ENOMEM; return -ENOMEM;
new_io->type = IO; new_io->type = IO;
...@@ -354,26 +354,26 @@ int __init ibmphp_rsrc_init (void) ...@@ -354,26 +354,26 @@ int __init ibmphp_rsrc_init (void)
* Can assign a -1 and then update once the * Can assign a -1 and then update once the
* range actually appears... * range actually appears...
*/ */
if (ibmphp_add_resource (new_io) < 0) { if (ibmphp_add_resource(new_io) < 0) {
newbus = alloc_error_bus (curr, 0, 0); newbus = alloc_error_bus(curr, 0, 0);
if (!newbus) if (!newbus)
return -ENOMEM; return -ENOMEM;
newbus->firstIO = new_io; newbus->firstIO = new_io;
++newbus->needIOUpdate; ++newbus->needIOUpdate;
new_io->rangeno = -1; new_io->rangeno = -1;
} }
debug ("IO resource for device %x, bus %x, [%x - %x]\n", new_io->devfunc, new_io->busno, new_io->start, new_io->end); debug("IO resource for device %x, bus %x, [%x - %x]\n", new_io->devfunc, new_io->busno, new_io->start, new_io->end);
} }
} }
} }
list_for_each_entry(bus_cur, &gbuses, bus_list) { list_for_each_entry(bus_cur, &gbuses, bus_list) {
/* This is to get info about PPB resources, since EBDA doesn't put this info into the primary bus info */ /* This is to get info about PPB resources, since EBDA doesn't put this info into the primary bus info */
rc = update_bridge_ranges (&bus_cur); rc = update_bridge_ranges(&bus_cur);
if (rc) if (rc)
return rc; return rc;
} }
return once_over (); /* This is to align ranges (so no -1) */ return once_over(); /* This is to align ranges (so no -1) */
} }
/******************************************************************************** /********************************************************************************
...@@ -384,7 +384,7 @@ int __init ibmphp_rsrc_init (void) ...@@ -384,7 +384,7 @@ int __init ibmphp_rsrc_init (void)
* Input: type of the resource, range to add, current bus * Input: type of the resource, range to add, current bus
* Output: 0 or -1, bus and range ptrs * Output: 0 or -1, bus and range ptrs
********************************************************************************/ ********************************************************************************/
static int add_bus_range (int type, struct range_node *range, struct bus_node *bus_cur) static int add_bus_range(int type, struct range_node *range, struct bus_node *bus_cur)
{ {
struct range_node *range_cur = NULL; struct range_node *range_cur = NULL;
struct range_node *range_prev; struct range_node *range_prev;
...@@ -449,7 +449,7 @@ static int add_bus_range (int type, struct range_node *range, struct bus_node *b ...@@ -449,7 +449,7 @@ static int add_bus_range (int type, struct range_node *range, struct bus_node *b
range_cur = range_cur->next; range_cur = range_cur->next;
} }
update_resources (bus_cur, type, i_init + 1); update_resources(bus_cur, type, i_init + 1);
return 0; return 0;
} }
...@@ -459,7 +459,7 @@ static int add_bus_range (int type, struct range_node *range, struct bus_node *b ...@@ -459,7 +459,7 @@ static int add_bus_range (int type, struct range_node *range, struct bus_node *b
* *
* Input: bus, type of the resource, the rangeno starting from which to update * Input: bus, type of the resource, the rangeno starting from which to update
******************************************************************************/ ******************************************************************************/
static void update_resources (struct bus_node *bus_cur, int type, int rangeno) static void update_resources(struct bus_node *bus_cur, int type, int rangeno)
{ {
struct resource_node *res = NULL; struct resource_node *res = NULL;
u8 eol = 0; /* end of list indicator */ u8 eol = 0; /* end of list indicator */
...@@ -503,9 +503,9 @@ static void update_resources (struct bus_node *bus_cur, int type, int rangeno) ...@@ -503,9 +503,9 @@ static void update_resources (struct bus_node *bus_cur, int type, int rangeno)
} }
} }
static void fix_me (struct resource_node *res, struct bus_node *bus_cur, struct range_node *range) static void fix_me(struct resource_node *res, struct bus_node *bus_cur, struct range_node *range)
{ {
char * str = ""; char *str = "";
switch (res->type) { switch (res->type) {
case IO: case IO:
str = "io"; str = "io";
...@@ -523,7 +523,7 @@ static void fix_me (struct resource_node *res, struct bus_node *bus_cur, struct ...@@ -523,7 +523,7 @@ static void fix_me (struct resource_node *res, struct bus_node *bus_cur, struct
while (range) { while (range) {
if ((res->start >= range->start) && (res->end <= range->end)) { if ((res->start >= range->start) && (res->end <= range->end)) {
res->rangeno = range->rangeno; res->rangeno = range->rangeno;
debug ("%s->rangeno in fix_resources is %d\n", str, res->rangeno); debug("%s->rangeno in fix_resources is %d\n", str, res->rangeno);
switch (res->type) { switch (res->type) {
case IO: case IO:
--bus_cur->needIOUpdate; --bus_cur->needIOUpdate;
...@@ -558,27 +558,27 @@ static void fix_me (struct resource_node *res, struct bus_node *bus_cur, struct ...@@ -558,27 +558,27 @@ static void fix_me (struct resource_node *res, struct bus_node *bus_cur, struct
* Input: current bus * Input: current bus
* Output: none, list of resources for that bus are fixed if can be * Output: none, list of resources for that bus are fixed if can be
*******************************************************************************/ *******************************************************************************/
static void fix_resources (struct bus_node *bus_cur) static void fix_resources(struct bus_node *bus_cur)
{ {
struct range_node *range; struct range_node *range;
struct resource_node *res; struct resource_node *res;
debug ("%s - bus_cur->busno = %d\n", __func__, bus_cur->busno); debug("%s - bus_cur->busno = %d\n", __func__, bus_cur->busno);
if (bus_cur->needIOUpdate) { if (bus_cur->needIOUpdate) {
res = bus_cur->firstIO; res = bus_cur->firstIO;
range = bus_cur->rangeIO; range = bus_cur->rangeIO;
fix_me (res, bus_cur, range); fix_me(res, bus_cur, range);
} }
if (bus_cur->needMemUpdate) { if (bus_cur->needMemUpdate) {
res = bus_cur->firstMem; res = bus_cur->firstMem;
range = bus_cur->rangeMem; range = bus_cur->rangeMem;
fix_me (res, bus_cur, range); fix_me(res, bus_cur, range);
} }
if (bus_cur->needPFMemUpdate) { if (bus_cur->needPFMemUpdate) {
res = bus_cur->firstPFMem; res = bus_cur->firstPFMem;
range = bus_cur->rangePFMem; range = bus_cur->rangePFMem;
fix_me (res, bus_cur, range); fix_me(res, bus_cur, range);
} }
} }
...@@ -591,7 +591,7 @@ static void fix_resources (struct bus_node *bus_cur) ...@@ -591,7 +591,7 @@ static void fix_resources (struct bus_node *bus_cur)
* Output: ptrs assigned (to the node) * Output: ptrs assigned (to the node)
* 0 or -1 * 0 or -1
*******************************************************************************/ *******************************************************************************/
int ibmphp_add_resource (struct resource_node *res) int ibmphp_add_resource(struct resource_node *res)
{ {
struct resource_node *res_cur; struct resource_node *res_cur;
struct resource_node *res_prev; struct resource_node *res_prev;
...@@ -599,18 +599,18 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -599,18 +599,18 @@ int ibmphp_add_resource (struct resource_node *res)
struct range_node *range_cur = NULL; struct range_node *range_cur = NULL;
struct resource_node *res_start = NULL; struct resource_node *res_start = NULL;
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
if (!res) { if (!res) {
err ("NULL passed to add\n"); err("NULL passed to add\n");
return -ENODEV; return -ENODEV;
} }
bus_cur = find_bus_wprev (res->busno, NULL, 0); bus_cur = find_bus_wprev(res->busno, NULL, 0);
if (!bus_cur) { if (!bus_cur) {
/* didn't find a bus, something's wrong!!! */ /* didn't find a bus, something's wrong!!! */
debug ("no bus in the system, either pci_dev's wrong or allocation failed\n"); debug("no bus in the system, either pci_dev's wrong or allocation failed\n");
return -ENODEV; return -ENODEV;
} }
...@@ -629,7 +629,7 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -629,7 +629,7 @@ int ibmphp_add_resource (struct resource_node *res)
res_start = bus_cur->firstPFMem; res_start = bus_cur->firstPFMem;
break; break;
default: default:
err ("cannot read the type of the resource to add... problem\n"); err("cannot read the type of the resource to add... problem\n");
return -EINVAL; return -EINVAL;
} }
while (range_cur) { while (range_cur) {
...@@ -660,7 +660,7 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -660,7 +660,7 @@ int ibmphp_add_resource (struct resource_node *res)
res->rangeno = -1; res->rangeno = -1;
} }
debug ("The range is %d\n", res->rangeno); debug("The range is %d\n", res->rangeno);
if (!res_start) { if (!res_start) {
/* no first{IO,Mem,Pfmem} on the bus, 1st IO/Mem/Pfmem resource ever */ /* no first{IO,Mem,Pfmem} on the bus, 1st IO/Mem/Pfmem resource ever */
switch (res->type) { switch (res->type) {
...@@ -680,7 +680,7 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -680,7 +680,7 @@ int ibmphp_add_resource (struct resource_node *res)
res_cur = res_start; res_cur = res_start;
res_prev = NULL; res_prev = NULL;
debug ("res_cur->rangeno is %d\n", res_cur->rangeno); debug("res_cur->rangeno is %d\n", res_cur->rangeno);
while (res_cur) { while (res_cur) {
if (res_cur->rangeno >= res->rangeno) if (res_cur->rangeno >= res->rangeno)
...@@ -694,7 +694,7 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -694,7 +694,7 @@ int ibmphp_add_resource (struct resource_node *res)
if (!res_cur) { if (!res_cur) {
/* at the end of the resource list */ /* at the end of the resource list */
debug ("i should be here, [%x - %x]\n", res->start, res->end); debug("i should be here, [%x - %x]\n", res->start, res->end);
res_prev->nextRange = res; res_prev->nextRange = res;
res->next = NULL; res->next = NULL;
res->nextRange = NULL; res->nextRange = NULL;
...@@ -762,7 +762,7 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -762,7 +762,7 @@ int ibmphp_add_resource (struct resource_node *res)
} }
} }
debug ("%s - exit\n", __func__); debug("%s - exit\n", __func__);
return 0; return 0;
} }
...@@ -773,23 +773,23 @@ int ibmphp_add_resource (struct resource_node *res) ...@@ -773,23 +773,23 @@ int ibmphp_add_resource (struct resource_node *res)
* Output: modified resource list * Output: modified resource list
* 0 or error code * 0 or error code
****************************************************************************/ ****************************************************************************/
int ibmphp_remove_resource (struct resource_node *res) int ibmphp_remove_resource(struct resource_node *res)
{ {
struct bus_node *bus_cur; struct bus_node *bus_cur;
struct resource_node *res_cur = NULL; struct resource_node *res_cur = NULL;
struct resource_node *res_prev; struct resource_node *res_prev;
struct resource_node *mem_cur; struct resource_node *mem_cur;
char * type = ""; char *type = "";
if (!res) { if (!res) {
err ("resource to remove is NULL\n"); err("resource to remove is NULL\n");
return -ENODEV; return -ENODEV;
} }
bus_cur = find_bus_wprev (res->busno, NULL, 0); bus_cur = find_bus_wprev(res->busno, NULL, 0);
if (!bus_cur) { if (!bus_cur) {
err ("cannot find corresponding bus of the io resource to remove bailing out...\n"); err("cannot find corresponding bus of the io resource to remove bailing out...\n");
return -ENODEV; return -ENODEV;
} }
...@@ -807,7 +807,7 @@ int ibmphp_remove_resource (struct resource_node *res) ...@@ -807,7 +807,7 @@ int ibmphp_remove_resource (struct resource_node *res)
type = "pfmem"; type = "pfmem";
break; break;
default: default:
err ("unknown type for resource to remove\n"); err("unknown type for resource to remove\n");
return -EINVAL; return -EINVAL;
} }
res_prev = NULL; res_prev = NULL;
...@@ -845,16 +845,16 @@ int ibmphp_remove_resource (struct resource_node *res) ...@@ -845,16 +845,16 @@ int ibmphp_remove_resource (struct resource_node *res)
mem_cur = mem_cur->nextRange; mem_cur = mem_cur->nextRange;
} }
if (!mem_cur) { if (!mem_cur) {
err ("cannot find corresponding mem node for pfmem...\n"); err("cannot find corresponding mem node for pfmem...\n");
return -EINVAL; return -EINVAL;
} }
ibmphp_remove_resource (mem_cur); ibmphp_remove_resource(mem_cur);
if (!res_prev) if (!res_prev)
bus_cur->firstPFMemFromMem = res_cur->next; bus_cur->firstPFMemFromMem = res_cur->next;
else else
res_prev->next = res_cur->next; res_prev->next = res_cur->next;
kfree (res_cur); kfree(res_cur);
return 0; return 0;
} }
res_prev = res_cur; res_prev = res_cur;
...@@ -864,11 +864,11 @@ int ibmphp_remove_resource (struct resource_node *res) ...@@ -864,11 +864,11 @@ int ibmphp_remove_resource (struct resource_node *res)
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
} }
if (!res_cur) { if (!res_cur) {
err ("cannot find pfmem to delete...\n"); err("cannot find pfmem to delete...\n");
return -EINVAL; return -EINVAL;
} }
} else { } else {
err ("the %s resource is not in the list to be deleted...\n", type); err("the %s resource is not in the list to be deleted...\n", type);
return -EINVAL; return -EINVAL;
} }
} }
...@@ -911,7 +911,7 @@ int ibmphp_remove_resource (struct resource_node *res) ...@@ -911,7 +911,7 @@ int ibmphp_remove_resource (struct resource_node *res)
break; break;
} }
} }
kfree (res_cur); kfree(res_cur);
return 0; return 0;
} else { } else {
if (res_cur->next) { if (res_cur->next) {
...@@ -926,14 +926,14 @@ int ibmphp_remove_resource (struct resource_node *res) ...@@ -926,14 +926,14 @@ int ibmphp_remove_resource (struct resource_node *res)
res_prev->next = NULL; res_prev->next = NULL;
res_prev->nextRange = NULL; res_prev->nextRange = NULL;
} }
kfree (res_cur); kfree(res_cur);
return 0; return 0;
} }
return 0; return 0;
} }
static struct range_node *find_range (struct bus_node *bus_cur, struct resource_node *res) static struct range_node *find_range(struct bus_node *bus_cur, struct resource_node *res)
{ {
struct range_node *range = NULL; struct range_node *range = NULL;
...@@ -948,7 +948,7 @@ static struct range_node *find_range (struct bus_node *bus_cur, struct resource_ ...@@ -948,7 +948,7 @@ static struct range_node *find_range (struct bus_node *bus_cur, struct resource_
range = bus_cur->rangePFMem; range = bus_cur->rangePFMem;
break; break;
default: default:
err ("cannot read resource type in find_range\n"); err("cannot read resource type in find_range\n");
} }
while (range) { while (range) {
...@@ -968,7 +968,7 @@ static struct range_node *find_range (struct bus_node *bus_cur, struct resource_ ...@@ -968,7 +968,7 @@ static struct range_node *find_range (struct bus_node *bus_cur, struct resource_
* Output: the correct start and end address are inputted into the resource node, * Output: the correct start and end address are inputted into the resource node,
* 0 or -EINVAL * 0 or -EINVAL
*****************************************************************************/ *****************************************************************************/
int ibmphp_check_resource (struct resource_node *res, u8 bridge) int ibmphp_check_resource(struct resource_node *res, u8 bridge)
{ {
struct bus_node *bus_cur; struct bus_node *bus_cur;
struct range_node *range = NULL; struct range_node *range = NULL;
...@@ -992,16 +992,16 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -992,16 +992,16 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
} else } else
tmp_divide = res->len; tmp_divide = res->len;
bus_cur = find_bus_wprev (res->busno, NULL, 0); bus_cur = find_bus_wprev(res->busno, NULL, 0);
if (!bus_cur) { if (!bus_cur) {
/* didn't find a bus, something's wrong!!! */ /* didn't find a bus, something's wrong!!! */
debug ("no bus in the system, either pci_dev's wrong or allocation failed\n"); debug("no bus in the system, either pci_dev's wrong or allocation failed\n");
return -EINVAL; return -EINVAL;
} }
debug ("%s - enter\n", __func__); debug("%s - enter\n", __func__);
debug ("bus_cur->busno is %d\n", bus_cur->busno); debug("bus_cur->busno is %d\n", bus_cur->busno);
/* This is a quick fix to not mess up with the code very much. i.e., /* This is a quick fix to not mess up with the code very much. i.e.,
* 2000-2fff, len = 1000, but when we compare, we need it to be fff */ * 2000-2fff, len = 1000, but when we compare, we need it to be fff */
...@@ -1021,17 +1021,17 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1021,17 +1021,17 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
noranges = bus_cur->noPFMemRanges; noranges = bus_cur->noPFMemRanges;
break; break;
default: default:
err ("wrong type of resource to check\n"); err("wrong type of resource to check\n");
return -EINVAL; return -EINVAL;
} }
res_prev = NULL; res_prev = NULL;
while (res_cur) { while (res_cur) {
range = find_range (bus_cur, res_cur); range = find_range(bus_cur, res_cur);
debug ("%s - rangeno = %d\n", __func__, res_cur->rangeno); debug("%s - rangeno = %d\n", __func__, res_cur->rangeno);
if (!range) { if (!range) {
err ("no range for the device exists... bailing out...\n"); err("no range for the device exists... bailing out...\n");
return -EINVAL; return -EINVAL;
} }
...@@ -1041,7 +1041,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1041,7 +1041,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
len_tmp = res_cur->start - 1 - range->start; len_tmp = res_cur->start - 1 - range->start;
if ((res_cur->start != range->start) && (len_tmp >= res->len)) { if ((res_cur->start != range->start) && (len_tmp >= res->len)) {
debug ("len_tmp = %x\n", len_tmp); debug("len_tmp = %x\n", len_tmp);
if ((len_tmp < len_cur) || (len_cur == 0)) { if ((len_tmp < len_cur) || (len_cur == 0)) {
...@@ -1069,7 +1069,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1069,7 +1069,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
} }
if (flag && len_cur == res->len) { if (flag && len_cur == res->len) {
debug ("but we are not here, right?\n"); debug("but we are not here, right?\n");
res->start = start_cur; res->start = start_cur;
res->len += 1; /* To restore the balance */ res->len += 1; /* To restore the balance */
res->end = res->start + res->len - 1; res->end = res->start + res->len - 1;
...@@ -1083,7 +1083,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1083,7 +1083,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
len_tmp = range->end - (res_cur->end + 1); len_tmp = range->end - (res_cur->end + 1);
if ((range->end != res_cur->end) && (len_tmp >= res->len)) { if ((range->end != res_cur->end) && (len_tmp >= res->len)) {
debug ("len_tmp = %x\n", len_tmp); debug("len_tmp = %x\n", len_tmp);
if ((len_tmp < len_cur) || (len_cur == 0)) { if ((len_tmp < len_cur) || (len_cur == 0)) {
if (((res_cur->end + 1) % tmp_divide) == 0) { if (((res_cur->end + 1) % tmp_divide) == 0) {
...@@ -1259,7 +1259,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1259,7 +1259,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
if ((!range) && (len_cur == 0)) { if ((!range) && (len_cur == 0)) {
/* have gone through the list of devices and ranges and haven't found n.e.thing */ /* have gone through the list of devices and ranges and haven't found n.e.thing */
err ("no appropriate range.. bailing out...\n"); err("no appropriate range.. bailing out...\n");
return -EINVAL; return -EINVAL;
} else if (len_cur) { } else if (len_cur) {
res->start = start_cur; res->start = start_cur;
...@@ -1270,7 +1270,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1270,7 +1270,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
} }
if (!res_cur) { if (!res_cur) {
debug ("prev->rangeno = %d, noranges = %d\n", res_prev->rangeno, noranges); debug("prev->rangeno = %d, noranges = %d\n", res_prev->rangeno, noranges);
if (res_prev->rangeno < noranges) { if (res_prev->rangeno < noranges) {
/* if there're more ranges out there to check */ /* if there're more ranges out there to check */
switch (res->type) { switch (res->type) {
...@@ -1325,7 +1325,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1325,7 +1325,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
if ((!range) && (len_cur == 0)) { if ((!range) && (len_cur == 0)) {
/* have gone through the list of devices and ranges and haven't found n.e.thing */ /* have gone through the list of devices and ranges and haven't found n.e.thing */
err ("no appropriate range.. bailing out...\n"); err("no appropriate range.. bailing out...\n");
return -EINVAL; return -EINVAL;
} else if (len_cur) { } else if (len_cur) {
res->start = start_cur; res->start = start_cur;
...@@ -1342,7 +1342,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1342,7 +1342,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
return 0; return 0;
} else { } else {
/* have gone through the list of devices and haven't found n.e.thing */ /* have gone through the list of devices and haven't found n.e.thing */
err ("no appropriate range.. bailing out...\n"); err("no appropriate range.. bailing out...\n");
return -EINVAL; return -EINVAL;
} }
} }
...@@ -1356,23 +1356,23 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge) ...@@ -1356,23 +1356,23 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
* Input: Bus * Input: Bus
* Output: 0, -ENODEV * Output: 0, -ENODEV
********************************************************************************/ ********************************************************************************/
int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) int ibmphp_remove_bus(struct bus_node *bus, u8 parent_busno)
{ {
struct resource_node *res_cur; struct resource_node *res_cur;
struct resource_node *res_tmp; struct resource_node *res_tmp;
struct bus_node *prev_bus; struct bus_node *prev_bus;
int rc; int rc;
prev_bus = find_bus_wprev (parent_busno, NULL, 0); prev_bus = find_bus_wprev(parent_busno, NULL, 0);
if (!prev_bus) { if (!prev_bus) {
debug ("something terribly wrong. Cannot find parent bus to the one to remove\n"); debug("something terribly wrong. Cannot find parent bus to the one to remove\n");
return -ENODEV; return -ENODEV;
} }
debug ("In ibmphp_remove_bus... prev_bus->busno is %x\n", prev_bus->busno); debug("In ibmphp_remove_bus... prev_bus->busno is %x\n", prev_bus->busno);
rc = remove_ranges (bus, prev_bus); rc = remove_ranges(bus, prev_bus);
if (rc) if (rc)
return rc; return rc;
...@@ -1384,7 +1384,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) ...@@ -1384,7 +1384,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus->firstIO = NULL; bus->firstIO = NULL;
...@@ -1397,7 +1397,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) ...@@ -1397,7 +1397,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus->firstMem = NULL; bus->firstMem = NULL;
...@@ -1410,7 +1410,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) ...@@ -1410,7 +1410,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus->firstPFMem = NULL; bus->firstPFMem = NULL;
...@@ -1422,14 +1422,14 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) ...@@ -1422,14 +1422,14 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
res_tmp = res_cur; res_tmp = res_cur;
res_cur = res_cur->next; res_cur = res_cur->next;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus->firstPFMemFromMem = NULL; bus->firstPFMemFromMem = NULL;
} }
list_del (&bus->bus_list); list_del(&bus->bus_list);
kfree (bus); kfree(bus);
return 0; return 0;
} }
...@@ -1439,7 +1439,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno) ...@@ -1439,7 +1439,7 @@ int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
* Input: current bus, previous bus * Input: current bus, previous bus
* Output: 0, -EINVAL * Output: 0, -EINVAL
******************************************************************************/ ******************************************************************************/
static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev) static int remove_ranges(struct bus_node *bus_cur, struct bus_node *bus_prev)
{ {
struct range_node *range_cur; struct range_node *range_cur;
struct range_node *range_tmp; struct range_node *range_tmp;
...@@ -1449,13 +1449,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev) ...@@ -1449,13 +1449,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev)
if (bus_cur->noIORanges) { if (bus_cur->noIORanges) {
range_cur = bus_cur->rangeIO; range_cur = bus_cur->rangeIO;
for (i = 0; i < bus_cur->noIORanges; i++) { for (i = 0; i < bus_cur->noIORanges; i++) {
if (ibmphp_find_resource (bus_prev, range_cur->start, &res, IO) < 0) if (ibmphp_find_resource(bus_prev, range_cur->start, &res, IO) < 0)
return -EINVAL; return -EINVAL;
ibmphp_remove_resource (res); ibmphp_remove_resource(res);
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
bus_cur->rangeIO = NULL; bus_cur->rangeIO = NULL;
...@@ -1463,13 +1463,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev) ...@@ -1463,13 +1463,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev)
if (bus_cur->noMemRanges) { if (bus_cur->noMemRanges) {
range_cur = bus_cur->rangeMem; range_cur = bus_cur->rangeMem;
for (i = 0; i < bus_cur->noMemRanges; i++) { for (i = 0; i < bus_cur->noMemRanges; i++) {
if (ibmphp_find_resource (bus_prev, range_cur->start, &res, MEM) < 0) if (ibmphp_find_resource(bus_prev, range_cur->start, &res, MEM) < 0)
return -EINVAL; return -EINVAL;
ibmphp_remove_resource (res); ibmphp_remove_resource(res);
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
bus_cur->rangeMem = NULL; bus_cur->rangeMem = NULL;
...@@ -1477,13 +1477,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev) ...@@ -1477,13 +1477,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev)
if (bus_cur->noPFMemRanges) { if (bus_cur->noPFMemRanges) {
range_cur = bus_cur->rangePFMem; range_cur = bus_cur->rangePFMem;
for (i = 0; i < bus_cur->noPFMemRanges; i++) { for (i = 0; i < bus_cur->noPFMemRanges; i++) {
if (ibmphp_find_resource (bus_prev, range_cur->start, &res, PFMEM) < 0) if (ibmphp_find_resource(bus_prev, range_cur->start, &res, PFMEM) < 0)
return -EINVAL; return -EINVAL;
ibmphp_remove_resource (res); ibmphp_remove_resource(res);
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
bus_cur->rangePFMem = NULL; bus_cur->rangePFMem = NULL;
...@@ -1495,13 +1495,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev) ...@@ -1495,13 +1495,13 @@ static int remove_ranges (struct bus_node *bus_cur, struct bus_node *bus_prev)
* find the resource node in the bus * find the resource node in the bus
* Input: Resource needed, start address of the resource, type of resource * Input: Resource needed, start address of the resource, type of resource
*/ */
int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resource_node **res, int flag) int ibmphp_find_resource(struct bus_node *bus, u32 start_address, struct resource_node **res, int flag)
{ {
struct resource_node *res_cur = NULL; struct resource_node *res_cur = NULL;
char * type = ""; char *type = "";
if (!bus) { if (!bus) {
err ("The bus passed in NULL to find resource\n"); err("The bus passed in NULL to find resource\n");
return -ENODEV; return -ENODEV;
} }
...@@ -1519,7 +1519,7 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour ...@@ -1519,7 +1519,7 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour
type = "pfmem"; type = "pfmem";
break; break;
default: default:
err ("wrong type of flag\n"); err("wrong type of flag\n");
return -EINVAL; return -EINVAL;
} }
...@@ -1545,17 +1545,17 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour ...@@ -1545,17 +1545,17 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour
res_cur = res_cur->next; res_cur = res_cur->next;
} }
if (!res_cur) { if (!res_cur) {
debug ("SOS...cannot find %s resource in the bus.\n", type); debug("SOS...cannot find %s resource in the bus.\n", type);
return -EINVAL; return -EINVAL;
} }
} else { } else {
debug ("SOS... cannot find %s resource in the bus.\n", type); debug("SOS... cannot find %s resource in the bus.\n", type);
return -EINVAL; return -EINVAL;
} }
} }
if (*res) if (*res)
debug ("*res->start = %x\n", (*res)->start); debug("*res->start = %x\n", (*res)->start);
return 0; return 0;
} }
...@@ -1566,7 +1566,7 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour ...@@ -1566,7 +1566,7 @@ int ibmphp_find_resource (struct bus_node *bus, u32 start_address, struct resour
* Parameters: none * Parameters: none
* Returns: none * Returns: none
***********************************************************************/ ***********************************************************************/
void ibmphp_free_resources (void) void ibmphp_free_resources(void)
{ {
struct bus_node *bus_cur = NULL, *next; struct bus_node *bus_cur = NULL, *next;
struct bus_node *bus_tmp; struct bus_node *bus_tmp;
...@@ -1585,7 +1585,7 @@ void ibmphp_free_resources (void) ...@@ -1585,7 +1585,7 @@ void ibmphp_free_resources (void)
break; break;
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
} }
...@@ -1596,7 +1596,7 @@ void ibmphp_free_resources (void) ...@@ -1596,7 +1596,7 @@ void ibmphp_free_resources (void)
break; break;
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
} }
...@@ -1607,7 +1607,7 @@ void ibmphp_free_resources (void) ...@@ -1607,7 +1607,7 @@ void ibmphp_free_resources (void)
break; break;
range_tmp = range_cur; range_tmp = range_cur;
range_cur = range_cur->next; range_cur = range_cur->next;
kfree (range_tmp); kfree(range_tmp);
range_tmp = NULL; range_tmp = NULL;
} }
} }
...@@ -1620,7 +1620,7 @@ void ibmphp_free_resources (void) ...@@ -1620,7 +1620,7 @@ void ibmphp_free_resources (void)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus_cur->firstIO = NULL; bus_cur->firstIO = NULL;
...@@ -1633,7 +1633,7 @@ void ibmphp_free_resources (void) ...@@ -1633,7 +1633,7 @@ void ibmphp_free_resources (void)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus_cur->firstMem = NULL; bus_cur->firstMem = NULL;
...@@ -1646,7 +1646,7 @@ void ibmphp_free_resources (void) ...@@ -1646,7 +1646,7 @@ void ibmphp_free_resources (void)
res_cur = res_cur->next; res_cur = res_cur->next;
else else
res_cur = res_cur->nextRange; res_cur = res_cur->nextRange;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus_cur->firstPFMem = NULL; bus_cur->firstPFMem = NULL;
...@@ -1658,15 +1658,15 @@ void ibmphp_free_resources (void) ...@@ -1658,15 +1658,15 @@ void ibmphp_free_resources (void)
res_tmp = res_cur; res_tmp = res_cur;
res_cur = res_cur->next; res_cur = res_cur->next;
kfree (res_tmp); kfree(res_tmp);
res_tmp = NULL; res_tmp = NULL;
} }
bus_cur->firstPFMemFromMem = NULL; bus_cur->firstPFMemFromMem = NULL;
} }
bus_tmp = bus_cur; bus_tmp = bus_cur;
list_del (&bus_cur->bus_list); list_del(&bus_cur->bus_list);
kfree (bus_tmp); kfree(bus_tmp);
bus_tmp = NULL; bus_tmp = NULL;
} }
} }
...@@ -1679,7 +1679,7 @@ void ibmphp_free_resources (void) ...@@ -1679,7 +1679,7 @@ void ibmphp_free_resources (void)
* a new Mem node * a new Mem node
* This routine is called right after initialization * This routine is called right after initialization
*******************************************************************************/ *******************************************************************************/
static int __init once_over (void) static int __init once_over(void)
{ {
struct resource_node *pfmem_cur; struct resource_node *pfmem_cur;
struct resource_node *pfmem_prev; struct resource_node *pfmem_prev;
...@@ -1708,7 +1708,7 @@ static int __init once_over (void) ...@@ -1708,7 +1708,7 @@ static int __init once_over (void)
mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL); mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!mem) { if (!mem) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
mem->type = MEM; mem->type = MEM;
...@@ -1717,8 +1717,8 @@ static int __init once_over (void) ...@@ -1717,8 +1717,8 @@ static int __init once_over (void)
mem->start = pfmem_cur->start; mem->start = pfmem_cur->start;
mem->end = pfmem_cur->end; mem->end = pfmem_cur->end;
mem->len = pfmem_cur->len; mem->len = pfmem_cur->len;
if (ibmphp_add_resource (mem) < 0) if (ibmphp_add_resource(mem) < 0)
err ("Trouble...trouble... EBDA allocated pfmem from mem, but system doesn't display it has this space... unless not PCI device...\n"); err("Trouble...trouble... EBDA allocated pfmem from mem, but system doesn't display it has this space... unless not PCI device...\n");
pfmem_cur->rangeno = mem->rangeno; pfmem_cur->rangeno = mem->rangeno;
} /* end for pfmem */ } /* end for pfmem */
} /* end if */ } /* end if */
...@@ -1726,12 +1726,12 @@ static int __init once_over (void) ...@@ -1726,12 +1726,12 @@ static int __init once_over (void)
return 0; return 0;
} }
int ibmphp_add_pfmem_from_mem (struct resource_node *pfmem) int ibmphp_add_pfmem_from_mem(struct resource_node *pfmem)
{ {
struct bus_node *bus_cur = find_bus_wprev (pfmem->busno, NULL, 0); struct bus_node *bus_cur = find_bus_wprev(pfmem->busno, NULL, 0);
if (!bus_cur) { if (!bus_cur) {
err ("cannot find bus of pfmem to add...\n"); err("cannot find bus of pfmem to add...\n");
return -ENODEV; return -ENODEV;
} }
...@@ -1751,12 +1751,12 @@ int ibmphp_add_pfmem_from_mem (struct resource_node *pfmem) ...@@ -1751,12 +1751,12 @@ int ibmphp_add_pfmem_from_mem (struct resource_node *pfmem)
* Parameters: bus_number * Parameters: bus_number
* Returns: Bus pointer or NULL * Returns: Bus pointer or NULL
*/ */
struct bus_node *ibmphp_find_res_bus (u8 bus_number) struct bus_node *ibmphp_find_res_bus(u8 bus_number)
{ {
return find_bus_wprev (bus_number, NULL, 0); return find_bus_wprev(bus_number, NULL, 0);
} }
static struct bus_node *find_bus_wprev (u8 bus_number, struct bus_node **prev, u8 flag) static struct bus_node *find_bus_wprev(u8 bus_number, struct bus_node **prev, u8 flag)
{ {
struct bus_node *bus_cur; struct bus_node *bus_cur;
...@@ -1770,17 +1770,17 @@ static struct bus_node *find_bus_wprev (u8 bus_number, struct bus_node **prev, u ...@@ -1770,17 +1770,17 @@ static struct bus_node *find_bus_wprev (u8 bus_number, struct bus_node **prev, u
return NULL; return NULL;
} }
void ibmphp_print_test (void) void ibmphp_print_test(void)
{ {
int i = 0; int i = 0;
struct bus_node *bus_cur = NULL; struct bus_node *bus_cur = NULL;
struct range_node *range; struct range_node *range;
struct resource_node *res; struct resource_node *res;
debug_pci ("*****************START**********************\n"); debug_pci("*****************START**********************\n");
if ((!list_empty(&gbuses)) && flags) { if ((!list_empty(&gbuses)) && flags) {
err ("The GBUSES is not NULL?!?!?!?!?\n"); err("The GBUSES is not NULL?!?!?!?!?\n");
return; return;
} }
...@@ -1793,42 +1793,42 @@ void ibmphp_print_test (void) ...@@ -1793,42 +1793,42 @@ void ibmphp_print_test (void)
if (bus_cur->rangeIO) { if (bus_cur->rangeIO) {
range = bus_cur->rangeIO; range = bus_cur->rangeIO;
for (i = 0; i < bus_cur->noIORanges; i++) { for (i = 0; i < bus_cur->noIORanges; i++) {
debug_pci ("rangeno is %d\n", range->rangeno); debug_pci("rangeno is %d\n", range->rangeno);
debug_pci ("[%x - %x]\n", range->start, range->end); debug_pci("[%x - %x]\n", range->start, range->end);
range = range->next; range = range->next;
} }
} }
debug_pci ("The Mem Ranges are as follows:\n"); debug_pci("The Mem Ranges are as follows:\n");
if (bus_cur->rangeMem) { if (bus_cur->rangeMem) {
range = bus_cur->rangeMem; range = bus_cur->rangeMem;
for (i = 0; i < bus_cur->noMemRanges; i++) { for (i = 0; i < bus_cur->noMemRanges; i++) {
debug_pci ("rangeno is %d\n", range->rangeno); debug_pci("rangeno is %d\n", range->rangeno);
debug_pci ("[%x - %x]\n", range->start, range->end); debug_pci("[%x - %x]\n", range->start, range->end);
range = range->next; range = range->next;
} }
} }
debug_pci ("The PFMem Ranges are as follows:\n"); debug_pci("The PFMem Ranges are as follows:\n");
if (bus_cur->rangePFMem) { if (bus_cur->rangePFMem) {
range = bus_cur->rangePFMem; range = bus_cur->rangePFMem;
for (i = 0; i < bus_cur->noPFMemRanges; i++) { for (i = 0; i < bus_cur->noPFMemRanges; i++) {
debug_pci ("rangeno is %d\n", range->rangeno); debug_pci("rangeno is %d\n", range->rangeno);
debug_pci ("[%x - %x]\n", range->start, range->end); debug_pci("[%x - %x]\n", range->start, range->end);
range = range->next; range = range->next;
} }
} }
debug_pci ("The resources on this bus are as follows\n"); debug_pci("The resources on this bus are as follows\n");
debug_pci ("IO...\n"); debug_pci("IO...\n");
if (bus_cur->firstIO) { if (bus_cur->firstIO) {
res = bus_cur->firstIO; res = bus_cur->firstIO;
while (res) { while (res) {
debug_pci ("The range # is %d\n", res->rangeno); debug_pci("The range # is %d\n", res->rangeno);
debug_pci ("The bus, devfnc is %d, %x\n", res->busno, res->devfunc); debug_pci("The bus, devfnc is %d, %x\n", res->busno, res->devfunc);
debug_pci ("[%x - %x], len=%x\n", res->start, res->end, res->len); debug_pci("[%x - %x], len=%x\n", res->start, res->end, res->len);
if (res->next) if (res->next)
res = res->next; res = res->next;
else if (res->nextRange) else if (res->nextRange)
...@@ -1837,13 +1837,13 @@ void ibmphp_print_test (void) ...@@ -1837,13 +1837,13 @@ void ibmphp_print_test (void)
break; break;
} }
} }
debug_pci ("Mem...\n"); debug_pci("Mem...\n");
if (bus_cur->firstMem) { if (bus_cur->firstMem) {
res = bus_cur->firstMem; res = bus_cur->firstMem;
while (res) { while (res) {
debug_pci ("The range # is %d\n", res->rangeno); debug_pci("The range # is %d\n", res->rangeno);
debug_pci ("The bus, devfnc is %d, %x\n", res->busno, res->devfunc); debug_pci("The bus, devfnc is %d, %x\n", res->busno, res->devfunc);
debug_pci ("[%x - %x], len=%x\n", res->start, res->end, res->len); debug_pci("[%x - %x], len=%x\n", res->start, res->end, res->len);
if (res->next) if (res->next)
res = res->next; res = res->next;
else if (res->nextRange) else if (res->nextRange)
...@@ -1852,13 +1852,13 @@ void ibmphp_print_test (void) ...@@ -1852,13 +1852,13 @@ void ibmphp_print_test (void)
break; break;
} }
} }
debug_pci ("PFMem...\n"); debug_pci("PFMem...\n");
if (bus_cur->firstPFMem) { if (bus_cur->firstPFMem) {
res = bus_cur->firstPFMem; res = bus_cur->firstPFMem;
while (res) { while (res) {
debug_pci ("The range # is %d\n", res->rangeno); debug_pci("The range # is %d\n", res->rangeno);
debug_pci ("The bus, devfnc is %d, %x\n", res->busno, res->devfunc); debug_pci("The bus, devfnc is %d, %x\n", res->busno, res->devfunc);
debug_pci ("[%x - %x], len=%x\n", res->start, res->end, res->len); debug_pci("[%x - %x], len=%x\n", res->start, res->end, res->len);
if (res->next) if (res->next)
res = res->next; res = res->next;
else if (res->nextRange) else if (res->nextRange)
...@@ -1868,23 +1868,23 @@ void ibmphp_print_test (void) ...@@ -1868,23 +1868,23 @@ void ibmphp_print_test (void)
} }
} }
debug_pci ("PFMemFromMem...\n"); debug_pci("PFMemFromMem...\n");
if (bus_cur->firstPFMemFromMem) { if (bus_cur->firstPFMemFromMem) {
res = bus_cur->firstPFMemFromMem; res = bus_cur->firstPFMemFromMem;
while (res) { while (res) {
debug_pci ("The range # is %d\n", res->rangeno); debug_pci("The range # is %d\n", res->rangeno);
debug_pci ("The bus, devfnc is %d, %x\n", res->busno, res->devfunc); debug_pci("The bus, devfnc is %d, %x\n", res->busno, res->devfunc);
debug_pci ("[%x - %x], len=%x\n", res->start, res->end, res->len); debug_pci("[%x - %x], len=%x\n", res->start, res->end, res->len);
res = res->next; res = res->next;
} }
} }
} }
debug_pci ("***********************END***********************\n"); debug_pci("***********************END***********************\n");
} }
static int range_exists_already (struct range_node * range, struct bus_node * bus_cur, u8 type) static int range_exists_already(struct range_node *range, struct bus_node *bus_cur, u8 type)
{ {
struct range_node * range_cur = NULL; struct range_node *range_cur = NULL;
switch (type) { switch (type) {
case IO: case IO:
range_cur = bus_cur->rangeIO; range_cur = bus_cur->rangeIO;
...@@ -1896,7 +1896,7 @@ static int range_exists_already (struct range_node * range, struct bus_node * bu ...@@ -1896,7 +1896,7 @@ static int range_exists_already (struct range_node * range, struct bus_node * bu
range_cur = bus_cur->rangePFMem; range_cur = bus_cur->rangePFMem;
break; break;
default: default:
err ("wrong type passed to find out if range already exists\n"); err("wrong type passed to find out if range already exists\n");
return -ENODEV; return -ENODEV;
} }
...@@ -1923,7 +1923,7 @@ static int range_exists_already (struct range_node * range, struct bus_node * bu ...@@ -1923,7 +1923,7 @@ static int range_exists_already (struct range_node * range, struct bus_node * bu
* behind them All these are TO DO. * behind them All these are TO DO.
* Also need to add more error checkings... (from fnc returns etc) * Also need to add more error checkings... (from fnc returns etc)
*/ */
static int __init update_bridge_ranges (struct bus_node **bus) static int __init update_bridge_ranges(struct bus_node **bus)
{ {
u8 sec_busno, device, function, hdr_type, start_io_address, end_io_address; u8 sec_busno, device, function, hdr_type, start_io_address, end_io_address;
u16 vendor_id, upper_io_start, upper_io_end, start_mem_address, end_mem_address; u16 vendor_id, upper_io_start, upper_io_end, start_mem_address, end_mem_address;
...@@ -1941,17 +1941,17 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -1941,17 +1941,17 @@ static int __init update_bridge_ranges (struct bus_node **bus)
return -ENODEV; return -ENODEV;
ibmphp_pci_bus->number = bus_cur->busno; ibmphp_pci_bus->number = bus_cur->busno;
debug ("inside %s\n", __func__); debug("inside %s\n", __func__);
debug ("bus_cur->busno = %x\n", bus_cur->busno); debug("bus_cur->busno = %x\n", bus_cur->busno);
for (device = 0; device < 32; device++) { for (device = 0; device < 32; device++) {
for (function = 0x00; function < 0x08; function++) { for (function = 0x00; function < 0x08; function++) {
devfn = PCI_DEVFN(device, function); devfn = PCI_DEVFN(device, function);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_VENDOR_ID, &vendor_id);
if (vendor_id != PCI_VENDOR_ID_NOTVALID) { if (vendor_id != PCI_VENDOR_ID_NOTVALID) {
/* found correct device!!! */ /* found correct device!!! */
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_HEADER_TYPE, &hdr_type);
switch (hdr_type) { switch (hdr_type) {
case PCI_HEADER_TYPE_NORMAL: case PCI_HEADER_TYPE_NORMAL:
...@@ -1970,18 +1970,18 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -1970,18 +1970,18 @@ static int __init update_bridge_ranges (struct bus_node **bus)
temp++; temp++;
} }
*/ */
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_busno); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_SECONDARY_BUS, &sec_busno);
bus_sec = find_bus_wprev (sec_busno, NULL, 0); bus_sec = find_bus_wprev(sec_busno, NULL, 0);
/* this bus structure doesn't exist yet, PPB was configured during previous loading of ibmphp */ /* this bus structure doesn't exist yet, PPB was configured during previous loading of ibmphp */
if (!bus_sec) { if (!bus_sec) {
bus_sec = alloc_error_bus (NULL, sec_busno, 1); bus_sec = alloc_error_bus(NULL, sec_busno, 1);
/* the rest will be populated during NVRAM call */ /* the rest will be populated during NVRAM call */
return 0; return 0;
} }
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_IO_BASE, &start_io_address); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_IO_BASE, &start_io_address);
pci_bus_read_config_byte (ibmphp_pci_bus, devfn, PCI_IO_LIMIT, &end_io_address); pci_bus_read_config_byte(ibmphp_pci_bus, devfn, PCI_IO_LIMIT, &end_io_address);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_IO_BASE_UPPER16, &upper_io_start); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_IO_BASE_UPPER16, &upper_io_start);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_IO_LIMIT_UPPER16, &upper_io_end); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_IO_LIMIT_UPPER16, &upper_io_end);
start_address = (start_io_address & PCI_IO_RANGE_MASK) << 8; start_address = (start_io_address & PCI_IO_RANGE_MASK) << 8;
start_address |= (upper_io_start << 16); start_address |= (upper_io_start << 16);
end_address = (end_io_address & PCI_IO_RANGE_MASK) << 8; end_address = (end_io_address & PCI_IO_RANGE_MASK) << 8;
...@@ -1990,18 +1990,18 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -1990,18 +1990,18 @@ static int __init update_bridge_ranges (struct bus_node **bus)
if ((start_address) && (start_address <= end_address)) { if ((start_address) && (start_address <= end_address)) {
range = kzalloc(sizeof(struct range_node), GFP_KERNEL); range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
if (!range) { if (!range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
range->start = start_address; range->start = start_address;
range->end = end_address + 0xfff; range->end = end_address + 0xfff;
if (bus_sec->noIORanges > 0) { if (bus_sec->noIORanges > 0) {
if (!range_exists_already (range, bus_sec, IO)) { if (!range_exists_already(range, bus_sec, IO)) {
add_bus_range (IO, range, bus_sec); add_bus_range(IO, range, bus_sec);
++bus_sec->noIORanges; ++bus_sec->noIORanges;
} else { } else {
kfree (range); kfree(range);
range = NULL; range = NULL;
} }
} else { } else {
...@@ -2010,13 +2010,13 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2010,13 +2010,13 @@ static int __init update_bridge_ranges (struct bus_node **bus)
bus_sec->rangeIO = range; bus_sec->rangeIO = range;
++bus_sec->noIORanges; ++bus_sec->noIORanges;
} }
fix_resources (bus_sec); fix_resources(bus_sec);
if (ibmphp_find_resource (bus_cur, start_address, &io, IO)) { if (ibmphp_find_resource(bus_cur, start_address, &io, IO)) {
io = kzalloc(sizeof(struct resource_node), GFP_KERNEL); io = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!io) { if (!io) {
kfree (range); kfree(range);
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
io->type = IO; io->type = IO;
...@@ -2025,12 +2025,12 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2025,12 +2025,12 @@ static int __init update_bridge_ranges (struct bus_node **bus)
io->start = start_address; io->start = start_address;
io->end = end_address + 0xfff; io->end = end_address + 0xfff;
io->len = io->end - io->start + 1; io->len = io->end - io->start + 1;
ibmphp_add_resource (io); ibmphp_add_resource(io);
} }
} }
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, &start_mem_address); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_BASE, &start_mem_address);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, &end_mem_address); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_MEMORY_LIMIT, &end_mem_address);
start_address = 0x00000000 | (start_mem_address & PCI_MEMORY_RANGE_MASK) << 16; start_address = 0x00000000 | (start_mem_address & PCI_MEMORY_RANGE_MASK) << 16;
end_address = 0x00000000 | (end_mem_address & PCI_MEMORY_RANGE_MASK) << 16; end_address = 0x00000000 | (end_mem_address & PCI_MEMORY_RANGE_MASK) << 16;
...@@ -2039,18 +2039,18 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2039,18 +2039,18 @@ static int __init update_bridge_ranges (struct bus_node **bus)
range = kzalloc(sizeof(struct range_node), GFP_KERNEL); range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
if (!range) { if (!range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
range->start = start_address; range->start = start_address;
range->end = end_address + 0xfffff; range->end = end_address + 0xfffff;
if (bus_sec->noMemRanges > 0) { if (bus_sec->noMemRanges > 0) {
if (!range_exists_already (range, bus_sec, MEM)) { if (!range_exists_already(range, bus_sec, MEM)) {
add_bus_range (MEM, range, bus_sec); add_bus_range(MEM, range, bus_sec);
++bus_sec->noMemRanges; ++bus_sec->noMemRanges;
} else { } else {
kfree (range); kfree(range);
range = NULL; range = NULL;
} }
} else { } else {
...@@ -2060,13 +2060,13 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2060,13 +2060,13 @@ static int __init update_bridge_ranges (struct bus_node **bus)
++bus_sec->noMemRanges; ++bus_sec->noMemRanges;
} }
fix_resources (bus_sec); fix_resources(bus_sec);
if (ibmphp_find_resource (bus_cur, start_address, &mem, MEM)) { if (ibmphp_find_resource(bus_cur, start_address, &mem, MEM)) {
mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL); mem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!mem) { if (!mem) {
kfree (range); kfree(range);
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
mem->type = MEM; mem->type = MEM;
...@@ -2075,13 +2075,13 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2075,13 +2075,13 @@ static int __init update_bridge_ranges (struct bus_node **bus)
mem->start = start_address; mem->start = start_address;
mem->end = end_address + 0xfffff; mem->end = end_address + 0xfffff;
mem->len = mem->end - mem->start + 1; mem->len = mem->end - mem->start + 1;
ibmphp_add_resource (mem); ibmphp_add_resource(mem);
} }
} }
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &start_mem_address); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_BASE, &start_mem_address);
pci_bus_read_config_word (ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, &end_mem_address); pci_bus_read_config_word(ibmphp_pci_bus, devfn, PCI_PREF_MEMORY_LIMIT, &end_mem_address);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, PCI_PREF_BASE_UPPER32, &upper_start); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, PCI_PREF_BASE_UPPER32, &upper_start);
pci_bus_read_config_dword (ibmphp_pci_bus, devfn, PCI_PREF_LIMIT_UPPER32, &upper_end); pci_bus_read_config_dword(ibmphp_pci_bus, devfn, PCI_PREF_LIMIT_UPPER32, &upper_end);
start_address = 0x00000000 | (start_mem_address & PCI_MEMORY_RANGE_MASK) << 16; start_address = 0x00000000 | (start_mem_address & PCI_MEMORY_RANGE_MASK) << 16;
end_address = 0x00000000 | (end_mem_address & PCI_MEMORY_RANGE_MASK) << 16; end_address = 0x00000000 | (end_mem_address & PCI_MEMORY_RANGE_MASK) << 16;
#if BITS_PER_LONG == 64 #if BITS_PER_LONG == 64
...@@ -2093,18 +2093,18 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2093,18 +2093,18 @@ static int __init update_bridge_ranges (struct bus_node **bus)
range = kzalloc(sizeof(struct range_node), GFP_KERNEL); range = kzalloc(sizeof(struct range_node), GFP_KERNEL);
if (!range) { if (!range) {
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
range->start = start_address; range->start = start_address;
range->end = end_address + 0xfffff; range->end = end_address + 0xfffff;
if (bus_sec->noPFMemRanges > 0) { if (bus_sec->noPFMemRanges > 0) {
if (!range_exists_already (range, bus_sec, PFMEM)) { if (!range_exists_already(range, bus_sec, PFMEM)) {
add_bus_range (PFMEM, range, bus_sec); add_bus_range(PFMEM, range, bus_sec);
++bus_sec->noPFMemRanges; ++bus_sec->noPFMemRanges;
} else { } else {
kfree (range); kfree(range);
range = NULL; range = NULL;
} }
} else { } else {
...@@ -2114,12 +2114,12 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2114,12 +2114,12 @@ static int __init update_bridge_ranges (struct bus_node **bus)
++bus_sec->noPFMemRanges; ++bus_sec->noPFMemRanges;
} }
fix_resources (bus_sec); fix_resources(bus_sec);
if (ibmphp_find_resource (bus_cur, start_address, &pfmem, PFMEM)) { if (ibmphp_find_resource(bus_cur, start_address, &pfmem, PFMEM)) {
pfmem = kzalloc(sizeof(struct resource_node), GFP_KERNEL); pfmem = kzalloc(sizeof(struct resource_node), GFP_KERNEL);
if (!pfmem) { if (!pfmem) {
kfree (range); kfree(range);
err ("out of system memory\n"); err("out of system memory\n");
return -ENOMEM; return -ENOMEM;
} }
pfmem->type = PFMEM; pfmem->type = PFMEM;
...@@ -2130,7 +2130,7 @@ static int __init update_bridge_ranges (struct bus_node **bus) ...@@ -2130,7 +2130,7 @@ static int __init update_bridge_ranges (struct bus_node **bus)
pfmem->len = pfmem->end - pfmem->start + 1; pfmem->len = pfmem->end - pfmem->start + 1;
pfmem->fromMem = 0; pfmem->fromMem = 0;
ibmphp_add_resource (pfmem); ibmphp_add_resource(pfmem);
} }
} }
break; break;
......
...@@ -45,10 +45,10 @@ ...@@ -45,10 +45,10 @@
#define MY_NAME "pci_hotplug" #define MY_NAME "pci_hotplug"
#define dbg(fmt, arg...) do { if (debug) printk(KERN_DEBUG "%s: %s: " fmt , MY_NAME , __func__ , ## arg); } while (0) #define dbg(fmt, arg...) do { if (debug) printk(KERN_DEBUG "%s: %s: " fmt, MY_NAME, __func__, ## arg); } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format , MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
/* local variables */ /* local variables */
...@@ -226,7 +226,7 @@ static ssize_t test_write_file(struct pci_slot *pci_slot, const char *buf, ...@@ -226,7 +226,7 @@ static ssize_t test_write_file(struct pci_slot *pci_slot, const char *buf,
u32 test; u32 test;
int retval = 0; int retval = 0;
ltest = simple_strtoul (buf, NULL, 10); ltest = simple_strtoul(buf, NULL, 10);
test = (u32)(ltest & 0xffffffff); test = (u32)(ltest & 0xffffffff);
dbg("test = %d\n", test); dbg("test = %d\n", test);
......
...@@ -47,14 +47,14 @@ extern bool pciehp_debug; ...@@ -47,14 +47,14 @@ extern bool pciehp_debug;
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (pciehp_debug) \ if (pciehp_debug) \
printk(KERN_DEBUG "%s: " format, MY_NAME , ## arg); \ printk(KERN_DEBUG "%s: " format, MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) \ #define err(format, arg...) \
printk(KERN_ERR "%s: " format, MY_NAME , ## arg) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) \ #define info(format, arg...) \
printk(KERN_INFO "%s: " format, MY_NAME , ## arg) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) \ #define warn(format, arg...) \
printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
#define ctrl_dbg(ctrl, format, arg...) \ #define ctrl_dbg(ctrl, format, arg...) \
do { \ do { \
......
...@@ -62,14 +62,14 @@ MODULE_PARM_DESC(pciehp_force, "Force pciehp, even if OSHP is missing"); ...@@ -62,14 +62,14 @@ MODULE_PARM_DESC(pciehp_force, "Force pciehp, even if OSHP is missing");
#define PCIE_MODULE_NAME "pciehp" #define PCIE_MODULE_NAME "pciehp"
static int set_attention_status (struct hotplug_slot *slot, u8 value); static int set_attention_status(struct hotplug_slot *slot, u8 value);
static int enable_slot (struct hotplug_slot *slot); static int enable_slot(struct hotplug_slot *slot);
static int disable_slot (struct hotplug_slot *slot); static int disable_slot(struct hotplug_slot *slot);
static int get_power_status (struct hotplug_slot *slot, u8 *value); static int get_power_status(struct hotplug_slot *slot, u8 *value);
static int get_attention_status (struct hotplug_slot *slot, u8 *value); static int get_attention_status(struct hotplug_slot *slot, u8 *value);
static int get_latch_status (struct hotplug_slot *slot, u8 *value); static int get_latch_status(struct hotplug_slot *slot, u8 *value);
static int get_adapter_status (struct hotplug_slot *slot, u8 *value); static int get_adapter_status(struct hotplug_slot *slot, u8 *value);
static int reset_slot (struct hotplug_slot *slot, int probe); static int reset_slot(struct hotplug_slot *slot, int probe);
/** /**
* release_slot - free up the memory used by a slot * release_slot - free up the memory used by a slot
......
...@@ -52,11 +52,11 @@ static LIST_HEAD(slot_list); ...@@ -52,11 +52,11 @@ static LIST_HEAD(slot_list);
do { \ do { \
if (debug) \ if (debug) \
printk(KERN_DEBUG "%s: " format "\n", \ printk(KERN_DEBUG "%s: " format "\n", \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format "\n", MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format "\n", MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
/* local variables */ /* local variables */
static bool debug; static bool debug;
...@@ -72,14 +72,14 @@ MODULE_LICENSE("GPL"); ...@@ -72,14 +72,14 @@ MODULE_LICENSE("GPL");
module_param(debug, bool, 0644); module_param(debug, bool, 0644);
MODULE_PARM_DESC(debug, "Debugging mode enabled or not"); MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
static int enable_slot (struct hotplug_slot *slot); static int enable_slot(struct hotplug_slot *slot);
static int disable_slot (struct hotplug_slot *slot); static int disable_slot(struct hotplug_slot *slot);
static int set_attention_status (struct hotplug_slot *slot, u8 value); static int set_attention_status(struct hotplug_slot *slot, u8 value);
static int hardware_test (struct hotplug_slot *slot, u32 value); static int hardware_test(struct hotplug_slot *slot, u32 value);
static int get_power_status (struct hotplug_slot *slot, u8 *value); static int get_power_status(struct hotplug_slot *slot, u8 *value);
static int get_attention_status (struct hotplug_slot *slot, u8 *value); static int get_attention_status(struct hotplug_slot *slot, u8 *value);
static int get_latch_status (struct hotplug_slot *slot, u8 *value); static int get_latch_status(struct hotplug_slot *slot, u8 *value);
static int get_adapter_status (struct hotplug_slot *slot, u8 *value); static int get_adapter_status(struct hotplug_slot *slot, u8 *value);
static struct hotplug_slot_ops skel_hotplug_slot_ops = { static struct hotplug_slot_ops skel_hotplug_slot_ops = {
.enable_slot = enable_slot, .enable_slot = enable_slot,
......
...@@ -51,11 +51,11 @@ extern bool rpaphp_debug; ...@@ -51,11 +51,11 @@ extern bool rpaphp_debug;
do { \ do { \
if (rpaphp_debug) \ if (rpaphp_debug) \
printk(KERN_DEBUG "%s: " format, \ printk(KERN_DEBUG "%s: " format, \
MY_NAME , ## arg); \ MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME , ## arg) #define err(format, arg...) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME , ## arg) #define info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) #define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
/* slot states */ /* slot states */
......
...@@ -94,7 +94,7 @@ static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value) ...@@ -94,7 +94,7 @@ static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value)
int retval, level; int retval, level;
struct slot *slot = (struct slot *)hotplug_slot->private; struct slot *slot = (struct slot *)hotplug_slot->private;
retval = rtas_get_power_level (slot->power_domain, &level); retval = rtas_get_power_level(slot->power_domain, &level);
if (!retval) if (!retval)
*value = level; *value = level;
return retval; return retval;
......
...@@ -126,7 +126,7 @@ int rpaphp_enable_slot(struct slot *slot) ...@@ -126,7 +126,7 @@ int rpaphp_enable_slot(struct slot *slot)
if (rpaphp_debug) { if (rpaphp_debug) {
struct pci_dev *dev; struct pci_dev *dev;
dbg("%s: pci_devs of slot[%s]\n", __func__, slot->dn->full_name); dbg("%s: pci_devs of slot[%s]\n", __func__, slot->dn->full_name);
list_for_each_entry (dev, &bus->devices, bus_list) list_for_each_entry(dev, &bus->devices, bus_list)
dbg("\t%s\n", pci_name(dev)); dbg("\t%s\n", pci_name(dev));
} }
} }
......
...@@ -48,7 +48,7 @@ void dealloc_slot_struct(struct slot *slot) ...@@ -48,7 +48,7 @@ void dealloc_slot_struct(struct slot *slot)
} }
struct slot *alloc_slot_struct(struct device_node *dn, struct slot *alloc_slot_struct(struct device_node *dn,
int drc_index, char *drc_name, int power_domain) int drc_index, char *drc_name, int power_domain)
{ {
struct slot *slot; struct slot *slot;
......
...@@ -99,7 +99,7 @@ static ssize_t path_show(struct pci_slot *pci_slot, char *buf) ...@@ -99,7 +99,7 @@ static ssize_t path_show(struct pci_slot *pci_slot, char *buf)
if (!slot) if (!slot)
return retval; return retval;
retval = sprintf (buf, "%s\n", slot->physical_path); retval = sprintf(buf, "%s\n", slot->physical_path);
return retval; return retval;
} }
...@@ -313,7 +313,7 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot, ...@@ -313,7 +313,7 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
} }
if ((action == PCI_REQ_SLOT_DISABLE) && rc) { if ((action == PCI_REQ_SLOT_DISABLE) && rc) {
dev_dbg(&slot->pci_bus->self->dev,"remove failed rc = %d\n", rc); dev_dbg(&slot->pci_bus->self->dev, "remove failed rc = %d\n", rc);
} }
return rc; return rc;
...@@ -488,7 +488,7 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot) ...@@ -488,7 +488,7 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
/* free the ACPI resources for the slot */ /* free the ACPI resources for the slot */
if (SN_ACPI_BASE_SUPPORT() && if (SN_ACPI_BASE_SUPPORT() &&
PCI_CONTROLLER(slot->pci_bus)->companion) { PCI_CONTROLLER(slot->pci_bus)->companion) {
unsigned long long adr; unsigned long long adr;
struct acpi_device *device; struct acpi_device *device;
acpi_handle phandle; acpi_handle phandle;
......
...@@ -50,14 +50,14 @@ extern bool shpchp_debug; ...@@ -50,14 +50,14 @@ extern bool shpchp_debug;
#define dbg(format, arg...) \ #define dbg(format, arg...) \
do { \ do { \
if (shpchp_debug) \ if (shpchp_debug) \
printk(KERN_DEBUG "%s: " format, MY_NAME , ## arg); \ printk(KERN_DEBUG "%s: " format, MY_NAME, ## arg); \
} while (0) } while (0)
#define err(format, arg...) \ #define err(format, arg...) \
printk(KERN_ERR "%s: " format, MY_NAME , ## arg) printk(KERN_ERR "%s: " format, MY_NAME, ## arg)
#define info(format, arg...) \ #define info(format, arg...) \
printk(KERN_INFO "%s: " format, MY_NAME , ## arg) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
#define warn(format, arg...) \ #define warn(format, arg...) \
printk(KERN_WARNING "%s: " format, MY_NAME , ## arg) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
#define ctrl_dbg(ctrl, format, arg...) \ #define ctrl_dbg(ctrl, format, arg...) \
do { \ do { \
...@@ -84,7 +84,7 @@ struct slot { ...@@ -84,7 +84,7 @@ struct slot {
u8 presence_save; u8 presence_save;
u8 pwr_save; u8 pwr_save;
struct controller *ctrl; struct controller *ctrl;
struct hpc_ops *hpc_ops; const struct hpc_ops *hpc_ops;
struct hotplug_slot *hotplug_slot; struct hotplug_slot *hotplug_slot;
struct list_head slot_list; struct list_head slot_list;
struct delayed_work work; /* work for button event */ struct delayed_work work; /* work for button event */
...@@ -106,7 +106,7 @@ struct controller { ...@@ -106,7 +106,7 @@ struct controller {
int slot_num_inc; /* 1 or -1 */ int slot_num_inc; /* 1 or -1 */
struct pci_dev *pci_dev; struct pci_dev *pci_dev;
struct list_head slot_list; struct list_head slot_list;
struct hpc_ops *hpc_ops; const struct hpc_ops *hpc_ops;
wait_queue_head_t queue; /* sleep & wake process */ wait_queue_head_t queue; /* sleep & wake process */
u8 slot_device_offset; u8 slot_device_offset;
u32 pcix_misc2_reg; /* for amd pogo errata */ u32 pcix_misc2_reg; /* for amd pogo errata */
...@@ -295,7 +295,7 @@ static inline void amd_pogo_errata_restore_misc_reg(struct slot *p_slot) ...@@ -295,7 +295,7 @@ static inline void amd_pogo_errata_restore_misc_reg(struct slot *p_slot)
pci_write_config_dword(p_slot->ctrl->pci_dev, PCIX_MEM_BASE_LIMIT_OFFSET, rse_set); pci_write_config_dword(p_slot->ctrl->pci_dev, PCIX_MEM_BASE_LIMIT_OFFSET, rse_set);
} }
/* restore MiscII register */ /* restore MiscII register */
pci_read_config_dword(p_slot->ctrl->pci_dev, PCIX_MISCII_OFFSET, &pcix_misc2_temp ); pci_read_config_dword(p_slot->ctrl->pci_dev, PCIX_MISCII_OFFSET, &pcix_misc2_temp);
if (p_slot->ctrl->pcix_misc2_reg & SERRFATALENABLE_MASK) if (p_slot->ctrl->pcix_misc2_reg & SERRFATALENABLE_MASK)
pcix_misc2_temp |= SERRFATALENABLE_MASK; pcix_misc2_temp |= SERRFATALENABLE_MASK;
......
...@@ -57,13 +57,13 @@ MODULE_PARM_DESC(shpchp_poll_time, "Polling mechanism frequency, in seconds"); ...@@ -57,13 +57,13 @@ MODULE_PARM_DESC(shpchp_poll_time, "Polling mechanism frequency, in seconds");
#define SHPC_MODULE_NAME "shpchp" #define SHPC_MODULE_NAME "shpchp"
static int set_attention_status (struct hotplug_slot *slot, u8 value); static int set_attention_status(struct hotplug_slot *slot, u8 value);
static int enable_slot (struct hotplug_slot *slot); static int enable_slot(struct hotplug_slot *slot);
static int disable_slot (struct hotplug_slot *slot); static int disable_slot(struct hotplug_slot *slot);
static int get_power_status (struct hotplug_slot *slot, u8 *value); static int get_power_status(struct hotplug_slot *slot, u8 *value);
static int get_attention_status (struct hotplug_slot *slot, u8 *value); static int get_attention_status(struct hotplug_slot *slot, u8 *value);
static int get_latch_status (struct hotplug_slot *slot, u8 *value); static int get_latch_status(struct hotplug_slot *slot, u8 *value);
static int get_adapter_status (struct hotplug_slot *slot, u8 *value); static int get_adapter_status(struct hotplug_slot *slot, u8 *value);
static struct hotplug_slot_ops shpchp_hotplug_slot_ops = { static struct hotplug_slot_ops shpchp_hotplug_slot_ops = {
.set_attention_status = set_attention_status, .set_attention_status = set_attention_status,
...@@ -191,7 +191,7 @@ void cleanup_slots(struct controller *ctrl) ...@@ -191,7 +191,7 @@ void cleanup_slots(struct controller *ctrl)
/* /*
* set_attention_status - Turns the Amber LED for a slot on, off or blink * set_attention_status - Turns the Amber LED for a slot on, off or blink
*/ */
static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) static int set_attention_status(struct hotplug_slot *hotplug_slot, u8 status)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
...@@ -204,7 +204,7 @@ static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status) ...@@ -204,7 +204,7 @@ static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status)
return 0; return 0;
} }
static int enable_slot (struct hotplug_slot *hotplug_slot) static int enable_slot(struct hotplug_slot *hotplug_slot)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
...@@ -214,7 +214,7 @@ static int enable_slot (struct hotplug_slot *hotplug_slot) ...@@ -214,7 +214,7 @@ static int enable_slot (struct hotplug_slot *hotplug_slot)
return shpchp_sysfs_enable_slot(slot); return shpchp_sysfs_enable_slot(slot);
} }
static int disable_slot (struct hotplug_slot *hotplug_slot) static int disable_slot(struct hotplug_slot *hotplug_slot)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
...@@ -224,7 +224,7 @@ static int disable_slot (struct hotplug_slot *hotplug_slot) ...@@ -224,7 +224,7 @@ static int disable_slot (struct hotplug_slot *hotplug_slot)
return shpchp_sysfs_disable_slot(slot); return shpchp_sysfs_disable_slot(slot);
} }
static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value) static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
int retval; int retval;
...@@ -239,7 +239,7 @@ static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value) ...@@ -239,7 +239,7 @@ static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value)
return 0; return 0;
} }
static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value) static int get_attention_status(struct hotplug_slot *hotplug_slot, u8 *value)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
int retval; int retval;
...@@ -254,7 +254,7 @@ static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value) ...@@ -254,7 +254,7 @@ static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value)
return 0; return 0;
} }
static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value) static int get_latch_status(struct hotplug_slot *hotplug_slot, u8 *value)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
int retval; int retval;
...@@ -269,7 +269,7 @@ static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value) ...@@ -269,7 +269,7 @@ static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value)
return 0; return 0;
} }
static int get_adapter_status (struct hotplug_slot *hotplug_slot, u8 *value) static int get_adapter_status(struct hotplug_slot *hotplug_slot, u8 *value)
{ {
struct slot *slot = get_slot(hotplug_slot); struct slot *slot = get_slot(hotplug_slot);
int retval; int retval;
......
...@@ -542,7 +542,7 @@ static int hpc_set_attention_status(struct slot *slot, u8 value) ...@@ -542,7 +542,7 @@ static int hpc_set_attention_status(struct slot *slot, u8 value)
u8 slot_cmd = 0; u8 slot_cmd = 0;
switch (value) { switch (value) {
case 0 : case 0:
slot_cmd = SET_ATTN_OFF; /* OFF */ slot_cmd = SET_ATTN_OFF; /* OFF */
break; break;
case 1: case 1:
...@@ -910,7 +910,7 @@ static int shpc_get_max_bus_speed(struct controller *ctrl) ...@@ -910,7 +910,7 @@ static int shpc_get_max_bus_speed(struct controller *ctrl)
return retval; return retval;
} }
static struct hpc_ops shpchp_hpc_ops = { static const struct hpc_ops shpchp_hpc_ops = {
.power_on_slot = hpc_power_on_slot, .power_on_slot = hpc_power_on_slot,
.slot_enable = hpc_slot_enable, .slot_enable = hpc_slot_enable,
.slot_disable = hpc_slot_disable, .slot_disable = hpc_slot_disable,
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
/* A few routines that create sysfs entries for the hot plug controller */ /* A few routines that create sysfs entries for the hot plug controller */
static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, char *buf) static ssize_t show_ctrl(struct device *dev, struct device_attribute *attr, char *buf)
{ {
struct pci_dev *pdev; struct pci_dev *pdev;
char *out = buf; char *out = buf;
...@@ -43,7 +43,7 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha ...@@ -43,7 +43,7 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
struct resource *res; struct resource *res;
struct pci_bus *bus; struct pci_bus *bus;
pdev = container_of (dev, struct pci_dev, dev); pdev = to_pci_dev(dev);
bus = pdev->subordinate; bus = pdev->subordinate;
out += sprintf(buf, "Free resources: memory\n"); out += sprintf(buf, "Free resources: memory\n");
...@@ -83,11 +83,11 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha ...@@ -83,11 +83,11 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
return out - buf; return out - buf;
} }
static DEVICE_ATTR (ctrl, S_IRUGO, show_ctrl, NULL); static DEVICE_ATTR(ctrl, S_IRUGO, show_ctrl, NULL);
int shpchp_create_ctrl_files (struct controller *ctrl) int shpchp_create_ctrl_files(struct controller *ctrl)
{ {
return device_create_file (&ctrl->pci_dev->dev, &dev_attr_ctrl); return device_create_file(&ctrl->pci_dev->dev, &dev_attr_ctrl);
} }
void shpchp_remove_ctrl_files(struct controller *ctrl) void shpchp_remove_ctrl_files(struct controller *ctrl)
......
...@@ -77,7 +77,7 @@ static umode_t smbios_instance_string_exist(struct kobject *kobj, ...@@ -77,7 +77,7 @@ static umode_t smbios_instance_string_exist(struct kobject *kobj,
struct device *dev; struct device *dev;
struct pci_dev *pdev; struct pci_dev *pdev;
dev = container_of(kobj, struct device, kobj); dev = kobj_to_dev(kobj);
pdev = to_pci_dev(dev); pdev = to_pci_dev(dev);
return find_smbios_instance_string(pdev, NULL, SMBIOS_ATTR_NONE) ? return find_smbios_instance_string(pdev, NULL, SMBIOS_ATTR_NONE) ?
...@@ -221,7 +221,7 @@ static umode_t acpi_index_string_exist(struct kobject *kobj, ...@@ -221,7 +221,7 @@ static umode_t acpi_index_string_exist(struct kobject *kobj,
{ {
struct device *dev; struct device *dev;
dev = container_of(kobj, struct device, kobj); dev = kobj_to_dev(kobj);
if (device_has_dsm(dev)) if (device_has_dsm(dev))
return S_IRUGO; return S_IRUGO;
......
...@@ -627,8 +627,7 @@ static ssize_t pci_read_config(struct file *filp, struct kobject *kobj, ...@@ -627,8 +627,7 @@ static ssize_t pci_read_config(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *dev = to_pci_dev(container_of(kobj, struct device, struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
kobj));
unsigned int size = 64; unsigned int size = 64;
loff_t init_off = off; loff_t init_off = off;
u8 *data = (u8 *) buf; u8 *data = (u8 *) buf;
...@@ -704,8 +703,7 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj, ...@@ -704,8 +703,7 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *dev = to_pci_dev(container_of(kobj, struct device, struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
kobj));
unsigned int size = count; unsigned int size = count;
loff_t init_off = off; loff_t init_off = off;
u8 *data = (u8 *) buf; u8 *data = (u8 *) buf;
...@@ -766,8 +764,7 @@ static ssize_t read_vpd_attr(struct file *filp, struct kobject *kobj, ...@@ -766,8 +764,7 @@ static ssize_t read_vpd_attr(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *dev = struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
to_pci_dev(container_of(kobj, struct device, kobj));
if (off > bin_attr->size) if (off > bin_attr->size)
count = 0; count = 0;
...@@ -781,8 +778,7 @@ static ssize_t write_vpd_attr(struct file *filp, struct kobject *kobj, ...@@ -781,8 +778,7 @@ static ssize_t write_vpd_attr(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *dev = struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
to_pci_dev(container_of(kobj, struct device, kobj));
if (off > bin_attr->size) if (off > bin_attr->size)
count = 0; count = 0;
...@@ -809,8 +805,7 @@ static ssize_t pci_read_legacy_io(struct file *filp, struct kobject *kobj, ...@@ -809,8 +805,7 @@ static ssize_t pci_read_legacy_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device, struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
kobj));
/* Only support 1, 2 or 4 byte accesses */ /* Only support 1, 2 or 4 byte accesses */
if (count != 1 && count != 2 && count != 4) if (count != 1 && count != 2 && count != 4)
...@@ -835,8 +830,7 @@ static ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj, ...@@ -835,8 +830,7 @@ static ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device, struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
kobj));
/* Only support 1, 2 or 4 byte accesses */ /* Only support 1, 2 or 4 byte accesses */
if (count != 1 && count != 2 && count != 4) if (count != 1 && count != 2 && count != 4)
...@@ -860,8 +854,7 @@ static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj, ...@@ -860,8 +854,7 @@ static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, struct bin_attribute *attr,
struct vm_area_struct *vma) struct vm_area_struct *vma)
{ {
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device, struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
kobj));
return pci_mmap_legacy_page_range(bus, vma, pci_mmap_mem); return pci_mmap_legacy_page_range(bus, vma, pci_mmap_mem);
} }
...@@ -881,8 +874,7 @@ static int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj, ...@@ -881,8 +874,7 @@ static int pci_mmap_legacy_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, struct bin_attribute *attr,
struct vm_area_struct *vma) struct vm_area_struct *vma)
{ {
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device, struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
kobj));
return pci_mmap_legacy_page_range(bus, vma, pci_mmap_io); return pci_mmap_legacy_page_range(bus, vma, pci_mmap_io);
} }
...@@ -997,8 +989,7 @@ int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma, ...@@ -997,8 +989,7 @@ int pci_mmap_fits(struct pci_dev *pdev, int resno, struct vm_area_struct *vma,
static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr, static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
struct vm_area_struct *vma, int write_combine) struct vm_area_struct *vma, int write_combine)
{ {
struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
struct device, kobj));
struct resource *res = attr->private; struct resource *res = attr->private;
enum pci_mmap_state mmap_type; enum pci_mmap_state mmap_type;
resource_size_t start, end; resource_size_t start, end;
...@@ -1051,8 +1042,7 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj, ...@@ -1051,8 +1042,7 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj,
struct bin_attribute *attr, char *buf, struct bin_attribute *attr, char *buf,
loff_t off, size_t count, bool write) loff_t off, size_t count, bool write)
{ {
struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
struct device, kobj));
struct resource *res = attr->private; struct resource *res = attr->private;
unsigned long port = off; unsigned long port = off;
int i; int i;
...@@ -1222,7 +1212,7 @@ static ssize_t pci_write_rom(struct file *filp, struct kobject *kobj, ...@@ -1222,7 +1212,7 @@ static ssize_t pci_write_rom(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj)); struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
if ((off == 0) && (*buf == '0') && (count == 2)) if ((off == 0) && (*buf == '0') && (count == 2))
pdev->rom_attr_enabled = 0; pdev->rom_attr_enabled = 0;
...@@ -1248,7 +1238,7 @@ static ssize_t pci_read_rom(struct file *filp, struct kobject *kobj, ...@@ -1248,7 +1238,7 @@ static ssize_t pci_read_rom(struct file *filp, struct kobject *kobj,
struct bin_attribute *bin_attr, char *buf, struct bin_attribute *bin_attr, char *buf,
loff_t off, size_t count) loff_t off, size_t count)
{ {
struct pci_dev *pdev = to_pci_dev(container_of(kobj, struct device, kobj)); struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
void __iomem *rom; void __iomem *rom;
size_t size; size_t size;
...@@ -1508,7 +1498,7 @@ static struct attribute *pci_dev_dev_attrs[] = { ...@@ -1508,7 +1498,7 @@ static struct attribute *pci_dev_dev_attrs[] = {
static umode_t pci_dev_attrs_are_visible(struct kobject *kobj, static umode_t pci_dev_attrs_are_visible(struct kobject *kobj,
struct attribute *a, int n) struct attribute *a, int n)
{ {
struct device *dev = container_of(kobj, struct device, kobj); struct device *dev = kobj_to_dev(kobj);
struct pci_dev *pdev = to_pci_dev(dev); struct pci_dev *pdev = to_pci_dev(dev);
if (a == &vga_attr.attr) if (a == &vga_attr.attr)
...@@ -1527,7 +1517,7 @@ static struct attribute *pci_dev_hp_attrs[] = { ...@@ -1527,7 +1517,7 @@ static struct attribute *pci_dev_hp_attrs[] = {
static umode_t pci_dev_hp_attrs_are_visible(struct kobject *kobj, static umode_t pci_dev_hp_attrs_are_visible(struct kobject *kobj,
struct attribute *a, int n) struct attribute *a, int n)
{ {
struct device *dev = container_of(kobj, struct device, kobj); struct device *dev = kobj_to_dev(kobj);
struct pci_dev *pdev = to_pci_dev(dev); struct pci_dev *pdev = to_pci_dev(dev);
if (pdev->is_virtfn) if (pdev->is_virtfn)
...@@ -1551,7 +1541,7 @@ static struct attribute *sriov_dev_attrs[] = { ...@@ -1551,7 +1541,7 @@ static struct attribute *sriov_dev_attrs[] = {
static umode_t sriov_attrs_are_visible(struct kobject *kobj, static umode_t sriov_attrs_are_visible(struct kobject *kobj,
struct attribute *a, int n) struct attribute *a, int n)
{ {
struct device *dev = container_of(kobj, struct device, kobj); struct device *dev = kobj_to_dev(kobj);
if (!dev_is_pf(dev)) if (!dev_is_pf(dev))
return 0; return 0;
......
...@@ -1417,7 +1417,7 @@ struct pci_devres { ...@@ -1417,7 +1417,7 @@ struct pci_devres {
static void pcim_release(struct device *gendev, void *res) static void pcim_release(struct device *gendev, void *res)
{ {
struct pci_dev *dev = container_of(gendev, struct pci_dev, dev); struct pci_dev *dev = to_pci_dev(gendev);
struct pci_devres *this = res; struct pci_devres *this = res;
int i; int i;
...@@ -1534,7 +1534,7 @@ void __weak pcibios_release_device(struct pci_dev *dev) {} ...@@ -1534,7 +1534,7 @@ void __weak pcibios_release_device(struct pci_dev *dev) {}
* is the default implementation. Architecture implementations can * is the default implementation. Architecture implementations can
* override this. * override this.
*/ */
void __weak pcibios_disable_device (struct pci_dev *dev) {} void __weak pcibios_disable_device(struct pci_dev *dev) {}
/** /**
* pcibios_penalize_isa_irq - penalize an ISA IRQ * pcibios_penalize_isa_irq - penalize an ISA IRQ
......
...@@ -442,7 +442,7 @@ static void __assign_resources_sorted(struct list_head *head, ...@@ -442,7 +442,7 @@ static void __assign_resources_sorted(struct list_head *head,
break; break;
} }
} }
} }
} }
......
...@@ -186,7 +186,7 @@ struct msi_domain_info; ...@@ -186,7 +186,7 @@ struct msi_domain_info;
* @msi_free: Domain specific function to free a MSI interrupts * @msi_free: Domain specific function to free a MSI interrupts
* @msi_check: Callback for verification of the domain/info/dev data * @msi_check: Callback for verification of the domain/info/dev data
* @msi_prepare: Prepare the allocation of the interrupts in the domain * @msi_prepare: Prepare the allocation of the interrupts in the domain
* @msi_finish: Optional callbacl to finalize the allocation * @msi_finish: Optional callback to finalize the allocation
* @set_desc: Set the msi descriptor for an interrupt * @set_desc: Set the msi descriptor for an interrupt
* @handle_error: Optional error handler if the allocation fails * @handle_error: Optional error handler if the allocation fails
* *
...@@ -194,7 +194,7 @@ struct msi_domain_info; ...@@ -194,7 +194,7 @@ struct msi_domain_info;
* msi_create_irq_domain() and related interfaces * msi_create_irq_domain() and related interfaces
* *
* @msi_check, @msi_prepare, @msi_finish, @set_desc and @handle_error * @msi_check, @msi_prepare, @msi_finish, @set_desc and @handle_error
* are callbacks used by msi_irq_domain_alloc_irqs() and related * are callbacks used by msi_domain_alloc_irqs() and related
* interfaces which are based on msi_desc. * interfaces which are based on msi_desc.
*/ */
struct msi_domain_ops { struct msi_domain_ops {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册