From 8ea9c845860486974c0c773d4adc814bd44541c9 Mon Sep 17 00:00:00 2001 From: CSE CI Date: Fri, 18 Sep 2026 00:00:46 +0000 Subject: [PATCH 1/2] deploy: 708169574094671a7406d54cf946d56e62edb581 patch ci Signed-off-by: CSE CI --- .github/workflows/top-level.yml | 100 ++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 .github/workflows/top-level.yml diff --git a/.github/workflows/top-level.yml b/.github/workflows/top-level.yml new file mode 100644 index 00000000000000..1cb128ce3caeb2 --- /dev/null +++ b/.github/workflows/top-level.yml @@ -0,0 +1,100 @@ +name: Kernel build + +on: + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +jobs: + checks: + uses: analogdevicesinc/linux/.github/workflows/checks.yml@ci + if: (github.event_name != 'push' || github.repository_owner == 'analogdevicesinc') + secrets: inherit + permissions: + contents: read + build_gcc_x86_64: + uses: analogdevicesinc/linux/.github/workflows/build.yml@ci + needs: [checks] + if: needs.checks.outputs.fatal != 'true' + secrets: inherit + permissions: + contents: read + with: + compiler: "gcc" + arch: "x86" + defconfig: "adi_ci_defconfig" + build_llvm_x86_64: + uses: analogdevicesinc/linux/.github/workflows/build.yml@ci + needs: [checks] + if: needs.checks.outputs.fatal != 'true' + secrets: inherit + permissions: + contents: read + with: + compiler: "llvm" + arch: "x86" + defconfig: "adi_ci_defconfig" + checks: true + build_gcc_aarch64: + uses: analogdevicesinc/linux/.github/workflows/build.yml@ci + needs: [checks] + if: needs.checks.outputs.fatal != 'true' + secrets: inherit + permissions: + contents: read + with: + compiler: "gcc" + arch: "arm64" + defconfig: "adi_ci_defconfig" + build_gcc_arm: + uses: analogdevicesinc/linux/.github/workflows/build.yml@ci + if: (github.event_name != 'push' || github.repository_owner == 'analogdevicesinc') + secrets: inherit + permissions: + contents: read + with: + compiler: "gcc" + arch: "arm" + defconfig: "adi_ci_defconfig" + checks: true + assert_checks: + runs-on: ${{ vars.RUNNER != '' && fromJSON(vars.RUNNER) || 'ubuntu-slim' }} + permissions: + contents: read + needs: + - checks + - build_gcc_x86_64 + - build_llvm_x86_64 + - build_gcc_aarch64 + - build_gcc_arm + + steps: + - name: Assert + env: + job_checks: ${{ needs.checks.outputs.summary }} + job_build_gcc_x86_64: ${{ needs.build_gcc_x86_64.outputs.summary }} + job_build_llvm_x86_64: ${{ needs.build_llvm_x86_64.outputs.summary }} + job_build_gcc_aarch64: ${{ needs.build_gcc_aarch64.outputs.summary }} + job_build_gcc_arm: ${{ needs.build_gcc_arm.outputs.summary }} + run: | + curl -s -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}" -L -o runner_env.sh \ + https://raw.githubusercontent.com/analogdevicesinc/linux/ci/ci/runner_env.sh + source ./runner_env.sh + assert_job_summary + + deploy_cloudsmith_checks: + needs: [assert_checks] + if: ${{ github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'push' }} + uses: analogdevicesinc/linux/.github/workflows/upload-to-cloudsmith.yml@ci + secrets: + CLOUDSMITH_SERVICE_SLUG: ${{ secrets.CLOUDSMITH_SERVICE_SLUG }} + CLOUDSMITH_API_KEY: ${{ secrets.CLOUDSMITH_API_KEY }} + permissions: + id-token: write + contents: read + actions: read + with: + artifacts: > + adi_ci_defconfig-* From c437e24a450ca809213512afc37e732bce91d892 Mon Sep 17 00:00:00 2001 From: Alexis Czezar Torreno Date: Thu, 17 Sep 2026 08:37:12 +0800 Subject: [PATCH 2/2] hwmon: (pmbus/max34440): add support for adpm12886 ADPM12886 is a 1/8 brick DC/DC converter that provides up to 98% efficiency at half load. Can sustain output power of 1200W. Uses PMBUS. Signed-off-by: Alexis Czezar Torreno --- Documentation/hwmon/max34440.rst | 26 +++++++++++----- drivers/hwmon/pmbus/Kconfig | 2 +- drivers/hwmon/pmbus/max34440.c | 51 ++++++++++++++++++++++++++++---- 3 files changed, 64 insertions(+), 15 deletions(-) diff --git a/Documentation/hwmon/max34440.rst b/Documentation/hwmon/max34440.rst index 8ce10aa425d5db..a4848da495e6d8 100644 --- a/Documentation/hwmon/max34440.rst +++ b/Documentation/hwmon/max34440.rst @@ -35,6 +35,14 @@ Supported chips: Datasheet: - + * ADI ADPM12886 + + Prefixes: 'adpm12886' + + Addresses scanned: - + + Datasheet: - + * Maxim MAX34440 Prefixes: 'max34440' @@ -113,11 +121,12 @@ This driver supports multiple devices: hardware monitoring for Maxim MAX34440 PMBus 6-Channel Power-Supply Manager, MAX34441 PMBus 5-Channel Power-Supply Manager and Intelligent Fan Controller, and MAX34446 PMBus Power-Supply Data Logger; PMBus Voltage Monitor and Sequencers for MAX34451, MAX34452, MAX34460, -and MAX34461; PMBus DC/DC Power Module ADPM12160, ADPM12200, ADPM12250 and -ADPM12300. The MAX34451 and MAX34452 support monitoring voltage or current of 16 -channels based on GIN pins. The MAX34460 supports 12 voltage channels, and the -MAX34461 supports 16 voltage channels. The ADPM12160, ADPM12200, ADPM12250 and -ADPM12300 also monitor both input and output of voltage and current. +and MAX34461; PMBus DC/DC Power Module ADPM12160, ADPM12200, ADPM12250, +ADPM12300, and ADPM12886. The MAX34451 and MAX34452 support monitoring voltage +or current of 16 channels based on GIN pins. The MAX34460 supports 12 voltage +channels, and the MAX34461 supports 16 voltage channels. The ADPM12160, ADPM12200, +ADPM12250, ADPM12300, and ADPM12886 also monitor both input and output of voltage +and current. The driver is a client driver to the core PMBus driver. Please see Documentation/hwmon/pmbus.rst for details on PMBus client drivers. @@ -175,7 +184,7 @@ in[1-6]_reset_history Write any value to reset history. .. note:: - MAX34446 only supports in[1-4]. - - ADPM12160, ADPM12200, ADPM12250, and ADPM12300 only supports in[1-2]. + - ADPM12160, ADPM12200, ADPM12250, ADPM12300, and ADPM12886 only supports in[1-2]. Label is "vin1" and "vout1" respectively. Curr @@ -198,9 +207,10 @@ curr[1-6]_reset_history Write any value to reset history. - in6 and curr6 attributes only exist for MAX34440. - MAX34446 only supports curr[1-4]. - - For ADPM12160, ADPM12200, ADPM12250, and ADPM12300, curr[1] is "iin1" + - For ADPM12160, ADPM12200, ADPM12250, ADPM12300, and ADPM12886, curr[1] is "iin1" - For ADPM12160, and ADPM12200 curr[2-6] are "iout[1-5]". - For ADPM12250, and ADPM12300 curr[2-4] are "iout[1-3]". + - For ADPM12886 curr[2-3] are "iout[1-2]". Power ~~~~~ @@ -236,7 +246,7 @@ temp[1-8]_reset_history Write any value to reset history. .. note:: - temp7 and temp8 attributes only exist for MAX34440. - MAX34446 only supports temp[1-3]. - - ADPM12160, ADPM12200, ADPM12250, and ADPM12300 only supports temp[1]. + - ADPM12160, ADPM12200, ADPM12250, ADPM12300, and ADPM12886 only supports temp[1]. .. note:: diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig index 43abc5d226a8ad..fa921b115ee820 100644 --- a/drivers/hwmon/pmbus/Kconfig +++ b/drivers/hwmon/pmbus/Kconfig @@ -455,7 +455,7 @@ config SENSORS_MAX34440 If you say yes here you get hardware monitoring support for Maxim MAX34440, MAX34441, MAX34446, MAX34451, MAX34452, MAX34460, and MAX34461. Other compatible devices are ADPM12160, ADPM12200, - ADPM12250, and ADPM12300. + ADPM12250, ADPM12300, and ADPM12886. This driver can also be built as a module. If so, the module will be called max34440. diff --git a/drivers/hwmon/pmbus/max34440.c b/drivers/hwmon/pmbus/max34440.c index 7f71dfe4864387..c088a57d227f56 100644 --- a/drivers/hwmon/pmbus/max34440.c +++ b/drivers/hwmon/pmbus/max34440.c @@ -19,6 +19,7 @@ enum chips { adpm12160, adpm12200, adpm12250, + adpm12886, max34440, max34441, max34446, @@ -114,7 +115,7 @@ static int max34440_read_word_data(struct i2c_client *client, int page, */ if (data->id == max34451 || data->id == max34452 || data->id == adpm12160 || data->id == adpm12200 || - data->id == adpm12250) + data->id == adpm12250 || data->id == adpm12886) return -ENXIO; ret = -ENODATA; break; @@ -133,7 +134,8 @@ static int max34440_read_word_data(struct i2c_client *client, int page, case PMBUS_VIRT_READ_IOUT_AVG: if (data->id != max34446 && data->id != max34451 && data->id != max34452 && data->id != adpm12160 && - data->id != adpm12200 && data->id != adpm12250) + data->id != adpm12200 && data->id != adpm12250 && + data->id != adpm12886) return -ENXIO; ret = pmbus_read_word_data(client, page, phase, MAX34446_MFR_IOUT_AVG); @@ -223,7 +225,8 @@ static int max34440_write_word_data(struct i2c_client *client, int page, MAX34440_MFR_IOUT_PEAK, 0); if (!ret && (data->id == max34446 || data->id == max34451 || data->id == max34452 || data->id == adpm12160 || - data->id == adpm12200 || data->id == adpm12250)) + data->id == adpm12200 || data->id == adpm12250 || + data->id == adpm12886)) ret = pmbus_write_word_data(client, page, MAX34446_MFR_IOUT_AVG, 0); @@ -297,7 +300,7 @@ static int max34451_read_byte_data(struct i2c_client *client, int page, int reg) */ if (data->id == max34451 || data->id == max34452 || data->id == adpm12160 || data->id == adpm12200 || - data->id == adpm12250) + data->id == adpm12250 || data->id == adpm12886) return -ENXIO; return -ENODATA; default: @@ -321,7 +324,7 @@ static int max34451_write_byte_data(struct i2c_client *client, int page, */ if (data->id == max34451 || data->id == max34452 || data->id == adpm12160 || data->id == adpm12200 || - data->id == adpm12250) + data->id == adpm12250 || data->id == adpm12886) return -ENXIO; return -ENODATA; default: @@ -539,6 +542,41 @@ static struct pmbus_driver_info max34440_info[] = { .write_byte_data = max34451_write_byte_data, .write_word_data = max34440_write_word_data, }, + [adpm12886] = { + .pages = 19, + .format[PSC_VOLTAGE_IN] = direct, + .format[PSC_VOLTAGE_OUT] = direct, + .format[PSC_CURRENT_IN] = direct, + .format[PSC_CURRENT_OUT] = direct, + .format[PSC_TEMPERATURE] = direct, + .m[PSC_VOLTAGE_IN] = 125, + .b[PSC_VOLTAGE_IN] = 0, + .R[PSC_VOLTAGE_IN] = 0, + .m[PSC_VOLTAGE_OUT] = 125, + .b[PSC_VOLTAGE_OUT] = 0, + .R[PSC_VOLTAGE_OUT] = 0, + .m[PSC_CURRENT_IN] = 250, + .b[PSC_CURRENT_IN] = 0, + .R[PSC_CURRENT_IN] = -1, + .m[PSC_CURRENT_OUT] = 250, + .b[PSC_CURRENT_OUT] = 0, + .R[PSC_CURRENT_OUT] = -1, + .m[PSC_TEMPERATURE] = 1, + .b[PSC_TEMPERATURE] = 0, + .R[PSC_TEMPERATURE] = 2, + /* absent func below [18] are not for monitoring */ + .func[2] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT, + .func[4] = PMBUS_HAVE_STATUS_IOUT, + .func[5] = PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT, + .func[9] = PMBUS_HAVE_VIN | PMBUS_HAVE_STATUS_INPUT, + .func[10] = PMBUS_HAVE_IIN | PMBUS_HAVE_STATUS_INPUT, + .func[14] = PMBUS_HAVE_IOUT, + .func[18] = PMBUS_HAVE_TEMP | PMBUS_HAVE_STATUS_TEMP, + .read_byte_data = max34451_read_byte_data, + .read_word_data = max34440_read_word_data, + .write_byte_data = max34451_write_byte_data, + .write_word_data = max34440_write_word_data, + }, [max34440] = { .pages = 14, .format[PSC_VOLTAGE_IN] = direct, @@ -804,7 +842,7 @@ static int max34440_probe(struct i2c_client *client) if (rv) return rv; } else if (data->id == adpm12160 || data->id == adpm12200 || - data->id == adpm12250) { + data->id == adpm12250 || data->id == adpm12886) { data->iout_oc_fault_limit = PMBUS_IOUT_OC_FAULT_LIMIT; data->iout_oc_warn_limit = PMBUS_IOUT_OC_WARN_LIMIT; } @@ -818,6 +856,7 @@ static const struct i2c_device_id max34440_id[] = { { .name = "adpm12200", .driver_data = adpm12200 }, { .name = "adpm12250", .driver_data = adpm12250 }, { .name = "adpm12300", .driver_data = adpm12250 }, + { .name = "adpm12886", .driver_data = adpm12886 }, { .name = "max34440", .driver_data = max34440 }, { .name = "max34441", .driver_data = max34441 }, { .name = "max34446", .driver_data = max34446 },