Commit Graph

97 Commits

Author SHA1 Message Date
Ivan Vecera e9a1df0e51 platform: mellanox: mlx-platform: Initialize shift variable to 0
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 1a0009abfa7893b9cfcd3884658af1cbee6b26ce
Author: Hans de Goede <hdegoede@redhat.com>
Date:   Tue Mar 7 11:58:42 2023 +0100

    platform: mellanox: mlx-platform: Initialize shift variable to 0

    Initialize shift variable in mlxplat_mlxcpld_verify_bus_topology()
    to 0 to avoid the following compile error:

    drivers/platform/x86/mlx-platform.c:6013
     mlxplat_mlxcpld_verify_bus_topology() error: uninitialized symbol 'shift'.

    Fixes: 50b823fdd357 ("platform: mellanox: mlx-platform: Move bus shift assignment out of the loop")
    Cc: Vadim Pasternak <vadimp@nvidia.com>
    Cc: Michael Shych <michaelsh@nvidia.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Link: https://lore.kernel.org/r/20230307105842.286118-1-hdegoede@redhat.com

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:21:03 +02:00
Ivan Vecera 3e6c95a088 platform: mellanox: mlx-platform: Move bus shift assignment out of the loop
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 50b823fdd357ec0f2fd0a1a0b5104704916fd620
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:29 2023 +0200

    platform: mellanox: mlx-platform: Move bus shift assignment out of the loop

    Move assignment of bus shift setting out of the loop to avoid redundant
    operation.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-13-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:21:00 +02:00
Ivan Vecera 52d96409c5 platform: mellanox: mlx-platform: Add mux selection register to regmap
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit cefdbc7815660be4d0f2d290860dcfb0f9d285e4
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:28 2023 +0200

    platform: mellanox: mlx-platform: Add mux selection register to regmap

    Extend writeable, readable, volatile registers of the 'regmap' object
    with for I2C mux selector registers.

    The motivation is to pass this object extended with selector registers
    to I2C mux driver working over ‘regmap’.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-12-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:21:00 +02:00
Ivan Vecera 3de09417f5 platform: mellanox: Extend all systems with I2C notification callback
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 233fd7e44cd7363ede8025619291b98475024c30
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:25 2023 +0200

    platform: mellanox: Extend all systems with I2C notification callback

    Motivation is to provide synchronization between I2C main bus and other
    platform drivers using this notification callback.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-9-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:57 +02:00
Ivan Vecera f644c8cdc2 platform: mellanox: Split logic in init and exit flow
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 158cd83207768abdba86e408fed3169bb3ad3e9f
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:24 2023 +0200

    platform: mellanox: Split logic in init and exit flow

    Split logic in mlxplat_init()/mlxplat_exit() routines.
    Separate initialization of I2C infrastructure and others platform
    drivers.

    Motivation is to provide synchronization between I2C bus and mux
    drivers and other drivers using this infrastructure.
    I2C main bus and MUX busses are implemented in FPGA logic. On some new
    systems the numbers allocated for these busses could be variable
    depending on order of initialization of I2C native busses. Since bus
    numbers are passed to some other platform drivers during initialization
    flow, it is necessary to synchronize completion of I2C infrastructure
    drivers and activation of rest of drivers.

    Thus initialization flow will be performed in synchronized order.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-8-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:53 +02:00
Ivan Vecera 38553b1696 platform: mellanox: Split initialization procedure
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 0170f616f496fcaf25dde0fea042880d4af3089a
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:23 2023 +0200

    platform: mellanox: Split initialization procedure

    Split mlxplat_init() into two by adding mlxplat_pre_init().

    Motivation is to prepare 'mlx-platform' driver to support systems
    equipped PCIe based programming logic device.

    Such systems are supposed to use different system resources, thus this
    commit separates resources allocation related code.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-7-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:52 +02:00
Ivan Vecera d5a52b3871 platform: mellanox: Introduce support of new Nvidia L1 switch
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit dd635e33b5c9a3ad3712abae7b845f4353da8cef
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:22 2023 +0200

    platform: mellanox: Introduce support of new Nvidia L1 switch

    Add support for new L1 switch nodes providing L1 connectivity for
    multi-node networking chassis.

    The purpose is to provide compute server with full management and IO
    subsystems with connections to L1 switches.

    System contains the following components:
    - COMe module based on Intel Coffee Lake CPU
    - Switch baseboard with two ASICs, while
      24 ports of each ASICs are connected to one backplane connector
      32 ports of each ASIC are connected to 8 OSFPs
    - Integrated 60mm dual-rotor FANs inside L1 node (N+2 redundancy)
    - Support 48V or 54V DC input from the external power server.

    Add the structures related to the new systems to allow proper activation
    of the all required platform driver.

    Add poweroff callback to support deep power cycle flow, which should
    include special actions against CPLD device for performing graceful
    operation.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-6-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:51 +02:00
Ivan Vecera d4b38054a9 platform: mellanox: Introduce support for next-generation 800GB/s switch
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit fcf3790b9b63b27ac0269c2285021139a0798a7b
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:21 2023 +0200

    platform: mellanox: Introduce support for next-generation 800GB/s switch

    Introduce support for Nvidia next-generation 800GB/s ethernet switch
    SN5600.

    SN5600 is 51.2 Tbps Ethernet switch based on Nvidia Spectrum-4 ASIC.
    It can provide up to 64x800Gb/s (ETH) full bidirectional bandwidth per
    port using PAM-4 modulations. The system supports 64 Belly to Belly 2x4
    OSFP cages.
    The switch was designed to fit standard 2U racks.

    Features:
    - 64 OSFP ports support 800GbE - 10GbE speed.
    - Additional 25GbE - 1GbE service port on the front panel.
    - Air-cooled with 3 + 1 redundant fan units.
    - 1 + 1 redundant 3000W or 3600W PSUs.
    - System management board is based on Intel Coffee-lake CPU E-2276
      with secure-boot support.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-5-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:50 +02:00
