bcma: implement host code support for PCIe Gen 2 devices
authorRafał Miłecki <zajec5@gmail.com>
Sun, 25 Jan 2015 12:41:19 +0000 (13:41 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 29 Jan 2015 08:54:43 +0000 (10:54 +0200)
This is stil incomplete, so we don't add PCI IDs of new devices yet.
Purpose of this patch is to allow testing & adjusting rest of the code.

Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/bcma/host_pci.c
include/linux/bcma/bcma.h
include/linux/bcma/bcma_regs.h

index cd9161a8b3a196bcc67634dc86bb84ae5b6190d1..53c6a8a58859bb8b252b9921eb2c96935d099f7f 100644 (file)
 
 static void bcma_host_pci_switch_core(struct bcma_device *core)
 {
+       int win2 = core->bus->host_is_pcie2 ?
+               BCMA_PCIE2_BAR0_WIN2 : BCMA_PCI_BAR0_WIN2;
+
        pci_write_config_dword(core->bus->host_pci, BCMA_PCI_BAR0_WIN,
                               core->addr);
-       pci_write_config_dword(core->bus->host_pci, BCMA_PCI_BAR0_WIN2,
-                              core->wrap);
+       pci_write_config_dword(core->bus->host_pci, win2, core->wrap);
        core->bus->mapped_core = core;
        bcma_debug(core->bus, "Switched to core: 0x%X\n", core->id.id);
 }
index eb1c6a47b67f2acf99df011962da81c76398b2d7..994739da827f26cb574e97411e92b82d3f23d340 100644 (file)
@@ -318,6 +318,7 @@ struct bcma_bus {
        const struct bcma_host_ops *ops;
 
        enum bcma_hosttype hosttype;
+       bool host_is_pcie2; /* Used for BCMA_HOSTTYPE_PCI only */
        union {
                /* Pointer to the PCI bus (only for BCMA_HOSTTYPE_PCI) */
                struct pci_dev *host_pci;
index e64ae7bf80a11f1eb6cd360225cbbc94eecd361b..ebd5c1fcdea4cfa0d6fa57a3cc428bf538f02eb4 100644 (file)
@@ -64,6 +64,8 @@
 #define  BCMA_PCI_GPIO_XTAL            0x40    /* PCI config space GPIO 14 for Xtal powerup */
 #define  BCMA_PCI_GPIO_PLL             0x80    /* PCI config space GPIO 15 for PLL powerdown */
 
+#define BCMA_PCIE2_BAR0_WIN2           0x70
+
 /* SiliconBackplane Address Map.
  * All regions may not exist on all chips.
  */