From 5963e4f85dd991e13068ce8a679ea70ca3fd0af6 Mon Sep 17 00:00:00 2001 From: vincent_chiang Date: Thu, 18 Jun 2026 03:52:13 +0000 Subject: [PATCH] [AS5812-54X] Upgrade kernel from 4.14 to 6.12 - modules/PKG.yml, modules/builds/Makefile: use onl-kernel-6.12-lts-x86-64-all - modules/builds: move drivers into src/ subdir with explicit Kbuild (obj-m += ...) so cross-module EXPORT_SYMBOL refs resolve at modpost time; required because newer kbuild won't treat sibling .c files as a single module group - platform-config r0 yml: kernel anchor *kernel-6-12 - cpld: i2c_driver.probe() single-arg signature + use i2c_client_get_device_id(); i2c_mux_add_adapter() loses the removed `class` arg; i2c_driver.remove() returns void - psu: i2c_driver.probe() single-arg signature + use i2c_client_get_device_id(); i2c_driver.remove() returns void - fan/leds: platform_driver.remove() returns void per kernel 6.11+ API - onlp platform_lib.h: IDPROM_PATH switch from /sys/devices/pci0000:00/.../1-0057 to /sys/bus/i2c/devices/1-0057 (old path no longer enumerates on 6.12) - onlp sysi.c: zero-init onlp_onie_info_t to avoid double-free on the failure path Co-Authored-By: Claude Opus 4.7 --- .../accton/x86-64/as5812-54x/modules/PKG.yml | 2 +- .../x86-64/as5812-54x/modules/builds/Makefile | 4 ++-- .../x86-64/as5812-54x/modules/builds/src/Makefile | 4 ++++ .../{ => src}/x86-64-accton-as5812-54x-cpld.c | 13 +++++-------- .../builds/{ => src}/x86-64-accton-as5812-54x-fan.c | 4 +--- .../{ => src}/x86-64-accton-as5812-54x-leds.c | 4 +--- .../builds/{ => src}/x86-64-accton-as5812-54x-psu.c | 8 +++----- .../module/src/platform_lib.h | 2 +- .../x86_64_accton_as5812_54x/module/src/sysi.c | 2 +- .../r0/src/lib/x86-64-accton-as5812-54x-r0.yml | 2 +- 10 files changed, 20 insertions(+), 25 deletions(-) create mode 100644 packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/Makefile rename packages/platforms/accton/x86-64/as5812-54x/modules/builds/{ => src}/x86-64-accton-as5812-54x-cpld.c (99%) rename packages/platforms/accton/x86-64/as5812-54x/modules/builds/{ => src}/x86-64-accton-as5812-54x-fan.c (99%) rename packages/platforms/accton/x86-64/as5812-54x/modules/builds/{ => src}/x86-64-accton-as5812-54x-leds.c (99%) rename packages/platforms/accton/x86-64/as5812-54x/modules/builds/{ => src}/x86-64-accton-as5812-54x-psu.c (98%) diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/PKG.yml b/packages/platforms/accton/x86-64/as5812-54x/modules/PKG.yml index 2b9ed5d3a..b97c54e57 100644 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/PKG.yml +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/PKG.yml @@ -1 +1 @@ -!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as5812-54x ARCH=amd64 KERNELS="onl-kernel-4.14-lts-x86-64-all:amd64" +!include $ONL_TEMPLATES/platform-modules.yml VENDOR=accton BASENAME=x86-64-accton-as5812-54x ARCH=amd64 KERNELS="onl-kernel-6.12-lts-x86-64-all:amd64" diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/Makefile b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/Makefile index 1ef230f44..c99ee52ba 100644 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/Makefile +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/Makefile @@ -1,5 +1,5 @@ -KERNELS := onl-kernel-4.14-lts-x86-64-all:amd64 -KMODULES := $(wildcard *.c) +KERNELS := onl-kernel-6.12-lts-x86-64-all:amd64 +KMODULES := src VENDOR := accton BASENAME := x86-64-accton-as5812-54x ARCH := x86_64 diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/Makefile b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/Makefile new file mode 100644 index 000000000..bab1814d4 --- /dev/null +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/Makefile @@ -0,0 +1,4 @@ +obj-m += x86-64-accton-as5812-54x-cpld.o +obj-m += x86-64-accton-as5812-54x-fan.o +obj-m += x86-64-accton-as5812-54x-leds.o +obj-m += x86-64-accton-as5812-54x-psu.o diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-cpld.c similarity index 99% rename from packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c rename to packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-cpld.c index 16453bf33..52a89bf05 100644 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-cpld.c +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-cpld.c @@ -1042,11 +1042,11 @@ static ssize_t show_version(struct device *dev, struct device_attribute *attr, c /* * I2C init/probing/exit functions */ -static int as5812_54x_cpld_mux_probe(struct i2c_client *client, - const struct i2c_device_id *id) +static int as5812_54x_cpld_mux_probe(struct i2c_client *client) { + const struct i2c_device_id *id = i2c_client_get_device_id(client); struct i2c_adapter *adap = to_i2c_adapter(client->dev.parent); - int num, force, class; + int num, force; struct i2c_mux_core *muxc; struct as5812_54x_cpld_data *data; int ret = 0; @@ -1071,9 +1071,8 @@ static int as5812_54x_cpld_mux_probe(struct i2c_client *client, /* Now create an adapter for each channel */ for (num = 0; num < chips[data->type].nchans; num++) { force = 0; /* dynamic adap number */ - class = 0; /* no class by default */ - ret = i2c_mux_add_adapter(muxc, force, num, class); + ret = i2c_mux_add_adapter(muxc, force, num); if (ret) { dev_err(&client->dev, @@ -1127,7 +1126,7 @@ static int as5812_54x_cpld_mux_probe(struct i2c_client *client, return ret; } -static int as5812_54x_cpld_mux_remove(struct i2c_client *client) +static void as5812_54x_cpld_mux_remove(struct i2c_client *client) { struct i2c_mux_core *muxc = i2c_get_clientdata(client); struct as5812_54x_cpld_data *data = i2c_mux_priv(muxc); @@ -1155,8 +1154,6 @@ static int as5812_54x_cpld_mux_remove(struct i2c_client *client) } i2c_mux_del_adapters(muxc); - - return 0; } static int as5812_54x_cpld_read_internal(struct i2c_client *client, u8 reg) diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-fan.c similarity index 99% rename from packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c rename to packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-fan.c index e04e98d84..c8950eee9 100755 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-fan.c +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-fan.c @@ -371,12 +371,10 @@ static int accton_as5812_54x_fan_probe(struct platform_device *pdev) return status; } -static int accton_as5812_54x_fan_remove(struct platform_device *pdev) +static void accton_as5812_54x_fan_remove(struct platform_device *pdev) { hwmon_device_unregister(fan_data->hwmon_dev); sysfs_remove_group(&fan_data->pdev->dev.kobj, &accton_as5812_54x_fan_group); - - return 0; } #define DRVNAME "as5812_54x_fan" diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-leds.c similarity index 99% rename from packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c rename to packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-leds.c index 16c5f5d64..b5da3eec3 100755 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-leds.c +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-leds.c @@ -521,15 +521,13 @@ static int accton_as5812_54x_led_probe(struct platform_device *pdev) return ret; } -static int accton_as5812_54x_led_remove(struct platform_device *pdev) +static void accton_as5812_54x_led_remove(struct platform_device *pdev) { int i; for (i = 0; i < ARRAY_SIZE(accton_as5812_54x_leds); i++) { led_classdev_unregister(&accton_as5812_54x_leds[i]); } - - return 0; } static struct platform_driver accton_as5812_54x_led_driver = { diff --git a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-psu.c b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-psu.c similarity index 98% rename from packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-psu.c rename to packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-psu.c index c31b2ab6d..436232baa 100755 --- a/packages/platforms/accton/x86-64/as5812-54x/modules/builds/x86-64-accton-as5812-54x-psu.c +++ b/packages/platforms/accton/x86-64/as5812-54x/modules/builds/src/x86-64-accton-as5812-54x-psu.c @@ -197,9 +197,9 @@ static const struct attribute_group as5812_54x_psu_group = { .attrs = as5812_54x_psu_attributes, }; -static int as5812_54x_psu_probe(struct i2c_client *client, - const struct i2c_device_id *dev_id) +static int as5812_54x_psu_probe(struct i2c_client *client) { + const struct i2c_device_id *dev_id = i2c_client_get_device_id(client); struct as5812_54x_psu_data *data; int status; @@ -248,15 +248,13 @@ static int as5812_54x_psu_probe(struct i2c_client *client, return status; } -static int as5812_54x_psu_remove(struct i2c_client *client) +static void as5812_54x_psu_remove(struct i2c_client *client) { struct as5812_54x_psu_data *data = i2c_get_clientdata(client); hwmon_device_unregister(data->hwmon_dev); sysfs_remove_group(&client->dev.kobj, &as5812_54x_psu_group); kfree(data); - - return 0; } enum psu_index diff --git a/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/platform_lib.h b/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/platform_lib.h index 076e68499..bb9401b5b 100755 --- a/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/platform_lib.h +++ b/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/platform_lib.h @@ -54,7 +54,7 @@ #define PSU1_AC_3YPOWER_EEPROM_NODE(node) PSU1_AC_3YPOWER_EEPROM_PREFIX#node #define PSU2_AC_3YPOWER_EEPROM_NODE(node) PSU2_AC_3YPOWER_EEPROM_PREFIX#node -#define IDPROM_PATH "/sys/devices/pci0000:00/0000:00:13.0/i2c-1/1-0057/eeprom" +#define IDPROM_PATH "/sys/bus/i2c/devices/1-0057/eeprom" int deviceNodeWriteInt(char *filename, int value, int data_len); int deviceNodeReadBinary(char *filename, char *buffer, int buf_size, int data_len); diff --git a/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/sysi.c b/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/sysi.c index e7a51bf22..f7f847266 100644 --- a/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/sysi.c +++ b/packages/platforms/accton/x86-64/as5812-54x/onlp/builds/x86_64_accton_as5812_54x/module/src/sysi.c @@ -91,7 +91,7 @@ onlp_sysi_platform_info_get(onlp_platform_info_t* pi) { int i, siz=NUM_OF_CPLD, v[NUM_OF_CPLD]={0}; int fd, len, nbytes = 10; - onlp_onie_info_t onie; + onlp_onie_info_t onie = {0}; char r_data[10] = {0}; char fullpath[65] = {0}; char *bios_ver = NULL; diff --git a/packages/platforms/accton/x86-64/as5812-54x/platform-config/r0/src/lib/x86-64-accton-as5812-54x-r0.yml b/packages/platforms/accton/x86-64/as5812-54x/platform-config/r0/src/lib/x86-64-accton-as5812-54x-r0.yml index 75d59fb63..f8410f03a 100644 --- a/packages/platforms/accton/x86-64/as5812-54x/platform-config/r0/src/lib/x86-64-accton-as5812-54x-r0.yml +++ b/packages/platforms/accton/x86-64/as5812-54x/platform-config/r0/src/lib/x86-64-accton-as5812-54x-r0.yml @@ -18,7 +18,7 @@ x86-64-accton-as5812-54x-r0: --stop=1 kernel: - <<: *kernel-4-14 + <<: *kernel-6-12 args: >- nopat