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 <device/pnp.h>
|
||||
#include <stdint.h>
|
||||
#include "fintek.h"
|
||||
#include "f81216h.h"
|
||||
|
||||
static u8 f81216h_entry_key;
|
||||
#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;
|
||||
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. */
|
||||
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) {
|
||||
MODE_6767:
|
||||
f81216h_entry_key = 0x67;
|
||||
case MODE_6767:
|
||||
key = 0x67;
|
||||
break;
|
||||
MODE_7777:
|
||||
f81216h_entry_key = 0x77;
|
||||
case MODE_7777:
|
||||
key = 0x77;
|
||||
break;
|
||||
MODE_8787:
|
||||
f81216h_entry_key = 0x87;
|
||||
case MODE_8787:
|
||||
key = 0x87;
|
||||
break;
|
||||
MODE_A0A0:
|
||||
f81216h_entry_key = 0xa0;
|
||||
case MODE_A0A0:
|
||||
key = 0xA0;
|
||||
break;
|
||||
default:
|
||||
f81216h_entry_key = 0x77; /* (safe to be hw default) */
|
||||
key = 0x77; /* try the hw default */
|
||||
break;
|
||||
}
|
||||
|
||||
pnp_enter_conf_state(dev);
|
||||
pnp_enter_conf_state(dev, key);
|
||||
pnp_set_logical_device(dev);
|
||||
pnp_set_enable(dev, 0);
|
||||
pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
|
||||
|
|
|
@ -34,13 +34,13 @@
|
|||
* the default key.
|
||||
* See page 17 of data sheet for details.
|
||||
*/
|
||||
enum {
|
||||
typedef enum {
|
||||
MODE_6767,
|
||||
MODE_7777,
|
||||
MODE_8787,
|
||||
MODE_A0A0,
|
||||
} 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 */
|
||||
|
|
|
@ -45,20 +45,17 @@ static void pnp_enter_ext_func_mode(struct device *dev)
|
|||
* See page 17 of data sheet.
|
||||
*/
|
||||
switch(conf->conf_key_mode) {
|
||||
case 0:
|
||||
key = 0x77; /* (default) */
|
||||
break;
|
||||
case 1:
|
||||
key = 0xa0;
|
||||
break;
|
||||
case 2:
|
||||
key = 0x87;
|
||||
break;
|
||||
case 3:
|
||||
key = 0x67;
|
||||
case MODE_6767:
|
||||
case MODE_7777:
|
||||
case MODE_8787:
|
||||
case MODE_A0A0:
|
||||
key = conf->conf_key_mode;
|
||||
break;
|
||||
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);
|
||||
|
|
Loading…
Reference in New Issue