Stefan,
Please try this one. Remove the mindev in struct. And use next_unitid to calculate the dev min and max.
Can you try that in AMD quartet to see if ht reset works.
You may need to add several lines in auto.c
static const struct ht_chain ht_c[] = { { .udev = PCI_DEV(0, 0x18, 0), .upos = 0xc0, .devreg = 0xe0, }, { .udev = PCI_DEV(0, 0x19, 0), .upos = 0xa0, .devreg = 0xe4, }, };
Change calling to ht_setup_chain to ht_setup_chains
needs_reset |= ht_setup_chains(ht_c, sizeof(ht_c)/sizeof(ht_c[0]));
make sure resourcemap.c like this
PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x04010207, PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x00000110, PCI_ADDR(0, 0x18, 1, 0xE8), 0x0000FC88, 0x00000000, PCI_ADDR(0, 0x18, 1, 0xEC), 0x0000FC88, 0x00000000,
The result would be PCI_ADDR(0, 0x18, 1, 0xE0), 0x0000FC88, 0x04010207, PCI_ADDR(0, 0x18, 1, 0xE4), 0x0000FC88, 0x06050117,
If you enable the print_pci_devices in auto.c, you may see 0:1.0 0:2.0 0:2.1 0:2.2 0:2.3 0:2.5 0:2.6 0:5.0 0:5.1 0:6.0 0:6.1 0:18:0 0:18:1 0:18:2 0:18:3 0:19:0 0:19:1 0:19:2 0:19:3 0:1a:0 0:1a:1 0:1a:2 0:1a:3 0:1b:0 0:1b:1 0:1b:2 0:1b:3
regards
YH