linux-stable/drivers/platform/x86
Vadim Pasternak a5d8f57edf 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>
2021-10-19 10:41:55 +02:00
..
dell platform/x86: dell: Make DELL_WMI_PRIVACY depend on DELL_WMI 2021-10-11 15:25:05 +02:00
intel platform/x86: int1092: Fix non sequential device mode handling 2021-10-11 16:38:32 +02:00
acer-wireless.c
acer-wmi.c platform/x86: acer-wmi: use __packed instead of __attribute__((packed)) 2021-09-14 12:27:15 +02:00
acerhdf.c
adv_swbutton.c platform/x86: add support for Advantech software defined button 2021-04-07 19:46:56 +02:00
amd-pmc.c platform/x86: amd-pmc: Add alternative acpi id for PMC controller 2021-10-11 15:47:14 +02:00
amilo-rfkill.c
apple-gmux.c
asus-laptop.c platform/x86: asus-laptop: fix kobj_to_dev.cocci warnings 2021-03-23 21:06:10 +01:00
asus-nb-wmi.c platform/x86: asus-nb-wmi: Add tablet_mode_sw=lid-flip quirk for the TP200s 2021-08-12 17:18:28 +02:00
asus-wireless.c
asus-wmi.c platform/x86: asus-wmi: Fix "unsigned 'retval' is never less than zero" smatch warning 2021-08-26 15:12:51 +02:00
asus-wmi.h
classmate-laptop.c platform/x86: Typo fix in the file classmate-laptop.c 2021-03-23 21:05:58 +01:00
compal-laptop.c
dual_accel_detect.h platform/x86: dual_accel_detect: Use the new i2c_acpi_client_count() helper 2021-08-12 17:26:36 +02:00
eeepc-laptop.c
eeepc-wmi.c
firmware_attributes_class.c platform/x86: dell-wmi-sysman: fw_attr_inuse can be static 2021-06-16 17:47:52 +02:00
firmware_attributes_class.h platform/x86: firmware_attributes_class: Create helper file for handling firmware-attributes class registration events 2021-06-16 17:47:51 +02:00
fujitsu-laptop.c
fujitsu-tablet.c
gigabyte-wmi.c platform/x86: gigabyte-wmi: add support for B550 AORUS ELITE AX V2 2021-10-11 15:52:58 +02:00
gpd-pocket-fan.c
hdaps.c platform/x86: hdaps: Constify static attribute_group struct 2021-06-16 17:47:54 +02:00
hp-wmi.c platform/x86: hp-wmi: add support for omen laptops 2021-09-14 12:26:00 +02:00
hp_accel.c platform/x86: hp_accel: Convert to be a platform driver 2021-08-26 15:10:05 +02:00
huawei-wmi.c
i2c-multi-instantiate.c platform/x86: i2c-multi-instantiate: Use the new i2c_acpi_client_count() helper 2021-08-12 17:26:36 +02:00
ibm_rtl.c
ideapad-laptop.c platform/x86: ideapad-laptop: Add platform support for Ideapad 5 Pro 16ACH6-82L5 2021-09-28 16:59:36 +02:00
intel_ips.c platform/x86: intel_ips: fix set but unused warning in read_mgtv 2021-06-16 17:47:55 +02:00
intel_ips.h
intel_scu_ipc.c platform/x86: intel_scu_ipc: Update timeout value in comment 2021-10-11 15:32:44 +02:00
intel_scu_ipcutil.c
intel_scu_pcidrv.c
intel_scu_pltdrv.c
intel_scu_wdt.c
Kconfig platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight 2021-10-11 14:59:45 +02:00
lg-laptop.c platform: lg-laptop: drop unneeded MODULE_ALIAS 2021-09-21 14:50:35 +02:00
Makefile platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight 2021-10-11 14:59:45 +02:00
meraki-mx100.c platform/x86: add meraki-mx100 platform driver 2021-08-12 09:26:28 +02:00
mlx-platform.c platform/x86: mlx-platform: Add initial support for new modular system 2021-10-19 10:41:55 +02:00
msi-laptop.c
msi-wmi.c
mxm-wmi.c
nvidia-wmi-ec-backlight.c platform/x86: Rename wmaa-backlight-wmi to nvidia-wmi-ec-backlight 2021-10-11 14:59:45 +02:00
panasonic-laptop.c platform/x86: panasonic-laptop: remove redundant assignment of variable result 2021-04-07 19:47:22 +02:00
pcengines-apuv2.c platform/x86: pcengines-apuv2: Add missing terminating entries to gpio-lookup tables 2021-08-06 14:04:43 +02:00
peaq-wmi.c
pmc_atom.c platform/x86: pmc_atom: Match all Beckhoff Automation baytrail boards with critclk_systems DMI table 2021-04-14 15:52:37 +02:00
samsung-laptop.c platform/x86: samsung-laptop: set debugfs blobs to read only 2021-06-16 17:47:49 +02:00
samsung-q10.c
sony-laptop.c
system76_acpi.c
tc1100-wmi.c platform/x86: tc1100-wmi: Constify static attribute_group struct 2021-06-16 17:47:54 +02:00
think-lmi.c platform/x86: think-lmi: add debug_cmd 2021-08-18 09:41:14 +02:00
think-lmi.h platform/x86: think-lmi: add debug_cmd 2021-08-18 09:41:14 +02:00
thinkpad_acpi.c platform/x86: thinkpad_acpi: Switch to common use of attributes 2021-09-28 17:02:11 +02:00
topstar-laptop.c
toshiba-wmi.c
toshiba_acpi.c platform/x86: toshiba_acpi: Fix missing error code in toshiba_acpi_setup_keyboard() 2021-06-16 17:47:51 +02:00
toshiba_bluetooth.c
toshiba_haps.c platform/x86: toshiba_haps: Fix missing newline in pr_debug call in toshiba_haps_notify 2021-06-16 17:47:49 +02:00
touchscreen_dmi.c platform/x86: touchscreen_dmi: Update info for the Chuwi Hi10 Plus (CWI527) tablet 2021-09-13 10:41:56 +02:00
uv_sysfs.c x86/platform/uv: Constify static attribute_group struct 2021-06-16 17:47:55 +02:00
wireless-hotkey.c platform/x86: wireless-hotkey: remove hardcoded "hp" from the error message 2021-07-14 22:32:26 +02:00
wmi-bmof.c
wmi.c platform/x86: wmi: more detailed error reporting in find_guid() 2021-09-14 12:26:03 +02:00
xiaomi-wmi.c
xo1-rfkill.c
xo15-ebook.c