From: Michel Dänzer <michel.daenzer@xxxxxxx> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com> --- src/amdgpu_chipset_gen.h | 21 +++++++++++++++++++++ src/amdgpu_probe.c | 2 +- src/pcidb/parse_pci_ids.pl | 9 +++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/amdgpu_chipset_gen.h b/src/amdgpu_chipset_gen.h index 30e5d24..786b0f2 100644 --- a/src/amdgpu_chipset_gen.h +++ b/src/amdgpu_chipset_gen.h @@ -193,3 +193,24 @@ SymTabRec AMDGPUChipsets[] = { { PCI_CHIP_POLARIS10_67CF, "POLARIS10" }, { -1, NULL } }; + +SymTabRec AMDGPUUniqueChipsets[] = { + { PCI_CHIP_BONAIRE_6640, "BONAIRE" }, + { PCI_CHIP_CARRIZO_9870, "CARRIZO" }, + { PCI_CHIP_FIJI_7300, "FIJI" }, + { PCI_CHIP_HAINAN_6660, "HAINAN" }, + { PCI_CHIP_HAWAII_67A0, "HAWAII" }, + { PCI_CHIP_KABINI_9830, "KABINI" }, + { PCI_CHIP_KAVERI_1304, "KAVERI" }, + { PCI_CHIP_MULLINS_9850, "MULLINS" }, + { PCI_CHIP_OLAND_6600, "OLAND" }, + { PCI_CHIP_PITCAIRN_6800, "PITCAIRN" }, + { PCI_CHIP_POLARIS10_67C0, "POLARIS10" }, + { PCI_CHIP_POLARIS11_67E0, "POLARIS11" }, + { PCI_CHIP_STONEY_98E4, "STONEY" }, + { PCI_CHIP_TAHITI_6780, "TAHITI" }, + { PCI_CHIP_TONGA_6920, "TONGA" }, + { PCI_CHIP_TOPAZ_6900, "TOPAZ" }, + { PCI_CHIP_VERDE_6820, "VERDE" }, + { -1, NULL } +}; diff --git a/src/amdgpu_probe.c b/src/amdgpu_probe.c index 1c32742..213d245 100644 --- a/src/amdgpu_probe.c +++ b/src/amdgpu_probe.c @@ -77,7 +77,7 @@ static const OptionInfoRec *AMDGPUAvailableOptions(int chipid, int busid) static void AMDGPUIdentify(int flags) { xf86PrintChipsets(AMDGPU_NAME, - "Driver for AMD Radeon chipsets", AMDGPUChipsets); + "Driver for AMD Radeon chipsets", AMDGPUUniqueChipsets); } static char *amdgpu_bus_id(ScrnInfoPtr pScrn, struct pci_device *dev) diff --git a/src/pcidb/parse_pci_ids.pl b/src/pcidb/parse_pci_ids.pl index 06a9e1e..110d021 100755 --- a/src/pcidb/parse_pci_ids.pl +++ b/src/pcidb/parse_pci_ids.pl @@ -16,6 +16,8 @@ my $amdgpupcidevicematchfile = 'amdgpu_pci_device_match_gen.h'; my $amdgpuchipsetfile = 'amdgpu_chipset_gen.h'; my $amdgpuchipinfofile = 'amdgpu_chipinfo_gen.h'; +my %uniquechipsets; + my $csv = Text::CSV_XS->new(); open (CSV, "<", $file) or die $!; @@ -48,6 +50,9 @@ while (<CSV>) { print PCIDEVICEMATCH " ATI_DEVICE_MATCH( PCI_CHIP_$columns[1], 0 ),\n"; print AMDGPUCHIPSET " { PCI_CHIP_$columns[1], \"$columns[3]\" },\n"; + if (!$uniquechipsets{$columns[3]}) { + $uniquechipsets{$columns[3]} = $columns[1]; + } print AMDGPUCHIPINFO " { $columns[0], CHIP_FAMILY_$columns[2] },\n"; } @@ -59,6 +64,10 @@ while (<CSV>) { } print AMDGPUCHIPINFO "};\n"; +print AMDGPUCHIPSET " { -1, NULL }\n};\n\nSymTabRec AMDGPUUniqueChipsets[] = {\n"; +foreach (sort keys %uniquechipsets) { + print AMDGPUCHIPSET " { PCI_CHIP_$uniquechipsets{$_}, \"$_\" },\n"; +} print AMDGPUCHIPSET " { -1, NULL }\n};\n"; print PCICHIPSET " { -1, -1, RES_UNDEFINED }\n};\n"; print PCIDEVICEMATCH " { 0, 0, 0 }\n};\n"; -- 2.9.3