kernel/modules/other/mlxreg: add new package

This commit adds a new mlxreg package, which allows access
to Mellanox programmable device register space through sysfs
interface for thermal control and hardware management.

It also adds required Mellanox I²C drivers and packages
for the "special" MSN4800 series and SN2201 platform.

Signed-off-by: Til Kaiser <mail@tk154.de>
This commit is contained in:
Til Kaiser 2024-04-28 15:30:54 +02:00 committed by Hauke Mehrtens
parent 0e56bd3eb5
commit 0a861a0c0f
2 changed files with 100 additions and 0 deletions

View File

@ -169,6 +169,24 @@ endef
$(eval $(call KernelPackage,i2c-i801))
I2C_MLXCPLD_MODULES:= \
CONFIG_I2C_MLXCPLD:drivers/i2c/busses/i2c-mlxcpld
define KernelPackage/i2c-mlxcpld
$(call i2c_defaults,$(I2C_MLXCPLD_MODULES),59)
TITLE:=Mellanox I2C driver
DEPENDS:=@TARGET_x86_64 +kmod-regmap-core
endef
define KernelPackage/i2c-mlxcpld/description
This exposes the Mellanox platform I2C busses
to the linux I2C layer for X86 based systems.
Controller is implemented as CPLD logic.
endef
$(eval $(call KernelPackage,i2c-mlxcpld))
I2C_MUX_MODULES:= \
CONFIG_I2C_MUX:drivers/i2c/i2c-mux
@ -200,6 +218,24 @@ endef
$(eval $(call KernelPackage,i2c-mux-gpio))
I2C_MUX_MLXCPLD_MODULES:= \
CONFIG_I2C_MUX_MLXCPLD:drivers/i2c/muxes/i2c-mux-mlxcpld
define KernelPackage/i2c-mux-mlxcpld
$(call i2c_defaults,$(I2C_MUX_MLXCPLD_MODULES),51)
TITLE:=Mellanox CPLD based I2C multiplexer
DEPENDS:=+kmod-i2c-mlxcpld +kmod-i2c-mux
endef
define KernelPackage/i2c-mux-mlxcpld/description
This driver provides access to
I2C busses connected through a MUX, which is controlled
by a CPLD register.
endef
$(eval $(call KernelPackage,i2c-mux-mlxcpld))
I2C_MUX_REG_MODULES:= \
CONFIG_I2C_MUX_REG:drivers/i2c/muxes/i2c-mux-reg

View File

@ -266,6 +266,70 @@ endef
$(eval $(call KernelPackage,mlx_wdt))
define KernelPackage/mlxreg
SUBMENU:=$(OTHER_MENU)
TITLE:=Mellanox platform register access
DEPENDS:=@TARGET_x86 +kmod-i2c-mux-mlxcpld
KCONFIG:= \
CONFIG_MELLANOX_PLATFORM=y \
CONFIG_MLX_PLATFORM \
CONFIG_MLXREG_HOTPLUG \
CONFIG_MLXREG_IO \
CONFIG_SENSORS_MLXREG_FAN \
CONFIG_LEDS_MLXREG
FILES:= \
$(LINUX_DIR)/drivers/platform/x86/mlx-platform.ko \
$(LINUX_DIR)/drivers/platform/mellanox/mlxreg-hotplug.ko \
$(LINUX_DIR)/drivers/platform/mellanox/mlxreg-io.ko \
$(LINUX_DIR)/drivers/hwmon/mlxreg-fan.ko \
$(LINUX_DIR)/drivers/leds/leds-mlxreg.ko
AUTOLOAD:=$(call AutoProbe,mlx-platform mlxreg-hotplug mlxreg-io mlxreg-fan leds-mlxreg)
endef
define KernelPackage/mlxreg/description
Allows access to Mellanox programmable device register
space through sysfs interface. The sets of registers for sysfs access
are defined per system type bases and include the registers related
to system resets operation, system reset causes monitoring and some
kinds of mux selection.
endef
$(eval $(call KernelPackage,mlxreg))
define KernelPackage/mlxreg-lc
SUBMENU:=$(OTHER_MENU)
TITLE:=Mellanox line card platform support
DEPENDS:=kmod-mlxreg +kmod-regmap-i2c
KCONFIG:=CONFIG_MLXREG_LC
FILES:=$(LINUX_DIR)/drivers/platform/mellanox/mlxreg-lc.ko
AUTOLOAD:=$(call AutoProbe,mlxreg-lc)
endef
define KernelPackage/mlxreg-lc/description
Provides support for the Mellanox MSN4800-XX line cards,
which are the part of MSN4800 Ethernet modular switch systems.
endef
$(eval $(call KernelPackage,mlxreg-lc))
define KernelPackage/mlxreg-sn2201
SUBMENU:=$(OTHER_MENU)
TITLE:=Nvidia SN2201 platform support
DEPENDS:=kmod-mlxreg +kmod-regmap-i2c
KCONFIG:=CONFIG_NVSW_SN2201
FILES:=$(LINUX_DIR)/drivers/platform/mellanox/nvsw-sn2201.ko
AUTOLOAD:=$(call AutoProbe,nvsw-sn2201)
endef
define KernelPackage/mlxreg-sn2201/description
Provides support for the Nvidia SN2201 platform.
endef
$(eval $(call KernelPackage,mlxreg-sn2201))
define KernelPackage/pinctrl-mcp23s08
SUBMENU:=$(OTHER_MENU)
TITLE:=Microchip MCP23xxx I/O expander