Ivan Vecera 45444cda8e platform: mellanox: Cosmetic changes - rename to more common name
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit acc6ea304590f5ec1590e328c7ae0584f7dd77be
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:20 2023 +0200

    platform: mellanox: Cosmetic changes - rename to more common name

    Rename 'nvlink_blade' in several declaration to more common name
    "chassis_blade", since these names are going to be used for different
    kinds of blades.

    Fix 'swicth' to 'switch' in comment.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-4-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:49 +02:00
Ivan Vecera d6771230f2 platform: mellanox: Change "reset_pwr_converter_fail" attribute
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit 488f0fca0db00257c42d44857061bc6726adaa15
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:19 2023 +0200

    platform: mellanox: Change "reset_pwr_converter_fail" attribute

    Change "reset_voltmon_upgrade_fail" attribute name to
    "reset_pwr_converter_fail".

    For systems using "mlxplat_mlxcpld_default_ng_regs_io_data", relevant
    CPLD 'register.bit' indicates the failure of power converter, while on
    older systems same 'register.bit' indicates failure of voltage monitor
    devices upgrade failure.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-3-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:48 +02:00
Ivan Vecera 7e586d3953 platform: mellanox: Introduce support for rack manager switch
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

commit f8dacbf7da2e02d4c0c543cf5c277c906a2bb042
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Wed Feb 8 08:33:18 2023 +0200

    platform: mellanox: Introduce support for rack manager switch

    The rack switch is designed to provide high bandwidth, low latency
    connectivity using optical fiber as the primary interconnect.

    System supports 32 OSFP ports, non-blocking switching capacity of
    25.6Tbps.
    System equipped with:
    - 2 replaceable power supplies (AC) with 1+1 redundancy model.
    - 7 replaceable fan drawers with 6+1 redundancy model.
    - 2 External Root of Trust or EROT (Glacier) devices for securing
      ASICs firmware.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20230208063331.15560-2-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:47 +02:00
Ivan Vecera 14bf7c1e4a platform/x86: use PLATFORM_DEVID_NONE instead of -1
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2196494

Conflicts:
- only mellanox platform related change

commit 8d05fc039456517d2c246c7b202891188ba40c4d
Author: Barnabás Pőcze <pobrn@protonmail.com>
Date:   Fri Sep 30 10:59:14 2022 +0000

    platform/x86: use PLATFORM_DEVID_NONE instead of -1

    Use the `PLATFORM_DEVID_NONE` constant instead of
    hard-coding -1 when creating a platform device.

    No functional changes are intended.

    Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
    Link: https://lore.kernel.org/r/20220930104857.2796923-1-pobrn@protonmail.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2023-05-18 12:20:30 +02:00
Ivan Vecera 17b82c30a6 platform/x86: mlx-platform: Add COME board revision register
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 095a2c1891512630d8674579b3b023f427d5330e
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:56 2022 +0300

    platform/x86: mlx-platform: Add COME board revision register

    Extend COME CPLD with board configuration register for getting board
    revision. The value of this register is pushed by hardware through GPIO
    pins.
    The purpose of it is to expose some minor BOM changes.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-7-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:42 +01:00
Ivan Vecera 55694e5252 platform/x86: mlx-platform: Add support for new system XH3000
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 2deb92864348fe7f313ed4efba12c89ebd03ef41
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:55 2022 +0300

    platform/x86: mlx-platform: Add support for new system XH3000

    Add support for new system type XH3000, which is a water cooling
    Ethernet switch blade equipped with 32x200G Ethernet ports.

    The system is recognized by "DMI_BOARD_NAME" and "DMI_PRODUCT_SKU" matches,
    when these fields are set to "VMOD0005" and "HI139" respectively.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Felix Radensky <fradensky@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-6-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:41 +01:00
Ivan Vecera 7f9115d112 platform/x86: mlx-platform: Introduce support for COMe NVSwitch management module for Vulcan chassis
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 6995e711b69ce8741191bd8649d8f13748b24141
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:54 2022 +0300

    platform/x86: mlx-platform: Introduce support for COMe NVSwitch management module for Vulcan chassis

    The Vulcan is chassis containing Nvidia's Hopper dGPU (GH100), NVswitch
    (LS10) based HGX baseboard and COMe NVSwitch management module.
    The system is built for artificial intelligence and accelerated
    analytics applications. Vulcan is offered as an HGX product to cloud
    service providers and OEMs, who intend to build fully interconnected
    GPU systems for large scale deployments.

    Driver is extended to support new COMe NVSwitch management module.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-5-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:41 +01:00
Ivan Vecera 4799bbbc7c platform/x86: mlx-platform: Add support for systems equipped with two ASICs
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 08fdb6f3acaef252e79f2d2630752f9182a82c8c
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:53 2022 +0300

    platform/x86: mlx-platform: Add support for systems equipped with two ASICs

    Motivation is to support new systems equipped with two ASICs.

    Extend driver with:
    - The second ASIC health event.
    - Per ASIC reset control, triggering reset of ASIC internal resources
      and restarting ASIC initialization flow.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-4-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:41 +01:00
Ivan Vecera 372f0180f1 platform/x86: mlx-platform: Add cosmetic changes for alignment
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 7bf8a14dedaf9ae4fd670ecd403db0dbe15bb3ac
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:52 2022 +0300

    platform/x86: mlx-platform: Add cosmetic changes for alignment

    Align the first argument with open parenthesis for
    platform_device_register_resndata() calls.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-3-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:41 +01:00
Ivan Vecera bc595a94fa platform/x86: mlx-platform: Make activation of some drivers conditional
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit e05d6b658fcd98bd3a09220cb5701e40269a0e57
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Mon Jul 11 11:45:51 2022 +0300

    platform/x86: mlx-platform: Make activation of some drivers conditional

    Current assumption in driver that any system is capable of LED,
    hotplug or watchdog support. It could be not true for some new coming
    systems.
    Add validation for LED, hotplug, watchdog configuration and skip
    activation of relevant drivers if not configured.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20220711084559.62447-2-vadimp@nvidia.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:46:41 +01:00
