From e72a325c40f5b8177741d55856bf2e888a93449a Mon Sep 17 00:00:00 2001 From: Keith Hui Date: Fri, 24 Oct 2025 00:20:56 -0400 Subject: [PATCH] sio/nuvoton/nct{5535,6779}d: Use new common init code Retire the short-lived special setup to share C code between them, in favour of the common init code provided by CB:82632. Tested on asus/p8z77-m with SeaBIOS 1.17.0. Change-Id: I699fc08d9bfc56dad28eb20042884e979785c070 Signed-off-by: Keith Hui Reviewed-on: https://review.coreboot.org/c/coreboot/+/89744 Tested-by: build bot (Jenkins) Reviewed-by: Angel Pons --- src/superio/nuvoton/nct5535d/Makefile.mk | 2 +- .../nct5535d/{nct5535d.c => superio.c} | 5 +- src/superio/nuvoton/nct6779d/Makefile.mk | 3 +- src/superio/nuvoton/nct6779d/nct6779d.c | 42 ----------- src/superio/nuvoton/nct6779d/nct6779d.h | 4 - src/superio/nuvoton/nct6779d/superio.c | 74 ++++++++----------- 6 files changed, 37 insertions(+), 93 deletions(-) rename src/superio/nuvoton/nct5535d/{nct5535d.c => superio.c} (76%) delete mode 100644 src/superio/nuvoton/nct6779d/nct6779d.c diff --git a/src/superio/nuvoton/nct5535d/Makefile.mk b/src/superio/nuvoton/nct5535d/Makefile.mk index bfac11a5f6..1b48a19ec3 100644 --- a/src/superio/nuvoton/nct5535d/Makefile.mk +++ b/src/superio/nuvoton/nct5535d/Makefile.mk @@ -1,3 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-or-later -ramstage-$(CONFIG_SUPERIO_NUVOTON_NCT5535D) += nct5535d.c +ramstage-$(CONFIG_SUPERIO_NUVOTON_NCT5535D) += superio.c diff --git a/src/superio/nuvoton/nct5535d/nct5535d.c b/src/superio/nuvoton/nct5535d/superio.c similarity index 76% rename from src/superio/nuvoton/nct5535d/nct5535d.c rename to src/superio/nuvoton/nct5535d/superio.c index 0b183a8bc1..ef2209ce64 100644 --- a/src/superio/nuvoton/nct5535d/nct5535d.c +++ b/src/superio/nuvoton/nct5535d/superio.c @@ -2,10 +2,11 @@ #include #include +#include #include "nct5535d.h" -/* Initialization C code is provided by nct6779d */ +/* Initialization C code is provided by common code */ static struct pnp_info pnp_dev_info[] = { { NULL, NCT5535D_SP1, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, @@ -18,7 +19,7 @@ static struct pnp_info pnp_dev_info[] = { static void enable_dev(struct device *dev) { - pnp_enable_devices(dev, &_nuvoton_nct6779d_ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); + pnp_enable_devices(dev, &nuvoton_common_ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); } struct chip_operations superio_nuvoton_nct5535d_ops = { diff --git a/src/superio/nuvoton/nct6779d/Makefile.mk b/src/superio/nuvoton/nct6779d/Makefile.mk index 327081f7f9..d5476e4625 100644 --- a/src/superio/nuvoton/nct6779d/Makefile.mk +++ b/src/superio/nuvoton/nct6779d/Makefile.mk @@ -1,4 +1,3 @@ # SPDX-License-Identifier: GPL-2.0-or-later -ramstage-$(CONFIG_SUPERIO_NUVOTON_NCT6779D) += superio.c nct6779d.c -ramstage-$(CONFIG_SUPERIO_NUVOTON_NCT5535D) += superio.c +ramstage-$(CONFIG_SUPERIO_NUVOTON_NCT6779D) += superio.c diff --git a/src/superio/nuvoton/nct6779d/nct6779d.c b/src/superio/nuvoton/nct6779d/nct6779d.c deleted file mode 100644 index 940f600775..0000000000 --- a/src/superio/nuvoton/nct6779d/nct6779d.c +++ /dev/null @@ -1,42 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-or-later */ - -#include -#include -#include "nct6779d.h" - -static struct pnp_info pnp_dev_info[] = { - { NULL, NCT6779D_PP, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x0ff8, }, - { NULL, NCT6779D_SP1, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, - { NULL, NCT6779D_SP2, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, - { NULL, NCT6779D_KBC, PNP_IO0 | PNP_IO1 | PNP_IRQ0 | PNP_IRQ1, - 0x0fff, 0x0fff, }, - { NULL, NCT6779D_CIR, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, - { NULL, NCT6779D_ACPI, PNP_MSC2,}, - { NULL, NCT6779D_HWM_FPLED, PNP_IO0 | PNP_IO1 | PNP_IRQ0 | PNP_MSC0, - 0x0ffe, 0x0ffe, }, - { NULL, NCT6779D_WDT1}, - { NULL, NCT6779D_CIRWKUP, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, - { NULL, NCT6779D_GPIO_PP_OD}, - { NULL, NCT6779D_PRT80}, - { NULL, NCT6779D_DSLP}, - { NULL, NCT6779D_GPIOBASE, PNP_IO0, 0x0ff8, }, - { NULL, NCT6779D_GPIO0}, - { NULL, NCT6779D_GPIO1}, - { NULL, NCT6779D_GPIO2}, - { NULL, NCT6779D_GPIO3}, - { NULL, NCT6779D_GPIO4}, - { NULL, NCT6779D_GPIO5, PNP_MSC4 | PNP_MSC5}, - { NULL, NCT6779D_GPIO6, PNP_MSC4 | PNP_MSC5}, - { NULL, NCT6779D_GPIO7}, - { NULL, NCT6779D_GPIO8}, -}; - -static void enable_dev(struct device *dev) -{ - pnp_enable_devices(dev, &_nuvoton_nct6779d_ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); -} - -struct chip_operations superio_nuvoton_nct6779d_ops = { - .name = "NUVOTON NCT6779D Super I/O", - .enable_dev = enable_dev, -}; diff --git a/src/superio/nuvoton/nct6779d/nct6779d.h b/src/superio/nuvoton/nct6779d/nct6779d.h index 133450a083..63b7b0e914 100644 --- a/src/superio/nuvoton/nct6779d/nct6779d.h +++ b/src/superio/nuvoton/nct6779d/nct6779d.h @@ -3,8 +3,6 @@ #ifndef SUPERIO_NUVOTON_NCT6779D_H #define SUPERIO_NUVOTON_NCT6779D_H -#include - /* Logical Device Numbers (LDN). */ #define NCT6779D_PP 0x01 /* Parallel port */ #define NCT6779D_SP1 0x02 /* Com1 */ @@ -36,6 +34,4 @@ #define NCT6779D_GPIO7 ((7 << 8) | NCT6779D_GPIO12345678_V) #define NCT6779D_GPIO8 ((0 << 8) | NCT6779D_GPIO12345678_V) -extern struct device_operations _nuvoton_nct6779d_ops; - #endif /* SUPERIO_NUVOTON_NCT6779D_H */ diff --git a/src/superio/nuvoton/nct6779d/superio.c b/src/superio/nuvoton/nct6779d/superio.c index 262170770c..785c30059c 100644 --- a/src/superio/nuvoton/nct6779d/superio.c +++ b/src/superio/nuvoton/nct6779d/superio.c @@ -2,53 +2,43 @@ #include #include -#include -#include -#include +#include #include "nct6779d.h" -/* C code shared by NCT6779D and NCT5535D */ +static struct pnp_info pnp_dev_info[] = { + { NULL, NCT6779D_PP, PNP_IO0 | PNP_IRQ0 | PNP_DRQ0, 0x0ff8, }, + { NULL, NCT6779D_SP1, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, + { NULL, NCT6779D_SP2, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, + { NULL, NCT6779D_KBC, PNP_IO0 | PNP_IO1 | PNP_IRQ0 | PNP_IRQ1, + 0x0fff, 0x0fff, }, + { NULL, NCT6779D_CIR, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, + { NULL, NCT6779D_ACPI, PNP_MSC2,}, + { NULL, NCT6779D_HWM_FPLED, PNP_IO0 | PNP_IO1 | PNP_IRQ0 | PNP_MSC0, + 0x0ffe, 0x0ffe, }, + { NULL, NCT6779D_WDT1}, + { NULL, NCT6779D_CIRWKUP, PNP_IO0 | PNP_IRQ0, 0x0ff8, }, + { NULL, NCT6779D_GPIO_PP_OD}, + { NULL, NCT6779D_PRT80}, + { NULL, NCT6779D_DSLP}, + { NULL, NCT6779D_GPIOBASE, PNP_IO0, 0x0ff8, }, + { NULL, NCT6779D_GPIO0}, + { NULL, NCT6779D_GPIO1}, + { NULL, NCT6779D_GPIO2}, + { NULL, NCT6779D_GPIO3}, + { NULL, NCT6779D_GPIO4}, + { NULL, NCT6779D_GPIO5, PNP_MSC4 | PNP_MSC5}, + { NULL, NCT6779D_GPIO6, PNP_MSC4 | PNP_MSC5}, + { NULL, NCT6779D_GPIO7}, + { NULL, NCT6779D_GPIO8}, +}; -#define MAINBOARD_POWER_OFF 0 -#define MAINBOARD_POWER_ON 1 -#define MAINBOARD_POWER_KEEP 2 - -static void nct6779d_init(struct device *dev) +static void enable_dev(struct device *dev) { - uint8_t byte, power_status; - - if (!dev->enabled) - return; - - switch (dev->path.pnp.device) { - /* TODO: Might potentially need code for HWM or FDC etc. */ - case NCT6779D_KBC: - pc_keyboard_init(NO_AUX_DEVICE); - break; - case NCT6779D_ACPI: - /* Set power state after power fail */ - power_status = get_uint_option("power_on_after_fail", - CONFIG_MAINBOARD_POWER_FAILURE_STATE); - pnp_enter_conf_mode(dev); - pnp_set_logical_device(dev); - byte = pnp_read_config(dev, 0xe4) & ~0x60; - if (power_status == MAINBOARD_POWER_ON) - byte |= (MAINBOARD_POWER_ON << 5); - else if (power_status == MAINBOARD_POWER_KEEP) - byte |= (MAINBOARD_POWER_KEEP << 5); - pnp_write_config(dev, 0xe4, byte); - pnp_exit_conf_mode(dev); - printk(BIOS_INFO, "set power %s after power fail\n", power_status ? "on" : "off"); - break; - } + pnp_enable_devices(dev, &nuvoton_common_ops, ARRAY_SIZE(pnp_dev_info), pnp_dev_info); } -struct device_operations _nuvoton_nct6779d_ops = { - .read_resources = pnp_read_resources, - .set_resources = pnp_set_resources, - .enable_resources = pnp_enable_resources, - .enable = pnp_alt_enable, - .init = nct6779d_init, - .ops_pnp_mode = &pnp_conf_mode_8787_aa, +struct chip_operations superio_nuvoton_nct6779d_ops = { + .name = "NUVOTON NCT6779D Super I/O", + .enable_dev = enable_dev, };