aboutsummaryrefslogtreecommitdiff
path: root/src/superio/winbond/wpcd376i/superio.c
diff options
context:
space:
mode:
authorStefan Tauner <stefan.tauner@gmx.at>2018-08-08 04:55:47 +0200
committerPatrick Georgi <pgeorgi@google.com>2018-08-09 08:44:45 +0000
commit4cc0126188a2de726c73ce846ca6434e0dc91ca3 (patch)
treeda7ad99f60037c8779993ec6085fda2ad1cb4f0d /src/superio/winbond/wpcd376i/superio.c
parent2fdbe0caf7ea324c6b18bdbc5f75272f85bcd480 (diff)
superio: fix and extend pnp_info of wpcd376i
The implementation of wpcd376i in coreboot is based on the superiotool output which apparently was incorrect. This patch refines the implementation to match the datasheet. Change-Id: I0108e912dc4f603276074f0999c6d3146c3b13f9 Signed-off-by: Stefan Tauner <stefan.tauner@gmx.at> Reviewed-on: https://review.coreboot.org/27857 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
Diffstat (limited to 'src/superio/winbond/wpcd376i/superio.c')
-rw-r--r--src/superio/winbond/wpcd376i/superio.c43
1 files changed, 26 insertions, 17 deletions
diff --git a/src/superio/winbond/wpcd376i/superio.c b/src/superio/winbond/wpcd376i/superio.c
index 7af5bcfb0a..dcfd6423b3 100644
--- a/src/superio/winbond/wpcd376i/superio.c
+++ b/src/superio/winbond/wpcd376i/superio.c
@@ -30,16 +30,6 @@ static void init(struct device *dev)
return;
switch (dev->path.pnp.device) {
-
- case WPCD376I_FDC:
- case WPCD376I_LPT:
- case WPCD376I_IR:
- case WPCD376I_SP1:
- case WPCD376I_SWC:
- case WPCD376I_KBCM:
- case WPCD376I_GPIO:
- break;
-
case WPCD376I_KBCK:
pc_keyboard_init(NO_AUX_DEVICE);
break;
@@ -55,14 +45,33 @@ static struct device_operations ops = {
};
static struct pnp_info pnp_dev_info[] = {
- { NULL, WPCD376I_FDC, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x07fa, },
- { NULL, WPCD376I_LPT, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x04f8, },
- { NULL, WPCD376I_IR, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1,
+ { NULL, WPCD376I_FDC,
+ PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_MSC0 | PNP_MSC1 | PNP_MSC8,
+ 0x07f8, },
+ { NULL, WPCD376I_LPT,
+ PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_MSC0 | PNP_MSC8,
+ 0x03f8, },
+ { NULL, WPCD376I_SP1,
+ PNP_IO0 | PNP_IRQ0 | PNP_MSC0,
0x07f8, },
- { NULL, WPCD376I_SP1, PNP_IO0 | PNP_IRQ0, 0x07f8, },
- { NULL, WPCD376I_KBCM, PNP_IRQ0, },
- { NULL, WPCD376I_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, 0x07f8, 0x07f8, },
- { NULL, WPCD376I_GPIO, PNP_IO0 | PNP_IRQ0, 0xfff8, },
+ { NULL, WPCD376I_SWC,
+ PNP_IO0 | PNP_IO1 | PNP_IRQ0,
+ 0xfff0, 0xfff0, },
+ { NULL, WPCD376I_KBCM,
+ PNP_IRQ0, },
+ { NULL, WPCD376I_KBCK,
+ PNP_IO0 | PNP_IO1 | PNP_IRQ0 | PNP_MSC0,
+ 0x07f8, 0x07f8, },
+ { NULL, WPCD376I_GPIO,
+ PNP_IO0 | PNP_IRQ0 | PNP_MSC0 | PNP_MSC1 | PNP_MSC2 | PNP_MSC3 |
+ PNP_MSC8,
+ 0xffe0, },
+ { NULL, WPCD376I_ECIR,
+ PNP_IO0 | PNP_IO1 | PNP_IRQ0,
+ 0xfff0, 0xfff0, },
+ { NULL, WPCD376I_IR,
+ PNP_IO0 | PNP_IRQ0 | PNP_DRQ0 | PNP_DRQ1 | PNP_MSC0,
+ 0xfff8, },
};
static void enable_dev(struct device *dev)