mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 10:20:49 +07:00
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>
This commit is contained in:
commit
9662e32c81
@ -25,7 +25,7 @@ DEFINE_RAW_SPINLOCK(pci_lock);
|
||||
#define PCI_word_BAD (pos & 1)
|
||||
#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 \
|
||||
(struct pci_bus *bus, unsigned int devfn, int pos, type *value) \
|
||||
{ \
|
||||
@ -40,7 +40,7 @@ int pci_bus_read_config_##size \
|
||||
return res; \
|
||||
}
|
||||
|
||||
#define PCI_OP_WRITE(size,type,len) \
|
||||
#define PCI_OP_WRITE(size, type, len) \
|
||||
int pci_bus_write_config_##size \
|
||||
(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)
|
||||
}
|
||||
|
||||
/* 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 \
|
||||
(struct pci_dev *dev, int pos, type *val) \
|
||||
{ \
|
||||
@ -251,7 +251,7 @@ int pci_user_read_config_##size \
|
||||
EXPORT_SYMBOL_GPL(pci_user_read_config_##size);
|
||||
|
||||
/* 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 \
|
||||
(struct pci_dev *dev, int pos, type val) \
|
||||
{ \
|
||||
|
@ -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) */
|
||||
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;
|
||||
int ret;
|
||||
|
@ -36,10 +36,10 @@
|
||||
|
||||
#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 err(format, arg...) printk(KERN_ERR "%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 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 info(format, arg...) printk(KERN_INFO "%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_OSHP "OSHP"
|
||||
@ -132,7 +132,7 @@ int acpi_get_hp_hw_control_from_firmware(struct pci_dev *pdev, u32 flags)
|
||||
|
||||
while (handle) {
|
||||
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);
|
||||
status = acpi_run_oshp(handle);
|
||||
if (ACPI_SUCCESS(status))
|
||||
|
@ -181,7 +181,7 @@ struct acpiphp_attention_info
|
||||
/* function prototypes */
|
||||
|
||||
/* 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_register_hotplug_slot(struct acpiphp_slot *slot, unsigned int sun);
|
||||
void acpiphp_unregister_hotplug_slot(struct acpiphp_slot *slot);
|
||||
|
@ -63,13 +63,13 @@ MODULE_LICENSE("GPL");
|
||||
MODULE_PARM_DESC(disable, "disable acpiphp driver");
|
||||
module_param_named(disable, acpiphp_disabled, bool, 0444);
|
||||
|
||||
static int enable_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 get_power_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_adapter_status (struct hotplug_slot *slot, u8 *value);
|
||||
static int enable_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 get_power_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_adapter_status(struct hotplug_slot *slot, u8 *value);
|
||||
|
||||
static struct hotplug_slot_ops acpi_hotplug_slot_ops = {
|
||||
.enable_slot = enable_slot,
|
||||
|
@ -707,7 +707,7 @@ static void acpiphp_sanitize_bus(struct pci_bus *bus)
|
||||
unsigned long type_mask = IORESOURCE_IO | IORESOURCE_MEM;
|
||||
|
||||
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];
|
||||
if ((res->flags & type_mask) && !res->start &&
|
||||
res->end) {
|
||||
|
@ -336,7 +336,7 @@ static int ibm_get_table_from_acpi(char **bufp)
|
||||
}
|
||||
|
||||
size = 0;
|
||||
for (i=0; i<package->package.count; i++) {
|
||||
for (i = 0; i < package->package.count; i++) {
|
||||
memcpy(&lbuf[size],
|
||||
package->package.elements[i].buffer.pointer,
|
||||
package->package.elements[i].buffer.length);
|
||||
|
@ -52,13 +52,13 @@ struct slot {
|
||||
};
|
||||
|
||||
struct cpci_hp_controller_ops {
|
||||
int (*query_enum) (void);
|
||||
int (*enable_irq) (void);
|
||||
int (*disable_irq) (void);
|
||||
int (*check_irq) (void *dev_id);
|
||||
int (*hardware_test) (struct slot *slot, u32 value);
|
||||
u8 (*get_power) (struct slot *slot);
|
||||
int (*set_power) (struct slot *slot, int value);
|
||||
int (*query_enum)(void);
|
||||
int (*enable_irq)(void);
|
||||
int (*disable_irq)(void);
|
||||
int (*check_irq)(void *dev_id);
|
||||
int (*hardware_test)(struct slot *slot, u32 value);
|
||||
u8 (*get_power)(struct slot *slot);
|
||||
int (*set_power)(struct slot *slot, int value);
|
||||
};
|
||||
|
||||
struct cpci_hp_controller {
|
||||
|
@ -45,12 +45,12 @@
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (cpci_debug) \
|
||||
printk (KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
|
||||
|
||||
/* local variables */
|
||||
static DECLARE_RWSEM(list_rwsem);
|
||||
@ -238,21 +238,21 @@ cpci_hp_register_bus(struct pci_bus *bus, u8 first, u8 last)
|
||||
* with the pci_hotplug subsystem.
|
||||
*/
|
||||
for (i = first; i <= last; ++i) {
|
||||
slot = kzalloc(sizeof (struct slot), GFP_KERNEL);
|
||||
slot = kzalloc(sizeof(struct slot), GFP_KERNEL);
|
||||
if (!slot) {
|
||||
status = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
hotplug_slot =
|
||||
kzalloc(sizeof (struct hotplug_slot), GFP_KERNEL);
|
||||
kzalloc(sizeof(struct hotplug_slot), GFP_KERNEL);
|
||||
if (!hotplug_slot) {
|
||||
status = -ENOMEM;
|
||||
goto error_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) {
|
||||
status = -ENOMEM;
|
||||
goto error_hpslot;
|
||||
|
@ -38,12 +38,12 @@ extern int cpci_debug;
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (cpci_debug) \
|
||||
printk (KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
|
||||
|
||||
|
||||
u8 cpci_get_attention_status(struct slot *slot)
|
||||
|
@ -54,12 +54,12 @@
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (debug) \
|
||||
printk (KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
|
||||
|
||||
/* local variables */
|
||||
static bool debug;
|
||||
@ -164,7 +164,7 @@ static int __init cpcihp_generic_init(void)
|
||||
bus = dev->subordinate;
|
||||
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 = &generic_hpc_ops;
|
||||
|
||||
|
@ -49,12 +49,12 @@
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (debug) \
|
||||
printk (KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
|
||||
|
||||
/* local variables */
|
||||
static bool debug;
|
||||
@ -204,7 +204,7 @@ static int zt5550_hc_disable_irq(void)
|
||||
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;
|
||||
|
||||
@ -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");
|
||||
|
||||
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 = &zt5550_hpc_ops;
|
||||
if (!poll) {
|
||||
|
@ -36,10 +36,10 @@
|
||||
|
||||
#define MY_NAME "cpqphp"
|
||||
|
||||
#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 info(format, arg...) printk(KERN_INFO "%s: " format , MY_NAME , ## arg)
|
||||
#define warn(format, arg...) printk(KERN_WARNING "%s: " format , MY_NAME , ## arg)
|
||||
#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 info(format, arg...) printk(KERN_INFO "%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);
|
||||
int cpqhp_hardware_test(struct controller *ctrl, int test_num);
|
||||
|
||||
/* resource functions */
|
||||
int cpqhp_resource_sort_and_combine (struct pci_resource **head);
|
||||
int cpqhp_resource_sort_and_combine(struct pci_resource **head);
|
||||
|
||||
/* pci functions */
|
||||
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,
|
||||
u8 hp_slot;
|
||||
|
||||
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);
|
||||
|
||||
status = (readl(ctrl->hpc_reg + INT_INPUT_CLEAR) & (0x01L << hp_slot));
|
||||
@ -712,7 +712,7 @@ static inline int get_presence_status(struct controller *ctrl,
|
||||
|
||||
static inline int wait_for_ctrl_irq(struct controller *ctrl)
|
||||
{
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
DECLARE_WAITQUEUE(wait, current);
|
||||
int retval = 0;
|
||||
|
||||
dbg("%s - start\n", __func__);
|
||||
|
@ -291,7 +291,7 @@ static void release_slot(struct hotplug_slot *hotplug_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;
|
||||
|
||||
@ -301,7 +301,7 @@ static int ctrl_slot_cleanup (struct controller *ctrl)
|
||||
while (old_slot) {
|
||||
/* memory will be freed by the release_slot callback */
|
||||
next_slot = old_slot->next;
|
||||
pci_hp_deregister (old_slot->hotplug_slot);
|
||||
pci_hp_deregister(old_slot->hotplug_slot);
|
||||
old_slot = next_slot;
|
||||
}
|
||||
|
||||
@ -413,9 +413,9 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
if (status == 1)
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
else if (status == 0)
|
||||
amber_LED_off (ctrl, hp_slot);
|
||||
amber_LED_off(ctrl, hp_slot);
|
||||
else {
|
||||
/* Done with exclusive hardware access */
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
@ -425,7 +425,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
/* Done with exclusive hardware access */
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
@ -439,7 +439,7 @@ cpqhp_set_attention_status(struct controller *ctrl, struct pci_func *func,
|
||||
* @hotplug_slot: slot to change LED on
|
||||
* @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 slot *slot = hotplug_slot->private;
|
||||
@ -610,7 +610,7 @@ static int ctrl_slot_setup(struct controller *ctrl,
|
||||
u8 ctrl_slot;
|
||||
u32 tempdword;
|
||||
char name[SLOT_NAME_SIZE];
|
||||
void __iomem *slot_entry= NULL;
|
||||
void __iomem *slot_entry = NULL;
|
||||
int result;
|
||||
|
||||
dbg("%s\n", __func__);
|
||||
@ -755,7 +755,7 @@ static int one_time_init(void)
|
||||
if (cpqhp_debug)
|
||||
pci_print_IRQ_route();
|
||||
|
||||
dbg("Initialize + Start the notification mechanism \n");
|
||||
dbg("Initialize + Start the notification mechanism\n");
|
||||
|
||||
retval = cpqhp_event_start_thread();
|
||||
if (retval)
|
||||
@ -772,7 +772,7 @@ static int one_time_init(void)
|
||||
/* Map rom address */
|
||||
cpqhp_rom_start = ioremap(ROM_PHY_ADDR, ROM_PHY_LEN);
|
||||
if (!cpqhp_rom_start) {
|
||||
err ("Could not ioremap memory region for ROM\n");
|
||||
err("Could not ioremap memory region for ROM\n");
|
||||
retval = -EIO;
|
||||
goto error;
|
||||
}
|
||||
@ -786,7 +786,7 @@ static int one_time_init(void)
|
||||
smbios_table = detect_SMBIOS_pointer(cpqhp_rom_start,
|
||||
cpqhp_rom_start + ROM_PHY_LEN);
|
||||
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;
|
||||
goto error_rom_start;
|
||||
}
|
||||
@ -794,7 +794,7 @@ static int one_time_init(void)
|
||||
smbios_start = ioremap(readl(smbios_table + ST_ADDRESS),
|
||||
readw(smbios_table + ST_LENGTH));
|
||||
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;
|
||||
goto error_smbios_start;
|
||||
}
|
||||
@ -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
|
||||
*/
|
||||
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;
|
||||
|
||||
@ -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);
|
||||
|
||||
/* 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,
|
||||
IRQF_SHARED, MY_NAME, ctrl)) {
|
||||
err("Can't get irq %d for the hotplug pci controller\n",
|
||||
@ -1321,7 +1321,7 @@ static void __exit unload_cpqphpd(void)
|
||||
while (ctrl) {
|
||||
if (ctrl->hpc_reg) {
|
||||
u16 misc;
|
||||
rc = read_slot_enable (ctrl);
|
||||
rc = read_slot_enable(ctrl);
|
||||
|
||||
writeb(0, ctrl->hpc_reg + SLOT_SERR);
|
||||
writel(0xFFFFFFC0L | ~rc, ctrl->hpc_reg + INT_MASK);
|
||||
@ -1361,7 +1361,7 @@ static void __exit unload_cpqphpd(void)
|
||||
kfree(tres);
|
||||
}
|
||||
|
||||
kfree (ctrl->pci_bus);
|
||||
kfree(ctrl->pci_bus);
|
||||
|
||||
tctrl = ctrl;
|
||||
ctrl = ctrl->next;
|
||||
@ -1446,7 +1446,7 @@ static int __init cpqhpc_init(void)
|
||||
|
||||
cpqhp_debug = debug;
|
||||
|
||||
info (DRIVER_DESC " version: " DRIVER_VERSION "\n");
|
||||
info(DRIVER_DESC " version: " DRIVER_VERSION "\n");
|
||||
cpqhp_initialize_debugfs();
|
||||
result = pci_register_driver(&cpqhpc_driver);
|
||||
dbg("pci_register_driver = %d\n", result);
|
||||
|
@ -155,7 +155,7 @@ static u8 handle_presence_change(u16 change, struct controller *ctrl)
|
||||
* Presence Change
|
||||
*/
|
||||
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++) {
|
||||
if (change & (0x0101 << hp_slot)) {
|
||||
@ -276,9 +276,9 @@ static u8 handle_power_fault(u8 change, struct controller *ctrl)
|
||||
taskInfo->event_type = INT_POWER_FAULT;
|
||||
|
||||
if (ctrl->rev < 4) {
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
set_SOGO (ctrl);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* this is a fatal condition, we want
|
||||
* to crash the machine to protect from
|
||||
@ -438,7 +438,7 @@ static struct pci_resource *do_pre_bridge_resource_split(struct pci_resource **h
|
||||
|
||||
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
|
||||
* and split it up.
|
||||
*/
|
||||
@ -835,13 +835,13 @@ int cpqhp_resource_sort_and_combine(struct pci_resource **head)
|
||||
if (!(*head))
|
||||
return 1;
|
||||
|
||||
dbg("*head->next = %p\n",(*head)->next);
|
||||
dbg("*head->next = %p\n", (*head)->next);
|
||||
|
||||
if (!(*head)->next)
|
||||
return 0; /* only one item on the list, already sorted! */
|
||||
|
||||
dbg("*head->base = 0x%x\n",(*head)->base);
|
||||
dbg("*head->next->base = 0x%x\n",(*head)->next->base);
|
||||
dbg("*head->base = 0x%x\n", (*head)->base);
|
||||
dbg("*head->next->base = 0x%x\n", (*head)->next->base);
|
||||
while (out_of_order) {
|
||||
out_of_order = 0;
|
||||
|
||||
@ -917,7 +917,7 @@ irqreturn_t cpqhp_ctrl_intr(int IRQ, void *data)
|
||||
/* Read to clear posted writes */
|
||||
misc = readw(ctrl->hpc_reg + MISC);
|
||||
|
||||
dbg ("%s - waking up\n", __func__);
|
||||
dbg("%s - waking up\n", __func__);
|
||||
wake_up_interruptible(&ctrl->queue);
|
||||
}
|
||||
|
||||
@ -1285,18 +1285,18 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
/*
|
||||
* The board is already on
|
||||
*/
|
||||
else if (is_slot_enabled (ctrl, hp_slot))
|
||||
else if (is_slot_enabled(ctrl, hp_slot))
|
||||
rc = CARD_FUNCTIONING;
|
||||
else {
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
/* turn on board without attaching to the bus */
|
||||
enable_slot_power (ctrl, hp_slot);
|
||||
enable_slot_power(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* 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
|
||||
* NOTE: this is to work around the timer bug */
|
||||
@ -1307,7 +1307,7 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
adapter_speed = get_adapter_speed(ctrl, hp_slot);
|
||||
if (bus->cur_bus_speed != adapter_speed)
|
||||
@ -1315,12 +1315,12 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
rc = WRONG_BUS_FREQUENCY;
|
||||
|
||||
/* turn off board without attaching to the bus */
|
||||
disable_slot_power (ctrl, hp_slot);
|
||||
disable_slot_power(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
|
||||
@ -1329,15 +1329,15 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
slot_enable (ctrl, hp_slot);
|
||||
green_LED_blink (ctrl, hp_slot);
|
||||
slot_enable(ctrl, hp_slot);
|
||||
green_LED_blink(ctrl, hp_slot);
|
||||
|
||||
amber_LED_off (ctrl, hp_slot);
|
||||
amber_LED_off(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
|
||||
@ -1366,14 +1366,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
slot_disable (ctrl, hp_slot);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
slot_disable(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
|
||||
@ -1392,14 +1392,14 @@ static u32 board_replaced(struct pci_func *func, struct controller *ctrl)
|
||||
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
slot_disable (ctrl, hp_slot);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
slot_disable(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
}
|
||||
@ -1443,7 +1443,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* 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
|
||||
* NOTE: this is to work around the timer bug
|
||||
@ -1455,7 +1455,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
adapter_speed = get_adapter_speed(ctrl, hp_slot);
|
||||
if (bus->cur_bus_speed != adapter_speed)
|
||||
@ -1463,7 +1463,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
rc = WRONG_BUS_FREQUENCY;
|
||||
|
||||
/* turn off board without attaching to the bus */
|
||||
disable_slot_power (ctrl, hp_slot);
|
||||
disable_slot_power(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
@ -1484,20 +1484,20 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
dbg("%s: after down\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__);
|
||||
green_LED_blink (ctrl, hp_slot);
|
||||
green_LED_blink(ctrl, hp_slot);
|
||||
|
||||
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__);
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
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: before up\n", __func__);
|
||||
@ -1520,7 +1520,7 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
} else {
|
||||
/* Get vendor/device ID u32 */
|
||||
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: temp_register is %x\n", __func__, temp_register);
|
||||
|
||||
@ -1557,14 +1557,14 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
if (rc) {
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
slot_disable (ctrl, hp_slot);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
slot_disable(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
return rc;
|
||||
@ -1589,25 +1589,25 @@ static u32 board_added(struct pci_func *func, struct controller *ctrl)
|
||||
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
green_LED_on (ctrl, hp_slot);
|
||||
green_LED_on(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
} else {
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
amber_LED_on (ctrl, hp_slot);
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
slot_disable (ctrl, hp_slot);
|
||||
amber_LED_on(ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
slot_disable(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
|
||||
@ -1672,8 +1672,8 @@ static u32 remove_board(struct pci_func *func, u32 replace_flag, struct controll
|
||||
|
||||
mutex_lock(&ctrl->crit_sect);
|
||||
|
||||
green_LED_off (ctrl, hp_slot);
|
||||
slot_disable (ctrl, hp_slot);
|
||||
green_LED_off(ctrl, hp_slot);
|
||||
slot_disable(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
@ -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);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
|
||||
@ -1755,7 +1755,7 @@ static int event_thread(void *data)
|
||||
if (pushbutton_pending)
|
||||
cpqhp_pushbutton_thread(pushbutton_pending);
|
||||
else
|
||||
for (ctrl = cpqhp_ctrl_list; ctrl; ctrl=ctrl->next)
|
||||
for (ctrl = cpqhp_ctrl_list; ctrl; ctrl = ctrl->next)
|
||||
interrupt_event_handler(ctrl);
|
||||
}
|
||||
dbg("event_thread signals exit\n");
|
||||
@ -1766,7 +1766,7 @@ int cpqhp_event_start_thread(void)
|
||||
{
|
||||
cpqhp_event_thread = kthread_run(event_thread, NULL, "phpd_event");
|
||||
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);
|
||||
}
|
||||
|
||||
@ -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->adapter_status = get_presence_status(ctrl, slot);
|
||||
result = pci_hp_change_slot_info(slot->hotplug_slot, info);
|
||||
kfree (info);
|
||||
kfree(info);
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -1837,23 +1837,23 @@ static void interrupt_event_handler(struct controller *ctrl)
|
||||
if (p_slot->state == BLINKINGOFF_STATE) {
|
||||
/* slot is on */
|
||||
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) {
|
||||
/* slot is off */
|
||||
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);
|
||||
|
||||
p_slot->state = STATIC_STATE;
|
||||
|
||||
amber_LED_off (ctrl, hp_slot);
|
||||
amber_LED_off(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
}
|
||||
@ -1861,7 +1861,7 @@ static void interrupt_event_handler(struct controller *ctrl)
|
||||
else if (ctrl->event_queue[loop].event_type == INT_BUTTON_RELEASE) {
|
||||
dbg("button release\n");
|
||||
|
||||
if (is_slot_enabled (ctrl, hp_slot)) {
|
||||
if (is_slot_enabled(ctrl, hp_slot)) {
|
||||
dbg("slot is on\n");
|
||||
p_slot->state = BLINKINGOFF_STATE;
|
||||
info(msg_button_off, p_slot->number);
|
||||
@ -1874,13 +1874,13 @@ static void interrupt_event_handler(struct controller *ctrl)
|
||||
|
||||
dbg("blink green LED and turn off amber\n");
|
||||
|
||||
amber_LED_off (ctrl, hp_slot);
|
||||
green_LED_blink (ctrl, hp_slot);
|
||||
amber_LED_off(ctrl, hp_slot);
|
||||
green_LED_blink(ctrl, hp_slot);
|
||||
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
mutex_unlock(&ctrl->crit_sect);
|
||||
init_timer(&p_slot->task_event);
|
||||
@ -1940,7 +1940,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
|
||||
dbg("In power_down_board, func = %p, ctrl = %p\n", func, ctrl);
|
||||
if (!func) {
|
||||
dbg("Error! func NULL in %s\n", __func__);
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
if (cpqhp_process_SS(ctrl, func) != 0) {
|
||||
@ -1962,7 +1962,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
|
||||
dbg("In add_board, func = %p, ctrl = %p\n", func, ctrl);
|
||||
if (!func) {
|
||||
dbg("Error! func NULL in %s\n", __func__);
|
||||
return ;
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctrl != NULL) {
|
||||
@ -1973,7 +1973,7 @@ void cpqhp_pushbutton_thread(unsigned long slot)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* 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)
|
||||
unsigned int devfn;
|
||||
struct slot *p_slot;
|
||||
struct pci_bus *pci_bus = ctrl->pci_bus;
|
||||
int physical_slot=0;
|
||||
int physical_slot = 0;
|
||||
|
||||
device = func->device;
|
||||
func = cpqhp_slot_find(ctrl->bus, device, index++);
|
||||
@ -2100,7 +2100,7 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func)
|
||||
devfn = PCI_DEVFN(func->device, func->function);
|
||||
|
||||
/* 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)
|
||||
return rc;
|
||||
|
||||
@ -2109,13 +2109,13 @@ int cpqhp_process_SS(struct controller *ctrl, struct pci_func *func)
|
||||
rc = REMOVE_NOT_SUPPORTED;
|
||||
} else {
|
||||
/* 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)
|
||||
return rc;
|
||||
|
||||
/* If it's a bridge, check the VGA Enable bit */
|
||||
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)
|
||||
return rc;
|
||||
|
||||
@ -2217,7 +2217,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOGO interrupt */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
/* Get ready for next iteration */
|
||||
long_delay((3*HZ)/10);
|
||||
@ -2227,7 +2227,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOGO interrupt */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
|
||||
/* Get ready for next iteration */
|
||||
long_delay((3*HZ)/10);
|
||||
@ -2243,7 +2243,7 @@ int cpqhp_hardware_test(struct controller *ctrl, int test_num)
|
||||
set_SOGO(ctrl);
|
||||
|
||||
/* Wait for SOBS to be unset */
|
||||
wait_for_ctrl_irq (ctrl);
|
||||
wait_for_ctrl_irq(ctrl);
|
||||
break;
|
||||
case 2:
|
||||
/* Do other stuff here! */
|
||||
@ -2279,7 +2279,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func
|
||||
dbg("%s\n", __func__);
|
||||
/* Check for Multi-function device */
|
||||
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) {
|
||||
dbg("%s: rc = %d\n", __func__, rc);
|
||||
return rc;
|
||||
@ -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);
|
||||
|
||||
if (rc) {
|
||||
dbg("configure_new_function failed %d\n",rc);
|
||||
dbg("configure_new_function failed %d\n", rc);
|
||||
index = 0;
|
||||
|
||||
while (new_slot) {
|
||||
@ -2317,7 +2317,7 @@ static u32 configure_new_device(struct controller *ctrl, struct pci_func *func
|
||||
* and creates a board structure */
|
||||
|
||||
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) {
|
||||
function++;
|
||||
@ -2543,10 +2543,10 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
|
||||
/* set Pre Mem base and Limit registers */
|
||||
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;
|
||||
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
|
||||
*/
|
||||
@ -2560,7 +2560,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
|
||||
ID = 0xFFFFFFFF;
|
||||
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;
|
||||
|
||||
if (ID != 0xFFFFFFFF) { /* device present */
|
||||
@ -2579,7 +2579,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
new_slot->status = 0;
|
||||
|
||||
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 FOR loop */
|
||||
|
||||
@ -2615,7 +2615,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
temp_byte = temp_resources.bus_head->base - 1;
|
||||
|
||||
/* 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) {
|
||||
kfree(temp_resources.bus_head);
|
||||
@ -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;
|
||||
|
||||
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);
|
||||
}
|
||||
@ -2655,13 +2655,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
func->io_head = hold_IO_node;
|
||||
|
||||
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);
|
||||
} else {
|
||||
/* it doesn't need any IO */
|
||||
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);
|
||||
kfree(hold_IO_node);
|
||||
@ -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;
|
||||
|
||||
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);
|
||||
}
|
||||
@ -2706,14 +2706,14 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
|
||||
/* configure end address */
|
||||
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_resource(&(resources->mem_head), mem_node);
|
||||
} else {
|
||||
/* it doesn't need any Mem */
|
||||
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);
|
||||
kfree(hold_mem_node);
|
||||
@ -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;
|
||||
|
||||
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);
|
||||
}
|
||||
@ -2758,13 +2758,13 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
func->p_mem_head = hold_p_mem_node;
|
||||
|
||||
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);
|
||||
} else {
|
||||
/* it doesn't need any PMem */
|
||||
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);
|
||||
kfree(hold_p_mem_node);
|
||||
@ -2790,16 +2790,16 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
* PCI_COMMAND_INVALIDATE |
|
||||
* PCI_COMMAND_PARITY |
|
||||
* 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 */
|
||||
command = 0x07; /* = PCI_BRIDGE_CTL_PARITY |
|
||||
* PCI_BRIDGE_CTL_SERR |
|
||||
* 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) {
|
||||
/* 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) {
|
||||
/* Display (video) adapter (not supported) */
|
||||
@ -2810,9 +2810,9 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
temp_register = 0xFFFFFFFF;
|
||||
|
||||
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);
|
||||
|
||||
if (temp_register) { /* If this register is implemented */
|
||||
@ -2891,7 +2891,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
} /* End of base register loop */
|
||||
if (cpqhp_legacy_mode) {
|
||||
/* 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);
|
||||
|
||||
/* 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
|
||||
resources->irqs->barber_pole - 1) & 0x03];
|
||||
} else {
|
||||
/* 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)
|
||||
IRQ = cpqhp_disk_irq;
|
||||
@ -2914,7 +2914,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
}
|
||||
|
||||
/* 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) {
|
||||
@ -2950,7 +2950,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
||||
* PCI_COMMAND_INVALIDATE |
|
||||
* PCI_COMMAND_PARITY |
|
||||
* 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);
|
||||
} else { /* End of Not-A-Bridge else */
|
||||
/* 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
|
||||
|
||||
return 0;
|
||||
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-> io_head), hold_IO_node);
|
||||
return_resource(&(resources-> mem_head), hold_mem_node);
|
||||
return_resource(&(resources-> p_mem_head), hold_p_mem_node);
|
||||
return_resource(&(resources->bus_head), hold_bus_node);
|
||||
return_resource(&(resources->io_head), hold_IO_node);
|
||||
return_resource(&(resources->mem_head), hold_mem_node);
|
||||
return_resource(&(resources->p_mem_head), hold_p_mem_node);
|
||||
return rc;
|
||||
}
|
||||
|
@ -114,10 +114,10 @@ static u32 add_byte(u32 **p_buffer, u8 value, u32 *used, u32 *avail)
|
||||
if ((*used + 1) > *avail)
|
||||
return(1);
|
||||
|
||||
*((u8*)*p_buffer) = value;
|
||||
tByte = (u8**)p_buffer;
|
||||
*((u8 *)*p_buffer) = value;
|
||||
tByte = (u8 **)p_buffer;
|
||||
(*tByte)++;
|
||||
*used+=1;
|
||||
*used += 1;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -129,7 +129,7 @@ static u32 add_dword(u32 **p_buffer, u32 value, u32 *used, u32 *avail)
|
||||
|
||||
**p_buffer = value;
|
||||
(*p_buffer)++;
|
||||
*used+=4;
|
||||
*used += 4;
|
||||
return(0);
|
||||
}
|
||||
|
||||
@ -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
|
||||
*/
|
||||
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;
|
||||
int result = 0;
|
||||
@ -160,12 +160,12 @@ static int check_for_compaq_ROM (void __iomem *rom_start)
|
||||
(temp6 == 'Q')) {
|
||||
result = 1;
|
||||
}
|
||||
dbg ("%s - returned %d\n", __func__, result);
|
||||
dbg("%s - returned %d\n", __func__, 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;
|
||||
int op = operation;
|
||||
@ -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
|
||||
*/
|
||||
static int load_HRT (void __iomem *rom_start)
|
||||
static int load_HRT(void __iomem *rom_start)
|
||||
{
|
||||
u32 available;
|
||||
u32 temp_dword;
|
||||
@ -232,7 +232,7 @@ static int load_HRT (void __iomem *rom_start)
|
||||
*
|
||||
* 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 *pFill;
|
||||
@ -252,7 +252,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
if (!check_for_compaq_ROM(rom_start))
|
||||
return(1);
|
||||
|
||||
buffer = (u32*) evbuffer;
|
||||
buffer = (u32 *) evbuffer;
|
||||
|
||||
if (!buffer)
|
||||
return(1);
|
||||
@ -306,7 +306,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
loop = 0;
|
||||
|
||||
while (resNode) {
|
||||
loop ++;
|
||||
loop++;
|
||||
|
||||
/* base */
|
||||
rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
|
||||
@ -331,7 +331,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
loop = 0;
|
||||
|
||||
while (resNode) {
|
||||
loop ++;
|
||||
loop++;
|
||||
|
||||
/* base */
|
||||
rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
|
||||
@ -356,7 +356,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
loop = 0;
|
||||
|
||||
while (resNode) {
|
||||
loop ++;
|
||||
loop++;
|
||||
|
||||
/* base */
|
||||
rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
|
||||
@ -381,7 +381,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
loop = 0;
|
||||
|
||||
while (resNode) {
|
||||
loop ++;
|
||||
loop++;
|
||||
|
||||
/* base */
|
||||
rc = add_dword(&pFill, resNode->base, &usedbytes, &available);
|
||||
@ -408,7 +408,7 @@ static u32 store_HRT (void __iomem *rom_start)
|
||||
|
||||
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);
|
||||
|
||||
@ -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)
|
||||
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)
|
||||
}
|
||||
|
||||
|
||||
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 nummem, numpmem, numio, numbus;
|
||||
@ -451,7 +451,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
if (!evbuffer_init) {
|
||||
/* Read the resource list information in from NVRAM */
|
||||
if (load_HRT(rom_start))
|
||||
memset (evbuffer, 0, 1024);
|
||||
memset(evbuffer, 0, 1024);
|
||||
|
||||
evbuffer_init = 1;
|
||||
}
|
||||
@ -472,7 +472,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
|
||||
p_byte += 3;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length))
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
|
||||
return 2;
|
||||
|
||||
bus = p_ev_ctrl->bus;
|
||||
@ -489,20 +489,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length))
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
|
||||
return 2;
|
||||
|
||||
/* Skip forward to the next entry */
|
||||
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;
|
||||
|
||||
p_ev_ctrl = (struct ev_hrt_ctrl *) p_byte;
|
||||
|
||||
p_byte += 3;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length))
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
|
||||
return 2;
|
||||
|
||||
bus = p_ev_ctrl->bus;
|
||||
@ -517,7 +517,7 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length))
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length))
|
||||
return 2;
|
||||
|
||||
while (nummem--) {
|
||||
@ -526,20 +526,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
if (!mem_node)
|
||||
break;
|
||||
|
||||
mem_node->base = *(u32*)p_byte;
|
||||
dbg("mem base = %8.8x\n",mem_node->base);
|
||||
mem_node->base = *(u32 *)p_byte;
|
||||
dbg("mem base = %8.8x\n", mem_node->base);
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(mem_node);
|
||||
return 2;
|
||||
}
|
||||
|
||||
mem_node->length = *(u32*)p_byte;
|
||||
dbg("mem length = %8.8x\n",mem_node->length);
|
||||
mem_node->length = *(u32 *)p_byte;
|
||||
dbg("mem length = %8.8x\n", mem_node->length);
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(mem_node);
|
||||
return 2;
|
||||
}
|
||||
@ -554,20 +554,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
if (!p_mem_node)
|
||||
break;
|
||||
|
||||
p_mem_node->base = *(u32*)p_byte;
|
||||
dbg("pre-mem base = %8.8x\n",p_mem_node->base);
|
||||
p_mem_node->base = *(u32 *)p_byte;
|
||||
dbg("pre-mem base = %8.8x\n", p_mem_node->base);
|
||||
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);
|
||||
return 2;
|
||||
}
|
||||
|
||||
p_mem_node->length = *(u32*)p_byte;
|
||||
dbg("pre-mem length = %8.8x\n",p_mem_node->length);
|
||||
p_mem_node->length = *(u32 *)p_byte;
|
||||
dbg("pre-mem length = %8.8x\n", p_mem_node->length);
|
||||
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);
|
||||
return 2;
|
||||
}
|
||||
@ -582,20 +582,20 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
if (!io_node)
|
||||
break;
|
||||
|
||||
io_node->base = *(u32*)p_byte;
|
||||
dbg("io base = %8.8x\n",io_node->base);
|
||||
io_node->base = *(u32 *)p_byte;
|
||||
dbg("io base = %8.8x\n", io_node->base);
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(io_node);
|
||||
return 2;
|
||||
}
|
||||
|
||||
io_node->length = *(u32*)p_byte;
|
||||
dbg("io length = %8.8x\n",io_node->length);
|
||||
io_node->length = *(u32 *)p_byte;
|
||||
dbg("io length = %8.8x\n", io_node->length);
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(io_node);
|
||||
return 2;
|
||||
}
|
||||
@ -610,18 +610,18 @@ int compaq_nvram_load (void __iomem *rom_start, struct controller *ctrl)
|
||||
if (!bus_node)
|
||||
break;
|
||||
|
||||
bus_node->base = *(u32*)p_byte;
|
||||
bus_node->base = *(u32 *)p_byte;
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(bus_node);
|
||||
return 2;
|
||||
}
|
||||
|
||||
bus_node->length = *(u32*)p_byte;
|
||||
bus_node->length = *(u32 *)p_byte;
|
||||
p_byte += 4;
|
||||
|
||||
if (p_byte > ((u8*)p_EV_header + evbuffer_length)) {
|
||||
if (p_byte > ((u8 *)p_EV_header + evbuffer_length)) {
|
||||
kfree(bus_node);
|
||||
return 2;
|
||||
}
|
||||
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
int num;
|
||||
@ -89,7 +89,7 @@ int cpqhp_configure_device (struct controller *ctrl, struct pci_func *func)
|
||||
pci_lock_rescan_remove();
|
||||
|
||||
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 */
|
||||
if (func->pci_dev == NULL) {
|
||||
@ -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);
|
||||
|
||||
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));
|
||||
if (temp) {
|
||||
pci_dev_put(temp);
|
||||
@ -143,11 +143,11 @@ static int PCI_RefinedAccessConfig(struct pci_bus *bus, unsigned int devfn, u8 o
|
||||
{
|
||||
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;
|
||||
if (vendID == 0xffffffff)
|
||||
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
|
||||
* @dev_num: device number of PCI device
|
||||
* @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;
|
||||
|
||||
@ -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);
|
||||
/* Yep we got one. bridge ? */
|
||||
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? */
|
||||
dbg("Recurse on bus_num %d tdevice %d\n", tbus, tdevice);
|
||||
return 0;
|
||||
@ -257,16 +257,16 @@ static int PCI_GetBusDevHelper(struct controller *ctrl, u8 *bus_num, u8 *dev_num
|
||||
*bus_num = tbus;
|
||||
*dev_num = tdevice;
|
||||
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))
|
||||
return 0;
|
||||
|
||||
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);
|
||||
|
||||
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);
|
||||
if (PCI_ScanBusForNonBridge(ctrl, tbus, dev_num) == 0) {
|
||||
*bus_num = tbus;
|
||||
@ -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) */
|
||||
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)
|
||||
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++) {
|
||||
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)
|
||||
return rc;
|
||||
}
|
||||
@ -465,7 +465,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
|
||||
*
|
||||
* 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;
|
||||
u8 class_code;
|
||||
@ -481,7 +481,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
|
||||
ID = 0xFFFFFFFF;
|
||||
|
||||
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)
|
||||
return 2;
|
||||
@ -497,7 +497,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
|
||||
while (function < max_functions) {
|
||||
if ((header_type & 0x7F) == PCI_HEADER_TYPE_BRIDGE) {
|
||||
/* 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;
|
||||
|
||||
@ -514,7 +514,7 @@ int cpqhp_save_slot_config (struct controller *ctrl, struct pci_func *new_slot)
|
||||
new_slot->status = 0;
|
||||
|
||||
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++;
|
||||
|
||||
@ -571,10 +571,10 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
|
||||
devfn = PCI_DEVFN(func->device, func->function);
|
||||
|
||||
/* 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) {
|
||||
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;
|
||||
|
||||
@ -595,8 +595,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
|
||||
*/
|
||||
for (cloop = 0x10; cloop <= 0x14; cloop += 4) {
|
||||
temp_register = 0xFFFFFFFF;
|
||||
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base);
|
||||
pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
|
||||
/* If this register is implemented */
|
||||
if (base) {
|
||||
if (base & 0x01L) {
|
||||
@ -631,8 +631,8 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
|
||||
/* Figure out IO and memory base lengths */
|
||||
for (cloop = 0x10; cloop <= 0x24; cloop += 4) {
|
||||
temp_register = 0xFFFFFFFF;
|
||||
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base);
|
||||
pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
|
||||
|
||||
/* If this register is implemented */
|
||||
if (base) {
|
||||
@ -686,7 +686,7 @@ int cpqhp_save_base_addr_length(struct controller *ctrl, struct pci_func *func)
|
||||
*
|
||||
* 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 header_type;
|
||||
@ -791,7 +791,7 @@ int cpqhp_save_used_resources (struct controller *ctrl, struct pci_func *func)
|
||||
}
|
||||
/* Figure out IO and memory base lengths */
|
||||
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;
|
||||
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)
|
||||
* registers are programmed last
|
||||
*/
|
||||
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 ((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;
|
||||
|
||||
@ -998,7 +998,7 @@ int cpqhp_configure_board(struct controller *ctrl, struct pci_func *func)
|
||||
*/
|
||||
|
||||
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]) {
|
||||
dbg("Config space compare failure!!! offset = %x\n", cloop);
|
||||
@ -1050,7 +1050,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
|
||||
pci_bus->number = func->bus;
|
||||
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 */
|
||||
if (temp_register == 0xFFFFFFFF)
|
||||
@ -1060,14 +1060,14 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
|
||||
return(ADAPTER_NOT_SAME);
|
||||
|
||||
/* 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 */
|
||||
if (temp_register != func->config_space[0x08 >> 2])
|
||||
return(ADAPTER_NOT_SAME);
|
||||
|
||||
/* 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) {
|
||||
/* In order to continue checking, we must program the
|
||||
@ -1076,7 +1076,7 @@ int cpqhp_valid_replace(struct controller *ctrl, struct pci_func *func)
|
||||
*/
|
||||
|
||||
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;
|
||||
|
||||
@ -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 */
|
||||
else if ((header_type & 0x7F) == PCI_HEADER_TYPE_NORMAL) {
|
||||
/* 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 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)
|
||||
/* Figure out IO and memory base lengths */
|
||||
for (cloop = 0x10; cloop <= 0x24; cloop += 4) {
|
||||
temp_register = 0xFFFFFFFF;
|
||||
pci_bus_write_config_dword (pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword (pci_bus, devfn, cloop, &base);
|
||||
pci_bus_write_config_dword(pci_bus, devfn, cloop, temp_register);
|
||||
pci_bus_read_config_dword(pci_bus, devfn, cloop, &base);
|
||||
|
||||
/* If this register is implemented */
|
||||
if (base) {
|
||||
@ -1234,7 +1234,7 @@ int cpqhp_find_available_resources(struct controller *ctrl, void __iomem *rom_st
|
||||
if (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);
|
||||
dbg("number_of_entries = %d\n", i);
|
||||
@ -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 (primary_bus != ctrl->bus) {
|
||||
i--;
|
||||
one_slot += sizeof (struct slot_rt);
|
||||
one_slot += sizeof(struct slot_rt);
|
||||
continue;
|
||||
}
|
||||
/* find out if this entry is for an occupied slot */
|
||||
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);
|
||||
|
||||
if (temp_dword != 0xFFFFFFFF) {
|
||||
@ -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 (!func) {
|
||||
i--;
|
||||
one_slot += sizeof (struct slot_rt);
|
||||
one_slot += sizeof(struct slot_rt);
|
||||
continue;
|
||||
}
|
||||
/* 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
|
||||
}
|
||||
|
||||
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
|
||||
@ -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
|
||||
*/
|
||||
void cpqhp_destroy_resource_list (struct resource_lists *resources)
|
||||
void cpqhp_destroy_resource_list(struct resource_lists *resources)
|
||||
{
|
||||
struct pci_resource *res, *tres;
|
||||
|
||||
@ -1522,7 +1522,7 @@ void cpqhp_destroy_resource_list (struct resource_lists *resources)
|
||||
*
|
||||
* 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;
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
#include "cpqphp.h"
|
||||
|
||||
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;
|
||||
int index;
|
||||
@ -77,7 +77,7 @@ static int show_ctrl (struct controller *ctrl, char *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;
|
||||
int index;
|
||||
@ -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);
|
||||
res = res->next;
|
||||
}
|
||||
slot=slot->next;
|
||||
slot = slot->next;
|
||||
}
|
||||
|
||||
return out - buf;
|
||||
|
@ -39,11 +39,11 @@ extern int ibmphp_debug;
|
||||
#else
|
||||
#define MY_NAME THIS_MODULE->name
|
||||
#endif
|
||||
#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 err(format, arg...) printk(KERN_ERR "%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 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 err(format, arg...) printk(KERN_ERR "%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)
|
||||
|
||||
|
||||
/* EBDA stuff */
|
||||
@ -603,7 +603,7 @@ void ibmphp_hpc_stop_poll_thread(void);
|
||||
#define SLOT_CONNECT(s) ((u8) ((s & HPC_SLOT_CONNECT) \
|
||||
? 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 \
|
||||
: ((s & HPC_SLOT_ATTN) ? HPC_SLOT_ATTN_ON : HPC_SLOT_ATTN_OFF)))
|
||||
|
||||
|
@ -39,11 +39,11 @@
|
||||
#include <asm/io_apic.h>
|
||||
#include "ibmphp.h"
|
||||
|
||||
#define attn_on(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_ATTNON)
|
||||
#define attn_off(sl) ibmphp_hpc_writeslot (sl, HPC_SLOT_ATTNOFF)
|
||||
#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_hpc_options(sl, opt) ibmphp_hpc_readslot (sl, READ_HPCOPTIONS, opt)
|
||||
#define attn_on(sl) ibmphp_hpc_writeslot(sl, HPC_SLOT_ATTNON)
|
||||
#define attn_off(sl) ibmphp_hpc_writeslot(sl, HPC_SLOT_ATTNOFF)
|
||||
#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_hpc_options(sl, opt) ibmphp_hpc_readslot(sl, READ_HPCOPTIONS, opt)
|
||||
|
||||
#define DRIVER_VERSION "0.6"
|
||||
#define DRIVER_DESC "IBM Hot Plug PCI Controller Driver"
|
||||
@ -52,9 +52,9 @@ int ibmphp_debug;
|
||||
|
||||
static bool debug;
|
||||
module_param(debug, bool, S_IRUGO | S_IWUSR);
|
||||
MODULE_PARM_DESC (debug, "Debugging mode enabled or not");
|
||||
MODULE_LICENSE ("GPL");
|
||||
MODULE_DESCRIPTION (DRIVER_DESC);
|
||||
MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
|
||||
MODULE_LICENSE("GPL");
|
||||
MODULE_DESCRIPTION(DRIVER_DESC);
|
||||
|
||||
struct pci_bus *ibmphp_pci_bus;
|
||||
static int max_slots;
|
||||
@ -113,7 +113,7 @@ static inline int slot_update(struct slot **sl)
|
||||
return rc;
|
||||
}
|
||||
|
||||
static int __init get_max_slots (void)
|
||||
static int __init get_max_slots(void)
|
||||
{
|
||||
struct slot *slot_cur;
|
||||
u8 slot_count = 0;
|
||||
@ -457,7 +457,7 @@ static int get_max_adapter_speed_1(struct hotplug_slot *hotplug_slot, u8 *value,
|
||||
*value = SLOT_SPEED(myslot.ext_status);
|
||||
} else
|
||||
*value = MAX_ADAPTER_NONE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (flag)
|
||||
@ -612,11 +612,11 @@ int ibmphp_update_slot_info(struct slot *slot_cur)
|
||||
info->attention_status = SLOT_ATTN(slot_cur->status,
|
||||
slot_cur->ext_status);
|
||||
info->latch_status = SLOT_LATCH(slot_cur->status);
|
||||
if (!SLOT_PRESENT(slot_cur->status)) {
|
||||
info->adapter_status = 0;
|
||||
if (!SLOT_PRESENT(slot_cur->status)) {
|
||||
info->adapter_status = 0;
|
||||
/* info->max_adapter_speed_status = MAX_ADAPTER_NONE; */
|
||||
} else {
|
||||
info->adapter_status = 1;
|
||||
info->adapter_status = 1;
|
||||
/* get_max_adapter_speed_1(slot_cur->hotplug_slot,
|
||||
&info->max_adapter_speed_status, 0); */
|
||||
}
|
||||
@ -854,7 +854,7 @@ static int set_bus(struct slot *slot_cur)
|
||||
int retval;
|
||||
static struct pci_device_id ciobx[] = {
|
||||
{ PCI_DEVICE(PCI_VENDOR_ID_SERVERWORKS, 0x0101) },
|
||||
{ },
|
||||
{ },
|
||||
};
|
||||
|
||||
debug("%s - entry slot # %d\n", __func__, slot_cur->number);
|
||||
@ -1170,7 +1170,7 @@ static int enable_slot(struct hotplug_slot *hs)
|
||||
* HOT REMOVING ADAPTER CARD *
|
||||
* INPUT: POINTER TO THE HOTPLUG SLOT STRUCTURE *
|
||||
* OUTPUT: SUCCESS 0 ; FAILURE: UNCONFIGURE , VALIDATE *
|
||||
DISABLE POWER , *
|
||||
* DISABLE POWER , *
|
||||
**************************************************************/
|
||||
static int ibmphp_disable_slot(struct hotplug_slot *hotplug_slot)
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -40,7 +40,7 @@
|
||||
#include "ibmphp.h"
|
||||
|
||||
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
|
||||
@ -110,16 +110,16 @@ static struct task_struct *ibmphp_poll_thread;
|
||||
//----------------------------------------------------------------------------
|
||||
// local function prototypes
|
||||
//----------------------------------------------------------------------------
|
||||
static u8 i2c_ctrl_read (struct controller *, void __iomem *, u8);
|
||||
static u8 i2c_ctrl_write (struct controller *, void __iomem *, u8, u8);
|
||||
static u8 hpc_writecmdtoindex (u8, u8);
|
||||
static u8 hpc_readcmdtoindex (u8, u8);
|
||||
static void get_hpc_access (void);
|
||||
static void free_hpc_access (void);
|
||||
static u8 i2c_ctrl_read(struct controller *, void __iomem *, u8);
|
||||
static u8 i2c_ctrl_write(struct controller *, void __iomem *, u8, u8);
|
||||
static u8 hpc_writecmdtoindex(u8, u8);
|
||||
static u8 hpc_readcmdtoindex(u8, u8);
|
||||
static void get_hpc_access(void);
|
||||
static void free_hpc_access(void);
|
||||
static int poll_hpc(void *data);
|
||||
static int process_changeinstatus (struct slot *, struct slot *);
|
||||
static int process_changeinlatch (u8, u8, struct controller *);
|
||||
static int hpc_wait_ctlr_notworking (int, struct controller *, void __iomem *, u8 *);
|
||||
static int process_changeinstatus(struct slot *, struct slot *);
|
||||
static int process_changeinlatch(u8, u8, struct controller *);
|
||||
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
|
||||
*
|
||||
* 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);
|
||||
sema_init(&semOperations, 1);
|
||||
sema_init(&sem_exit, 0);
|
||||
to_debug = 0;
|
||||
|
||||
debug ("%s - Exit\n", __func__);
|
||||
debug("%s - Exit\n", __func__);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
@ -146,7 +146,7 @@ void __init ibmphp_hpc_initvars (void)
|
||||
* 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;
|
||||
int i;
|
||||
@ -155,7 +155,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
unsigned long ultemp;
|
||||
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
|
||||
@ -178,28 +178,28 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
ultemp = ultemp << 8;
|
||||
data |= ultemp;
|
||||
} else {
|
||||
err ("this controller type is not supported \n");
|
||||
err("this controller type is not supported \n");
|
||||
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;
|
||||
writel (wpg_data, wpg_addr);
|
||||
writel(wpg_data, wpg_addr);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// READ - step 2 : clear the message buffer
|
||||
data = 0x00000000;
|
||||
wpg_data = swab32 (data);
|
||||
wpg_data = swab32(data);
|
||||
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
|
||||
// 2020 : [20] OR operation at [20] offset 0x20
|
||||
data = WPG_I2CMCNTL_STARTOP_MASK;
|
||||
wpg_data = swab32 (data);
|
||||
wpg_data = swab32(data);
|
||||
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
|
||||
@ -207,14 +207,14 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
while (i) {
|
||||
msleep(10);
|
||||
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET;
|
||||
wpg_data = readl (wpg_addr);
|
||||
data = swab32 (wpg_data);
|
||||
wpg_data = readl(wpg_addr);
|
||||
data = swab32(wpg_data);
|
||||
if (!(data & WPG_I2CMCNTL_STARTOP_MASK))
|
||||
break;
|
||||
i--;
|
||||
}
|
||||
if (i == 0) {
|
||||
debug ("%s - Error : WPG timeout\n", __func__);
|
||||
debug("%s - Error : WPG timeout\n", __func__);
|
||||
return HPC_ERROR;
|
||||
}
|
||||
//--------------------------------------------------------------------
|
||||
@ -223,26 +223,26 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
while (i) {
|
||||
msleep(10);
|
||||
wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET;
|
||||
wpg_data = readl (wpg_addr);
|
||||
data = swab32 (wpg_data);
|
||||
if (HPC_I2CSTATUS_CHECK (data))
|
||||
wpg_data = readl(wpg_addr);
|
||||
data = swab32(wpg_data);
|
||||
if (HPC_I2CSTATUS_CHECK(data))
|
||||
break;
|
||||
i--;
|
||||
}
|
||||
if (i == 0) {
|
||||
debug ("ctrl_read - Exit Error:I2C timeout\n");
|
||||
debug("ctrl_read - Exit Error:I2C timeout\n");
|
||||
return HPC_ERROR;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// READ - step 6 : get DATA
|
||||
wpg_addr = WPGBbar + WPG_I2CMBUFL_OFFSET;
|
||||
wpg_data = readl (wpg_addr);
|
||||
data = swab32 (wpg_data);
|
||||
wpg_data = readl(wpg_addr);
|
||||
data = swab32(wpg_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);
|
||||
}
|
||||
@ -254,7 +254,7 @@ static u8 i2c_ctrl_read (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
*
|
||||
* 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;
|
||||
void __iomem *wpg_addr; // base addr + offset
|
||||
@ -263,7 +263,7 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
unsigned long data; // actual data HILO format
|
||||
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;
|
||||
//--------------------------------------------------------------------
|
||||
@ -289,28 +289,28 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
ultemp = ultemp << 8;
|
||||
data |= ultemp;
|
||||
} else {
|
||||
err ("this controller type is not supported \n");
|
||||
err("this controller type is not supported \n");
|
||||
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;
|
||||
writel (wpg_data, wpg_addr);
|
||||
writel(wpg_data, wpg_addr);
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// WRITE - step 2 : clear the message buffer
|
||||
data = 0x00000000 | (unsigned long)cmd;
|
||||
wpg_data = swab32 (data);
|
||||
wpg_data = swab32(data);
|
||||
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
|
||||
// 2020 : [20] OR operation at [20] offset 0x20
|
||||
data = WPG_I2CMCNTL_STARTOP_MASK;
|
||||
wpg_data = swab32 (data);
|
||||
wpg_data = swab32(data);
|
||||
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
|
||||
@ -318,14 +318,14 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
while (i) {
|
||||
msleep(10);
|
||||
wpg_addr = WPGBbar + WPG_I2CMCNTL_OFFSET;
|
||||
wpg_data = readl (wpg_addr);
|
||||
data = swab32 (wpg_data);
|
||||
wpg_data = readl(wpg_addr);
|
||||
data = swab32(wpg_data);
|
||||
if (!(data & WPG_I2CMCNTL_STARTOP_MASK))
|
||||
break;
|
||||
i--;
|
||||
}
|
||||
if (i == 0) {
|
||||
debug ("%s - Exit Error:WPG timeout\n", __func__);
|
||||
debug("%s - Exit Error:WPG timeout\n", __func__);
|
||||
rc = HPC_ERROR;
|
||||
}
|
||||
|
||||
@ -335,25 +335,25 @@ static u8 i2c_ctrl_write (struct controller *ctlr_ptr, void __iomem *WPGBbar, u8
|
||||
while (i) {
|
||||
msleep(10);
|
||||
wpg_addr = WPGBbar + WPG_I2CSTAT_OFFSET;
|
||||
wpg_data = readl (wpg_addr);
|
||||
data = swab32 (wpg_data);
|
||||
if (HPC_I2CSTATUS_CHECK (data))
|
||||
wpg_data = readl(wpg_addr);
|
||||
data = swab32(wpg_data);
|
||||
if (HPC_I2CSTATUS_CHECK(data))
|
||||
break;
|
||||
i--;
|
||||
}
|
||||
if (i == 0) {
|
||||
debug ("ctrl_read - Error : I2C timeout\n");
|
||||
debug("ctrl_read - Error : I2C timeout\n");
|
||||
rc = HPC_ERROR;
|
||||
}
|
||||
|
||||
debug_polling ("%s Exit rc[%x]\n", __func__, rc);
|
||||
debug_polling("%s Exit rc[%x]\n", __func__, rc);
|
||||
return (rc);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------
|
||||
// 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 end_address;
|
||||
@ -361,56 +361,56 @@ static u8 isa_ctrl_read (struct controller *ctlr_ptr, u8 offset)
|
||||
|
||||
start_address = ctlr_ptr->u.isa_ctlr.io_start;
|
||||
end_address = ctlr_ptr->u.isa_ctlr.io_end;
|
||||
data = inb (start_address + offset);
|
||||
data = inb(start_address + offset);
|
||||
return data;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// 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 port_address;
|
||||
|
||||
start_address = ctlr_ptr->u.isa_ctlr.io_start;
|
||||
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;
|
||||
debug ("inside pci_ctrl_read\n");
|
||||
debug("inside pci_ctrl_read\n");
|
||||
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;
|
||||
}
|
||||
|
||||
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;
|
||||
debug ("inside pci_ctrl_write\n");
|
||||
debug("inside pci_ctrl_write\n");
|
||||
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;
|
||||
}
|
||||
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;
|
||||
switch (ctlr->ctlr_type) {
|
||||
case 0:
|
||||
rc = isa_ctrl_read (ctlr, offset);
|
||||
rc = isa_ctrl_read(ctlr, offset);
|
||||
break;
|
||||
case 1:
|
||||
rc = pci_ctrl_read (ctlr, offset);
|
||||
rc = pci_ctrl_read(ctlr, offset);
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
rc = i2c_ctrl_read (ctlr, base, offset);
|
||||
rc = i2c_ctrl_read(ctlr, base, offset);
|
||||
break;
|
||||
default:
|
||||
return -ENODEV;
|
||||
@ -418,7 +418,7 @@ static u8 ctrl_read (struct controller *ctlr, void __iomem *base, u8 offset)
|
||||
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;
|
||||
switch (ctlr->ctlr_type) {
|
||||
@ -426,7 +426,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8
|
||||
isa_ctrl_write(ctlr, offset, data);
|
||||
break;
|
||||
case 1:
|
||||
rc = pci_ctrl_write (ctlr, offset, data);
|
||||
rc = pci_ctrl_write(ctlr, offset, data);
|
||||
break;
|
||||
case 2:
|
||||
case 4:
|
||||
@ -444,7 +444,7 @@ static u8 ctrl_write (struct controller *ctlr, void __iomem *base, u8 offset, u8
|
||||
*
|
||||
* Return index, HPC_ERROR
|
||||
*---------------------------------------------------------------------*/
|
||||
static u8 hpc_writecmdtoindex (u8 cmd, u8 index)
|
||||
static u8 hpc_writecmdtoindex(u8 cmd, u8 index)
|
||||
{
|
||||
u8 rc;
|
||||
|
||||
@ -476,7 +476,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index)
|
||||
break;
|
||||
|
||||
default:
|
||||
err ("hpc_writecmdtoindex - Error invalid cmd[%x]\n", cmd);
|
||||
err("hpc_writecmdtoindex - Error invalid cmd[%x]\n", cmd);
|
||||
rc = HPC_ERROR;
|
||||
}
|
||||
|
||||
@ -490,7 +490,7 @@ static u8 hpc_writecmdtoindex (u8 cmd, u8 index)
|
||||
*
|
||||
* Return index, HPC_ERROR
|
||||
*---------------------------------------------------------------------*/
|
||||
static u8 hpc_readcmdtoindex (u8 cmd, u8 index)
|
||||
static u8 hpc_readcmdtoindex(u8 cmd, u8 index)
|
||||
{
|
||||
u8 rc;
|
||||
|
||||
@ -533,7 +533,7 @@ static u8 hpc_readcmdtoindex (u8 cmd, u8 index)
|
||||
*
|
||||
* 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;
|
||||
struct controller *ctlr_ptr;
|
||||
@ -541,69 +541,69 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
|
||||
int rc = 0;
|
||||
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)
|
||||
|| ((pstatus == NULL) && (cmd != READ_ALLSTAT) && (cmd != READ_BUSSTATUS))) {
|
||||
rc = -EINVAL;
|
||||
err ("%s - Error invalid pointer, rc[%d]\n", __func__, rc);
|
||||
err("%s - Error invalid pointer, rc[%d]\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (cmd == READ_BUSSTATUS) {
|
||||
busindex = ibmphp_get_bus_index (pslot->bus);
|
||||
busindex = ibmphp_get_bus_index(pslot->bus);
|
||||
if (busindex < 0) {
|
||||
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;
|
||||
} else
|
||||
index = (u8) busindex;
|
||||
} else
|
||||
index = pslot->ctlr_index;
|
||||
|
||||
index = hpc_readcmdtoindex (cmd, index);
|
||||
index = hpc_readcmdtoindex(cmd, index);
|
||||
|
||||
if (index == HPC_ERROR) {
|
||||
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;
|
||||
}
|
||||
|
||||
ctlr_ptr = pslot->ctrl;
|
||||
|
||||
get_hpc_access ();
|
||||
get_hpc_access();
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// map physical address to logical address
|
||||
//--------------------------------------------------------------------
|
||||
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
|
||||
//--------------------------------------------------------------------
|
||||
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) {
|
||||
switch (cmd) {
|
||||
case READ_ALLSTAT:
|
||||
// update the slot structure
|
||||
pslot->ctrl->status = status;
|
||||
pslot->status = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar,
|
||||
pslot->status = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT, ctlr_ptr, wpg_bbar,
|
||||
&status);
|
||||
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;
|
||||
|
||||
case READ_SLOTSTATUS:
|
||||
// DO NOT update the slot structure
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
|
||||
case READ_EXTSLOTSTATUS:
|
||||
// DO NOT update the slot structure
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
|
||||
case READ_CTLRSTATUS:
|
||||
@ -612,17 +612,17 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
|
||||
break;
|
||||
|
||||
case READ_BUSSTATUS:
|
||||
pslot->busstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
pslot->busstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
case READ_REVLEVEL:
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
case READ_HPCOPTIONS:
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
case READ_SLOTLATCHLOWREG:
|
||||
// DO NOT update the slot structure
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
break;
|
||||
|
||||
// Not used
|
||||
@ -630,18 +630,18 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
|
||||
list_for_each_entry(pslot, &ibmphp_slot_head,
|
||||
ibm_slot_list) {
|
||||
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);
|
||||
if (!rc) {
|
||||
pslot->status = ctrl_read (ctlr_ptr, wpg_bbar, index);
|
||||
rc = hpc_wait_ctlr_notworking (HPC_CTLR_WORKING_TOUT,
|
||||
pslot->status = ctrl_read(ctlr_ptr, wpg_bbar, index);
|
||||
rc = hpc_wait_ctlr_notworking(HPC_CTLR_WORKING_TOUT,
|
||||
ctlr_ptr, wpg_bbar, &status);
|
||||
if (!rc)
|
||||
pslot->ext_status =
|
||||
ctrl_read (ctlr_ptr, wpg_bbar,
|
||||
ctrl_read(ctlr_ptr, wpg_bbar,
|
||||
index + WPG_1ST_EXTSLOT_INDEX);
|
||||
} else {
|
||||
err ("%s - Error ctrl_read failed\n", __func__);
|
||||
err("%s - Error ctrl_read failed\n", __func__);
|
||||
rc = -EINVAL;
|
||||
break;
|
||||
}
|
||||
@ -658,11 +658,11 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
|
||||
|
||||
// remove physical to logical address mapping
|
||||
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;
|
||||
}
|
||||
|
||||
@ -671,7 +671,7 @@ int ibmphp_hpc_readslot (struct slot *pslot, u8 cmd, u8 *pstatus)
|
||||
*
|
||||
* 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;
|
||||
struct controller *ctlr_ptr;
|
||||
@ -681,55 +681,55 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
|
||||
int rc = 0;
|
||||
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) {
|
||||
rc = -EINVAL;
|
||||
err ("%s - Error Exit rc[%d]\n", __func__, rc);
|
||||
err("%s - Error Exit rc[%d]\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if ((cmd == HPC_BUS_33CONVMODE) || (cmd == HPC_BUS_66CONVMODE) ||
|
||||
(cmd == HPC_BUS_66PCIXMODE) || (cmd == HPC_BUS_100PCIXMODE) ||
|
||||
(cmd == HPC_BUS_133PCIXMODE)) {
|
||||
busindex = ibmphp_get_bus_index (pslot->bus);
|
||||
busindex = ibmphp_get_bus_index(pslot->bus);
|
||||
if (busindex < 0) {
|
||||
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;
|
||||
} else
|
||||
index = (u8) busindex;
|
||||
} else
|
||||
index = pslot->ctlr_index;
|
||||
|
||||
index = hpc_writecmdtoindex (cmd, index);
|
||||
index = hpc_writecmdtoindex(cmd, index);
|
||||
|
||||
if (index == HPC_ERROR) {
|
||||
rc = -EINVAL;
|
||||
err ("%s - Error Exit rc[%d]\n", __func__, rc);
|
||||
err("%s - Error Exit rc[%d]\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
ctlr_ptr = pslot->ctrl;
|
||||
|
||||
get_hpc_access ();
|
||||
get_hpc_access();
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// map physical address to logical address
|
||||
//--------------------------------------------------------------------
|
||||
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->u.wpeg_ctlr.i2c_addr);
|
||||
}
|
||||
//--------------------------------------------------------------------
|
||||
// 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) {
|
||||
|
||||
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
|
||||
@ -737,11 +737,11 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
|
||||
timeout = CMD_COMPLETE_TOUT_SEC;
|
||||
done = 0;
|
||||
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);
|
||||
if (!rc) {
|
||||
if (NEEDTOCHECK_CMDSTATUS (cmd)) {
|
||||
if (CTLR_FINISHED (status) == HPC_CTLR_FINISHED_YES)
|
||||
if (NEEDTOCHECK_CMDSTATUS(cmd)) {
|
||||
if (CTLR_FINISHED(status) == HPC_CTLR_FINISHED_YES)
|
||||
done = 1;
|
||||
} else
|
||||
done = 1;
|
||||
@ -750,7 +750,7 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
|
||||
msleep(1000);
|
||||
if (timeout < 1) {
|
||||
done = 1;
|
||||
err ("%s - Error command complete timeout\n", __func__);
|
||||
err("%s - Error command complete timeout\n", __func__);
|
||||
rc = -EFAULT;
|
||||
} else
|
||||
timeout--;
|
||||
@ -762,10 +762,10 @@ int ibmphp_hpc_writeslot (struct slot *pslot, u8 cmd)
|
||||
|
||||
// remove physical to logical address mapping
|
||||
if ((ctlr_ptr->ctlr_type == 2) || (ctlr_ptr->ctlr_type == 4))
|
||||
iounmap (wpg_bbar);
|
||||
free_hpc_access ();
|
||||
iounmap(wpg_bbar);
|
||||
free_hpc_access();
|
||||
|
||||
debug_polling ("%s - Exit rc[%d]\n", __func__, rc);
|
||||
debug_polling("%s - Exit rc[%d]\n", __func__, rc);
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -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
|
||||
*---------------------------------------------------------------------*/
|
||||
static void get_hpc_access (void)
|
||||
static void get_hpc_access(void)
|
||||
{
|
||||
mutex_lock(&sem_hpcaccess);
|
||||
}
|
||||
@ -782,7 +782,7 @@ static void get_hpc_access (void)
|
||||
/*----------------------------------------------------------------------
|
||||
* Name: free_hpc_access()
|
||||
*---------------------------------------------------------------------*/
|
||||
void free_hpc_access (void)
|
||||
void free_hpc_access(void)
|
||||
{
|
||||
mutex_unlock(&sem_hpcaccess);
|
||||
}
|
||||
@ -792,21 +792,21 @@ void free_hpc_access (void)
|
||||
*
|
||||
* 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;
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
* Name: ibmphp_unlock_operations()
|
||||
*---------------------------------------------------------------------*/
|
||||
void ibmphp_unlock_operations (void)
|
||||
void ibmphp_unlock_operations(void)
|
||||
{
|
||||
debug ("%s - Entry\n", __func__);
|
||||
up (&semOperations);
|
||||
debug("%s - Entry\n", __func__);
|
||||
up(&semOperations);
|
||||
to_debug = 0;
|
||||
debug ("%s - Exit\n", __func__);
|
||||
debug("%s - Exit\n", __func__);
|
||||
}
|
||||
|
||||
/*----------------------------------------------------------------------
|
||||
@ -826,11 +826,11 @@ static int poll_hpc(void *data)
|
||||
int poll_count = 0;
|
||||
u8 ctrl_count = 0x00;
|
||||
|
||||
debug ("%s - Entry\n", __func__);
|
||||
debug("%s - Entry\n", __func__);
|
||||
|
||||
while (!kthread_should_stop()) {
|
||||
/* try to get the lock to do some kind of hardware access */
|
||||
down (&semOperations);
|
||||
down(&semOperations);
|
||||
|
||||
switch (poll_state) {
|
||||
case POLL_LATCH_REGISTER:
|
||||
@ -842,12 +842,12 @@ static int poll_hpc(void *data)
|
||||
break;
|
||||
if (pslot->ctrl->ctlr_relative_id == ctrl_count) {
|
||||
ctrl_count++;
|
||||
if (READ_SLOT_LATCH (pslot->ctrl)) {
|
||||
rc = ibmphp_hpc_readslot (pslot,
|
||||
if (READ_SLOT_LATCH(pslot->ctrl)) {
|
||||
rc = ibmphp_hpc_readslot(pslot,
|
||||
READ_SLOTLATCHLOWREG,
|
||||
&curlatchlow);
|
||||
if (oldlatchlow != curlatchlow)
|
||||
process_changeinlatch (oldlatchlow,
|
||||
process_changeinlatch(oldlatchlow,
|
||||
curlatchlow,
|
||||
pslot->ctrl);
|
||||
}
|
||||
@ -860,12 +860,12 @@ static int poll_hpc(void *data)
|
||||
list_for_each_entry(pslot, &ibmphp_slot_head,
|
||||
ibm_slot_list) {
|
||||
// make a copy of the old status
|
||||
memcpy ((void *) &myslot, (void *) pslot,
|
||||
sizeof (struct slot));
|
||||
rc = ibmphp_hpc_readslot (pslot, READ_ALLSTAT, NULL);
|
||||
memcpy((void *) &myslot, (void *) pslot,
|
||||
sizeof(struct slot));
|
||||
rc = ibmphp_hpc_readslot(pslot, READ_ALLSTAT, NULL);
|
||||
if ((myslot.status != pslot->status)
|
||||
|| (myslot.ext_status != pslot->ext_status))
|
||||
process_changeinstatus (pslot, &myslot);
|
||||
process_changeinstatus(pslot, &myslot);
|
||||
}
|
||||
ctrl_count = 0x00;
|
||||
list_for_each_entry(pslot, &ibmphp_slot_head,
|
||||
@ -874,8 +874,8 @@ static int poll_hpc(void *data)
|
||||
break;
|
||||
if (pslot->ctrl->ctlr_relative_id == ctrl_count) {
|
||||
ctrl_count++;
|
||||
if (READ_SLOT_LATCH (pslot->ctrl))
|
||||
rc = ibmphp_hpc_readslot (pslot,
|
||||
if (READ_SLOT_LATCH(pslot->ctrl))
|
||||
rc = ibmphp_hpc_readslot(pslot,
|
||||
READ_SLOTLATCHLOWREG,
|
||||
&curlatchlow);
|
||||
}
|
||||
@ -885,13 +885,13 @@ static int poll_hpc(void *data)
|
||||
break;
|
||||
case POLL_SLEEP:
|
||||
/* don't sleep with a lock on the hardware */
|
||||
up (&semOperations);
|
||||
up(&semOperations);
|
||||
msleep(POLL_INTERVAL_SEC * 1000);
|
||||
|
||||
if (kthread_should_stop())
|
||||
goto out_sleep;
|
||||
|
||||
down (&semOperations);
|
||||
down(&semOperations);
|
||||
|
||||
if (poll_count >= POLL_LATCH_CNT) {
|
||||
poll_count = 0;
|
||||
@ -901,13 +901,13 @@ static int poll_hpc(void *data)
|
||||
break;
|
||||
}
|
||||
/* give up the hardware semaphore */
|
||||
up (&semOperations);
|
||||
up(&semOperations);
|
||||
/* sleep for a short time just for good measure */
|
||||
out_sleep:
|
||||
msleep(100);
|
||||
}
|
||||
up (&sem_exit);
|
||||
debug ("%s - Exit\n", __func__);
|
||||
up(&sem_exit);
|
||||
debug("%s - Exit\n", __func__);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -927,14 +927,14 @@ static int poll_hpc(void *data)
|
||||
*
|
||||
* Notes:
|
||||
*---------------------------------------------------------------------*/
|
||||
static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
|
||||
static int process_changeinstatus(struct slot *pslot, struct slot *poldslot)
|
||||
{
|
||||
u8 status;
|
||||
int rc = 0;
|
||||
u8 disable = 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
|
||||
if ((pslot->status & 0x01) != (poldslot->status & 0x01))
|
||||
@ -956,7 +956,7 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
|
||||
// bit 5 - HPC_SLOT_PWRGD
|
||||
if ((pslot->status & 0x20) != (poldslot->status & 0x20))
|
||||
// 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;
|
||||
|
||||
// bit 6 - HPC_SLOT_BUS_SPEED
|
||||
@ -967,20 +967,20 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
|
||||
update = 1;
|
||||
// OPEN -> CLOSE
|
||||
if (pslot->status & 0x80) {
|
||||
if (SLOT_PWRGD (pslot->status)) {
|
||||
if (SLOT_PWRGD(pslot->status)) {
|
||||
// power goes on and off after closing latch
|
||||
// check again to make sure power is still ON
|
||||
msleep(1000);
|
||||
rc = ibmphp_hpc_readslot (pslot, READ_SLOTSTATUS, &status);
|
||||
if (SLOT_PWRGD (status))
|
||||
rc = ibmphp_hpc_readslot(pslot, READ_SLOTSTATUS, &status);
|
||||
if (SLOT_PWRGD(status))
|
||||
update = 1;
|
||||
else // overwrite power in pslot to OFF
|
||||
pslot->status &= ~HPC_SLOT_POWER;
|
||||
}
|
||||
}
|
||||
// CLOSE -> OPEN
|
||||
else if ((SLOT_PWRGD (poldslot->status) == HPC_SLOT_PWRGD_GOOD)
|
||||
&& (SLOT_CONNECT (poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT (poldslot->status))) {
|
||||
else if ((SLOT_PWRGD(poldslot->status) == HPC_SLOT_PWRGD_GOOD)
|
||||
&& (SLOT_CONNECT(poldslot->status) == HPC_SLOT_CONNECTED) && (SLOT_PRESENT(poldslot->status))) {
|
||||
disable = 1;
|
||||
}
|
||||
// else - ignore
|
||||
@ -990,15 +990,15 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
|
||||
update = 1;
|
||||
|
||||
if (disable) {
|
||||
debug ("process_changeinstatus - disable slot\n");
|
||||
debug("process_changeinstatus - disable slot\n");
|
||||
pslot->flag = 0;
|
||||
rc = ibmphp_do_disable_slot (pslot);
|
||||
rc = ibmphp_do_disable_slot(pslot);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
@ -1013,32 +1013,32 @@ static int process_changeinstatus (struct slot *pslot, struct slot *poldslot)
|
||||
* Return 0 or error codes
|
||||
* 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;
|
||||
u8 i;
|
||||
u8 mask;
|
||||
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
|
||||
|
||||
for (i = ctrl->starting_slot_num; i <= ctrl->ending_slot_num; i++) {
|
||||
mask = 0x01 << i;
|
||||
if ((mask & old) != (mask & new)) {
|
||||
pslot = ibmphp_get_slot_from_physical_num (i);
|
||||
pslot = ibmphp_get_slot_from_physical_num(i);
|
||||
if (pslot) {
|
||||
memcpy ((void *) &myslot, (void *) pslot, sizeof (struct slot));
|
||||
rc = ibmphp_hpc_readslot (pslot, READ_ALLSTAT, NULL);
|
||||
debug ("%s - call process_changeinstatus for slot[%d]\n", __func__, i);
|
||||
process_changeinstatus (pslot, &myslot);
|
||||
memcpy((void *) &myslot, (void *) pslot, sizeof(struct slot));
|
||||
rc = ibmphp_hpc_readslot(pslot, READ_ALLSTAT, NULL);
|
||||
debug("%s - call process_changeinstatus for slot[%d]\n", __func__, i);
|
||||
process_changeinstatus(pslot, &myslot);
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
|
||||
@ -1047,13 +1047,13 @@ static int process_changeinlatch (u8 old, u8 new, struct controller *ctrl)
|
||||
*
|
||||
* 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");
|
||||
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 0;
|
||||
@ -1064,30 +1064,30 @@ int __init ibmphp_hpc_start_poll_thread (void)
|
||||
*
|
||||
* 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);
|
||||
debug ("before locking operations \n");
|
||||
ibmphp_lock_operations ();
|
||||
debug ("after locking operations \n");
|
||||
debug("before locking operations\n");
|
||||
ibmphp_lock_operations();
|
||||
debug("after locking operations\n");
|
||||
|
||||
// wait for poll thread to exit
|
||||
debug ("before sem_exit down \n");
|
||||
down (&sem_exit);
|
||||
debug ("after sem_exit down \n");
|
||||
debug("before sem_exit down\n");
|
||||
down(&sem_exit);
|
||||
debug("after sem_exit down\n");
|
||||
|
||||
// cleanup
|
||||
debug ("before free_hpc_access \n");
|
||||
free_hpc_access ();
|
||||
debug ("after free_hpc_access \n");
|
||||
ibmphp_unlock_operations ();
|
||||
debug ("after unlock operations \n");
|
||||
up (&sem_exit);
|
||||
debug ("after sem exit up\n");
|
||||
debug("before free_hpc_access\n");
|
||||
free_hpc_access();
|
||||
debug("after free_hpc_access\n");
|
||||
ibmphp_unlock_operations();
|
||||
debug("after unlock operations\n");
|
||||
up(&sem_exit);
|
||||
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)
|
||||
* Return 0, HPC_ERROR
|
||||
* 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)
|
||||
{
|
||||
int rc = 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) {
|
||||
*pstatus = ctrl_read (ctlr_ptr, wpg_bbar, WPG_CTLR_INDEX);
|
||||
*pstatus = ctrl_read(ctlr_ptr, wpg_bbar, WPG_CTLR_INDEX);
|
||||
if (*pstatus == HPC_ERROR) {
|
||||
rc = HPC_ERROR;
|
||||
done = 1;
|
||||
}
|
||||
if (CTLR_WORKING (*pstatus) == HPC_CTLR_WORKING_NO)
|
||||
if (CTLR_WORKING(*pstatus) == HPC_CTLR_WORKING_NO)
|
||||
done = 1;
|
||||
if (!done) {
|
||||
msleep(1000);
|
||||
if (timeout < 1) {
|
||||
done = 1;
|
||||
err ("HPCreadslot - Error ctlr timeout\n");
|
||||
err("HPCreadslot - Error ctlr timeout\n");
|
||||
rc = HPC_ERROR;
|
||||
} else
|
||||
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;
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -45,10 +45,10 @@
|
||||
|
||||
#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 err(format, arg...) printk(KERN_ERR "%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 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 info(format, arg...) printk(KERN_INFO "%s: " format, MY_NAME, ## arg)
|
||||
#define warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
|
||||
|
||||
|
||||
/* local variables */
|
||||
@ -226,7 +226,7 @@ static ssize_t test_write_file(struct pci_slot *pci_slot, const char *buf,
|
||||
u32 test;
|
||||
int retval = 0;
|
||||
|
||||
ltest = simple_strtoul (buf, NULL, 10);
|
||||
ltest = simple_strtoul(buf, NULL, 10);
|
||||
test = (u32)(ltest & 0xffffffff);
|
||||
dbg("test = %d\n", test);
|
||||
|
||||
|
@ -47,14 +47,14 @@ extern bool pciehp_debug;
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (pciehp_debug) \
|
||||
printk(KERN_DEBUG "%s: " format, MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format, MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#define err(format, arg...) \
|
||||
printk(KERN_ERR "%s: " format, MY_NAME , ## arg)
|
||||
printk(KERN_ERR "%s: " format, MY_NAME, ## 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...) \
|
||||
printk(KERN_WARNING "%s: " format, MY_NAME , ## arg)
|
||||
printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
|
||||
|
||||
#define ctrl_dbg(ctrl, format, arg...) \
|
||||
do { \
|
||||
|
@ -62,14 +62,14 @@ MODULE_PARM_DESC(pciehp_force, "Force pciehp, even if OSHP is missing");
|
||||
|
||||
#define PCIE_MODULE_NAME "pciehp"
|
||||
|
||||
static int set_attention_status (struct hotplug_slot *slot, u8 value);
|
||||
static int enable_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_attention_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 reset_slot (struct hotplug_slot *slot, int probe);
|
||||
static int set_attention_status(struct hotplug_slot *slot, u8 value);
|
||||
static int enable_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_attention_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 reset_slot(struct hotplug_slot *slot, int probe);
|
||||
|
||||
/**
|
||||
* release_slot - free up the memory used by a slot
|
||||
|
@ -52,11 +52,11 @@ static LIST_HEAD(slot_list);
|
||||
do { \
|
||||
if (debug) \
|
||||
printk(KERN_DEBUG "%s: " format "\n", \
|
||||
MY_NAME , ## arg); \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format "\n", MY_NAME, ## arg)
|
||||
|
||||
/* local variables */
|
||||
static bool debug;
|
||||
@ -72,14 +72,14 @@ MODULE_LICENSE("GPL");
|
||||
module_param(debug, bool, 0644);
|
||||
MODULE_PARM_DESC(debug, "Debugging mode enabled or not");
|
||||
|
||||
static int enable_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 hardware_test (struct hotplug_slot *slot, u32 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_latch_status (struct hotplug_slot *slot, u8 *value);
|
||||
static int get_adapter_status (struct hotplug_slot *slot, u8 *value);
|
||||
static int enable_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 hardware_test(struct hotplug_slot *slot, u32 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_latch_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 = {
|
||||
.enable_slot = enable_slot,
|
||||
|
@ -51,11 +51,11 @@ extern bool rpaphp_debug;
|
||||
do { \
|
||||
if (rpaphp_debug) \
|
||||
printk(KERN_DEBUG "%s: " format, \
|
||||
MY_NAME , ## arg); \
|
||||
MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#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 warn(format, arg...) printk(KERN_WARNING "%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 warn(format, arg...) printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
|
||||
|
||||
/* slot states */
|
||||
|
||||
|
@ -94,7 +94,7 @@ static int get_power_status(struct hotplug_slot *hotplug_slot, u8 *value)
|
||||
int retval, level;
|
||||
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)
|
||||
*value = level;
|
||||
return retval;
|
||||
|
@ -126,7 +126,7 @@ int rpaphp_enable_slot(struct slot *slot)
|
||||
if (rpaphp_debug) {
|
||||
struct pci_dev *dev;
|
||||
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));
|
||||
}
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ void dealloc_slot_struct(struct slot *slot)
|
||||
}
|
||||
|
||||
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;
|
||||
|
||||
|
@ -99,7 +99,7 @@ static ssize_t path_show(struct pci_slot *pci_slot, char *buf)
|
||||
if (!slot)
|
||||
return retval;
|
||||
|
||||
retval = sprintf (buf, "%s\n", slot->physical_path);
|
||||
retval = sprintf(buf, "%s\n", slot->physical_path);
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -313,7 +313,7 @@ static int sn_slot_disable(struct hotplug_slot *bss_hotplug_slot,
|
||||
}
|
||||
|
||||
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;
|
||||
@ -488,7 +488,7 @@ static int disable_slot(struct hotplug_slot *bss_hotplug_slot)
|
||||
|
||||
/* free the ACPI resources for the slot */
|
||||
if (SN_ACPI_BASE_SUPPORT() &&
|
||||
PCI_CONTROLLER(slot->pci_bus)->companion) {
|
||||
PCI_CONTROLLER(slot->pci_bus)->companion) {
|
||||
unsigned long long adr;
|
||||
struct acpi_device *device;
|
||||
acpi_handle phandle;
|
||||
|
@ -50,14 +50,14 @@ extern bool shpchp_debug;
|
||||
#define dbg(format, arg...) \
|
||||
do { \
|
||||
if (shpchp_debug) \
|
||||
printk(KERN_DEBUG "%s: " format, MY_NAME , ## arg); \
|
||||
printk(KERN_DEBUG "%s: " format, MY_NAME, ## arg); \
|
||||
} while (0)
|
||||
#define err(format, arg...) \
|
||||
printk(KERN_ERR "%s: " format, MY_NAME , ## arg)
|
||||
printk(KERN_ERR "%s: " format, MY_NAME, ## 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...) \
|
||||
printk(KERN_WARNING "%s: " format, MY_NAME , ## arg)
|
||||
printk(KERN_WARNING "%s: " format, MY_NAME, ## arg)
|
||||
|
||||
#define ctrl_dbg(ctrl, format, arg...) \
|
||||
do { \
|
||||
@ -84,7 +84,7 @@ struct slot {
|
||||
u8 presence_save;
|
||||
u8 pwr_save;
|
||||
struct controller *ctrl;
|
||||
struct hpc_ops *hpc_ops;
|
||||
const struct hpc_ops *hpc_ops;
|
||||
struct hotplug_slot *hotplug_slot;
|
||||
struct list_head slot_list;
|
||||
struct delayed_work work; /* work for button event */
|
||||
@ -106,7 +106,7 @@ struct controller {
|
||||
int slot_num_inc; /* 1 or -1 */
|
||||
struct pci_dev *pci_dev;
|
||||
struct list_head slot_list;
|
||||
struct hpc_ops *hpc_ops;
|
||||
const struct hpc_ops *hpc_ops;
|
||||
wait_queue_head_t queue; /* sleep & wake process */
|
||||
u8 slot_device_offset;
|
||||
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)
|
||||
pci_write_config_dword(p_slot->ctrl->pci_dev, PCIX_MEM_BASE_LIMIT_OFFSET, rse_set);
|
||||
}
|
||||
/* 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)
|
||||
pcix_misc2_temp |= SERRFATALENABLE_MASK;
|
||||
|
@ -57,13 +57,13 @@ MODULE_PARM_DESC(shpchp_poll_time, "Polling mechanism frequency, in seconds");
|
||||
|
||||
#define SHPC_MODULE_NAME "shpchp"
|
||||
|
||||
static int set_attention_status (struct hotplug_slot *slot, u8 value);
|
||||
static int enable_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_attention_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 set_attention_status(struct hotplug_slot *slot, u8 value);
|
||||
static int enable_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_attention_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 struct hotplug_slot_ops shpchp_hotplug_slot_ops = {
|
||||
.set_attention_status = set_attention_status,
|
||||
@ -191,7 +191,7 @@ void cleanup_slots(struct controller *ctrl)
|
||||
/*
|
||||
* 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);
|
||||
|
||||
@ -204,7 +204,7 @@ static int set_attention_status (struct hotplug_slot *hotplug_slot, u8 status)
|
||||
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);
|
||||
|
||||
@ -214,7 +214,7 @@ static int enable_slot (struct hotplug_slot *hotplug_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);
|
||||
|
||||
@ -224,7 +224,7 @@ static int disable_slot (struct hotplug_slot *hotplug_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);
|
||||
int retval;
|
||||
@ -239,7 +239,7 @@ static int get_power_status (struct hotplug_slot *hotplug_slot, u8 *value)
|
||||
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);
|
||||
int retval;
|
||||
@ -254,7 +254,7 @@ static int get_attention_status (struct hotplug_slot *hotplug_slot, u8 *value)
|
||||
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);
|
||||
int retval;
|
||||
@ -269,7 +269,7 @@ static int get_latch_status (struct hotplug_slot *hotplug_slot, u8 *value)
|
||||
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);
|
||||
int retval;
|
||||
|
@ -542,7 +542,7 @@ static int hpc_set_attention_status(struct slot *slot, u8 value)
|
||||
u8 slot_cmd = 0;
|
||||
|
||||
switch (value) {
|
||||
case 0 :
|
||||
case 0:
|
||||
slot_cmd = SET_ATTN_OFF; /* OFF */
|
||||
break;
|
||||
case 1:
|
||||
@ -910,7 +910,7 @@ static int shpc_get_max_bus_speed(struct controller *ctrl)
|
||||
return retval;
|
||||
}
|
||||
|
||||
static struct hpc_ops shpchp_hpc_ops = {
|
||||
static const struct hpc_ops shpchp_hpc_ops = {
|
||||
.power_on_slot = hpc_power_on_slot,
|
||||
.slot_enable = hpc_slot_enable,
|
||||
.slot_disable = hpc_slot_disable,
|
||||
|
@ -35,7 +35,7 @@
|
||||
|
||||
/* 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;
|
||||
char *out = buf;
|
||||
@ -43,7 +43,7 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
|
||||
struct resource *res;
|
||||
struct pci_bus *bus;
|
||||
|
||||
pdev = container_of (dev, struct pci_dev, dev);
|
||||
pdev = to_pci_dev(dev);
|
||||
bus = pdev->subordinate;
|
||||
|
||||
out += sprintf(buf, "Free resources: memory\n");
|
||||
@ -83,11 +83,11 @@ static ssize_t show_ctrl (struct device *dev, struct device_attribute *attr, cha
|
||||
|
||||
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)
|
||||
|
@ -77,7 +77,7 @@ static umode_t smbios_instance_string_exist(struct kobject *kobj,
|
||||
struct device *dev;
|
||||
struct pci_dev *pdev;
|
||||
|
||||
dev = container_of(kobj, struct device, kobj);
|
||||
dev = kobj_to_dev(kobj);
|
||||
pdev = to_pci_dev(dev);
|
||||
|
||||
return find_smbios_instance_string(pdev, NULL, SMBIOS_ATTR_NONE) ?
|
||||
@ -221,7 +221,7 @@ static umode_t acpi_index_string_exist(struct kobject *kobj,
|
||||
{
|
||||
struct device *dev;
|
||||
|
||||
dev = container_of(kobj, struct device, kobj);
|
||||
dev = kobj_to_dev(kobj);
|
||||
|
||||
if (device_has_dsm(dev))
|
||||
return S_IRUGO;
|
||||
|
@ -627,8 +627,7 @@ static ssize_t pci_read_config(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_dev *dev = to_pci_dev(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
||||
unsigned int size = 64;
|
||||
loff_t init_off = off;
|
||||
u8 *data = (u8 *) buf;
|
||||
@ -704,8 +703,7 @@ static ssize_t pci_write_config(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_dev *dev = to_pci_dev(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
||||
unsigned int size = count;
|
||||
loff_t init_off = off;
|
||||
u8 *data = (u8 *) buf;
|
||||
@ -766,8 +764,7 @@ static ssize_t read_vpd_attr(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_dev *dev =
|
||||
to_pci_dev(container_of(kobj, struct device, kobj));
|
||||
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
||||
|
||||
if (off > bin_attr->size)
|
||||
count = 0;
|
||||
@ -781,8 +778,7 @@ static ssize_t write_vpd_attr(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_dev *dev =
|
||||
to_pci_dev(container_of(kobj, struct device, kobj));
|
||||
struct pci_dev *dev = to_pci_dev(kobj_to_dev(kobj));
|
||||
|
||||
if (off > bin_attr->size)
|
||||
count = 0;
|
||||
@ -809,8 +805,7 @@ static ssize_t pci_read_legacy_io(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
|
||||
|
||||
/* Only support 1, 2 or 4 byte accesses */
|
||||
if (count != 1 && count != 2 && count != 4)
|
||||
@ -835,8 +830,7 @@ static ssize_t pci_write_legacy_io(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
loff_t off, size_t count)
|
||||
{
|
||||
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
|
||||
|
||||
/* Only support 1, 2 or 4 byte accesses */
|
||||
if (count != 1 && count != 2 && count != 4)
|
||||
@ -860,8 +854,7 @@ static int pci_mmap_legacy_mem(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
|
||||
|
||||
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,
|
||||
struct bin_attribute *attr,
|
||||
struct vm_area_struct *vma)
|
||||
{
|
||||
struct pci_bus *bus = to_pci_bus(container_of(kobj, struct device,
|
||||
kobj));
|
||||
struct pci_bus *bus = to_pci_bus(kobj_to_dev(kobj));
|
||||
|
||||
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,
|
||||
static int pci_mmap_resource(struct kobject *kobj, struct bin_attribute *attr,
|
||||
struct vm_area_struct *vma, int write_combine)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(container_of(kobj,
|
||||
struct device, kobj));
|
||||
struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
|
||||
struct resource *res = attr->private;
|
||||
enum pci_mmap_state mmap_type;
|
||||
resource_size_t start, end;
|
||||
@ -1051,8 +1042,7 @@ static ssize_t pci_resource_io(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *attr, char *buf,
|
||||
loff_t off, size_t count, bool write)
|
||||
{
|
||||
struct pci_dev *pdev = to_pci_dev(container_of(kobj,
|
||||
struct device, kobj));
|
||||
struct pci_dev *pdev = to_pci_dev(kobj_to_dev(kobj));
|
||||
struct resource *res = attr->private;
|
||||
unsigned long port = off;
|
||||
int i;
|
||||
@ -1222,7 +1212,7 @@ static ssize_t pci_write_rom(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
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))
|
||||
pdev->rom_attr_enabled = 0;
|
||||
@ -1248,7 +1238,7 @@ static ssize_t pci_read_rom(struct file *filp, struct kobject *kobj,
|
||||
struct bin_attribute *bin_attr, char *buf,
|
||||
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;
|
||||
size_t size;
|
||||
|
||||
@ -1508,7 +1498,7 @@ static struct attribute *pci_dev_dev_attrs[] = {
|
||||
static umode_t pci_dev_attrs_are_visible(struct kobject *kobj,
|
||||
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);
|
||||
|
||||
if (a == &vga_attr.attr)
|
||||
@ -1527,7 +1517,7 @@ static struct attribute *pci_dev_hp_attrs[] = {
|
||||
static umode_t pci_dev_hp_attrs_are_visible(struct kobject *kobj,
|
||||
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);
|
||||
|
||||
if (pdev->is_virtfn)
|
||||
@ -1551,7 +1541,7 @@ static struct attribute *sriov_dev_attrs[] = {
|
||||
static umode_t sriov_attrs_are_visible(struct kobject *kobj,
|
||||
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))
|
||||
return 0;
|
||||
|
@ -1417,7 +1417,7 @@ struct pci_devres {
|
||||
|
||||
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;
|
||||
int i;
|
||||
|
||||
@ -1534,7 +1534,7 @@ void __weak pcibios_release_device(struct pci_dev *dev) {}
|
||||
* is the default implementation. Architecture implementations can
|
||||
* 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
|
||||
|
@ -442,7 +442,7 @@ static void __assign_resources_sorted(struct list_head *head,
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -186,7 +186,7 @@ struct msi_domain_info;
|
||||
* @msi_free: Domain specific function to free a MSI interrupts
|
||||
* @msi_check: Callback for verification of the domain/info/dev data
|
||||
* @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
|
||||
* @handle_error: Optional error handler if the allocation fails
|
||||
*
|
||||
@ -194,7 +194,7 @@ struct msi_domain_info;
|
||||
* msi_create_irq_domain() and related interfaces
|
||||
*
|
||||
* @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.
|
||||
*/
|
||||
struct msi_domain_ops {
|
||||
|
Loading…
Reference in New Issue
Block a user