OpenWrt – Rev 1

Subversion Repositories:
Rev:
--- a/arch/mips/pci/pci-ar71xx.c
+++ b/arch/mips/pci/pci-ar71xx.c
@@ -54,11 +54,9 @@
 struct ar71xx_pci_controller {
        struct device_node *np;
        void __iomem *cfg_base;
-       int irq;
        struct pci_controller pci_ctrl;
        struct resource io_res;
        struct resource mem_res;
-       struct irq_domain *domain;
 };
 
 /* Byte lane enable bits */
@@ -230,104 +228,6 @@ static struct pci_ops ar71xx_pci_ops = {
        .write  = ar71xx_pci_write_config,
 };
 
-static void ar71xx_pci_irq_handler(struct irq_desc *desc)
-{
-       void __iomem *base = ath79_reset_base;
-       struct irq_chip *chip = irq_desc_get_chip(desc);
-       struct ar71xx_pci_controller *apc = irq_desc_get_handler_data(desc);
-       u32 pending;
-
-       chained_irq_enter(chip, desc);
-       pending = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_STATUS) &
-                 __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-
-       if (pending & AR71XX_PCI_INT_DEV0)
-               generic_handle_irq(irq_linear_revmap(apc->domain, 1));
-
-       else if (pending & AR71XX_PCI_INT_DEV1)
-               generic_handle_irq(irq_linear_revmap(apc->domain, 2));
-
-       else if (pending & AR71XX_PCI_INT_DEV2)
-               generic_handle_irq(irq_linear_revmap(apc->domain, 3));
-
-       else if (pending & AR71XX_PCI_INT_CORE)
-               generic_handle_irq(irq_linear_revmap(apc->domain, 4));
-
-       else
-               spurious_interrupt();
-       chained_irq_exit(chip, desc);
-}
-
-static void ar71xx_pci_irq_unmask(struct irq_data *d)
-{
-       struct ar71xx_pci_controller *apc;
-       unsigned int irq;
-       void __iomem *base = ath79_reset_base;
-       u32 t;
-
-       apc = irq_data_get_irq_chip_data(d);
-       irq = irq_linear_revmap(apc->domain, d->irq);
-
-       t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-       __raw_writel(t | (1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-
-       /* flush write */
-       __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-}
-
-static void ar71xx_pci_irq_mask(struct irq_data *d)
-{
-       struct ar71xx_pci_controller *apc;
-       unsigned int irq;
-       void __iomem *base = ath79_reset_base;
-       u32 t;
-
-       apc = irq_data_get_irq_chip_data(d);
-       irq = irq_linear_revmap(apc->domain, d->irq);
-
-       t = __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-       __raw_writel(t & ~(1 << irq), base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-
-       /* flush write */
-       __raw_readl(base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-}
-
-static struct irq_chip ar71xx_pci_irq_chip = {
-       .name           = "AR71XX PCI",
-       .irq_mask       = ar71xx_pci_irq_mask,
-       .irq_unmask     = ar71xx_pci_irq_unmask,
-       .irq_mask_ack   = ar71xx_pci_irq_mask,
-};
-
-static int ar71xx_pci_irq_map(struct irq_domain *d,
-                             unsigned int irq, irq_hw_number_t hw)
-{
-       struct ar71xx_pci_controller *apc = d->host_data;
-
-       irq_set_chip_and_handler(irq, &ar71xx_pci_irq_chip, handle_level_irq);
-       irq_set_chip_data(irq, apc);
-
-       return 0;
-}
-
-static const struct irq_domain_ops ar71xx_pci_domain_ops = {
-       .xlate = irq_domain_xlate_onecell,
-       .map = ar71xx_pci_irq_map,
-};
-
-static void ar71xx_pci_irq_init(struct ar71xx_pci_controller *apc)
-{
-       void __iomem *base = ath79_reset_base;
-
-       __raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_ENABLE);
-       __raw_writel(0, base + AR71XX_RESET_REG_PCI_INT_STATUS);
-
-       apc->domain = irq_domain_add_linear(apc->np, AR71XX_PCI_IRQ_COUNT,
-                                           &ar71xx_pci_domain_ops, apc);
-       irq_set_chained_handler_and_data(apc->irq, ar71xx_pci_irq_handler,
-                                        apc);
-}
-
 static void ar71xx_pci_reset(void)
 {
        ath79_device_reset_set(AR71XX_RESET_PCI_BUS | AR71XX_RESET_PCI_CORE);
@@ -361,10 +261,6 @@ static int ar71xx_pci_probe(struct platf
        if (IS_ERR(apc->cfg_base))
                return PTR_ERR(apc->cfg_base);
 
-       apc->irq = platform_get_irq(pdev, 0);
-       if (apc->irq < 0)
-               return -EINVAL;
-
        ar71xx_pci_reset();
 
        /* setup COMMAND register */
@@ -375,8 +271,6 @@ static int ar71xx_pci_probe(struct platf
        /* clear bus errors */
        ar71xx_pci_check_error(apc, 1);
 
-       ar71xx_pci_irq_init(apc);
-
        apc->np = pdev->dev.of_node;
        apc->pci_ctrl.pci_ops = &ar71xx_pci_ops;
        apc->pci_ctrl.mem_resource = &apc->mem_res;