PCI updates for v3.13:
Miscellaneous - Remove duplicate disable from pcie_portdrv_remove() (Yinghai Lu) - Fix whitespace, capitalization, and spelling errors (Bjorn Helgaas) -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQIcBAABAgAGBQJSjnxuAAoJEFmIoMA60/r8YtcP/2pF9Er/EFpbRDHe0lTJKTby JHlrD8T0XWpddNRlbxEWmuklJoZAjKaJPmnwbva7/eAc3enNr7cZRNhlo1E1r6iO LNniWcp50eAkJVsQBt0RDemh4Rfjmg/zuSOmIOn5MlifiTxEKE8Ei+ZIecsYhwFm JpQwvLD4cKVop0zjz50jGeSltHeUT5mWFFmMKQInnc+lhBY9DIIE5Nh+QSpkapxE inoiNlwzaQal/6iG46aMtLf1KeuVkgaMW6ITtqeCbIJlYSoDs83cupKNP8n3PXX6 u697VxbDyO2IAEjAeMmbxu9+M+9By0kKdeZgncC5luKIrzW2fGeMYEgtUXso+vcN 3gtl8FHoX6YmAPaYkdCURYkTMdA5YPqQs688+f6vC+AWoQctHq2tgjQNKv4An7bb vCA39T3+wtQVFGVYqBDwJJZp8O4RZWB4iQoRx9inoastTV/C1L6te7/ur5CLG2+z Go8mSoJYbjlUDAa5uDEh3TqxCrBPfDMPSBxDQbt3fu+TEZ1Wy/CpAMi5vKK4tDFC ZgFfl+tyqb+8mgkuobuMmRxR+c7rff5gAVrKSm4/fGGWzRJMxop5xl9wPWDqFnxL mID0hp+ke5EuKyoitNQBk3EXYK8FIMtx2NOMXpW5KKbhiNaaPR0TQJei+hvjAlZ8 A5pP3NqtDaHUsL4tmxkJ =C9v7 -----END PGP SIGNATURE----- Merge tag 'pci-v3.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci Pull PCI updates from Bjorn Helgaas: "Miscellaneous - Remove duplicate disable from pcie_portdrv_remove() (Yinghai Lu) - Fix whitespace, capitalization, and spelling errors (Bjorn Helgaas)" * tag 'pci-v3.13-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: PCI: Remove duplicate pci_disable_device() from pcie_portdrv_remove() PCI: Fix whitespace, capitalization, and spelling errors
This commit is contained in:
commit
e3414786ff
|
@ -410,7 +410,7 @@ EXPORT_SYMBOL_GPL(pci_disable_pasid);
|
|||
* Otherwise is returns a bitmask with supported features. Current
|
||||
* features reported are:
|
||||
* PCI_PASID_CAP_EXEC - Execute permission supported
|
||||
* PCI_PASID_CAP_PRIV - Priviledged mode supported
|
||||
* PCI_PASID_CAP_PRIV - Privileged mode supported
|
||||
*/
|
||||
int pci_pasid_features(struct pci_dev *pdev)
|
||||
{
|
||||
|
|
|
@ -249,7 +249,7 @@ struct tegra_pcie {
|
|||
void __iomem *afi;
|
||||
int irq;
|
||||
|
||||
struct list_head busses;
|
||||
struct list_head buses;
|
||||
struct resource *cs;
|
||||
|
||||
struct resource io;
|
||||
|
@ -399,14 +399,14 @@ free:
|
|||
|
||||
/*
|
||||
* Look up a virtual address mapping for the specified bus number. If no such
|
||||
* mapping existis, try to create one.
|
||||
* mapping exists, try to create one.
|
||||
*/
|
||||
static void __iomem *tegra_pcie_bus_map(struct tegra_pcie *pcie,
|
||||
unsigned int busnr)
|
||||
{
|
||||
struct tegra_pcie_bus *bus;
|
||||
|
||||
list_for_each_entry(bus, &pcie->busses, list)
|
||||
list_for_each_entry(bus, &pcie->buses, list)
|
||||
if (bus->nr == busnr)
|
||||
return (void __iomem *)bus->area->addr;
|
||||
|
||||
|
@ -414,7 +414,7 @@ static void __iomem *tegra_pcie_bus_map(struct tegra_pcie *pcie,
|
|||
if (IS_ERR(bus))
|
||||
return NULL;
|
||||
|
||||
list_add_tail(&bus->list, &pcie->busses);
|
||||
list_add_tail(&bus->list, &pcie->buses);
|
||||
|
||||
return (void __iomem *)bus->area->addr;
|
||||
}
|
||||
|
@ -808,7 +808,7 @@ static int tegra_pcie_enable_controller(struct tegra_pcie *pcie)
|
|||
value &= ~AFI_FUSE_PCIE_T0_GEN2_DIS;
|
||||
afi_writel(pcie, value, AFI_FUSE);
|
||||
|
||||
/* initialze internal PHY, enable up to 16 PCIE lanes */
|
||||
/* initialize internal PHY, enable up to 16 PCIE lanes */
|
||||
pads_writel(pcie, 0x0, PADS_CTL_SEL);
|
||||
|
||||
/* override IDDQ to 1 on all 4 lanes */
|
||||
|
@ -1624,7 +1624,7 @@ static int tegra_pcie_probe(struct platform_device *pdev)
|
|||
if (!pcie)
|
||||
return -ENOMEM;
|
||||
|
||||
INIT_LIST_HEAD(&pcie->busses);
|
||||
INIT_LIST_HEAD(&pcie->buses);
|
||||
INIT_LIST_HEAD(&pcie->ports);
|
||||
pcie->soc_data = match->data;
|
||||
pcie->dev = &pdev->dev;
|
||||
|
|
|
@ -197,7 +197,7 @@ static int find_valid_pos0(struct pcie_port *pp, int msgvec, int pos, int *pos0)
|
|||
return -ENOSPC;
|
||||
/*
|
||||
* Check if this position is at correct offset.nvec is always a
|
||||
* power of two. pos0 must be nvec bit alligned.
|
||||
* power of two. pos0 must be nvec bit aligned.
|
||||
*/
|
||||
if (pos % msgvec)
|
||||
pos += msgvec - (pos % msgvec);
|
||||
|
|
|
@ -325,7 +325,7 @@ static acpi_status register_slot(acpi_handle handle, u32 lvl, void *data,
|
|||
|
||||
list_add_tail(&slot->node, &bridge->slots);
|
||||
|
||||
/* Register slots for ejectable funtions only. */
|
||||
/* Register slots for ejectable functions only. */
|
||||
if (acpi_pci_check_ejectable(pbus, handle) || is_dock_device(handle)) {
|
||||
unsigned long long sun;
|
||||
int retval;
|
||||
|
|
|
@ -259,7 +259,7 @@ static void ibm_handle_events(acpi_handle handle, u32 event, void *context)
|
|||
pr_debug("%s: Received notification %02x\n", __func__, event);
|
||||
|
||||
if (subevent == 0x80) {
|
||||
pr_debug("%s: generationg bus event\n", __func__);
|
||||
pr_debug("%s: generating bus event\n", __func__);
|
||||
acpi_bus_generate_netlink_event(note->device->pnp.device_class,
|
||||
dev_name(¬e->device->dev),
|
||||
note->event, detail);
|
||||
|
|
|
@ -862,10 +862,10 @@ static int cpqhpc_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
|||
goto err_disable_device;
|
||||
}
|
||||
|
||||
/* Check for the proper subsystem ID's
|
||||
/* Check for the proper subsystem IDs
|
||||
* Intel uses a different SSID programming model than Compaq.
|
||||
* For Intel, each SSID bit identifies a PHP capability.
|
||||
* Also Intel HPC's may have RID=0.
|
||||
* Also Intel HPCs may have RID=0.
|
||||
*/
|
||||
if ((pdev->revision <= 2) && (vendor_id != PCI_VENDOR_ID_INTEL)) {
|
||||
err(msg_HPC_not_supported);
|
||||
|
|
|
@ -2411,11 +2411,11 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
|||
if (rc)
|
||||
return rc;
|
||||
|
||||
/* find range of busses to use */
|
||||
/* find range of buses to use */
|
||||
dbg("find ranges of buses to use\n");
|
||||
bus_node = get_max_resource(&(resources->bus_head), 1);
|
||||
|
||||
/* If we don't have any busses to allocate, we can't continue */
|
||||
/* If we don't have any buses to allocate, we can't continue */
|
||||
if (!bus_node)
|
||||
return -ENOMEM;
|
||||
|
||||
|
@ -2900,7 +2900,7 @@ static int configure_new_function(struct controller *ctrl, struct pci_func *func
|
|||
|
||||
/* If this function needs an interrupt and we are behind
|
||||
* a bridge and the pin is tied to something that's
|
||||
* alread mapped, set this one the same */
|
||||
* already mapped, set this one the same */
|
||||
if (temp_byte && resources->irqs &&
|
||||
(resources->irqs->valid_INT &
|
||||
(0x01 << ((temp_byte + resources->irqs->barber_pole - 1) & 0x03)))) {
|
||||
|
|
|
@ -291,7 +291,7 @@ int cpqhp_get_bus_dev (struct controller *ctrl, u8 * bus_num, u8 * dev_num, u8 s
|
|||
*
|
||||
* Reads configuration for all slots in a PCI bus and saves info.
|
||||
*
|
||||
* Note: For non-hot plug busses, the slot # saved is the device #
|
||||
* Note: For non-hot plug buses, the slot # saved is the device #
|
||||
*
|
||||
* returns 0 if success
|
||||
*/
|
||||
|
@ -455,7 +455,7 @@ int cpqhp_save_config(struct controller *ctrl, int busnumber, int is_hot_plug)
|
|||
* cpqhp_save_slot_config
|
||||
*
|
||||
* Saves configuration info for all PCI devices in a given slot
|
||||
* including subordinate busses.
|
||||
* including subordinate buses.
|
||||
*
|
||||
* returns 0 if success
|
||||
*/
|
||||
|
@ -1556,4 +1556,3 @@ void cpqhp_destroy_board_resources (struct pci_func * func)
|
|||
kfree(tres);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -59,7 +59,7 @@ extern int ibmphp_debug;
|
|||
|
||||
|
||||
/************************************************************
|
||||
* RESOURE TYPE *
|
||||
* RESOURCE TYPE *
|
||||
************************************************************/
|
||||
|
||||
#define EBDA_RSRC_TYPE_MASK 0x03
|
||||
|
@ -574,7 +574,7 @@ void ibmphp_hpc_stop_poll_thread(void);
|
|||
#define HPC_CTLR_IRQ_PENDG 0x80
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
// HPC_CTLR_WROKING status return codes
|
||||
// HPC_CTLR_WORKING status return codes
|
||||
//----------------------------------------------------------------------------
|
||||
#define HPC_CTLR_WORKING_NO 0x00
|
||||
#define HPC_CTLR_WORKING_YES 0x01
|
||||
|
|
|
@ -58,7 +58,7 @@ MODULE_DESCRIPTION (DRIVER_DESC);
|
|||
struct pci_bus *ibmphp_pci_bus;
|
||||
static int max_slots;
|
||||
|
||||
static int irqs[16]; /* PIC mode IRQ's we're using so far (in case MPS
|
||||
static int irqs[16]; /* PIC mode IRQs we're using so far (in case MPS
|
||||
* tables don't provide default info for empty slots */
|
||||
|
||||
static int init_flag;
|
||||
|
@ -172,7 +172,7 @@ int ibmphp_init_devno(struct slot **cur_slot)
|
|||
debug("(*cur_slot)->irq[3] = %x\n",
|
||||
(*cur_slot)->irq[3]);
|
||||
|
||||
debug("rtable->exlusive_irqs = %x\n",
|
||||
debug("rtable->exclusive_irqs = %x\n",
|
||||
rtable->exclusive_irqs);
|
||||
debug("rtable->slots[loop].irq[0].bitmap = %x\n",
|
||||
rtable->slots[loop].irq[0].bitmap);
|
||||
|
@ -1210,7 +1210,7 @@ int ibmphp_do_disable_slot(struct slot *slot_cur)
|
|||
attn_LED_blink(slot_cur);
|
||||
|
||||
if (slot_cur->func == NULL) {
|
||||
/* We need this for fncs's that were there on bootup */
|
||||
/* We need this for functions that were there on bootup */
|
||||
slot_cur->func = kzalloc(sizeof(struct pci_func), GFP_KERNEL);
|
||||
if (!slot_cur->func) {
|
||||
err("out of system memory\n");
|
||||
|
@ -1223,11 +1223,12 @@ int ibmphp_do_disable_slot(struct slot *slot_cur)
|
|||
|
||||
ibm_unconfigure_device(slot_cur->func);
|
||||
|
||||
/* If we got here from latch suddenly opening on operating card or
|
||||
a power fault, there's no power to the card, so cannot
|
||||
read from it to determine what resources it occupied. This operation
|
||||
is forbidden anyhow. The best we can do is remove it from kernel
|
||||
lists at least */
|
||||
/*
|
||||
* If we got here from latch suddenly opening on operating card or
|
||||
* a power fault, there's no power to the card, so cannot
|
||||
* read from it to determine what resources it occupied. This operation
|
||||
* is forbidden anyhow. The best we can do is remove it from kernel
|
||||
* lists at least */
|
||||
|
||||
if (!flag) {
|
||||
attn_off(slot_cur);
|
||||
|
|
|
@ -330,7 +330,7 @@ int __init ibmphp_access_ebda (void)
|
|||
debug ("info about hpc descriptor---\n");
|
||||
debug ("hot blk format: %x\n", format);
|
||||
debug ("num of controller: %x\n", num_ctlrs);
|
||||
debug ("offset of hpc data structure enteries: %x\n ", sub_addr);
|
||||
debug ("offset of hpc data structure entries: %x\n ", sub_addr);
|
||||
|
||||
sub_addr = base + re; /* re sub blk */
|
||||
/* FIXME: rc is never used/checked */
|
||||
|
@ -359,7 +359,7 @@ int __init ibmphp_access_ebda (void)
|
|||
debug ("info about rsrc descriptor---\n");
|
||||
debug ("format: %x\n", format);
|
||||
debug ("num of rsrc: %x\n", num_entries);
|
||||
debug ("offset of rsrc data structure enteries: %x\n ", sub_addr);
|
||||
debug ("offset of rsrc data structure entries: %x\n ", sub_addr);
|
||||
|
||||
hs_complete = 1;
|
||||
} else {
|
||||
|
@ -1210,4 +1210,3 @@ static int ibmphp_probe (struct pci_dev * dev, const struct pci_device_id *ids)
|
|||
}
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
|
|
@ -371,7 +371,7 @@ static int configure_device (struct pci_func *func)
|
|||
|
||||
for (count = 0; address[count]; count++) { /* for 6 BARs */
|
||||
|
||||
/* not sure if i need this. per scott, said maybe need smth like this
|
||||
/* not sure if i need this. per scott, said maybe need * something like this
|
||||
if devices don't adhere 100% to the spec, so don't want to write
|
||||
to the reserved bits
|
||||
|
||||
|
@ -1071,7 +1071,7 @@ error:
|
|||
* This function adds up the amount of resources needed behind the PPB bridge
|
||||
* and passes it to the configure_bridge function
|
||||
* Input: bridge function
|
||||
* Ouput: amount of resources needed
|
||||
* Output: amount of resources needed
|
||||
*****************************************************************************/
|
||||
static struct res_needed *scan_behind_bridge (struct pci_func * func, u8 busno)
|
||||
{
|
||||
|
@ -1726,4 +1726,3 @@ static u8 find_sec_number (u8 primary_busno, u8 slotno)
|
|||
return busno;
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
|
|
|
@ -609,7 +609,7 @@ int ibmphp_add_resource (struct resource_node *res)
|
|||
bus_cur = find_bus_wprev (res->busno, NULL, 0);
|
||||
|
||||
if (!bus_cur) {
|
||||
/* didn't find a bus, smth's wrong!!! */
|
||||
/* didn't find a bus, something's wrong!!! */
|
||||
debug ("no bus in the system, either pci_dev's wrong or allocation failed\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
@ -770,7 +770,7 @@ int ibmphp_add_resource (struct resource_node *res)
|
|||
* This routine will remove the resource from the list of resources
|
||||
*
|
||||
* Input: io, mem, and/or pfmem resource to be deleted
|
||||
* Ouput: modified resource list
|
||||
* Output: modified resource list
|
||||
* 0 or error code
|
||||
****************************************************************************/
|
||||
int ibmphp_remove_resource (struct resource_node *res)
|
||||
|
@ -966,7 +966,7 @@ static struct range_node * find_range (struct bus_node *bus_cur, struct resource
|
|||
* otherwise, returns 0
|
||||
*
|
||||
* Input: resource
|
||||
* Ouput: the correct start and end address are inputted into the resource node,
|
||||
* Output: the correct start and end address are inputted into the resource node,
|
||||
* 0 or -EINVAL
|
||||
*****************************************************************************/
|
||||
int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
||||
|
@ -996,7 +996,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|||
bus_cur = find_bus_wprev (res->busno, NULL, 0);
|
||||
|
||||
if (!bus_cur) {
|
||||
/* didn't find a bus, smth's wrong!!! */
|
||||
/* didn't find a bus, something's wrong!!! */
|
||||
debug ("no bus in the system, either pci_dev's wrong or allocation failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
@ -1344,7 +1344,7 @@ int ibmphp_check_resource (struct resource_node *res, u8 bridge)
|
|||
* This routine is called from remove_card if the card contained PPB.
|
||||
* It will remove all the resources on the bus as well as the bus itself
|
||||
* Input: Bus
|
||||
* Ouput: 0, -ENODEV
|
||||
* Output: 0, -ENODEV
|
||||
********************************************************************************/
|
||||
int ibmphp_remove_bus (struct bus_node *bus, u8 parent_busno)
|
||||
{
|
||||
|
@ -1920,7 +1920,7 @@ static int range_exists_already (struct range_node * range, struct bus_node * bu
|
|||
* Returns: none
|
||||
* Note: this function doesn't take into account IO restrictions etc,
|
||||
* so will only work for bridges with no video/ISA devices behind them It
|
||||
* also will not work for onboard PPB's that can have more than 1 *bus
|
||||
* also will not work for onboard PPBs that can have more than 1 *bus
|
||||
* behind them All these are TO DO.
|
||||
* Also need to add more error checkings... (from fnc returns etc)
|
||||
*/
|
||||
|
|
|
@ -78,7 +78,7 @@ static int __initdata dup_slot_id;
|
|||
static int __initdata acpi_slot_detected;
|
||||
static struct list_head __initdata dummy_slots = LIST_HEAD_INIT(dummy_slots);
|
||||
|
||||
/* Dummy driver for dumplicate name detection */
|
||||
/* Dummy driver for duplicate name detection */
|
||||
static int __init dummy_probe(struct pcie_device *dev)
|
||||
{
|
||||
u32 slot_cap;
|
||||
|
|
|
@ -194,7 +194,7 @@ static int pcie_write_cmd(struct controller *ctrl, u16 cmd, u16 mask)
|
|||
ctrl_dbg(ctrl, "CMD_COMPLETED not clear after 1 sec\n");
|
||||
} else if (!NO_CMD_CMPL(ctrl)) {
|
||||
/*
|
||||
* This controller semms to notify of command completed
|
||||
* This controller seems to notify of command completed
|
||||
* event even though it supports none of power
|
||||
* controller, attention led, power led and EMI.
|
||||
*/
|
||||
|
@ -926,7 +926,7 @@ struct controller *pcie_init(struct pcie_device *dev)
|
|||
if (pciehp_writew(ctrl, PCI_EXP_SLTSTA, 0x1f))
|
||||
goto abort_ctrl;
|
||||
|
||||
/* Disable sotfware notification */
|
||||
/* Disable software notification */
|
||||
pcie_disable_notification(ctrl);
|
||||
|
||||
ctrl_info(ctrl, "HPC vendor_id %x device_id %x ss_vid %x ss_did %x\n",
|
||||
|
|
|
@ -217,7 +217,7 @@ static int dlpar_remove_phb(char *drc_name, struct device_node *dn)
|
|||
if (!pcibios_find_pci_bus(dn))
|
||||
return -EINVAL;
|
||||
|
||||
/* If pci slot is hotplugable, use hotplug to remove it */
|
||||
/* If pci slot is hotpluggable, use hotplug to remove it */
|
||||
slot = find_php_slot(dn);
|
||||
if (slot && rpaphp_deregister_slot(slot)) {
|
||||
printk(KERN_ERR "%s: unable to remove hotplug slot %s\n",
|
||||
|
|
|
@ -289,7 +289,7 @@ static int is_php_dn(struct device_node *dn, const int **indexes,
|
|||
* rpaphp_add_slot -- declare a hotplug slot to the hotplug subsystem.
|
||||
* @dn: device node of slot
|
||||
*
|
||||
* This subroutine will register a hotplugable slot with the
|
||||
* This subroutine will register a hotpluggable slot with the
|
||||
* PCI hotplug infrastructure. This routine is typically called
|
||||
* during boot time, if the hotplug slots are present at boot time,
|
||||
* or is called later, by the dlpar add code, if the slot is
|
||||
|
|
|
@ -133,4 +133,3 @@ int rpaphp_enable_slot(struct slot *slot)
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -145,4 +145,3 @@ int rpaphp_register_slot(struct slot *slot)
|
|||
info("Slot [%s] registered\n", slot->name);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -116,7 +116,7 @@
|
|||
#define SLOT_REG_RSVDZ_MASK ((1 << 15) | (7 << 21))
|
||||
|
||||
/*
|
||||
* SHPC Command Code definitnions
|
||||
* SHPC Command Code definitions
|
||||
*
|
||||
* Slot Operation 00h - 3Fh
|
||||
* Set Bus Segment Speed/Mode A 40h - 47h
|
||||
|
|
|
@ -784,7 +784,7 @@ error:
|
|||
* @nvec: how many MSIs have been requested ?
|
||||
* @type: are we checking for MSI or MSI-X ?
|
||||
*
|
||||
* Look at global flags, the device itself, and its parent busses
|
||||
* Look at global flags, the device itself, and its parent buses
|
||||
* to determine if MSI/-X are supported for the device. If MSI/-X is
|
||||
* supported return 0, else return an error code.
|
||||
**/
|
||||
|
|
|
@ -270,13 +270,17 @@ msi_bus_store(struct device *dev, struct device_attribute *attr,
|
|||
if (kstrtoul(buf, 0, &val) < 0)
|
||||
return -EINVAL;
|
||||
|
||||
/* bad things may happen if the no_msi flag is changed
|
||||
* while some drivers are loaded */
|
||||
/*
|
||||
* Bad things may happen if the no_msi flag is changed
|
||||
* while drivers are loaded.
|
||||
*/
|
||||
if (!capable(CAP_SYS_ADMIN))
|
||||
return -EPERM;
|
||||
|
||||
/* Maybe pci devices without subordinate busses shouldn't even have this
|
||||
* attribute in the first place? */
|
||||
/*
|
||||
* Maybe devices without subordinate buses shouldn't have this
|
||||
* attribute in the first place?
|
||||
*/
|
||||
if (!pdev->subordinate)
|
||||
return count;
|
||||
|
||||
|
|
|
@ -1030,7 +1030,7 @@ struct pci_saved_state {
|
|||
* the device saved state.
|
||||
* @dev: PCI device that we're dealing with
|
||||
*
|
||||
* Rerturn NULL if no state or error.
|
||||
* Return NULL if no state or error.
|
||||
*/
|
||||
struct pci_saved_state *pci_store_saved_state(struct pci_dev *dev)
|
||||
{
|
||||
|
@ -1880,7 +1880,7 @@ int pci_finish_runtime_suspend(struct pci_dev *dev)
|
|||
* pci_dev_run_wake - Check if device can generate run-time wake-up events.
|
||||
* @dev: Device to check.
|
||||
*
|
||||
* Return true if the device itself is cabable of generating wake-up events
|
||||
* Return true if the device itself is capable of generating wake-up events
|
||||
* (through the platform or using the native PCIe PME) or if the device supports
|
||||
* PME and one of its upstream bridges can generate wake-up events.
|
||||
*/
|
||||
|
@ -2447,7 +2447,7 @@ bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
|
|||
switch (pci_pcie_type(pdev)) {
|
||||
/*
|
||||
* PCI/X-to-PCIe bridges are not specifically mentioned by the spec,
|
||||
* but since their primary inteface is PCI/X, we conservatively
|
||||
* but since their primary interface is PCI/X, we conservatively
|
||||
* handle them as we would a non-PCIe device.
|
||||
*/
|
||||
case PCI_EXP_TYPE_PCIE_BRIDGE:
|
||||
|
@ -2471,7 +2471,7 @@ bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
|
|||
/*
|
||||
* PCIe 3.0, 6.12.1.2 specifies ACS capabilities that should be
|
||||
* implemented by the remaining PCIe types to indicate peer-to-peer
|
||||
* capabilities, but only when they are part of a multifunciton
|
||||
* capabilities, but only when they are part of a multifunction
|
||||
* device. The footnote for section 6.12 indicates the specific
|
||||
* PCIe types included here.
|
||||
*/
|
||||
|
@ -2486,7 +2486,7 @@ bool pci_acs_enabled(struct pci_dev *pdev, u16 acs_flags)
|
|||
}
|
||||
|
||||
/*
|
||||
* PCIe 3.0, 6.12.1.3 specifies no ACS capabilties are applicable
|
||||
* PCIe 3.0, 6.12.1.3 specifies no ACS capabilities are applicable
|
||||
* to single function devices with the exception of downstream ports.
|
||||
*/
|
||||
return true;
|
||||
|
@ -3292,7 +3292,7 @@ clear:
|
|||
*
|
||||
* NOTE: This causes the caller to sleep for twice the device power transition
|
||||
* cooldown period, which for the D0->D3hot and D3hot->D0 transitions is 10 ms
|
||||
* by devault (i.e. unless the @dev's d3_delay field has a different value).
|
||||
* by default (i.e. unless the @dev's d3_delay field has a different value).
|
||||
* Moreover, only devices in D0 can be reset by this function.
|
||||
*/
|
||||
static int pci_pm_reset(struct pci_dev *dev, int probe)
|
||||
|
@ -3341,7 +3341,7 @@ void pci_reset_bridge_secondary_bus(struct pci_dev *dev)
|
|||
pci_write_config_word(dev, PCI_BRIDGE_CONTROL, ctrl);
|
||||
/*
|
||||
* PCI spec v3.0 7.6.4.2 requires minimum Trst of 1ms. Double
|
||||
* this to 2ms to ensure that we meet the minium requirement.
|
||||
* this to 2ms to ensure that we meet the minimum requirement.
|
||||
*/
|
||||
msleep(2);
|
||||
|
||||
|
|
|
@ -525,7 +525,7 @@ static void handle_error_source(struct pcie_device *aerdev,
|
|||
|
||||
if (info->severity == AER_CORRECTABLE) {
|
||||
/*
|
||||
* Correctable error does not need software intevention.
|
||||
* Correctable error does not need software intervention.
|
||||
* No need to go through error recovery process.
|
||||
*/
|
||||
pos = pci_find_ext_capability(dev, PCI_EXT_CAP_ID_ERR);
|
||||
|
|
|
@ -548,7 +548,7 @@ static struct pcie_link_state *alloc_pcie_link_state(struct pci_dev *pdev)
|
|||
|
||||
/*
|
||||
* pcie_aspm_init_link_state: Initiate PCI express link state.
|
||||
* It is called after the pcie and its children devices are scaned.
|
||||
* It is called after the pcie and its children devices are scanned.
|
||||
* @pdev: the root port or switch downstream port
|
||||
*/
|
||||
void pcie_aspm_init_link_state(struct pci_dev *pdev)
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
#define PCIE_PORT_DEVICE_MAXSERVICES 4
|
||||
/*
|
||||
* According to the PCI Express Base Specification 2.0, the indices of
|
||||
* the MSI-X table entires used by port services must not exceed 31
|
||||
* the MSI-X table entries used by port services must not exceed 31
|
||||
*/
|
||||
#define PCIE_PORT_MAX_MSIX_ENTRIES 32
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ static void release_pcie_device(struct device *dev)
|
|||
* pcie_port_msix_add_entry - add entry to given array of MSI-X entries
|
||||
* @entries: Array of MSI-X entries
|
||||
* @new_entry: Index of the entry to add to the array
|
||||
* @nr_entries: Number of entries aleady in the array
|
||||
* @nr_entries: Number of entries already in the array
|
||||
*
|
||||
* Return value: Position of the added entry in the array
|
||||
*/
|
||||
|
|
|
@ -223,7 +223,6 @@ static int pcie_portdrv_probe(struct pci_dev *dev,
|
|||
static void pcie_portdrv_remove(struct pci_dev *dev)
|
||||
{
|
||||
pcie_port_device_remove(dev);
|
||||
pci_disable_device(dev);
|
||||
}
|
||||
|
||||
static int error_detected_iter(struct device *device, void *data)
|
||||
|
|
|
@ -222,7 +222,7 @@ static long proc_bus_pci_ioctl(struct file *file, unsigned int cmd,
|
|||
default:
|
||||
ret = -EINVAL;
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ static void quirk_mellanox_tavor(struct pci_dev *dev)
|
|||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR,quirk_mellanox_tavor);
|
||||
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_MELLANOX,PCI_DEVICE_ID_MELLANOX_TAVOR_BRIDGE,quirk_mellanox_tavor);
|
||||
|
||||
/* Deal with broken BIOS'es that neglect to enable passive release,
|
||||
/* Deal with broken BIOSes that neglect to enable passive release,
|
||||
which can cause problems in combination with the 82441FX/PPro MTRRs */
|
||||
static void quirk_passive_release(struct pci_dev *dev)
|
||||
{
|
||||
|
@ -712,7 +712,7 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_i
|
|||
DECLARE_PCI_FIXUP_RESUME_EARLY(PCI_VENDOR_ID_VIA, PCI_DEVICE_ID_VIA_82C686, quirk_via_ioapic);
|
||||
|
||||
/*
|
||||
* VIA 8237: Some BIOSs don't set the 'Bypass APIC De-Assert Message' Bit.
|
||||
* VIA 8237: Some BIOSes don't set the 'Bypass APIC De-Assert Message' Bit.
|
||||
* This leads to doubled level interrupt rates.
|
||||
* Set this bit to get rid of cycle wastage.
|
||||
* Otherwise uncritical.
|
||||
|
@ -2127,8 +2127,8 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_PLX, 0x8624, quirk_tile_plx_gen1);
|
|||
#ifdef CONFIG_PCI_MSI
|
||||
/* Some chipsets do not support MSI. We cannot easily rely on setting
|
||||
* PCI_BUS_FLAGS_NO_MSI in its bus flags because there are actually
|
||||
* some other busses controlled by the chipset even if Linux is not
|
||||
* aware of it. Instead of setting the flag on all busses in the
|
||||
* some other buses controlled by the chipset even if Linux is not
|
||||
* aware of it. Instead of setting the flag on all buses in the
|
||||
* machine, simply disable MSI globally.
|
||||
*/
|
||||
static void quirk_disable_all_msi(struct pci_dev *dev)
|
||||
|
@ -2288,14 +2288,14 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_NVIDIA,
|
|||
nvenet_msi_disable);
|
||||
|
||||
/*
|
||||
* Some versions of the MCP55 bridge from nvidia have a legacy irq routing
|
||||
* config register. This register controls the routing of legacy interrupts
|
||||
* from devices that route through the MCP55. If this register is misprogramed
|
||||
* interrupts are only sent to the bsp, unlike conventional systems where the
|
||||
* irq is broadxast to all online cpus. Not having this register set
|
||||
* properly prevents kdump from booting up properly, so lets make sure that
|
||||
* we have it set correctly.
|
||||
* Note this is an undocumented register.
|
||||
* Some versions of the MCP55 bridge from Nvidia have a legacy IRQ routing
|
||||
* config register. This register controls the routing of legacy
|
||||
* interrupts from devices that route through the MCP55. If this register
|
||||
* is misprogrammed, interrupts are only sent to the BSP, unlike
|
||||
* conventional systems where the IRQ is broadcast to all online CPUs. Not
|
||||
* having this register set properly prevents kdump from booting up
|
||||
* properly, so let's make sure that we have it set correctly.
|
||||
* Note that this is an undocumented register.
|
||||
*/
|
||||
static void nvbridge_check_legacy_irq_routing(struct pci_dev *dev)
|
||||
{
|
||||
|
|
|
@ -96,7 +96,7 @@ struct pci_bus * pci_find_bus(int domain, int busnr)
|
|||
* pci_find_next_bus - begin or continue searching for a PCI bus
|
||||
* @from: Previous PCI bus found, or %NULL for new search.
|
||||
*
|
||||
* Iterates through the list of known PCI busses. A new search is
|
||||
* Iterates through the list of known PCI buses. A new search is
|
||||
* initiated by passing %NULL as the @from argument. Otherwise if
|
||||
* @from is not %NULL, searches continue from next device on the
|
||||
* global list.
|
||||
|
|
|
@ -292,8 +292,8 @@ static void assign_requested_resources_sorted(struct list_head *head,
|
|||
(!(res->flags & IORESOURCE_ROM_ENABLE))))
|
||||
add_to_list(fail_head,
|
||||
dev_res->dev, res,
|
||||
0 /* dont care */,
|
||||
0 /* dont care */);
|
||||
0 /* don't care */,
|
||||
0 /* don't care */);
|
||||
}
|
||||
reset_resource(res);
|
||||
}
|
||||
|
@ -950,7 +950,7 @@ static int pbus_size_mem(struct pci_bus *bus, unsigned long mask,
|
|||
if (realloc_head && i >= PCI_IOV_RESOURCES &&
|
||||
i <= PCI_IOV_RESOURCE_END) {
|
||||
r->end = r->start - 1;
|
||||
add_to_list(realloc_head, dev, r, r_size, 0/* dont' care */);
|
||||
add_to_list(realloc_head, dev, r, r_size, 0/* don't care */);
|
||||
children_add_size += r_size;
|
||||
continue;
|
||||
}
|
||||
|
@ -1457,7 +1457,7 @@ static enum enable_type pci_realloc_detect(struct pci_bus *bus,
|
|||
/*
|
||||
* first try will not touch pci bridge res
|
||||
* second and later try will clear small leaf bridge res
|
||||
* will stop till to the max deepth if can not find good one
|
||||
* will stop till to the max depth if can not find good one
|
||||
*/
|
||||
void pci_assign_unassigned_root_bus_resources(struct pci_bus *bus)
|
||||
{
|
||||
|
|
|
@ -44,7 +44,7 @@ SYSCALL_DEFINE5(pciconfig_read, unsigned long, bus, unsigned long, dfn,
|
|||
default:
|
||||
err = -EINVAL;
|
||||
goto error;
|
||||
};
|
||||
}
|
||||
|
||||
err = -EIO;
|
||||
if (cfg_ret != PCIBIOS_SUCCESSFUL)
|
||||
|
|
|
@ -32,7 +32,6 @@
|
|||
#include <linux/irqreturn.h>
|
||||
#include <uapi/linux/pci.h>
|
||||
|
||||
/* Include the ID list */
|
||||
#include <linux/pci_ids.h>
|
||||
|
||||
/*
|
||||
|
@ -42,9 +41,10 @@
|
|||
*
|
||||
* 7:3 = slot
|
||||
* 2:0 = function
|
||||
* PCI_DEVFN(), PCI_SLOT(), and PCI_FUNC() are defined uapi/linux/pci.h
|
||||
*
|
||||
* PCI_DEVFN(), PCI_SLOT(), and PCI_FUNC() are defined in uapi/linux/pci.h.
|
||||
* In the interest of not exposing interfaces to user-space unnecessarily,
|
||||
* the following kernel only defines are being added here.
|
||||
* the following kernel-only defines are being added here.
|
||||
*/
|
||||
#define PCI_DEVID(bus, devfn) ((((u16)bus) << 8) | devfn)
|
||||
/* return bus from PCI devid = ((u16)bus_number) << 8) | devfn */
|
||||
|
@ -153,10 +153,10 @@ enum pcie_reset_state {
|
|||
/* Reset is NOT asserted (Use to deassert reset) */
|
||||
pcie_deassert_reset = (__force pcie_reset_state_t) 1,
|
||||
|
||||
/* Use #PERST to reset PCI-E device */
|
||||
/* Use #PERST to reset PCIe device */
|
||||
pcie_warm_reset = (__force pcie_reset_state_t) 2,
|
||||
|
||||
/* Use PCI-E Hot Reset to reset device */
|
||||
/* Use PCIe Hot Reset to reset device */
|
||||
pcie_hot_reset = (__force pcie_reset_state_t) 3
|
||||
};
|
||||
|
||||
|
@ -259,13 +259,13 @@ struct pci_dev {
|
|||
unsigned int class; /* 3 bytes: (base,sub,prog-if) */
|
||||
u8 revision; /* PCI revision, low byte of class word */
|
||||
u8 hdr_type; /* PCI header type (`multi' flag masked out) */
|
||||
u8 pcie_cap; /* PCI-E capability offset */
|
||||
u8 pcie_cap; /* PCIe capability offset */
|
||||
u8 msi_cap; /* MSI capability offset */
|
||||
u8 msix_cap; /* MSI-X capability offset */
|
||||
u8 pcie_mpss:3; /* PCI-E Max Payload Size Supported */
|
||||
u8 pcie_mpss:3; /* PCIe Max Payload Size Supported */
|
||||
u8 rom_base_reg; /* which config register controls the ROM */
|
||||
u8 pin; /* which interrupt pin this device uses */
|
||||
u16 pcie_flags_reg; /* cached PCI-E Capabilities Register */
|
||||
u16 pcie_flags_reg; /* cached PCIe Capabilities Register */
|
||||
|
||||
struct pci_driver *driver; /* which driver has allocated this device */
|
||||
u64 dma_mask; /* Mask of the bits of bus address this
|
||||
|
@ -300,7 +300,7 @@ struct pci_dev {
|
|||
unsigned int d3cold_delay; /* D3cold->D0 transition time in ms */
|
||||
|
||||
#ifdef CONFIG_PCIEASPM
|
||||
struct pcie_link_state *link_state; /* ASPM link state. */
|
||||
struct pcie_link_state *link_state; /* ASPM link state */
|
||||
#endif
|
||||
|
||||
pci_channel_state_t error_state; /* current connectivity state */
|
||||
|
@ -317,7 +317,7 @@ struct pci_dev {
|
|||
|
||||
bool match_driver; /* Skip attaching driver */
|
||||
/* These fields are used by common fixups */
|
||||
unsigned int transparent:1; /* Transparent PCI bridge */
|
||||
unsigned int transparent:1; /* Subtractive decode PCI bridge */
|
||||
unsigned int multifunction:1;/* Part of multi-function device */
|
||||
/* keep track of device state */
|
||||
unsigned int is_added:1;
|
||||
|
@ -371,7 +371,6 @@ static inline struct pci_dev *pci_physfn(struct pci_dev *dev)
|
|||
if (dev->is_virtfn)
|
||||
dev = dev->physfn;
|
||||
#endif
|
||||
|
||||
return dev;
|
||||
}
|
||||
|
||||
|
@ -456,7 +455,7 @@ struct pci_bus {
|
|||
char name[48];
|
||||
|
||||
unsigned short bridge_ctl; /* manage NO_ISA/FBB/et al behaviors */
|
||||
pci_bus_flags_t bus_flags; /* Inherited by child busses */
|
||||
pci_bus_flags_t bus_flags; /* inherited by child buses */
|
||||
struct device *bridge;
|
||||
struct device dev;
|
||||
struct bin_attribute *legacy_io; /* legacy I/O for this bus */
|
||||
|
@ -468,7 +467,7 @@ struct pci_bus {
|
|||
#define to_pci_bus(n) container_of(n, struct pci_bus, dev)
|
||||
|
||||
/*
|
||||
* Returns true if the pci bus is root (behind host-pci bridge),
|
||||
* Returns true if the PCI bus is root (behind host-PCI bridge),
|
||||
* false otherwise
|
||||
*
|
||||
* Some code assumes that "bus->self == NULL" means that bus is a root bus.
|
||||
|
@ -510,7 +509,7 @@ static inline bool pci_dev_msi_enabled(struct pci_dev *pci_dev) { return false;
|
|||
#define PCIBIOS_BUFFER_TOO_SMALL 0x89
|
||||
|
||||
/*
|
||||
* Translate above to generic errno for passing back through non-pci.
|
||||
* Translate above to generic errno for passing back through non-PCI code.
|
||||
*/
|
||||
static inline int pcibios_err_to_errno(int err)
|
||||
{
|
||||
|
@ -561,9 +560,10 @@ struct pci_dynids {
|
|||
struct list_head list; /* for IDs added at runtime */
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
/** PCI Error Recovery System (PCI-ERS). If a PCI device driver provides
|
||||
* a set of callbacks in struct pci_error_handlers, then that device driver
|
||||
|
||||
/*
|
||||
* PCI Error Recovery System (PCI-ERS). If a PCI device driver provides
|
||||
* a set of callbacks in struct pci_error_handlers, that device driver
|
||||
* will be notified of PCI bus errors, and will be driven to recovery
|
||||
* when an error occurs.
|
||||
*/
|
||||
|
@ -609,7 +609,6 @@ struct pci_error_handlers {
|
|||
void (*resume)(struct pci_dev *dev);
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
struct module;
|
||||
struct pci_driver {
|
||||
|
@ -713,10 +712,10 @@ extern enum pcie_bus_config_types pcie_bus_config;
|
|||
|
||||
extern struct bus_type pci_bus_type;
|
||||
|
||||
/* Do NOT directly access these two variables, unless you are arch specific pci
|
||||
* code, or pci core code. */
|
||||
/* Do NOT directly access these two variables, unless you are arch-specific PCI
|
||||
* code, or PCI core code. */
|
||||
extern struct list_head pci_root_buses; /* list of all known PCI buses */
|
||||
/* Some device drivers need know if pci is initiated */
|
||||
/* Some device drivers need know if PCI is initiated */
|
||||
int no_pci_devices(void);
|
||||
|
||||
void pcibios_resource_survey_bus(struct pci_bus *bus);
|
||||
|
@ -724,7 +723,7 @@ void pcibios_add_bus(struct pci_bus *bus);
|
|||
void pcibios_remove_bus(struct pci_bus *bus);
|
||||
void pcibios_fixup_bus(struct pci_bus *);
|
||||
int __must_check pcibios_enable_device(struct pci_dev *, int mask);
|
||||
/* Architecture specific versions may override this (weak) */
|
||||
/* Architecture-specific versions may override this (weak) */
|
||||
char *pcibios_setup(char *str);
|
||||
|
||||
/* Used only when drivers/pci/setup.c is used */
|
||||
|
@ -1258,7 +1257,7 @@ void pci_cfg_access_unlock(struct pci_dev *dev);
|
|||
|
||||
/*
|
||||
* PCI domain support. Sometimes called PCI segment (eg by ACPI),
|
||||
* a PCI domain is defined to be a set of PCI busses which share
|
||||
* a PCI domain is defined to be a set of PCI buses which share
|
||||
* configuration space.
|
||||
*/
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
|
@ -1672,7 +1671,7 @@ extern u8 pci_cache_line_size;
|
|||
extern unsigned long pci_hotplug_io_size;
|
||||
extern unsigned long pci_hotplug_mem_size;
|
||||
|
||||
/* Architecture specific versions may override these (weak) */
|
||||
/* Architecture-specific versions may override these (weak) */
|
||||
int pcibios_add_platform_entries(struct pci_dev *dev);
|
||||
void pcibios_disable_device(struct pci_dev *dev);
|
||||
void pcibios_set_master(struct pci_dev *dev);
|
||||
|
|
|
@ -191,4 +191,3 @@ static inline int pci_get_hp_params(struct pci_dev *dev,
|
|||
|
||||
void pci_configure_slot(struct pci_dev *dev);
|
||||
#endif
|
||||
|
||||
|
|
|
@ -13,10 +13,10 @@
|
|||
* PCI to PCI Bridge Specification
|
||||
* PCI System Design Guide
|
||||
*
|
||||
* For hypertransport information, please consult the following manuals
|
||||
* For HyperTransport information, please consult the following manuals
|
||||
* from http://www.hypertransport.org
|
||||
*
|
||||
* The Hypertransport I/O Link Specification
|
||||
* The HyperTransport I/O Link Specification
|
||||
*/
|
||||
|
||||
#ifndef LINUX_PCI_REGS_H
|
||||
|
@ -45,7 +45,7 @@
|
|||
#define PCI_STATUS 0x06 /* 16 bits */
|
||||
#define PCI_STATUS_INTERRUPT 0x08 /* Interrupt status */
|
||||
#define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */
|
||||
#define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */
|
||||
#define PCI_STATUS_66MHZ 0x20 /* Support 66 MHz PCI 2.1 bus */
|
||||
#define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */
|
||||
#define PCI_STATUS_FAST_BACK 0x80 /* Accept fast-back to back */
|
||||
#define PCI_STATUS_PARITY 0x100 /* Detected parity error */
|
||||
|
@ -205,7 +205,7 @@
|
|||
#define PCI_CAP_ID_CHSWP 0x06 /* CompactPCI HotSwap */
|
||||
#define PCI_CAP_ID_PCIX 0x07 /* PCI-X */
|
||||
#define PCI_CAP_ID_HT 0x08 /* HyperTransport */
|
||||
#define PCI_CAP_ID_VNDR 0x09 /* Vendor specific */
|
||||
#define PCI_CAP_ID_VNDR 0x09 /* Vendor-Specific */
|
||||
#define PCI_CAP_ID_DBG 0x0A /* Debug port */
|
||||
#define PCI_CAP_ID_CCRC 0x0B /* CompactPCI Central Resource Control */
|
||||
#define PCI_CAP_ID_SHPC 0x0C /* PCI Standard Hot-Plug Controller */
|
||||
|
@ -321,7 +321,7 @@
|
|||
#define PCI_MSIX_PBA_OFFSET 0xfffffff8 /* Offset into specified BAR */
|
||||
#define PCI_CAP_MSIX_SIZEOF 12 /* size of MSIX registers */
|
||||
|
||||
/* MSI-X entry's format */
|
||||
/* MSI-X Table entry format */
|
||||
#define PCI_MSIX_ENTRY_SIZE 16
|
||||
#define PCI_MSIX_ENTRY_LOWER_ADDR 0
|
||||
#define PCI_MSIX_ENTRY_UPPER_ADDR 4
|
||||
|
@ -407,8 +407,8 @@
|
|||
|
||||
/* PCI Bridge Subsystem ID registers */
|
||||
|
||||
#define PCI_SSVID_VENDOR_ID 4 /* PCI-Bridge subsystem vendor id register */
|
||||
#define PCI_SSVID_DEVICE_ID 6 /* PCI-Bridge subsystem device id register */
|
||||
#define PCI_SSVID_VENDOR_ID 4 /* PCI Bridge subsystem vendor ID */
|
||||
#define PCI_SSVID_DEVICE_ID 6 /* PCI Bridge subsystem device ID */
|
||||
|
||||
/* PCI Express capability registers */
|
||||
|
||||
|
@ -484,12 +484,12 @@
|
|||
#define PCI_EXP_LNKCTL_CLKREQ_EN 0x0100 /* Enable clkreq */
|
||||
#define PCI_EXP_LNKCTL_HAWD 0x0200 /* Hardware Autonomous Width Disable */
|
||||
#define PCI_EXP_LNKCTL_LBMIE 0x0400 /* Link Bandwidth Management Interrupt Enable */
|
||||
#define PCI_EXP_LNKCTL_LABIE 0x0800 /* Lnk Autonomous Bandwidth Interrupt Enable */
|
||||
#define PCI_EXP_LNKCTL_LABIE 0x0800 /* Link Autonomous Bandwidth Interrupt Enable */
|
||||
#define PCI_EXP_LNKSTA 18 /* Link Status */
|
||||
#define PCI_EXP_LNKSTA_CLS 0x000f /* Current Link Speed */
|
||||
#define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001 /* Current Link Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002 /* Current Link Speed 5.0GT/s */
|
||||
#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Nogotiated Link Width */
|
||||
#define PCI_EXP_LNKSTA_NLW 0x03f0 /* Negotiated Link Width */
|
||||
#define PCI_EXP_LNKSTA_NLW_SHIFT 4 /* start of NLW mask in link status */
|
||||
#define PCI_EXP_LNKSTA_LT 0x0800 /* Link Training */
|
||||
#define PCI_EXP_LNKSTA_SLC 0x1000 /* Slot Clock Configuration */
|
||||
|
@ -593,7 +593,7 @@
|
|||
#define PCI_EXT_CAP_ID_MFVC 0x08 /* Multi-Function VC Capability */
|
||||
#define PCI_EXT_CAP_ID_VC9 0x09 /* same as _VC */
|
||||
#define PCI_EXT_CAP_ID_RCRB 0x0A /* Root Complex RB? */
|
||||
#define PCI_EXT_CAP_ID_VNDR 0x0B /* Vendor Specific */
|
||||
#define PCI_EXT_CAP_ID_VNDR 0x0B /* Vendor-Specific */
|
||||
#define PCI_EXT_CAP_ID_CAC 0x0C /* Config Access - obsolete */
|
||||
#define PCI_EXT_CAP_ID_ACS 0x0D /* Access Control Services */
|
||||
#define PCI_EXT_CAP_ID_ARI 0x0E /* Alternate Routing ID */
|
||||
|
@ -602,12 +602,12 @@
|
|||
#define PCI_EXT_CAP_ID_MRIOV 0x11 /* Multi Root I/O Virtualization */
|
||||
#define PCI_EXT_CAP_ID_MCAST 0x12 /* Multicast */
|
||||
#define PCI_EXT_CAP_ID_PRI 0x13 /* Page Request Interface */
|
||||
#define PCI_EXT_CAP_ID_AMD_XXX 0x14 /* reserved for AMD */
|
||||
#define PCI_EXT_CAP_ID_REBAR 0x15 /* resizable BAR */
|
||||
#define PCI_EXT_CAP_ID_DPA 0x16 /* dynamic power alloc */
|
||||
#define PCI_EXT_CAP_ID_TPH 0x17 /* TPH request */
|
||||
#define PCI_EXT_CAP_ID_LTR 0x18 /* latency tolerance reporting */
|
||||
#define PCI_EXT_CAP_ID_SECPCI 0x19 /* Secondary PCIe */
|
||||
#define PCI_EXT_CAP_ID_AMD_XXX 0x14 /* Reserved for AMD */
|
||||
#define PCI_EXT_CAP_ID_REBAR 0x15 /* Resizable BAR */
|
||||
#define PCI_EXT_CAP_ID_DPA 0x16 /* Dynamic Power Allocation */
|
||||
#define PCI_EXT_CAP_ID_TPH 0x17 /* TPH Requester */
|
||||
#define PCI_EXT_CAP_ID_LTR 0x18 /* Latency Tolerance Reporting */
|
||||
#define PCI_EXT_CAP_ID_SECPCI 0x19 /* Secondary PCIe Capability */
|
||||
#define PCI_EXT_CAP_ID_PMUX 0x1A /* Protocol Multiplexing */
|
||||
#define PCI_EXT_CAP_ID_PASID 0x1B /* Process Address Space ID */
|
||||
#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PASID
|
||||
|
@ -667,9 +667,9 @@
|
|||
#define PCI_ERR_ROOT_COR_RCV 0x00000001 /* ERR_COR Received */
|
||||
/* Multi ERR_COR Received */
|
||||
#define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002
|
||||
/* ERR_FATAL/NONFATAL Recevied */
|
||||
/* ERR_FATAL/NONFATAL Received */
|
||||
#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004
|
||||
/* Multi ERR_FATAL/NONFATAL Recevied */
|
||||
/* Multi ERR_FATAL/NONFATAL Received */
|
||||
#define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008
|
||||
#define PCI_ERR_ROOT_FIRST_FATAL 0x00000010 /* First Fatal */
|
||||
#define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020 /* Non-Fatal Received */
|
||||
|
@ -678,7 +678,7 @@
|
|||
|
||||
/* Virtual Channel */
|
||||
#define PCI_VC_PORT_REG1 4
|
||||
#define PCI_VC_REG1_EVCC 0x7 /* extended vc count */
|
||||
#define PCI_VC_REG1_EVCC 0x7 /* extended VC count */
|
||||
#define PCI_VC_PORT_REG2 8
|
||||
#define PCI_VC_REG2_32_PHASE 0x2
|
||||
#define PCI_VC_REG2_64_PHASE 0x4
|
||||
|
@ -711,7 +711,7 @@
|
|||
#define PCI_VNDR_HEADER_LEN(x) (((x) >> 20) & 0xfff)
|
||||
|
||||
/*
|
||||
* Hypertransport sub capability types
|
||||
* HyperTransport sub capability types
|
||||
*
|
||||
* Unfortunately there are both 3 bit and 5 bit capability types defined
|
||||
* in the HT spec, catering for that is a little messy. You probably don't
|
||||
|
@ -739,8 +739,8 @@
|
|||
#define HT_CAPTYPE_DIRECT_ROUTE 0xB0 /* Direct routing configuration */
|
||||
#define HT_CAPTYPE_VCSET 0xB8 /* Virtual Channel configuration */
|
||||
#define HT_CAPTYPE_ERROR_RETRY 0xC0 /* Retry on error configuration */
|
||||
#define HT_CAPTYPE_GEN3 0xD0 /* Generation 3 hypertransport configuration */
|
||||
#define HT_CAPTYPE_PM 0xE0 /* Hypertransport powermanagement configuration */
|
||||
#define HT_CAPTYPE_GEN3 0xD0 /* Generation 3 HyperTransport configuration */
|
||||
#define HT_CAPTYPE_PM 0xE0 /* HyperTransport power management configuration */
|
||||
#define HT_CAP_SIZEOF_LONG 28 /* slave & primary */
|
||||
#define HT_CAP_SIZEOF_SHORT 24 /* host & secondary */
|
||||
|
||||
|
@ -777,14 +777,14 @@
|
|||
#define PCI_PRI_ALLOC_REQ 0x0c /* PRI max reqs allowed */
|
||||
#define PCI_EXT_CAP_PRI_SIZEOF 16
|
||||
|
||||
/* PASID capability */
|
||||
/* Process Address Space ID */
|
||||
#define PCI_PASID_CAP 0x04 /* PASID feature register */
|
||||
#define PCI_PASID_CAP_EXEC 0x02 /* Exec permissions Supported */
|
||||
#define PCI_PASID_CAP_PRIV 0x04 /* Priviledge Mode Supported */
|
||||
#define PCI_PASID_CAP_PRIV 0x04 /* Privilege Mode Supported */
|
||||
#define PCI_PASID_CTRL 0x06 /* PASID control register */
|
||||
#define PCI_PASID_CTRL_ENABLE 0x01 /* Enable bit */
|
||||
#define PCI_PASID_CTRL_EXEC 0x02 /* Exec permissions Enable */
|
||||
#define PCI_PASID_CTRL_PRIV 0x04 /* Priviledge Mode Enable */
|
||||
#define PCI_PASID_CTRL_PRIV 0x04 /* Privilege Mode Enable */
|
||||
#define PCI_EXT_CAP_PASID_SIZEOF 8
|
||||
|
||||
/* Single Root I/O Virtualization */
|
||||
|
@ -839,22 +839,22 @@
|
|||
#define PCI_ACS_CTRL 0x06 /* ACS Control Register */
|
||||
#define PCI_ACS_EGRESS_CTL_V 0x08 /* ACS Egress Control Vector */
|
||||
|
||||
#define PCI_VSEC_HDR 4 /* extended cap - vendor specific */
|
||||
#define PCI_VSEC_HDR 4 /* extended cap - vendor-specific */
|
||||
#define PCI_VSEC_HDR_LEN_SHIFT 20 /* shift for length field */
|
||||
|
||||
/* sata capability */
|
||||
/* SATA capability */
|
||||
#define PCI_SATA_REGS 4 /* SATA REGs specifier */
|
||||
#define PCI_SATA_REGS_MASK 0xF /* location - BAR#/inline */
|
||||
#define PCI_SATA_REGS_INLINE 0xF /* REGS in config space */
|
||||
#define PCI_SATA_SIZEOF_SHORT 8
|
||||
#define PCI_SATA_SIZEOF_LONG 16
|
||||
|
||||
/* resizable BARs */
|
||||
/* Resizable BARs */
|
||||
#define PCI_REBAR_CTRL 8 /* control register */
|
||||
#define PCI_REBAR_CTRL_NBAR_MASK (7 << 5) /* mask for # bars */
|
||||
#define PCI_REBAR_CTRL_NBAR_SHIFT 5 /* shift for # bars */
|
||||
|
||||
/* dynamic power allocation */
|
||||
/* Dynamic Power Allocation */
|
||||
#define PCI_DPA_CAP 4 /* capability register */
|
||||
#define PCI_DPA_CAP_SUBSTATE_MASK 0x1F /* # substates - 1 */
|
||||
#define PCI_DPA_BASE_SIZEOF 16 /* size with 0 substates */
|
||||
|
|
Loading…
Reference in New Issue