These changes are the raw update to linux-4.4.6-rt14. Kernel sources
[kvmfornfv.git] / kernel / drivers / pci / host / pci-keystone-dw.c
index f34892e..6153853 100644 (file)
 
 #define to_keystone_pcie(x)    container_of(x, struct keystone_pcie, pp)
 
-static inline struct pcie_port *sys_to_pcie(struct pci_sys_data *sys)
-{
-       return sys->private_data;
-}
-
 static inline void update_reg_offset_bit_pos(u32 offset, u32 *reg_offset,
                                             u32 *bit_pos)
 {
@@ -70,7 +65,7 @@ static inline void update_reg_offset_bit_pos(u32 offset, u32 *reg_offset,
        *bit_pos = offset >> 3;
 }
 
-u32 ks_dw_pcie_get_msi_addr(struct pcie_port *pp)
+phys_addr_t ks_dw_pcie_get_msi_addr(struct pcie_port *pp)
 {
        struct keystone_pcie *ks_pcie = to_keystone_pcie(pp);
 
@@ -104,14 +99,13 @@ static void ks_dw_pcie_msi_irq_ack(struct irq_data *d)
 {
        u32 offset, reg_offset, bit_pos;
        struct keystone_pcie *ks_pcie;
-       unsigned int irq = d->irq;
        struct msi_desc *msi;
        struct pcie_port *pp;
 
-       msi = irq_get_msi_desc(irq);
-       pp = sys_to_pcie(msi->dev->bus->sysdata);
+       msi = irq_data_get_msi_desc(d);
+       pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
        ks_pcie = to_keystone_pcie(pp);
-       offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+       offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
        update_reg_offset_bit_pos(offset, &reg_offset, &bit_pos);
 
        writel(BIT(bit_pos),
@@ -142,15 +136,14 @@ void ks_dw_pcie_msi_clear_irq(struct pcie_port *pp, int irq)
 static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 {
        struct keystone_pcie *ks_pcie;
-       unsigned int irq = d->irq;
        struct msi_desc *msi;
        struct pcie_port *pp;
        u32 offset;
 
-       msi = irq_get_msi_desc(irq);
-       pp = sys_to_pcie(msi->dev->bus->sysdata);
+       msi = irq_data_get_msi_desc(d);
+       pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
        ks_pcie = to_keystone_pcie(pp);
-       offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+       offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
        /* Mask the end point if PVM implemented */
        if (IS_ENABLED(CONFIG_PCI_MSI)) {
@@ -164,15 +157,14 @@ static void ks_dw_pcie_msi_irq_mask(struct irq_data *d)
 static void ks_dw_pcie_msi_irq_unmask(struct irq_data *d)
 {
        struct keystone_pcie *ks_pcie;
-       unsigned int irq = d->irq;
        struct msi_desc *msi;
        struct pcie_port *pp;
        u32 offset;
 
-       msi = irq_get_msi_desc(irq);
-       pp = sys_to_pcie(msi->dev->bus->sysdata);
+       msi = irq_data_get_msi_desc(d);
+       pp = (struct pcie_port *) msi_desc_to_pci_sysdata(msi);
        ks_pcie = to_keystone_pcie(pp);
-       offset = irq - irq_linear_revmap(pp->irq_domain, 0);
+       offset = d->irq - irq_linear_revmap(pp->irq_domain, 0);
 
        /* Mask the end point if PVM implemented */
        if (IS_ENABLED(CONFIG_PCI_MSI)) {
@@ -196,7 +188,6 @@ static int ks_dw_pcie_msi_map(struct irq_domain *domain, unsigned int irq,
        irq_set_chip_and_handler(irq, &ks_dw_pcie_msi_irq_chip,
                                 handle_level_irq);
        irq_set_chip_data(irq, domain->host_data);
-       set_irq_flags(irq, IRQF_VALID);
 
        return 0;
 }
@@ -277,7 +268,6 @@ static int ks_dw_pcie_init_legacy_irq_map(struct irq_domain *d,
        irq_set_chip_and_handler(irq, &ks_dw_pcie_legacy_irq_chip,
                                 handle_level_irq);
        irq_set_chip_data(irq, d->host_data);
-       set_irq_flags(irq, IRQF_VALID);
 
        return 0;
 }
@@ -327,7 +317,7 @@ static void ks_dw_pcie_clear_dbi_mode(void __iomem *reg_virt)
 void ks_dw_pcie_setup_rc_app_regs(struct keystone_pcie *ks_pcie)
 {
        struct pcie_port *pp = &ks_pcie->pp;
-       u32 start = pp->mem.start, end = pp->mem.end;
+       u32 start = pp->mem->start, end = pp->mem->end;
        int i, tr_size;
 
        /* Disable BARs for inbound access */
@@ -403,7 +393,7 @@ int ks_dw_pcie_rd_other_conf(struct pcie_port *pp, struct pci_bus *bus,
 
        addr = ks_pcie_cfg_setup(ks_pcie, bus_num, devfn);
 
-       return dw_pcie_cfg_read(addr + (where & ~0x3), where, size, val);
+       return dw_pcie_cfg_read(addr + where, size, val);
 }
 
 int ks_dw_pcie_wr_other_conf(struct pcie_port *pp, struct pci_bus *bus,
@@ -415,7 +405,7 @@ int ks_dw_pcie_wr_other_conf(struct pcie_port *pp, struct pci_bus *bus,
 
        addr = ks_pcie_cfg_setup(ks_pcie, bus_num, devfn);
 
-       return dw_pcie_cfg_write(addr + (where & ~0x3), where, size, val);
+       return dw_pcie_cfg_write(addr + where, size, val);
 }
 
 /**