Samuel Holland has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
superio/winbond/wpcd376i: Resurrect the driver
This SuperIO chip is used on the Intel DQ45EK mainboard. Restore the driver that was deleted in commit d3a1a4171ee9 ("src/superio: Remove unused superio chips"). Changes from the previous version include: - Replacing the early serial implementation with Winbond common code, - Replacing the license boilerplate with SPDX headers, and - Removing unnecessary header file references.
Change-Id: I0ff1a63c47d5dff2599c83a1cebe1ac5ff2136b1 Signed-off-by: Samuel Holland samuel@sholland.org --- M src/superio/winbond/Makefile.inc A src/superio/winbond/wpcd376i/Kconfig A src/superio/winbond/wpcd376i/Makefile.inc A src/superio/winbond/wpcd376i/chip.h A src/superio/winbond/wpcd376i/superio.c A src/superio/winbond/wpcd376i/wpcd376i.h 6 files changed, 103 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/95/44695/1
diff --git a/src/superio/winbond/Makefile.inc b/src/superio/winbond/Makefile.inc index 68c4142..f8ac8ac 100644 --- a/src/superio/winbond/Makefile.inc +++ b/src/superio/winbond/Makefile.inc @@ -11,3 +11,4 @@ subdirs-y += w83627uhg subdirs-y += w83667hg-a subdirs-y += w83977tf +subdirs-y += wpcd376i diff --git a/src/superio/winbond/wpcd376i/Kconfig b/src/superio/winbond/wpcd376i/Kconfig new file mode 100644 index 0000000..6d7bc7a --- /dev/null +++ b/src/superio/winbond/wpcd376i/Kconfig @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config SUPERIO_WINBOND_WPCD376I + bool + select SUPERIO_WINBOND_COMMON_PRE_RAM diff --git a/src/superio/winbond/wpcd376i/Makefile.inc b/src/superio/winbond/wpcd376i/Makefile.inc new file mode 100644 index 0000000..e8e5e72 --- /dev/null +++ b/src/superio/winbond/wpcd376i/Makefile.inc @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +ramstage-$(CONFIG_SUPERIO_WINBOND_WPCD376I) += superio.c diff --git a/src/superio/winbond/wpcd376i/chip.h b/src/superio/winbond/wpcd376i/chip.h new file mode 100644 index 0000000..1a39c6d --- /dev/null +++ b/src/superio/winbond/wpcd376i/chip.h @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef SUPERIO_WINBOND_WPCD376I_CHIP_H +#define SUPERIO_WINBOND_WPCD376I_CHIP_H + +struct superio_winbond_wpcd376i_config { +}; + +#endif diff --git a/src/superio/winbond/wpcd376i/superio.c b/src/superio/winbond/wpcd376i/superio.c new file mode 100644 index 0000000..362c046 --- /dev/null +++ b/src/superio/winbond/wpcd376i/superio.c @@ -0,0 +1,67 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include <device/device.h> +#include <device/pnp.h> +#include <pc80/keyboard.h> +#include "chip.h" +#include "wpcd376i.h" + +static void init(struct device *dev) +{ + if (!dev->enabled) + return; + + switch (dev->path.pnp.device) { + case WPCD376I_KBCK: + pc_keyboard_init(NO_AUX_DEVICE); + break; + } +} + +static struct device_operations ops = { + .read_resources = pnp_read_resources, + .set_resources = pnp_set_resources, + .enable_resources = pnp_enable_resources, + .enable = pnp_enable, + .init = init, +}; + +static struct pnp_info pnp_dev_info[] = { + { 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_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) +{ + pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); +} + +struct chip_operations superio_winbond_wpcd376i_ops = { + CHIP_NAME("Winbond WPCD376I Super I/O") + .enable_dev = enable_dev, +}; diff --git a/src/superio/winbond/wpcd376i/wpcd376i.h b/src/superio/winbond/wpcd376i/wpcd376i.h new file mode 100644 index 0000000..6d49303 --- /dev/null +++ b/src/superio/winbond/wpcd376i/wpcd376i.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef SUPERIO_WINBOND_WPCD376I_WPCD376I_H +#define SUPERIO_WINBOND_WPCD376I_WPCD376I_H + +/* Logical Device Numbers (LDN). */ +#define WPCD376I_FDC 0x00 /* Floppy */ +#define WPCD376I_LPT 0x01 /* Parallel port */ +/* 0x02 Undefined */ +#define WPCD376I_SP1 0x03 /* UART1 */ +#define WPCD376I_SWC 0x04 /* System wake-up control */ +#define WPCD376I_KBCM 0x05 /* PS/2 mouse */ +#define WPCD376I_KBCK 0x06 /* PS/2 keyboard */ +#define WPCD376I_GPIO 0x07 /* General Purpose I/O */ +#define WPCD376I_ECIR 0x15 /* Enhanced Consumer Infrared Functions (ECIR) */ +#define WPCD376I_IR 0x16 /* UART3 & Infrared port */ + +#endif
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 1: Code-Review+1
Are you planning to add things to the chip.h file? If not, I'd drop that one, since it's currently basically empty. Not too opposed to keeping it though. The rest looks good to me, but wanted to check back about the chip.h file before giving it a +2
Samuel Holland has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 1:
Patch Set 1: Code-Review+1
Are you planning to add things to the chip.h file? If not, I'd drop that one, since it's currently basically empty. Not too opposed to keeping it though. The rest looks good to me, but wanted to check back about the chip.h file before giving it a +2
No. I don't have any documentation for this chip, and the driver works "as is", so I don't plan to make any more changes. I thought the chip.h file might have been required. I will remove it.
Hello build bot (Jenkins), Patrick Georgi, Martin Roth, Felix Held,
I'd like you to reexamine a change. Please visit
https://review.coreboot.org/c/coreboot/+/44695
to look at the new patch set (#2).
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
superio/winbond/wpcd376i: Resurrect the driver
This SuperIO chip is used on the Intel DQ45EK mainboard. Restore the driver that was deleted in commit d3a1a4171ee9 ("src/superio: Remove unused superio chips"). Changes from the previous version include: - Replacing the early serial implementation with Winbond common code, - Replacing the license boilerplate with SPDX headers, and - Removing unnecessary header file references.
Change-Id: I0ff1a63c47d5dff2599c83a1cebe1ac5ff2136b1 Signed-off-by: Samuel Holland samuel@sholland.org --- M src/superio/winbond/Makefile.inc A src/superio/winbond/wpcd376i/Kconfig A src/superio/winbond/wpcd376i/Makefile.inc A src/superio/winbond/wpcd376i/superio.c A src/superio/winbond/wpcd376i/wpcd376i.h 5 files changed, 93 insertions(+), 0 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/95/44695/2
Felix Held has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 2: Code-Review+2
looks good to me and the patch that selects this super i/o passes the build test, so this patch also builds successfully
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 2: Code-Review+1
(3 comments)
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@12 PS2, Line 12: Replacing Replace
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@13 PS2, Line 13: Replacing Replace
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@14 PS2, Line 14: Removing Remove
Samuel Holland has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 2:
(1 comment)
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@12 PS2, Line 12: Replacing
Replace
I don't agree. I believe the grammar is correct here (and in the rest of the sentence).
Paul Menzel has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 2:
(1 comment)
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@12 PS2, Line 12: Replacing
I don't agree. I believe the grammar is correct here (and in the rest of the sentence).
With the preceding sentence “Changes from the previous version include:” using the gerund for the changes can be used.
Angel Pons has posted comments on this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
Patch Set 2:
(3 comments)
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG Commit Message:
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@12 PS2, Line 12: Replacing
With the preceding sentence “Changes from the previous version include:” using the gerund for the ch […]
Ack
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@13 PS2, Line 13: Replacing
Replace
Ack
https://review.coreboot.org/c/coreboot/+/44695/2//COMMIT_MSG@14 PS2, Line 14: Removing
Remove
Ack
Patrick Georgi has submitted this change. ( https://review.coreboot.org/c/coreboot/+/44695 )
Change subject: superio/winbond/wpcd376i: Resurrect the driver ......................................................................
superio/winbond/wpcd376i: Resurrect the driver
This SuperIO chip is used on the Intel DQ45EK mainboard. Restore the driver that was deleted in commit d3a1a4171ee9 ("src/superio: Remove unused superio chips"). Changes from the previous version include: - Replacing the early serial implementation with Winbond common code, - Replacing the license boilerplate with SPDX headers, and - Removing unnecessary header file references.
Change-Id: I0ff1a63c47d5dff2599c83a1cebe1ac5ff2136b1 Signed-off-by: Samuel Holland samuel@sholland.org Reviewed-on: https://review.coreboot.org/c/coreboot/+/44695 Tested-by: build bot (Jenkins) no-reply@coreboot.org Reviewed-by: Felix Held felix-coreboot@felixheld.de Reviewed-by: Angel Pons th3fanbus@gmail.com --- M src/superio/winbond/Makefile.inc A src/superio/winbond/wpcd376i/Kconfig A src/superio/winbond/wpcd376i/Makefile.inc A src/superio/winbond/wpcd376i/superio.c A src/superio/winbond/wpcd376i/wpcd376i.h 5 files changed, 93 insertions(+), 0 deletions(-)
Approvals: build bot (Jenkins): Verified Felix Held: Looks good to me, approved Angel Pons: Looks good to me, but someone else must approve
diff --git a/src/superio/winbond/Makefile.inc b/src/superio/winbond/Makefile.inc index 68c4142..f8ac8ac 100644 --- a/src/superio/winbond/Makefile.inc +++ b/src/superio/winbond/Makefile.inc @@ -11,3 +11,4 @@ subdirs-y += w83627uhg subdirs-y += w83667hg-a subdirs-y += w83977tf +subdirs-y += wpcd376i diff --git a/src/superio/winbond/wpcd376i/Kconfig b/src/superio/winbond/wpcd376i/Kconfig new file mode 100644 index 0000000..6d7bc7a --- /dev/null +++ b/src/superio/winbond/wpcd376i/Kconfig @@ -0,0 +1,5 @@ +# SPDX-License-Identifier: GPL-2.0-only + +config SUPERIO_WINBOND_WPCD376I + bool + select SUPERIO_WINBOND_COMMON_PRE_RAM diff --git a/src/superio/winbond/wpcd376i/Makefile.inc b/src/superio/winbond/wpcd376i/Makefile.inc new file mode 100644 index 0000000..e8e5e72 --- /dev/null +++ b/src/superio/winbond/wpcd376i/Makefile.inc @@ -0,0 +1,3 @@ +# SPDX-License-Identifier: GPL-2.0-or-later + +ramstage-$(CONFIG_SUPERIO_WINBOND_WPCD376I) += superio.c diff --git a/src/superio/winbond/wpcd376i/superio.c b/src/superio/winbond/wpcd376i/superio.c new file mode 100644 index 0000000..a692eeb --- /dev/null +++ b/src/superio/winbond/wpcd376i/superio.c @@ -0,0 +1,66 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#include <device/device.h> +#include <device/pnp.h> +#include <pc80/keyboard.h> +#include "wpcd376i.h" + +static void init(struct device *dev) +{ + if (!dev->enabled) + return; + + switch (dev->path.pnp.device) { + case WPCD376I_KBCK: + pc_keyboard_init(NO_AUX_DEVICE); + break; + } +} + +static struct device_operations ops = { + .read_resources = pnp_read_resources, + .set_resources = pnp_set_resources, + .enable_resources = pnp_enable_resources, + .enable = pnp_enable, + .init = init, +}; + +static struct pnp_info pnp_dev_info[] = { + { 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_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) +{ + pnp_enable_devices(dev, &ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); +} + +struct chip_operations superio_winbond_wpcd376i_ops = { + CHIP_NAME("Winbond WPCD376I Super I/O") + .enable_dev = enable_dev, +}; diff --git a/src/superio/winbond/wpcd376i/wpcd376i.h b/src/superio/winbond/wpcd376i/wpcd376i.h new file mode 100644 index 0000000..6d49303 --- /dev/null +++ b/src/superio/winbond/wpcd376i/wpcd376i.h @@ -0,0 +1,18 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef SUPERIO_WINBOND_WPCD376I_WPCD376I_H +#define SUPERIO_WINBOND_WPCD376I_WPCD376I_H + +/* Logical Device Numbers (LDN). */ +#define WPCD376I_FDC 0x00 /* Floppy */ +#define WPCD376I_LPT 0x01 /* Parallel port */ +/* 0x02 Undefined */ +#define WPCD376I_SP1 0x03 /* UART1 */ +#define WPCD376I_SWC 0x04 /* System wake-up control */ +#define WPCD376I_KBCM 0x05 /* PS/2 mouse */ +#define WPCD376I_KBCK 0x06 /* PS/2 keyboard */ +#define WPCD376I_GPIO 0x07 /* General Purpose I/O */ +#define WPCD376I_ECIR 0x15 /* Enhanced Consumer Infrared Functions (ECIR) */ +#define WPCD376I_IR 0x16 /* UART3 & Infrared port */ + +#endif