diff options
-rw-r--r-- | src/device/pnp_device.c | 59 | ||||
-rw-r--r-- | src/include/device/pnp.h | 37 | ||||
-rw-r--r-- | src/include/device/pnp_def.h | 14 | ||||
-rw-r--r-- | src/superio/ite/it8772f/superio.c | 2 |
4 files changed, 95 insertions, 17 deletions
diff --git a/src/device/pnp_device.c b/src/device/pnp_device.c index 7971aec5ba..a04469b4b8 100644 --- a/src/device/pnp_device.c +++ b/src/device/pnp_device.c @@ -296,13 +296,68 @@ static void get_resources(device_t dev, struct pnp_info *info) resource->size = 1; resource->flags |= IORESOURCE_IRQ; } + if (info->flags & PNP_MSC2) { + resource = new_resource(dev, PNP_IDX_MSC2); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSC3) { + resource = new_resource(dev, PNP_IDX_MSC3); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } if (info->flags & PNP_MSC4) { resource = new_resource(dev, PNP_IDX_MSC4); resource->size = 1; resource->flags |= IORESOURCE_IRQ; } - if (info->flags & PNP_MSC10) { - resource = new_resource(dev, PNP_IDX_MSC10); + if (info->flags & PNP_MSC5) { + resource = new_resource(dev, PNP_IDX_MSC5); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSC6) { + resource = new_resource(dev, PNP_IDX_MSC6); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSC7) { + resource = new_resource(dev, PNP_IDX_MSC7); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSC8) { + resource = new_resource(dev, PNP_IDX_MSC8); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSC9) { + resource = new_resource(dev, PNP_IDX_MSC9); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSCA) { + resource = new_resource(dev, PNP_IDX_MSCA); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSCB) { + resource = new_resource(dev, PNP_IDX_MSCB); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSCC) { + resource = new_resource(dev, PNP_IDX_MSCC); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSCD) { + resource = new_resource(dev, PNP_IDX_MSCD); + resource->size = 1; + resource->flags |= IORESOURCE_IRQ; + } + if (info->flags & PNP_MSCE) { + resource = new_resource(dev, PNP_IDX_MSCE); resource->size = 1; resource->flags |= IORESOURCE_IRQ; } diff --git a/src/include/device/pnp.h b/src/include/device/pnp.h index 29df77de20..cfed7c708d 100644 --- a/src/include/device/pnp.h +++ b/src/include/device/pnp.h @@ -38,19 +38,30 @@ struct pnp_info { struct device_operations *ops; unsigned int function; /* Must be at least 16 bits (virtual LDNs)! */ unsigned int flags; -#define PNP_IO0 0x001 -#define PNP_IO1 0x002 -#define PNP_IO2 0x004 -#define PNP_IO3 0x008 -#define PNP_IRQ0 0x010 -#define PNP_IRQ1 0x020 -#define PNP_DRQ0 0x040 -#define PNP_DRQ1 0x080 -#define PNP_EN 0x100 -#define PNP_MSC0 0x200 -#define PNP_MSC1 0x400 -#define PNP_MSC4 0x800 -#define PNP_MSC10 0x1000 +#define PNP_IO0 0x000001 +#define PNP_IO1 0x000002 +#define PNP_IO2 0x000004 +#define PNP_IO3 0x000008 +#define PNP_IRQ0 0x000010 +#define PNP_IRQ1 0x000020 +#define PNP_DRQ0 0x000040 +#define PNP_DRQ1 0x000080 +#define PNP_EN 0x000100 +#define PNP_MSC0 0x000200 +#define PNP_MSC1 0x000400 +#define PNP_MSC2 0x000800 +#define PNP_MSC3 0x001000 +#define PNP_MSC4 0x002000 +#define PNP_MSC5 0x004000 +#define PNP_MSC6 0x008000 +#define PNP_MSC7 0x010000 +#define PNP_MSC8 0x020000 +#define PNP_MSC9 0x040000 +#define PNP_MSCA 0x080000 +#define PNP_MSCB 0x100000 +#define PNP_MSCC 0x200000 +#define PNP_MSCD 0x400000 +#define PNP_MSCE 0x800000 struct io_info io0, io1, io2, io3; }; struct resource *pnp_get_resource(device_t dev, unsigned index); diff --git a/src/include/device/pnp_def.h b/src/include/device/pnp_def.h index bbc39fd13d..7701d842f2 100644 --- a/src/include/device/pnp_def.h +++ b/src/include/device/pnp_def.h @@ -12,7 +12,19 @@ #define PNP_IDX_DRQ1 0x75 #define PNP_IDX_MSC0 0xf0 #define PNP_IDX_MSC1 0xf1 +#define PNP_IDX_MSC2 0xf2 +#define PNP_IDX_MSC3 0xf3 #define PNP_IDX_MSC4 0xf4 -#define PNP_IDX_MSC10 0xfa +#define PNP_IDX_MSC5 0xf5 +#define PNP_IDX_MSC6 0xf6 +#define PNP_IDX_MSC7 0xf7 +#define PNP_IDX_MSC8 0xf8 +#define PNP_IDX_MSC9 0xf9 +#define PNP_IDX_MSCA 0xfa +#define PNP_IDX_MSCB 0xfb +#define PNP_IDX_MSCC 0xfc +#define PNP_IDX_MSCD 0xfd +#define PNP_IDX_MSCE 0xfe +#define PNP_IDX_RSVD 0xff #endif /* DEVICE_PNP_DEF_H */ diff --git a/src/superio/ite/it8772f/superio.c b/src/superio/ite/it8772f/superio.c index 6c6a503886..7079b1a829 100644 --- a/src/superio/ite/it8772f/superio.c +++ b/src/superio/ite/it8772f/superio.c @@ -222,7 +222,7 @@ static struct pnp_info pnp_dev_info[] = { { &ops, IT8772F_SP1, PNP_IO0 | PNP_IRQ0, {0x0ff8, 0}, }, /* Environmental Controller */ { &ops, IT8772F_EC, PNP_IO0 | PNP_IO1 | PNP_IRQ0 | - PNP_MSC4 | PNP_MSC10, + PNP_MSC4 | PNP_MSCA, {0x0ff8, 0}, {0x0ffc, 4}, }, /* KBC Keyboard */ { &ops, IT8772F_KBCK, PNP_IO0 | PNP_IO1 | PNP_IRQ0, |