|
91 | 91 | #define SB800_PIIX4_PORT_IDX_MASK 0x06
|
92 | 92 | #define SB800_PIIX4_PORT_IDX_SHIFT 1
|
93 | 93 |
|
94 |
| -/* On kerncz, SmBus0Sel is at bit 20:19 of PMx00 DecodeEn */ |
| 94 | +/* On kerncz and Hudson2, SmBus0Sel is at bit 20:19 of PMx00 DecodeEn */ |
95 | 95 | #define SB800_PIIX4_PORT_IDX_KERNCZ 0x02
|
96 | 96 | #define SB800_PIIX4_PORT_IDX_MASK_KERNCZ 0x18
|
97 | 97 | #define SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ 3
|
@@ -358,18 +358,16 @@ static int piix4_setup_sb800(struct pci_dev *PIIX4_dev,
|
358 | 358 | /* Find which register is used for port selection */
|
359 | 359 | if (PIIX4_dev->vendor == PCI_VENDOR_ID_AMD ||
|
360 | 360 | PIIX4_dev->vendor == PCI_VENDOR_ID_HYGON) {
|
361 |
| - switch (PIIX4_dev->device) { |
362 |
| - case PCI_DEVICE_ID_AMD_KERNCZ_SMBUS: |
| 361 | + if (PIIX4_dev->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS || |
| 362 | + (PIIX4_dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS && |
| 363 | + PIIX4_dev->revision >= 0x1F)) { |
363 | 364 | piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_KERNCZ;
|
364 | 365 | piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK_KERNCZ;
|
365 | 366 | piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT_KERNCZ;
|
366 |
| - break; |
367 |
| - case PCI_DEVICE_ID_AMD_HUDSON2_SMBUS: |
368 |
| - default: |
| 367 | + } else { |
369 | 368 | piix4_port_sel_sb800 = SB800_PIIX4_PORT_IDX_ALT;
|
370 | 369 | piix4_port_mask_sb800 = SB800_PIIX4_PORT_IDX_MASK;
|
371 | 370 | piix4_port_shift_sb800 = SB800_PIIX4_PORT_IDX_SHIFT;
|
372 |
| - break; |
373 | 371 | }
|
374 | 372 | } else {
|
375 | 373 | if (!request_muxed_region(SB800_PIIX4_SMB_IDX, 2,
|
|
0 commit comments