Loading drivers/bcma/bcma_private.h +3 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,9 @@ u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); void bcma_core_pci_up(struct bcma_drv_pci *pc); void bcma_core_pci_down(struct bcma_drv_pci *pc); /* driver_pcie2.c */ void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2); extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE Loading drivers/bcma/driver_pcie2.c +26 −2 Original line number Diff line number Diff line Loading @@ -156,14 +156,23 @@ static void pciedev_reg_pm_clk_period(struct bcma_drv_pcie2 *pcie2) void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2) { struct bcma_chipinfo *ci = &pcie2->core->bus->chipinfo; struct bcma_bus *bus = pcie2->core->bus; struct bcma_chipinfo *ci = &bus->chipinfo; u32 tmp; tmp = pcie2_read32(pcie2, BCMA_CORE_PCIE2_SPROM(54)); if ((tmp & 0xe) >> 1 == 2) bcma_core_pcie2_cfg_write(pcie2, 0x4e0, 0x17); /* TODO: Do we need pcie_reqsize? */ switch (bus->chipinfo.id) { case BCMA_CHIP_ID_BCM4360: case BCMA_CHIP_ID_BCM4352: pcie2->reqsize = 1024; break; default: pcie2->reqsize = 128; break; } if (ci->id == BCMA_CHIP_ID_BCM4360 && ci->rev > 3) bcma_core_pcie2_war_delay_perst_enab(pcie2, true); Loading @@ -173,3 +182,18 @@ void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2) pciedev_crwlpciegen2_180(pcie2); pciedev_crwlpciegen2_182(pcie2); } /************************************************** * Runtime ops. **************************************************/ void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2) { struct bcma_bus *bus = pcie2->core->bus; struct pci_dev *dev = bus->host_pci; int err; err = pcie_set_readrq(dev, pcie2->reqsize); if (err) bcma_err(bus, "Error setting PCI_EXP_DEVCTL_READRQ: %d\n", err); } drivers/bcma/host_pci.c +1 −1 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ void bcma_host_pci_up(struct bcma_bus *bus) return; if (bus->host_is_pcie2) pr_warn("Bringing up bus with PCIe Gen 2 host is unsupported yet\n"); bcma_core_pcie2_up(&bus->drv_pcie2); else bcma_core_pci_up(&bus->drv_pci[0]); } Loading include/linux/bcma/bcma_driver_pcie2.h +2 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ struct bcma_drv_pcie2 { struct bcma_device *core; u16 reqsize; }; #define pcie2_read16(pcie2, offset) bcma_read16((pcie2)->core, offset) Loading Loading
drivers/bcma/bcma_private.h +3 −0 Original line number Diff line number Diff line Loading @@ -104,6 +104,9 @@ u32 bcma_pcie_read(struct bcma_drv_pci *pc, u32 address); void bcma_core_pci_up(struct bcma_drv_pci *pc); void bcma_core_pci_down(struct bcma_drv_pci *pc); /* driver_pcie2.c */ void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2); extern int bcma_chipco_watchdog_register(struct bcma_drv_cc *cc); #ifdef CONFIG_BCMA_DRIVER_PCI_HOSTMODE Loading
drivers/bcma/driver_pcie2.c +26 −2 Original line number Diff line number Diff line Loading @@ -156,14 +156,23 @@ static void pciedev_reg_pm_clk_period(struct bcma_drv_pcie2 *pcie2) void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2) { struct bcma_chipinfo *ci = &pcie2->core->bus->chipinfo; struct bcma_bus *bus = pcie2->core->bus; struct bcma_chipinfo *ci = &bus->chipinfo; u32 tmp; tmp = pcie2_read32(pcie2, BCMA_CORE_PCIE2_SPROM(54)); if ((tmp & 0xe) >> 1 == 2) bcma_core_pcie2_cfg_write(pcie2, 0x4e0, 0x17); /* TODO: Do we need pcie_reqsize? */ switch (bus->chipinfo.id) { case BCMA_CHIP_ID_BCM4360: case BCMA_CHIP_ID_BCM4352: pcie2->reqsize = 1024; break; default: pcie2->reqsize = 128; break; } if (ci->id == BCMA_CHIP_ID_BCM4360 && ci->rev > 3) bcma_core_pcie2_war_delay_perst_enab(pcie2, true); Loading @@ -173,3 +182,18 @@ void bcma_core_pcie2_init(struct bcma_drv_pcie2 *pcie2) pciedev_crwlpciegen2_180(pcie2); pciedev_crwlpciegen2_182(pcie2); } /************************************************** * Runtime ops. **************************************************/ void bcma_core_pcie2_up(struct bcma_drv_pcie2 *pcie2) { struct bcma_bus *bus = pcie2->core->bus; struct pci_dev *dev = bus->host_pci; int err; err = pcie_set_readrq(dev, pcie2->reqsize); if (err) bcma_err(bus, "Error setting PCI_EXP_DEVCTL_READRQ: %d\n", err); }
drivers/bcma/host_pci.c +1 −1 Original line number Diff line number Diff line Loading @@ -322,7 +322,7 @@ void bcma_host_pci_up(struct bcma_bus *bus) return; if (bus->host_is_pcie2) pr_warn("Bringing up bus with PCIe Gen 2 host is unsupported yet\n"); bcma_core_pcie2_up(&bus->drv_pcie2); else bcma_core_pci_up(&bus->drv_pci[0]); } Loading
include/linux/bcma/bcma_driver_pcie2.h +2 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ struct bcma_drv_pcie2 { struct bcma_device *core; u16 reqsize; }; #define pcie2_read16(pcie2, offset) bcma_read16((pcie2)->core, offset) Loading