Ivan Vecera 5284656eaf platform/x86: mlx-platform: Add support for new system SGN2410
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 4616e54795cc8183ecf2a6cef6c7a9091cb1ae56
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 23 12:40:22 2021 +0300

    platform/x86: mlx-platform: Add support for new system SGN2410

    Add support for new system type, which is a water-cooling flavor
    of the VMOD001 system class, equipped with 48xSFP28 and 8xQSFP28
    100G Ethernet ports.

    System is recognized by "DMI_BOARD_NAME" and " DMI_PRODUCT_SKU"
    matches, when these fields are set respectively to "VMOD001" and
    "HI138".

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20211023094022.4193813-4-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:17 +01:00
Ivan Vecera 94969b4d51 platform/x86: mlx-platform: Add BIOS attributes for CoffeeLake COMEx based systems
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 4289fd4ad43afaed6d1515c573efe9e42a83219f
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 23 12:40:21 2021 +0300

    platform/x86: mlx-platform: Add BIOS attributes for CoffeeLake COMEx based systems

    Extend systems of class VMOD0010 equipped with CoffeeLake COMEx module
    with BIOS related attributes to represent various BIOS statuses.
    These attributes "bios_active_image", "bios_auth_fail",
    "bios_upgrade_fail", "bios_safe_mode" has been already added to modular
    system. This all of them are already documented.
    - "bios_active_image" - location of current active BIOS image (0: Top,
      1: Bottom. The reported value should correspond to value expected by
      OS in case of BIOS safe mode is 0. This bit is related to Intel
      top-swap feature of DualBios on the same flash.
    - "bios_auth_fail": BIOS upgrade is failed because provided BIOS image
      is not signed correctly.
    - "bios_upgrade_fail" BIOS upgrade is failed by some reason not related
      to authentication. For example, due to physical SPI flash problem.
    - "bios_safe_mod": - 0 : if BIOS is booted from a supposed active image;
      1 : BIOS safe mechanism was enforced by hardware (CPLD).

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20211023094022.4193813-3-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:17 +01:00
Ivan Vecera a69a44f50c platform/x86: mlx-platform: Extend FAN and LED configuration to support new MQM97xx systems
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 9045512ca6cdb221cd1ed32d483eac3c30c53bed
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 23 12:40:20 2021 +0300

    platform/x86: mlx-platform: Extend FAN and LED configuration to support new MQM97xx systems

    Add support for new system types "MQM97xx", which is based on Mellanox
    Quantum-2 ASIC. It provides up to 64x400GB/s (IB) full bidirectional
    bandwidth per port using PAM-4 modulation. The system support 32 OSFP
    cages that can provide 64x400GB/s per port (two ports/cage). The system
    fits standard 1U racks.

    System is equipped with seven fan drawers and with per fan drawer LED
    on backport panel and uses two-bytes for exposing CPLD Part Number
    versions.

    System is recognized by "DMI_BOARD_NAME" match, when this field is set
    to "VMOD0010".

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Oleksandr Shamray <oleksandrs@nvidia.com>
    Link: https://lore.kernel.org/r/20211023094022.4193813-2-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:17 +01:00
Ivan Vecera fa273ca82e platform/x86: mlx-platform: Add support for multiply cooling devices
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 249606d37d205eb2f9a6f2c8ecb8bd77b53e5d3e
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 2 12:36:09 2021 +0300

    platform/x86: mlx-platform: Add support for multiply cooling devices

    Add new registers to support systems with multiply cooling devices.
    Modular systems support up-to four cooling devices. This capability
    is detected according to the registers initial setting.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20211002093609.3771576-1-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:17 +01:00
Ivan Vecera 6bc7cc40a7 platform/x86: mlx-platform: Configure notifier callbacks for modular system
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit 67eb006cc1d167db33de2fe87988198b9806e794
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 2 12:32:33 2021 +0300

    platform/x86: mlx-platform: Configure notifier callbacks for modular system

    Add event notifier callbacks for modular system line cards. These
    callbacks are to be passed to "mlxreg-hotplug" driver by line card
    driver during probing. Then, when any line card related hotplug event
    is received (insertion ,power, synch, ready), hotplug driver will
    invoke callback for the relevant line card.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20211002093238.3771419-5-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:16 +01:00
Ivan Vecera 7b78f82689 platform/x86: mlx-platform: Add initial support for new modular system
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2140704

commit a5d8f57edfb44a3f036152258d844c21c0436382
Author: Vadim Pasternak <vadimp@nvidia.com>
Date:   Sat Oct 2 12:32:31 2021 +0300

    platform/x86: mlx-platform: Add initial support for new modular system

    Add initial chassis management support for Nvidia modular Ethernet
    switch systems MSN4800, providing a high performance switching solution
    for Enterprise Data Centers (EDC) for building Ethernet based clusters,
    High-Performance Computing (HPC) and embedded environments.

    This system could be equipped with the different types of replaceable
    line cards and management board. The first system flavor will support
    the line card type MSN4800-C16 equipped with Lattice CPLD devices aimed
    for system and ASIC control, one Nvidia FPGA for gearboxes (PHYs)
    management, and four Nvidia gearboxes for the port control and with
    16x100GbE QSFP28 ports and also with various devices for electrical
    control.

    The system is equipped with eight slots for line cards, four slots for
    power supplies and six slots for fans. It could be configured as fully
    populated or with even only one line card. The line cards are
    hot-pluggable.
    In the future when more line card flavors are to be available (for
    example line cards with 8x200Gb Eth port, with 4x400 Eth ports, or with
    some kind of smart cards for offloading purpose), any type of line card
    could be inserted at any slot.

    The system is based on Nvidia Spectrum-3 ASIC. The switch height is
    4U and it fits standard rack size.

    System could be configured as fully populated or with even only one
    line card. The line cards are hot-pluggable.

    Line cards are connected to the chassis through I2C interface for the
    chassis management operations and through PCIe for the networking
    operations. Future line cards could be connected to the chassis through
    InfiniBand fabric, instead of PCIe.

    The first type of line card supports 16x100GbE QSFP28 Ethernet ports.
    Those line cards equipped with the programmable devices aimed for
    system control of Nvidia Ethernet switch ASIC control, Nvidia FPGA,
    Nvidia gearboxes (PHYs).
    The next coming  card generations are supposed to support:
    - Line cards with 8x200Gbe QSFP28 Ethernet ports.
    - Line cards with 4x400Gbe QSFP-DD Ethernet ports.
    - Smart cards equipped with Nvidia ARM CPU for offloading and for fast
      access to the storage (EBoF).
    - Fabric cards for inter-connection.

    The basic system initialization flow with input signals from the
    programmable device to kernel hotplug driver and with OS response
    to some of these signals is depicted below.

    lc#n_prsnt      *-> Input: line card presence in/out events.
                        Informational event. Required action - 'udev' event
                        generation for logging.
    lc#n_verified   *-> Input: line card verification status events coming
                        after line card security signature validation by
                        hardware. Required action - connect line card
                        driver and initialized line card devices feeding
                        from system auxiliary power domain.
    lc#n_pwr        <-* Output: line card power on / off from OS. Action
                        should be performed by platform power management
                        driver.
    lc#n_powered    *-> Input: line card power on/off events coming after
                        line card "power good" on/off events, mean that
                        line card power up sequence has been successfully
                        completed or line card "power good" status has been
                        dropped. Required action - connect line card
                        devices feeding from system main power domain.
    lc#n_synced     *-> Input: line card synchronization events, coming
                        after hardware-firmware synchronization handshake.
                        Required action - to enable line card, in case
                        lc#n_ready has been received before.
    lc#n_ready      *-> Input: line card ready events, indicating line card
                        PHYs ready / unready states. Required action -
                        enable line card, in case lc#n_synced has been
                        received before.
    lc#n_enable     <-* Output: line card enable from OS - release FPGA and
                        PHYs line card devices from reset state. Action
                        should be performed by platform power management
                        driver.
    lc#n_active     *-> Input: when line card "active event" is received
                        for particular line card, its network, hardware
                        monitoring and thermal interfaces should be
                        configured according to the configuration obtained
                        from the firmware. When opposite "inactive event"
                        is received all the above interfaces should be
                        teared down. Required action - connect / disconnect
                        the above line card interfaces through ASIC I2C
                        chassis management driver.

    For initial support:
    - Define new system type 'VMOD0011' to support new modular system.
    - Provide initial platform configuration for new system type.
    - Extend the registers definitions.
    - Add support for modular system registers related to line card
      specific events - insertion/removal, power on/off, verification
      and activation.
    - Add hotplug configuration for the above events.
    - Add configurations for hotplug actions for the modular system.

    Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
    Reviewed-by: Michael Shych <michaelsh@nvidia.com>
    Link: https://lore.kernel.org/r/20211002093238.3771419-3-vadimp@nvidia.com
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>

Signed-off-by: Ivan Vecera <ivecera@redhat.com>
2022-11-13 19:04:16 +01:00
Vadim Pasternak cf791774a1 platform/x86: mlx-platform: Fix item counter assignment for MSN2700/ComEx system
Fix array names to match assignments for data items and data items
counter in 'mlxplat_mlxcpld_comex_items' structure for:
	.data = mlxplat_mlxcpld_default_pwr_items_data,
	.count = ARRAY_SIZE(mlxplat_mlxcpld_pwr),
and
	.data = mlxplat_mlxcpld_default_fan_items_data,
	.count = ARRAY_SIZE(mlxplat_mlxcpld_fan),

Replace:
- 'mlxplat_mlxcpld_pwr' by 'mlxplat_mlxcpld_default_pwr_items_data' for
   ARRAY_SIZE() calculation.
- 'mlxplat_mlxcpld_fan' by 'mlxplat_mlxcpld_default_fan_items_data'
   for ARRAY_SIZE() calculation.

Fixes: bdd6e155e0 ("platform/x86: mlx-platform: Add support for new system type")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20201207174745.22889-3-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-12-08 11:14:49 +01:00
Vadim Pasternak ba4939f1dd platform/x86: mlx-platform: Fix item counter assignment for MSN2700, MSN24xx systems
Fix array names to match assignments for data items and data items
counter in 'mlxplat_mlxcpld_default_items' structure for:
	.data = mlxplat_mlxcpld_default_pwr_items_data,
	.count = ARRAY_SIZE(mlxplat_mlxcpld_pwr),
and
	.data = mlxplat_mlxcpld_default_fan_items_data,
	.count = ARRAY_SIZE(mlxplat_mlxcpld_fan),

Replace:
- 'mlxplat_mlxcpld_pwr' by 'mlxplat_mlxcpld_default_pwr_items_data' for
   ARRAY_SIZE() calculation.
- 'mlxplat_mlxcpld_fan' by 'mlxplat_mlxcpld_default_fan_items_data'
   for ARRAY_SIZE() calculation.

Fixes: c6acad68eb ("platform/mellanox: mlxreg-hotplug: Modify to use a regmap interface")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20201207174745.22889-2-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-12-08 11:14:49 +01:00
Arnd Bergmann eca6ba20f3 platform/x86: mlx-platform: remove an unused variable
The only reference to the mlxplat_mlxcpld_psu[] array got removed,
so there is now a warning from clang:

drivers/platform/x86/mlx-platform.c:322:30: error: variable 'mlxplat_mlxcpld_psu' is not needed and will not be emitted [-Werror,-Wunneeded-internal-declaration]
static struct i2c_board_info mlxplat_mlxcpld_psu[] = {

Remove the array as well and adapt the ARRAY_SIZE() call
accordingly.

Fixes: 912b341585 ("platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform configuration")
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Acked-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20201203223105.1195709-1-arnd@kernel.org
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-12-07 14:49:42 +01:00
Vadim Pasternak 912b341585 platform/x86: mlx-platform: Remove PSU EEPROM from MSN274x platform configuration
Remove PSU EEPROM configuration for systems class equipped with
Mellanox chip Spectrum and ATOM CPU - system types MSN274x. Till now
all the systems from this class used few types of power units, all
equipped with EEPROM device with address space two bytes. Thus, all
these devices have been handled by EEPROM driver "24c02".

There is a new requirement is to support power unit replacement by "off
the shelf" device, matching electrical required parameters. Such device
can be equipped with different EEPROM type, which could be one byte
address space addressing or even could be not equipped with EEPROM.
In such case "24c02" will not work.

Fixes: ef08e14a3 ("platform/x86: mlx-platform: Add support for new msn274x system type")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20201125101056.174708-3-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-11-26 15:26:22 +01:00
Vadim Pasternak 2bf5046bdb platform/x86: mlx-platform: Remove PSU EEPROM from default platform configuration
Remove PSU EEPROM configuration for systems class equipped with
Mellanox chip Spectrum and Celeron CPU - system types MSN2700, MSN2100.
Till now all the systems from this class used few types of power units,
all equipped with EEPROM device with address space two bytes. Thus, all
these devices have been handled by EEPROM driver "24c02".

There is a new requirement is to support power unit replacement by "off
the shelf" device, matching electrical required parameters. Such device
can be equipped with different EEPROM type, which could be one byte
address space addressing or even could be not equipped with EEPROM.
In such case "24c02" will not work.

Fixes: c6acad68e ("platform/mellanox: mlxreg-hotplug: Modify to use a regmap interface")
Fixes: ba814fdd0 ("platform/x86: mlx-platform: Use defines for bus assignment")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Link: https://lore.kernel.org/r/20201125101056.174708-2-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-11-26 15:26:22 +01:00
Vadim Pasternak 47a514b642 platform/x86: mlx-platform: Add capability field to platform FAN description
Set 'capability' field to FAN core platform data..
The content of 'capability' register allows to set the mapping between
the drawers and tachometers.
The motivation is to avoid adding a new code in the future in order to
distinct between the systems types supporting a different kinds of the
FAN drawers.

Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20200923172053.26296-6-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-10-07 23:21:04 +02:00
Vadim Pasternak c071afcea6 platform/x86: mlx-platform: Remove PSU EEPROM configuration
Remove PSU EEPROM configuration for systems class equipped with
Mellanox chip Spectrume-2. Till now all the systems from this class
used few types of power units, all equipped with EEPROM device with
address space two bytes. Thus, all these devices have been handled by
EEPROM driver "24c32".
There is a new requirement is to support power unit replacement by "off
the shelf" device, matching electrical required parameters. Such device
could be equipped with different EEPROM type, which could be one byte
address space addressing or even could be not equipped with EEPROM.
In such case "24c32" will not work.

Fixes: 1bd42d94cc ("platform/x86: mlx-platform: Add support for new 200G IB and Ethernet systems")
Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Link: https://lore.kernel.org/r/20200923172053.26296-2-vadimp@nvidia.com
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
2020-10-07 23:20:48 +02:00
Vadim Pasternak 2b06a1c889 platform/x86: mlx-platform: Fix extended topology configuration for power supply units
Fix topology configuration for power supply units in structure
'mlxplat_mlxcpld_ext_pwr_items_data', due to hardware change.

Note: no need to backport the fix, since there is no such hardware yet
(equipped with four power) at the filed.

Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-09-24 14:05:20 +03:00
Linus Torvalds 4586039427 linux-watchdog 5.9-rc1 tag
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v2.0.14 (GNU/Linux)
 
 iEYEABECAAYFAl8zykwACgkQ+iyteGJfRsqu5gCcD5S0eZiTzAqyBQfquj/+bOwR
 BEMAniATmQOydnsEFGBPJ1gkHqwcuN9G
 =LGhE
 -----END PGP SIGNATURE-----

Merge tag 'linux-watchdog-5.9-rc1' of git://www.linux-watchdog.org/linux-watchdog

Pull watchdog updates from Wim Van Sebroeck:

 - f71808e_wdt imporvements

 - dw_wdt improvements

 - mlx-wdt: support new watchdog type with longer timeout period

 - fallthrough pseudo-keyword replacements

 - overall small fixes and improvements

* tag 'linux-watchdog-5.9-rc1' of git://www.linux-watchdog.org/linux-watchdog: (35 commits)
  watchdog: rti-wdt: balance pm runtime enable calls
  watchdog: rti-wdt: attach to running watchdog during probe
  watchdog: add support for adjusting last known HW keepalive time
  watchdog: use __watchdog_ping in startup
  watchdog: softdog: Add options 'soft_reboot_cmd' and 'soft_active_on_boot'
  watchdog: pcwd_usb: remove needless check before usb_free_coherent()
  watchdog: Replace HTTP links with HTTPS ones
  dt-bindings: watchdog: renesas,wdt: Document r8a774e1 support
  watchdog: initialize device before misc_register
  watchdog: booke_wdt: Add common nowayout parameter driver
  watchdog: scx200_wdt: Use fallthrough pseudo-keyword
  watchdog: Use fallthrough pseudo-keyword
  watchdog: f71808e_wdt: do stricter parameter validation
  watchdog: f71808e_wdt: clear watchdog timeout occurred flag
  watchdog: f71808e_wdt: remove use of wrong watchdog_info option
  watchdog: f71808e_wdt: indicate WDIOF_CARDRESET support in watchdog_info.options
  docs: watchdog: codify ident.options as superset of possible status flags
  dt-bindings: watchdog: Add compatible for QCS404, SC7180, SDM845, SM8150
  dt-bindings: watchdog: Convert QCOM watchdog timer bindings to YAML
  watchdog: dw_wdt: Add DebugFS files
  ...
2020-08-12 12:13:44 -07:00
Michael Shych 7772b993fd platform/x86: mlx-platform: support new watchdog type with longer timeout
Add verification of WD capability in order to distinguish between
the existing WD types and new type, implemented in CPLD.
Add configuration for a new WD type.
Change access mode for watchdog registers.

Signed-off-by: Michael Shych <michaelsh@mellanox.com>
Reviewed-by: Vadim Pasternak <vadimp@mellanox.com>
Acked-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Link: https://lore.kernel.org/r/20200504141427.17685-3-michaelsh@mellanox.com
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
2020-08-05 18:42:44 +02:00
Vadim Pasternak f9e1104367 platform/x86: mlx-platform: Extend FAN platform data description
Extend FAN platform data with register presence field.
Add register present entry per rotor (tachometer) description tuple.
The purpose is to allow indication of FAN presence.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-07-15 12:45:07 +03:00
Vadim Pasternak ae1aabf44b platform/x86: mlx-platform: Add more definitions for system attributes
Add new attributes for the all type systems specifying for each
equipped CPLD device, the CPLD part number and the CPLD minor version
of the device: 'cpld{n}_pn' and 'cpld{n}_version_min'.
This information is to be used for mathcing the current CPLD image and
for making decision if image upgrade is required for CPLD device.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-07-15 12:45:07 +03:00
Vadim Pasternak 0d559d05a2 platform/x86: mlx-platform: Add support for next generation systems
Add support for new Mellanox system types of basic class VMOD0010,
containing new Mellanox systems equipped with new switch device
Spectrum 3 (32x400GbE/64x200G/128x100G Ethernet switch).
These are the Top of the Rack 1U/2U/4U systems, equipped with
Mellanox Comex card and with the switch board with Mellanox Spectrum-3
device.
This class of devices can be equipped with two PS units for 1U/2U or
with four PS units for 4U systems.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:46 +02:00
Vadim Pasternak 4845460421 platform/x86: mlx-platform: Add support for new capability register
Add support for capability register, which contains information about
the number of PS units equipped on the system and about minimum I2C
frequency supported by the all system's I2C devices.
Utilization of this register allows to avoid necessity of providing new
system description, in case it differs in number of PS units or in
minimal I2C frequency.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:46 +02:00
Vadim Pasternak bdd6e155e0 platform/x86: mlx-platform: Add support for new system type
Add support for new Mellanox system types of basic class VMOD0009,
containing Mellanox systems equipped with the switch devices
Spectrum 1 (32x100GbE Ethernet switch) and Switch-IB/Switch-IB2
(36x100Gbe InfiniBand switch).
These are the Top of the Rack system, equipped with Mellanox Comex
card.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:46 +02:00
Vadim Pasternak fcd50dbf30 platform/x86: mlx-platform: Set system mux configuration based on system type
Separate assignment for systems mux configuration based on system type,
instead of setting the same configuration for the all.
The motivation is to allow introduction of new systems types with the
different mux topology.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:46 +02:00
Vadim Pasternak 1b5937cb63 platform/x86: mlx-platform: Add more definitions for system attributes
Add new attributes for "next-generation" type systems:
- Reset cause indication, when system reset has been caused by the
  platform reset request through CPLD, by AC power failure,
  by software power off request through CPLD. by signal asserted by SOC
  through ACPI register. It introduces more reset causes, which can
  be monitored after the reboots.
- Setting and removing system VPD (EEPROM) hardware write protection.
  It allows to access VPD during production cycle and prevents VPD
  corruption on system in field.
- Voltage regulator devices configuration update status and version. It
  allows to monitor configuration update status and current active
  version for such sort of devices.
- PCIe ASIC reset disable - when set ASIC will go down upon PCIe
  root complex reset, otherwise ASIC will stay up during PCIe root
  complex reset.
- System configuration Ids to provide system static topology
  identification, like system's static I2C topology, number and type of
  FPGA devices within the system and so on.

Add the existing attribute for "iio" bank selection for system type
"msn21xx".

All the above attributes are exposed through "sysfs" by "mlxreg-io"
driver.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:46 +02:00
Vadim Pasternak 8029660db6 platform/x86: mlx-platform: Cosmetic changes
Remove redundant semicolons at the end of few functions.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2020-01-13 21:02:45 +02:00
Wei Yongjun e6fbb97da5 platform/x86: mlx-platform: Fix error handling in mlxplat_init()
Add the missing platform_device_unregister() before return
from mlxplat_init() in the error handling case.

Fixes: 6b266e91a0 ("platform/x86: mlx-platform: Move regmap initialization before all drivers activation")
Signed-off-by: Wei Yongjun <weiyongjun1@huawei.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-12 16:00:38 +03:00
Vadim Pasternak 262d861bf7 platform/x86: mlx-platform: Add more reset cause attributes
Add more attributes for reset cause indication for the cases when
system reset has been caused by watchdog, BIOS reload and COMEX
thermal shutdown.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-03 15:37:33 +03:00
Vadim Pasternak cb636bb1dc platform/x86: mlx-platform: Modify DMI matching order
Modify DMI matching order: perform matching based on  DMI_BOARD_NAME
before matching based on DMI_BOARD_VENDOR and DMI_PRODUCT_NAME in order
to reduce the number of ‘dmi_table’ entries necessary for new systems
support and keep matching order in logical way.

For example, the existing check for DMI_PRODUCT_NAME with prefixes
“MSN27", “MSN24”, "MSB” matches systems MSN2700-BXXXX, MSN2700-XXXX,
MSN2410-BXXXX, MSB7800-XXXX, where ‘XXXX’ specifies some systems
hardware flavors.
At the same time these systems also matched by DMI_BOARD_NAME
“VMOD0001”, because they all have the same platform configuration (LED,
interrupt control, mux etcetera).
New systems with different platform configuration, but with similar
DMI_PRODUCT_NAME  MSN2700-2XXXX, MSN2700-2XXXX, MSB7800-2XXXX are about
to be added. These system have similar DMI_PRODUCT_NAME, since they
have same ports configuration as their predecessors. All new systems
will be matched by DMI_BOARD_NAME “VMOD0008”.
With the change provided in the patch it is enough just to add
“VMOD0008” match following natural after “VMOD0007”, otherwise
“VMOD0008” or all “MSN2700-2XXXX”, “MSN2700-2XXXX”, “MSB7800-2XXXX”
should be added on top of ‘mlxplat_dmi_table” in order to be matched
before “MSN27", “MSN24”, "MSB”.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-03 15:37:33 +03:00
Vadim Pasternak a7ff2f99eb platform/x86: mlx-platform: Add regmap structure for the next generation systems
Use separated regamp structures for old and next generation systems.
Next generation systems don’t require write protection removing.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-03 15:37:33 +03:00
Vadim Pasternak d66656262a platform/x86: mlx-platform: Change API for i2c-mlxcpld driver activation
Activate 'i2c-mlxcpld' driver with 'platform_device_register_resndata'
instead off 'platform_device_register_simple' in order to pass platform
specific info.
Add platform i2c data for the next generation systems.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-03 15:37:33 +03:00
Vadim Pasternak 6b266e91a0 platform/x86: mlx-platform: Move regmap initialization before all drivers activation
Initialize regmap prior drivers starting to allow passing regmap handle
to 'i2c_mlxcpld' driver.

Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-07-03 15:37:32 +03:00
Vadim Pasternak fa882fc80d platform/x86: mlx-platform: Fix parent device in i2c-mux-reg device registration
Fix the issue found while running kernel with the option
CONFIG_DEBUG_TEST_DRIVER_REMOVE.
Driver 'mlx-platform' registers 'i2c_mlxcpld' device and then registers
few underlying 'i2c-mux-reg' devices:
	priv->pdev_i2c = platform_device_register_simple("i2c_mlxcpld", nr,
							 NULL, 0);
	...
	for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) {
		priv->pdev_mux[i] = platform_device_register_resndata(
						&mlxplat_dev->dev,
						"i2c-mux-reg", i, NULL,
						0, &mlxplat_mux_data[i],
						sizeof(mlxplat_mux_data[i]));

But actual parent of "i2c-mux-reg" device is priv->pdev_i2c->dev and
not mlxplat_dev->dev.
Patch fixes parent device parameter in a call to
platform_device_register_resndata() for "i2c-mux-reg".

It solves the race during initialization flow while 'i2c_mlxcpld.1' is
removing after probe, while 'i2c-mux-reg.0' is still in probing flow:
'i2c_mlxcpld.1'	flow:	probe -> remove -> probe.
'i2c-mux-reg.0'	flow:		  probe -> ...

[   12:621096] Registering platform device 'i2c_mlxcpld.1'. Parent at platform
[   12:621117] device: 'i2c_mlxcpld.1': device_add
[   12:621155] bus: 'platform': add device i2c_mlxcpld.1
[   12:621384] Registering platform device 'i2c-mux-reg.0'. Parent at mlxplat
[   12:621395] device: 'i2c-mux-reg.0': device_add
[   12:621425] bus: 'platform': add device i2c-mux-reg.0
[   12:621806] Registering platform device 'i2c-mux-reg.1'. Parent at mlxplat
[   12:621828] device: 'i2c-mux-reg.1': device_add
[   12:621892] bus: 'platform': add device i2c-mux-reg.1
[   12:621906] bus: 'platform': add driver i2c_mlxcpld
[   12:621996] bus: 'platform': driver_probe_device: matched device i2c_mlxcpld.1 with driver i2c_mlxcpld
[   12:622003] bus: 'platform': really_probe: probing driver i2c_mlxcpld with device i2c_mlxcpld.1
[   12:622100] i2c_mlxcpld i2c_mlxcpld.1: no default pinctrl state
[   12:622293] device: 'i2c-1': device_add
[   12:627280] bus: 'i2c': add device i2c-1
[   12:627692] device: 'i2c-1': device_add
[   12.629639] bus: 'platform': add driver i2c-mux-reg
[   12.629718] bus: 'platform': driver_probe_device: matched device i2c-mux-reg.0 with driver i2c-mux-reg
[   12.629723] bus: 'platform': really_probe: probing driver i2c-mux-reg with device i2c-mux-reg.0
[   12.629818] i2c-mux-reg i2c-mux-reg.0: no default pinctrl state
[   12.629981] platform i2c-mux-reg.0: Driver i2c-mux-reg requests probe deferral
[   12.629986] platform i2c-mux-reg.0: Added to deferred list
[   12.629992] bus: 'platform': driver_probe_device: matched device i2c-mux-reg.1 with driver i2c-mux-reg
[   12.629997] bus: 'platform': really_probe: probing driver i2c-mux-reg with device i2c-mux-reg.1
[   12.630091] i2c-mux-reg i2c-mux-reg.1: no default pinctrl state
[   12.630247] platform i2c-mux-reg.1: Driver i2c-mux-reg requests probe deferral
[   12.630252] platform i2c-mux-reg.1: Added to deferred list
[   12.640892] devices_kset: Moving i2c-mux-reg.0 to end of list
[   12.640900] platform i2c-mux-reg.0: Retrying from deferred list
[   12.640911] bus: 'platform': driver_probe_device: matched device i2c-mux-reg.0 with driver i2c-mux-reg
[   12.640919] bus: 'platform': really_probe: probing driver i2c-mux-reg with device i2c-mux-reg.0
[   12.640999] i2c-mux-reg i2c-mux-reg.0: no default pinctrl state
[   12.641177] platform i2c-mux-reg.0: Driver i2c-mux-reg requests probe deferral
[   12.641187] platform i2c-mux-reg.0: Added to deferred list
[   12.641198] devices_kset: Moving i2c-mux-reg.1 to end of list
[   12.641219] platform i2c-mux-reg.1: Retrying from deferred list
[   12.641237] bus: 'platform': driver_probe_device: matched device i2c-mux-reg.1 with driver i2c-mux-reg
[   12.641247] bus: 'platform': really_probe: probing driver i2c-mux-reg with device i2c-mux-reg.1
[   12.641331] i2c-mux-reg i2c-mux-reg.1: no default pinctrl state
[   12.641465] platform i2c-mux-reg.1: Driver i2c-mux-reg requests probe deferral
[   12.641469] platform i2c-mux-reg.1: Added to deferred list
[   12.646427] device: 'i2c-1': device_add
[   12.646647] bus: 'i2c': add device i2c-1
[   12.647104] device: 'i2c-1': device_add
[   12.669231] devices_kset: Moving i2c-mux-reg.0 to end of list
[   12.669240] platform i2c-mux-reg.0: Retrying from deferred list
[   12.669258] bus: 'platform': driver_probe_device: matched device i2c-mux-reg.0 with driver i2c-mux-reg
[   12.669263] bus: 'platform': really_probe: probing driver i2c-mux-reg with device i2c-mux-reg.0
[   12.669343] i2c-mux-reg i2c-mux-reg.0: no default pinctrl state
[   12.669585] device: 'i2c-2': device_add
[   12.669795] bus: 'i2c': add device i2c-2
[   12.670201] device: 'i2c-2': device_add
[   12.671427] i2c i2c-1: Added multiplexed i2c bus 2
[   12.671514] device: 'i2c-3': device_add
[   12.671724] bus: 'i2c': add device i2c-3
[   12.672136] device: 'i2c-3': device_add
[   12.673378] i2c i2c-1: Added multiplexed i2c bus 3
[   12.673472] device: 'i2c-4': device_add
[   12.673676] bus: 'i2c': add device i2c-4
[   12.674060] device: 'i2c-4': device_add
[   12.675861] i2c i2c-1: Added multiplexed i2c bus 4
[   12.675941] device: 'i2c-5': device_add
[   12.676150] bus: 'i2c': add device i2c-5
[   12.676550] device: 'i2c-5': device_add
[   12.678103] i2c i2c-1: Added multiplexed i2c bus 5
[   12.678193] device: 'i2c-6': device_add
[   12.678395] bus: 'i2c': add device i2c-6
[   12.678774] device: 'i2c-6': device_add
[   12.679969] i2c i2c-1: Added multiplexed i2c bus 6
[   12.680065] device: 'i2c-7': device_add
[   12.680275] bus: 'i2c': add device i2c-7
[   12.680913] device: 'i2c-7': device_add
[   12.682506] i2c i2c-1: Added multiplexed i2c bus 7
[   12.682600] device: 'i2c-8': device_add
[   12.682808] bus: 'i2c': add device i2c-8
[   12.683189] device: 'i2c-8': device_add
[   12.683907] device: 'i2c-1': device_unregister
[   12.683945] device: 'i2c-1': device_unregister
[   12.684387] device: 'i2c-1': device_create_release
[   12.684536] bus: 'i2c': remove device i2c-1
[   12.686019] i2c i2c-8: Failed to create compatibility class link
[   12.686086] ------------[ cut here ]------------
[   12.686087] can't create symlink to mux device
[   12.686224] Workqueue: events deferred_probe_work_func
[   12.686135] WARNING: CPU: 7 PID: 436 at drivers/i2c/i2c-mux.c:416 i2c_mux_add_adapter+0x729/0x7d0 [i2c_mux]
[   12.686232] RIP: 0010:i2c_mux_add_adapter+0x729/0x7d0 [i2c_mux]
[   0x190/0x190 [i2c_mux]
[   12.686300]  ? i2c_mux_alloc+0xac/0x110 [i2c_mux]
[   12.686306]  ? i2c_mux_reg_set+0x200/0x200 [i2c_mux_reg]
[   12.686313]  i2c_mux_reg_probe+0x22c/0x731 [i2c_mux_reg]
[   12.686322]  ? i2c_mux_reg_deselect+0x60/0x60 [i2c_mux_reg]
[   12.686346]  platform_drv_probe+0xa8/0x110
[   12.686351]  really_probe+0x185/0x720
[   12.686358]  driver_probe_device+0xdf/0x1f0
...
[   12.686522] i2c i2c-1: Added multiplexed i2c bus 8
[   12.686621] device: 'i2c-9': device_add
[   12.686626] kobject_add_internal failed for i2c-9 (error: -2 parent: i2c-1)
[   12.694729] i2c-core: adapter 'i2c-1-mux (chan_id 8)': can't register device (-2)
[   12.705726] i2c i2c-1: failed to add mux-adapter 8 as bus 9 (error=-2)
[   12.714494] device: 'i2c-8': device_unregister
[   12.714537] device: 'i2c-8': device_unregister

Fixes: 6613d18e90 ("platform/x86: mlx-platform: Move module from arch/x86")
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-06-12 11:54:16 +03:00
Vadim Pasternak 9b9f2f5416 platform/x86: mlx-platform: Add mlx-wdt platform driver activation
Add mlx-wdt platform driver activation. Watchdog driver uses the same
regmap infrastructure as others Mellanox platform drivers. Specific
registers description for watchdog platform data configuration are
added to mlx-platform. There are the registers for watchdog timer
manipulation, and action setting on watchdog timer expiration.
The watchdog action function could be configured to perform one of the
following: system reset, setting PWM to full speed or counter
increment.
Two types of watchdog devices are supported main and auxiliary.
These devices are co-exist and each of them could be configured to
handle the specific action.

Signed-off-by: Michael Shych <michealsh@mellanox.com>
Signed-off-by: Vadim Pasternak <vadimp@mellanox.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
2019-05-06 17:54:42 +03:00