superio/fintek: Add required changes so F81216H can be used
The amd/lamar mainboard is the first mainboard to use the f81216h.
These changes are needed to fix up commit 27a63d77
so the
Super I/O builds and functions correctly.
- Wrong #include name
- Removed global variable in romstage
- Missing "case" in switch()
Change-Id: I1b2058a915b776664fba14e4341e8a410b50330f
Signed-off-by: Dave Frodin <dave.frodin@se-eng.com>
Reviewed-on: http://review.coreboot.org/8255
Tested-by: build bot (Jenkins)
Reviewed-by: Alexandru Gagniuc <mr.nuke.me@gmail.com>
This commit is contained in:
parent
1608f3651f
commit
17ace82552
|
@ -21,12 +21,11 @@
|
||||||
#include <arch/io.h>
|
#include <arch/io.h>
|
||||||
#include <device/pnp.h>
|
#include <device/pnp.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include "fintek.h"
|
#include "f81216h.h"
|
||||||
|
|
||||||
static u8 f81216h_entry_key;
|
|
||||||
#define FINTEK_EXIT_KEY 0xAA
|
#define FINTEK_EXIT_KEY 0xAA
|
||||||
|
|
||||||
static void pnp_enter_conf_state(pnp_devfn_t dev)
|
static void pnp_enter_conf_state(pnp_devfn_t dev, u8 f81216h_entry_key)
|
||||||
{
|
{
|
||||||
u16 port = dev >> 8;
|
u16 port = dev >> 8;
|
||||||
outb(f81216h_entry_key, port);
|
outb(f81216h_entry_key, port);
|
||||||
|
@ -40,26 +39,27 @@ static void pnp_exit_conf_state(pnp_devfn_t dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Bring up early serial debugging output before the RAM is initialized. */
|
/* Bring up early serial debugging output before the RAM is initialized. */
|
||||||
void f81216h_enable_serial(pnp_devfn_t dev, u16 iobase, enum mode_key k)
|
void f81216h_enable_serial(pnp_devfn_t dev, u16 iobase, mode_key k)
|
||||||
{
|
{
|
||||||
|
u8 key;
|
||||||
switch(k) {
|
switch(k) {
|
||||||
MODE_6767:
|
case MODE_6767:
|
||||||
f81216h_entry_key = 0x67;
|
key = 0x67;
|
||||||
break;
|
break;
|
||||||
MODE_7777:
|
case MODE_7777:
|
||||||
f81216h_entry_key = 0x77;
|
key = 0x77;
|
||||||
break;
|
break;
|
||||||
MODE_8787:
|
case MODE_8787:
|
||||||
f81216h_entry_key = 0x87;
|
key = 0x87;
|
||||||
break;
|
break;
|
||||||
MODE_A0A0:
|
case MODE_A0A0:
|
||||||
f81216h_entry_key = 0xa0;
|
key = 0xA0;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
f81216h_entry_key = 0x77; /* (safe to be hw default) */
|
key = 0x77; /* try the hw default */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
pnp_enter_conf_state(dev, key);
|
||||||
pnp_enter_conf_state(dev);
|
|
||||||
pnp_set_logical_device(dev);
|
pnp_set_logical_device(dev);
|
||||||
pnp_set_enable(dev, 0);
|
pnp_set_enable(dev, 0);
|
||||||
pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
|
pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
|
||||||
|
|
|
@ -34,13 +34,13 @@
|
||||||
* the default key.
|
* the default key.
|
||||||
* See page 17 of data sheet for details.
|
* See page 17 of data sheet for details.
|
||||||
*/
|
*/
|
||||||
enum {
|
typedef enum {
|
||||||
MODE_6767,
|
MODE_6767,
|
||||||
MODE_7777,
|
MODE_7777,
|
||||||
MODE_8787,
|
MODE_8787,
|
||||||
MODE_A0A0,
|
MODE_A0A0,
|
||||||
} mode_key;
|
} mode_key;
|
||||||
|
|
||||||
void f81216h_enable_serial(pnp_devfn_t dev, u16 iobase, enum mode_key k);
|
void f81216h_enable_serial(pnp_devfn_t dev, u16 iobase, mode_key k);
|
||||||
|
|
||||||
#endif /* SUPERIO_FINTEK_F81216H_H */
|
#endif /* SUPERIO_FINTEK_F81216H_H */
|
||||||
|
|
|
@ -45,20 +45,17 @@ static void pnp_enter_ext_func_mode(struct device *dev)
|
||||||
* See page 17 of data sheet.
|
* See page 17 of data sheet.
|
||||||
*/
|
*/
|
||||||
switch(conf->conf_key_mode) {
|
switch(conf->conf_key_mode) {
|
||||||
case 0:
|
case MODE_6767:
|
||||||
key = 0x77; /* (default) */
|
case MODE_7777:
|
||||||
break;
|
case MODE_8787:
|
||||||
case 1:
|
case MODE_A0A0:
|
||||||
key = 0xa0;
|
key = conf->conf_key_mode;
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
key = 0x87;
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
key = 0x67;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
key = 0x77; /* safe to be hw default */
|
printk(BIOS_WARNING, "Warning: Undefined F81216 unlock key assignment!\n");
|
||||||
|
printk(BIOS_WARNING, "Setting conf_key_mode to default\n");
|
||||||
|
key = MODE_7777; /* try the hw default */
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
outb(key, dev->path.pnp.port);
|
outb(key, dev->path.pnp.port);
|
||||||
|
|
Loading…
Reference in New Issue