aboutsummaryrefslogtreecommitdiff
path: root/src/superio/smsc/lpc47b397/lpc47b397_early_serial.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/superio/smsc/lpc47b397/lpc47b397_early_serial.c')
-rw-r--r--src/superio/smsc/lpc47b397/lpc47b397_early_serial.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/superio/smsc/lpc47b397/lpc47b397_early_serial.c b/src/superio/smsc/lpc47b397/lpc47b397_early_serial.c
new file mode 100644
index 0000000000..2a3d3dbd31
--- /dev/null
+++ b/src/superio/smsc/lpc47b397/lpc47b397_early_serial.c
@@ -0,0 +1,20 @@
+#include <arch/romcc_io.h>
+#include "lpc47b397.h"
+
+static inline void pnp_enter_conf_state(device_t dev) {
+ unsigned port = dev>>8;
+ outb(0x55, port);
+}
+static void pnp_exit_conf_state(device_t dev) {
+ unsigned port = dev>>8;
+ outb(0xaa, port);
+}
+static void lpc47b397_enable_serial(device_t dev, unsigned iobase)
+{
+ pnp_enter_conf_state(dev);
+ pnp_set_logical_device(dev);
+ pnp_set_enable(dev, 0);
+ pnp_set_iobase(dev, PNP_IDX_IO0, iobase);
+ pnp_set_enable(dev, 1);
+ pnp_exit_conf_state(dev);
+}