amdsbwd, intpm: Add Hygon Dhyana support.
Initialize the FCH SMBus controller for Hygon Dhyana CPU. Set the vendor of the FCH description via the exact CPU vendor. Submitted by: Pu Wen <puwen@hygon.cn> MFC after: 1 week Differential revision: https://reviews.freebsd.org/D23558
This commit is contained in:
parent
4afea6b4e0
commit
decf9c5ff6
@ -146,3 +146,5 @@
|
||||
#define AMDCZ_SMBUS_DEVID 0x790b1022
|
||||
#define AMDCZ49_SMBUS_REVID 0x49
|
||||
|
||||
#define HYGONCZ_SMBUS_DEVID 0x790b1d94
|
||||
|
||||
|
@ -60,6 +60,8 @@ __FBSDID("$FreeBSD$");
|
||||
#include <sys/bus.h>
|
||||
#include <machine/bus.h>
|
||||
#include <sys/rman.h>
|
||||
#include <machine/cputypes.h>
|
||||
#include <machine/md_var.h>
|
||||
#include <machine/resource.h>
|
||||
#include <sys/watchdog.h>
|
||||
|
||||
@ -269,7 +271,8 @@ amdsbwd_identify(driver_t *driver, device_t parent)
|
||||
return;
|
||||
if (pci_get_devid(smb_dev) != AMDSB_SMBUS_DEVID &&
|
||||
pci_get_devid(smb_dev) != AMDFCH_SMBUS_DEVID &&
|
||||
pci_get_devid(smb_dev) != AMDCZ_SMBUS_DEVID)
|
||||
pci_get_devid(smb_dev) != AMDCZ_SMBUS_DEVID &&
|
||||
pci_get_devid(smb_dev) != HYGONCZ_SMBUS_DEVID)
|
||||
return;
|
||||
|
||||
child = BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "amdsbwd", -1);
|
||||
@ -378,6 +381,7 @@ static void
|
||||
amdsbwd_probe_fch41(device_t dev, struct resource *pmres, uint32_t *addr)
|
||||
{
|
||||
uint8_t val;
|
||||
char buf[36];
|
||||
|
||||
val = pmio_read(pmres, AMDFCH41_PM_ISA_CTRL);
|
||||
if ((val & AMDFCH41_MMIO_EN) != 0) {
|
||||
@ -416,7 +420,9 @@ amdsbwd_probe_fch41(device_t dev, struct resource *pmres, uint32_t *addr)
|
||||
amdsbwd_verbose_printf(dev, "AMDFCH41_PM_DECODE_EN3 value = %#04x\n",
|
||||
val);
|
||||
#endif
|
||||
device_set_desc(dev, "AMD FCH Rev 41h+ Watchdog Timer");
|
||||
snprintf(buf, sizeof(buf), "%s FCH Rev 41h+ Watchdog Timer",
|
||||
cpu_vendor_id == CPU_VENDOR_HYGON ? "Hygon" : "AMD");
|
||||
device_set_desc_copy(dev, buf);
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -102,6 +102,7 @@ const struct intsmb_device {
|
||||
{ AMDSB_SMBUS_DEVID, "AMD SB600/7xx/8xx/9xx SMBus Controller" },
|
||||
{ AMDFCH_SMBUS_DEVID, "AMD FCH SMBus Controller" },
|
||||
{ AMDCZ_SMBUS_DEVID, "AMD FCH SMBus Controller" },
|
||||
{ HYGONCZ_SMBUS_DEVID, "Hygon FCH SMBus Controller" },
|
||||
};
|
||||
|
||||
static int
|
||||
@ -243,6 +244,7 @@ intsmb_attach(device_t dev)
|
||||
break;
|
||||
case AMDFCH_SMBUS_DEVID:
|
||||
case AMDCZ_SMBUS_DEVID:
|
||||
case HYGONCZ_SMBUS_DEVID:
|
||||
sc->sb8xx = 1;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user