Merge pull request #1396 from richardg867/master
Fix AS99127F GPO defaults
This commit is contained in:
@@ -246,8 +246,11 @@ lm78_security_write(void *bus, uint8_t addr, uint8_t val, void *priv)
|
||||
|
||||
|
||||
static void
|
||||
lm78_reset(lm78_t *dev, uint8_t initialization)
|
||||
lm78_reset(void *priv)
|
||||
{
|
||||
lm78_t *dev = (lm78_t *) priv;
|
||||
uint8_t initialization = dev->regs[0x40] & 0x80;
|
||||
|
||||
memset(dev->regs, 0, 256);
|
||||
memset(dev->regs + 0xc0, 0xff, 32); /* C0-DF are 0xFF on a real AS99127F */
|
||||
|
||||
@@ -297,6 +300,7 @@ lm78_reset(lm78_t *dev, uint8_t initialization)
|
||||
/* regs[1] and regs[2] start at 0x80 */
|
||||
dev->as99127f.regs[1][0x00] = 0x88;
|
||||
dev->as99127f.regs[1][0x01] = 0x10;
|
||||
dev->as99127f.regs[1][0x03] = 0x02; /* GPO, but things break if GPO16 isn't set */
|
||||
dev->as99127f.regs[1][0x04] = 0x01;
|
||||
dev->as99127f.regs[1][0x05] = 0x1f;
|
||||
lm78_as99127f_write(dev, 0x06, 0x2f);
|
||||
@@ -508,7 +512,7 @@ lm78_write(lm78_t *dev, uint8_t reg, uint8_t val, uint8_t bank)
|
||||
switch (reg) {
|
||||
case 0x40:
|
||||
if (val & 0x80) /* INITIALIZATION bit resets all registers except main I2C address */
|
||||
lm78_reset(dev, 1);
|
||||
lm78_reset(dev);
|
||||
break;
|
||||
|
||||
case 0x48:
|
||||
@@ -520,7 +524,7 @@ lm78_write(lm78_t *dev, uint8_t reg, uint8_t val, uint8_t bank)
|
||||
case 0x49:
|
||||
if (!(dev->local & LM78_WINBOND)) {
|
||||
if (val & 0x20) /* Chip Reset bit (LM78 only) resets all registers */
|
||||
lm78_reset(dev, 0);
|
||||
lm78_reset(dev);
|
||||
else
|
||||
dev->regs[0x49] = 0x40;
|
||||
} else {
|
||||
@@ -759,7 +763,7 @@ lm78_init(const device_t *info)
|
||||
}
|
||||
}
|
||||
|
||||
lm78_reset(dev, 0);
|
||||
lm78_reset(dev);
|
||||
|
||||
uint16_t isa_io = dev->local & 0xffff;
|
||||
if (isa_io)
|
||||
@@ -772,9 +776,9 @@ lm78_init(const device_t *info)
|
||||
/* National Semiconductor LM78 on ISA and SMBus. */
|
||||
const device_t lm78_device = {
|
||||
"National Semiconductor LM78 Hardware Monitor",
|
||||
DEVICE_ISA,
|
||||
DEVICE_ISA | DEVICE_PCI,
|
||||
0x290 | LM78_I2C,
|
||||
lm78_init, lm78_close, NULL,
|
||||
lm78_init, lm78_close, lm78_reset,
|
||||
{ NULL }, NULL, NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -783,9 +787,9 @@ const device_t lm78_device = {
|
||||
/* Winbond W83781D on ISA and SMBus. */
|
||||
const device_t w83781d_device = {
|
||||
"Winbond W83781D Hardware Monitor",
|
||||
DEVICE_ISA,
|
||||
DEVICE_ISA | DEVICE_PCI,
|
||||
0x290 | LM78_I2C | LM78_W83781D,
|
||||
lm78_init, lm78_close, NULL,
|
||||
lm78_init, lm78_close, lm78_reset,
|
||||
{ NULL }, NULL, NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -795,9 +799,9 @@ const device_t w83781d_device = {
|
||||
I2C-only W83781D clone with additional voltages, GPIOs and fan control. */
|
||||
const device_t as99127f_device = {
|
||||
"ASUS AS99127F Rev. 1 Hardware Monitor",
|
||||
DEVICE_ISA,
|
||||
DEVICE_ISA | DEVICE_PCI,
|
||||
LM78_I2C | LM78_AS99127F_REV1,
|
||||
lm78_init, lm78_close, NULL,
|
||||
lm78_init, lm78_close, lm78_reset,
|
||||
{ NULL }, NULL, NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -806,9 +810,9 @@ const device_t as99127f_device = {
|
||||
/* Rev. 2 is manufactured by Winbond and differs only in GPI registers. */
|
||||
const device_t as99127f_rev2_device = {
|
||||
"ASUS AS99127F Rev. 2 Hardware Monitor",
|
||||
DEVICE_ISA,
|
||||
DEVICE_ISA | DEVICE_PCI,
|
||||
LM78_I2C | LM78_AS99127F_REV2,
|
||||
lm78_init, lm78_close, NULL,
|
||||
lm78_init, lm78_close, lm78_reset,
|
||||
{ NULL }, NULL, NULL,
|
||||
NULL
|
||||
};
|
||||
@@ -817,9 +821,9 @@ const device_t as99127f_rev2_device = {
|
||||
/* Winbond W83782D on ISA and SMBus. */
|
||||
const device_t w83782d_device = {
|
||||
"Winbond W83782D Hardware Monitor",
|
||||
DEVICE_ISA,
|
||||
DEVICE_ISA | DEVICE_PCI,
|
||||
0x290 | LM78_I2C | LM78_W83782D,
|
||||
lm78_init, lm78_close, NULL,
|
||||
lm78_init, lm78_close, lm78_reset,
|
||||
{ NULL }, NULL, NULL,
|
||||
NULL
|
||||
};
|
||||
|
Reference in New Issue
Block a user