|
@@ -361,12 +361,17 @@ static int dw_msi_setup_irq(struct msi_chip *chip, struct pci_dev *pdev,
|
|
*/
|
|
*/
|
|
desc->msi_attrib.multiple = msgvec;
|
|
desc->msi_attrib.multiple = msgvec;
|
|
|
|
|
|
- if (pp->ops->get_msi_data)
|
|
|
|
- msg.address_lo = pp->ops->get_msi_data(pp);
|
|
|
|
|
|
+ if (pp->ops->get_msi_addr)
|
|
|
|
+ msg.address_lo = pp->ops->get_msi_addr(pp);
|
|
else
|
|
else
|
|
msg.address_lo = virt_to_phys((void *)pp->msi_data);
|
|
msg.address_lo = virt_to_phys((void *)pp->msi_data);
|
|
msg.address_hi = 0x0;
|
|
msg.address_hi = 0x0;
|
|
- msg.data = pos;
|
|
|
|
|
|
+
|
|
|
|
+ if (pp->ops->get_msi_data)
|
|
|
|
+ msg.data = pp->ops->get_msi_data(pp, pos);
|
|
|
|
+ else
|
|
|
|
+ msg.data = pos;
|
|
|
|
+
|
|
write_msi_msg(irq, &msg);
|
|
write_msi_msg(irq, &msg);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
@@ -430,7 +435,7 @@ int __init dw_pcie_host_init(struct pcie_port *pp)
|
|
|
|
|
|
/* Find the untranslated configuration space address */
|
|
/* Find the untranslated configuration space address */
|
|
index = of_property_match_string(np, "reg-names", "config");
|
|
index = of_property_match_string(np, "reg-names", "config");
|
|
- addrp = of_get_address(np, index, false, false);
|
|
|
|
|
|
+ addrp = of_get_address(np, index, NULL, NULL);
|
|
pp->cfg0_mod_base = of_read_number(addrp, ns);
|
|
pp->cfg0_mod_base = of_read_number(addrp, ns);
|
|
pp->cfg1_mod_base = pp->cfg0_mod_base + pp->cfg0_size;
|
|
pp->cfg1_mod_base = pp->cfg0_mod_base + pp->cfg0_size;
|
|
} else {
|
|
} else {
|
|
@@ -454,7 +459,7 @@ int __init dw_pcie_host_init(struct pcie_port *pp)
|
|
pp->io.end = min_t(resource_size_t,
|
|
pp->io.end = min_t(resource_size_t,
|
|
IO_SPACE_LIMIT,
|
|
IO_SPACE_LIMIT,
|
|
range.pci_addr + range.size
|
|
range.pci_addr + range.size
|
|
- + global_io_offset);
|
|
|
|
|
|
+ + global_io_offset - 1);
|
|
pp->io_size = resource_size(&pp->io);
|
|
pp->io_size = resource_size(&pp->io);
|
|
pp->io_bus_addr = range.pci_addr;
|
|
pp->io_bus_addr = range.pci_addr;
|
|
pp->io_base = range.cpu_addr;
|
|
pp->io_base = range.cpu_addr;
|
|
@@ -510,7 +515,6 @@ int __init dw_pcie_host_init(struct pcie_port *pp)
|
|
pp->mem_base = pp->mem.start;
|
|
pp->mem_base = pp->mem.start;
|
|
|
|
|
|
if (!pp->va_cfg0_base) {
|
|
if (!pp->va_cfg0_base) {
|
|
- pp->cfg0_base = pp->cfg.start;
|
|
|
|
pp->va_cfg0_base = devm_ioremap(pp->dev, pp->cfg0_base,
|
|
pp->va_cfg0_base = devm_ioremap(pp->dev, pp->cfg0_base,
|
|
pp->cfg0_size);
|
|
pp->cfg0_size);
|
|
if (!pp->va_cfg0_base) {
|
|
if (!pp->va_cfg0_base) {
|
|
@@ -520,7 +524,6 @@ int __init dw_pcie_host_init(struct pcie_port *pp)
|
|
}
|
|
}
|
|
|
|
|
|
if (!pp->va_cfg1_base) {
|
|
if (!pp->va_cfg1_base) {
|
|
- pp->cfg1_base = pp->cfg.start + pp->cfg0_size;
|
|
|
|
pp->va_cfg1_base = devm_ioremap(pp->dev, pp->cfg1_base,
|
|
pp->va_cfg1_base = devm_ioremap(pp->dev, pp->cfg1_base,
|
|
pp->cfg1_size);
|
|
pp->cfg1_size);
|
|
if (!pp->va_cfg1_base) {
|
|
if (!pp->va_cfg1_base) {
|