Skip to content

Commit 04ed91c

Browse files
authored
Merge pull request #97 from xyan264/gen5-support
Add support for PCIe GEN5 devices
2 parents aa03800 + 0f7da92 commit 04ed91c

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

linux/switchtec.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ enum {
5454
enum switchtec_gen {
5555
SWITCHTEC_GEN3,
5656
SWITCHTEC_GEN4,
57+
SWITCHTEC_GEN5,
5758
};
5859

5960
struct mrpc_regs {

switchtec.c

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -363,7 +363,7 @@ static ssize_t field ## _show(struct device *dev, \
363363
struct switchtec_dev *stdev = to_stdev(dev); \
364364
struct sys_info_regs __iomem *si = stdev->mmio_sys_info; \
365365
\
366-
if (stdev->gen == SWITCHTEC_GEN4) \
366+
if (stdev->gen >= SWITCHTEC_GEN4) \
367367
return io_string_show(buf, &si->gen4.field, \
368368
sizeof(si->gen4.field)); \
369369
else \
@@ -655,7 +655,7 @@ static int ioctl_flash_info(struct switchtec_dev *stdev,
655655
if (stdev->gen == SWITCHTEC_GEN3) {
656656
info.flash_length = ioread32(&fi->gen3.flash_length);
657657
info.num_partitions = SWITCHTEC_NUM_PARTITIONS_GEN3;
658-
} else if (stdev->gen == SWITCHTEC_GEN4) {
658+
} else if (stdev->gen >= SWITCHTEC_GEN4) {
659659
info.flash_length = ioread32(&fi->gen4.flash_length);
660660
info.num_partitions = SWITCHTEC_NUM_PARTITIONS_GEN4;
661661
} else {
@@ -861,7 +861,7 @@ static int ioctl_flash_part_info(struct switchtec_dev *stdev,
861861
ret = flash_part_info_gen3(stdev, &info);
862862
if (ret)
863863
return ret;
864-
} else if (stdev->gen == SWITCHTEC_GEN4) {
864+
} else if (stdev->gen >= SWITCHTEC_GEN4) {
865865
ret = flash_part_info_gen4(stdev, &info);
866866
if (ret)
867867
return ret;
@@ -1595,7 +1595,7 @@ static int switchtec_init_pci(struct switchtec_dev *stdev,
15951595
stdev->mmio_sys_info = stdev->mmio + SWITCHTEC_GAS_SYS_INFO_OFFSET;
15961596
stdev->mmio_flash_info = stdev->mmio + SWITCHTEC_GAS_FLASH_INFO_OFFSET;
15971597
stdev->mmio_ntb = stdev->mmio + SWITCHTEC_GAS_NTB_OFFSET;
1598-
if (stdev->gen == SWITCHTEC_GEN4)
1598+
if (stdev->gen >= SWITCHTEC_GEN4)
15991599
stdev->partition = ioread8(&stdev->mmio_sys_info->
16001600
gen4.partition_id);
16011601
else
@@ -1865,6 +1865,36 @@ static const struct pci_device_id switchtec_pci_tbl[] = {
18651865
SWITCHTEC_PCI_DEVICE(0x4252, SWITCHTEC_GEN4), //PAX 52XG4
18661866
SWITCHTEC_PCI_DEVICE(0x4236, SWITCHTEC_GEN4), //PAX 36XG4
18671867
SWITCHTEC_PCI_DEVICE(0x4228, SWITCHTEC_GEN4), //PAX 28XG4
1868+
SWITCHTEC_PCI_DEVICE(0x5000, SWITCHTEC_GEN5), //PFX 100XG5
1869+
SWITCHTEC_PCI_DEVICE(0x5084, SWITCHTEC_GEN5), //PFX 84XG5
1870+
SWITCHTEC_PCI_DEVICE(0x5068, SWITCHTEC_GEN5), //PFX 68XG5
1871+
SWITCHTEC_PCI_DEVICE(0x5052, SWITCHTEC_GEN5), //PFX 52XG5
1872+
SWITCHTEC_PCI_DEVICE(0x5036, SWITCHTEC_GEN5), //PFX 36XG5
1873+
SWITCHTEC_PCI_DEVICE(0x5028, SWITCHTEC_GEN5), //PFX 28XG5
1874+
SWITCHTEC_PCI_DEVICE(0x5100, SWITCHTEC_GEN5), //PSX 100XG5
1875+
SWITCHTEC_PCI_DEVICE(0x5184, SWITCHTEC_GEN5), //PSX 84XG5
1876+
SWITCHTEC_PCI_DEVICE(0x5168, SWITCHTEC_GEN5), //PSX 68XG5
1877+
SWITCHTEC_PCI_DEVICE(0x5152, SWITCHTEC_GEN5), //PSX 52XG5
1878+
SWITCHTEC_PCI_DEVICE(0x5136, SWITCHTEC_GEN5), //PSX 36XG5
1879+
SWITCHTEC_PCI_DEVICE(0x5128, SWITCHTEC_GEN5), //PSX 28XG5
1880+
SWITCHTEC_PCI_DEVICE(0x5200, SWITCHTEC_GEN5), //PAX 100XG5
1881+
SWITCHTEC_PCI_DEVICE(0x5284, SWITCHTEC_GEN5), //PAX 84XG5
1882+
SWITCHTEC_PCI_DEVICE(0x5268, SWITCHTEC_GEN5), //PAX 68XG5
1883+
SWITCHTEC_PCI_DEVICE(0x5252, SWITCHTEC_GEN5), //PAX 52XG5
1884+
SWITCHTEC_PCI_DEVICE(0x5236, SWITCHTEC_GEN5), //PAX 36XG5
1885+
SWITCHTEC_PCI_DEVICE(0x5228, SWITCHTEC_GEN5), //PAX 28XG5
1886+
SWITCHTEC_PCI_DEVICE(0x5300, SWITCHTEC_GEN5), //PAX-A 100XG5
1887+
SWITCHTEC_PCI_DEVICE(0x5384, SWITCHTEC_GEN5), //PAX-A 84XG5
1888+
SWITCHTEC_PCI_DEVICE(0x5368, SWITCHTEC_GEN5), //PAX-A 68XG5
1889+
SWITCHTEC_PCI_DEVICE(0x5352, SWITCHTEC_GEN5), //PAX-A 52XG5
1890+
SWITCHTEC_PCI_DEVICE(0x5336, SWITCHTEC_GEN5), //PAX-A 36XG5
1891+
SWITCHTEC_PCI_DEVICE(0x5328, SWITCHTEC_GEN5), //PAX-A 28XG5
1892+
SWITCHTEC_PCI_DEVICE(0x5400, SWITCHTEC_GEN5), //PFX-A 100XG5
1893+
SWITCHTEC_PCI_DEVICE(0x5484, SWITCHTEC_GEN5), //PFX-A 84XG5
1894+
SWITCHTEC_PCI_DEVICE(0x5468, SWITCHTEC_GEN5), //PFX-A 68XG5
1895+
SWITCHTEC_PCI_DEVICE(0x5452, SWITCHTEC_GEN5), //PFX-A 52XG5
1896+
SWITCHTEC_PCI_DEVICE(0x5436, SWITCHTEC_GEN5), //PFX-A 36XG5
1897+
SWITCHTEC_PCI_DEVICE(0x5428, SWITCHTEC_GEN5), //PFX-A 28XG5
18681898
{0}
18691899
};
18701900
MODULE_DEVICE_TABLE(pci, switchtec_pci_tbl);

0 commit comments

Comments
 (0)