platform-drivers-x86 for v4.16-3
Mellanox fixes and new system type support. The following is an automated git shortlog grouped by driver: mlx-platform: - Add support for new 200G IB and Ethernet systems - Add support for new msn201x system type - Add support for new msn274x system type - Fix power cable setting for msn21xx family - Add define for the negative bus - Use defines for bus assignment platform/mellanox: - mlxreg-hotplug: Fix uninitialized variable -----BEGIN PGP SIGNATURE----- iQEcBAABAgAGBQJafyo5AAoJEKbMaAwKp364sxgIAIFi/sRACXrJsowOX7Okg4ID Rx4BBpynqbOXwxGfHj2Hs5Y1Y9CG6/kCQM3MJfxJmi+Mb8IseucJGVswFmsCfq/U IWbj7YwSfpeUOJMWGfpdUaX9RDNa8bTYT2gOx/scZXalsjLTWV1AmlZLOLwlEnK8 s26zL7GHiFjBY7BJ0GX/atbBOrAFsjuM2QodmwMEuf8lZJSDOxwg0WSqAZHKsPM3 /2WzeR/2jEX+XlSnwKUN62XsKRF79eZDbBxt+PF/FekAppHnkgLbBfHw7MvhZqg1 bg2W16nqOnNBJNRHdz6gKM8TeWyr537D/uQmHafc2oyYmhUYbGLPr65q5fqZjoE= =VbPT -----END PGP SIGNATURE----- Merge tag 'platform-drivers-x86-v4.16-3' of git://github.com/dvhart/linux-pdx86 Pull x86 platform driver updates from Darren Hart: "Mellanox fixes and new system type support. Mostly data for new system types with a correction and an uninitialized variable fix" [ Pulling from github because git.infradead.org currently seems to be down for some reason, but Darren had a backup location - Linus ] * tag 'platform-drivers-x86-v4.16-3' of git://github.com/dvhart/linux-pdx86: platform/x86: mlx-platform: Add support for new 200G IB and Ethernet systems platform/x86: mlx-platform: Add support for new msn201x system type platform/x86: mlx-platform: Add support for new msn274x system type platform/x86: mlx-platform: Fix power cable setting for msn21xx family platform/x86: mlx-platform: Add define for the negative bus platform/x86: mlx-platform: Use defines for bus assignment platform/mellanox: mlxreg-hotplug: Fix uninitialized variable
This commit is contained in:
commit
cc5cb5af3a
2 changed files with 363 additions and 11 deletions
|
@ -300,7 +300,7 @@ mlxreg_hotplug_health_work_helper(struct mlxreg_hotplug_priv_data *priv,
|
||||||
{
|
{
|
||||||
struct mlxreg_core_data *data = item->data;
|
struct mlxreg_core_data *data = item->data;
|
||||||
u32 regval;
|
u32 regval;
|
||||||
int i, ret;
|
int i, ret = 0;
|
||||||
|
|
||||||
for (i = 0; i < item->count; i++, data++) {
|
for (i = 0; i < item->count; i++, data++) {
|
||||||
/* Mask event. */
|
/* Mask event. */
|
||||||
|
|
|
@ -77,10 +77,13 @@
|
||||||
#define MLXPLAT_CPLD_AGGR_FAN_MASK_DEF 0x40
|
#define MLXPLAT_CPLD_AGGR_FAN_MASK_DEF 0x40
|
||||||
#define MLXPLAT_CPLD_AGGR_MASK_DEF (MLXPLAT_CPLD_AGGR_PSU_MASK_DEF | \
|
#define MLXPLAT_CPLD_AGGR_MASK_DEF (MLXPLAT_CPLD_AGGR_PSU_MASK_DEF | \
|
||||||
MLXPLAT_CPLD_AGGR_FAN_MASK_DEF)
|
MLXPLAT_CPLD_AGGR_FAN_MASK_DEF)
|
||||||
|
#define MLXPLAT_CPLD_AGGR_MASK_NG_DEF 0x04
|
||||||
|
#define MLXPLAT_CPLD_LOW_AGGR_MASK_LOW 0xc0
|
||||||
#define MLXPLAT_CPLD_AGGR_MASK_MSN21XX 0x04
|
#define MLXPLAT_CPLD_AGGR_MASK_MSN21XX 0x04
|
||||||
#define MLXPLAT_CPLD_PSU_MASK GENMASK(1, 0)
|
#define MLXPLAT_CPLD_PSU_MASK GENMASK(1, 0)
|
||||||
#define MLXPLAT_CPLD_PWR_MASK GENMASK(1, 0)
|
#define MLXPLAT_CPLD_PWR_MASK GENMASK(1, 0)
|
||||||
#define MLXPLAT_CPLD_FAN_MASK GENMASK(3, 0)
|
#define MLXPLAT_CPLD_FAN_MASK GENMASK(3, 0)
|
||||||
|
#define MLXPLAT_CPLD_FAN_NG_MASK GENMASK(5, 0)
|
||||||
|
|
||||||
/* Start channel numbers */
|
/* Start channel numbers */
|
||||||
#define MLXPLAT_CPLD_CH1 2
|
#define MLXPLAT_CPLD_CH1 2
|
||||||
|
@ -89,6 +92,15 @@
|
||||||
/* Number of LPC attached MUX platform devices */
|
/* Number of LPC attached MUX platform devices */
|
||||||
#define MLXPLAT_CPLD_LPC_MUX_DEVS 2
|
#define MLXPLAT_CPLD_LPC_MUX_DEVS 2
|
||||||
|
|
||||||
|
/* Hotplug devices adapter numbers */
|
||||||
|
#define MLXPLAT_CPLD_NR_NONE -1
|
||||||
|
#define MLXPLAT_CPLD_PSU_DEFAULT_NR 10
|
||||||
|
#define MLXPLAT_CPLD_PSU_MSNXXXX_NR 4
|
||||||
|
#define MLXPLAT_CPLD_FAN1_DEFAULT_NR 11
|
||||||
|
#define MLXPLAT_CPLD_FAN2_DEFAULT_NR 12
|
||||||
|
#define MLXPLAT_CPLD_FAN3_DEFAULT_NR 13
|
||||||
|
#define MLXPLAT_CPLD_FAN4_DEFAULT_NR 14
|
||||||
|
|
||||||
/* mlxplat_priv - platform private data
|
/* mlxplat_priv - platform private data
|
||||||
* @pdev_i2c - i2c controller platform device
|
* @pdev_i2c - i2c controller platform device
|
||||||
* @pdev_mux - array of mux platform devices
|
* @pdev_mux - array of mux platform devices
|
||||||
|
@ -159,6 +171,15 @@ static struct i2c_board_info mlxplat_mlxcpld_psu[] = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct i2c_board_info mlxplat_mlxcpld_ng_psu[] = {
|
||||||
|
{
|
||||||
|
I2C_BOARD_INFO("24c32", 0x51),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
I2C_BOARD_INFO("24c32", 0x50),
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
static struct i2c_board_info mlxplat_mlxcpld_pwr[] = {
|
static struct i2c_board_info mlxplat_mlxcpld_pwr[] = {
|
||||||
{
|
{
|
||||||
I2C_BOARD_INFO("dps460", 0x59),
|
I2C_BOARD_INFO("dps460", 0x59),
|
||||||
|
@ -190,14 +211,14 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_psu_items_data[] = {
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
.mask = BIT(0),
|
.mask = BIT(0),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[0],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[0],
|
||||||
.hpdev.nr = 10,
|
.hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.label = "psu2",
|
.label = "psu2",
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
.mask = BIT(1),
|
.mask = BIT(1),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[1],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[1],
|
||||||
.hpdev.nr = 10,
|
.hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -207,14 +228,14 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_pwr_items_data[] = {
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
.mask = BIT(0),
|
.mask = BIT(0),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[0],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[0],
|
||||||
.hpdev.nr = 10,
|
.hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.label = "pwr2",
|
.label = "pwr2",
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
.mask = BIT(1),
|
.mask = BIT(1),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[1],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[1],
|
||||||
.hpdev.nr = 10,
|
.hpdev.nr = MLXPLAT_CPLD_PSU_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -224,28 +245,28 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_fan_items_data[] = {
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
.mask = BIT(0),
|
.mask = BIT(0),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[0],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[0],
|
||||||
.hpdev.nr = 11,
|
.hpdev.nr = MLXPLAT_CPLD_FAN1_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.label = "fan2",
|
.label = "fan2",
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
.mask = BIT(1),
|
.mask = BIT(1),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[1],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[1],
|
||||||
.hpdev.nr = 12,
|
.hpdev.nr = MLXPLAT_CPLD_FAN2_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.label = "fan3",
|
.label = "fan3",
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
.mask = BIT(2),
|
.mask = BIT(2),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[2],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[2],
|
||||||
.hpdev.nr = 13,
|
.hpdev.nr = MLXPLAT_CPLD_FAN3_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
.label = "fan4",
|
.label = "fan4",
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
.mask = BIT(3),
|
.mask = BIT(3),
|
||||||
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[3],
|
.hpdev.brdinfo = &mlxplat_mlxcpld_fan[3],
|
||||||
.hpdev.nr = 14,
|
.hpdev.nr = MLXPLAT_CPLD_FAN4_DEFAULT_NR,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -287,14 +308,29 @@ struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_default_data = {
|
||||||
.mask = MLXPLAT_CPLD_AGGR_MASK_DEF,
|
.mask = MLXPLAT_CPLD_AGGR_MASK_DEF,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_msn21xx_pwr_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "pwr1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "pwr2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
/* Platform hotplug MSN21xx system family data */
|
/* Platform hotplug MSN21xx system family data */
|
||||||
static struct mlxreg_core_item mlxplat_mlxcpld_msn21xx_items[] = {
|
static struct mlxreg_core_item mlxplat_mlxcpld_msn21xx_items[] = {
|
||||||
{
|
{
|
||||||
.data = mlxplat_mlxcpld_default_pwr_items_data,
|
.data = mlxplat_mlxcpld_msn21xx_pwr_items_data,
|
||||||
.aggr_mask = MLXPLAT_CPLD_AGGR_PWR_MASK_DEF,
|
.aggr_mask = MLXPLAT_CPLD_AGGR_PWR_MASK_DEF,
|
||||||
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
.mask = MLXPLAT_CPLD_PWR_MASK,
|
.mask = MLXPLAT_CPLD_PWR_MASK,
|
||||||
.count = ARRAY_SIZE(mlxplat_mlxcpld_pwr),
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_msn21xx_pwr_items_data),
|
||||||
.inversed = 0,
|
.inversed = 0,
|
||||||
.health = false,
|
.health = false,
|
||||||
},
|
},
|
||||||
|
@ -306,6 +342,245 @@ struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_msn21xx_data = {
|
||||||
.counter = ARRAY_SIZE(mlxplat_mlxcpld_msn21xx_items),
|
.counter = ARRAY_SIZE(mlxplat_mlxcpld_msn21xx_items),
|
||||||
.cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET,
|
.cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET,
|
||||||
.mask = MLXPLAT_CPLD_AGGR_MASK_DEF,
|
.mask = MLXPLAT_CPLD_AGGR_MASK_DEF,
|
||||||
|
.cell_low = MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET,
|
||||||
|
.mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Platform hotplug msn274x system family data */
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_msn274x_psu_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "psu1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[0],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "psu2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_psu[1],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_pwr_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "pwr1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[0],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "pwr2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_pwr[1],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_msn274x_fan_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "fan1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan3",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(2),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan4",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(3),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_item mlxplat_mlxcpld_msn274x_items[] = {
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_msn274x_psu_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_PSU_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_msn274x_psu_items_data),
|
||||||
|
.inversed = 1,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_default_ng_pwr_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_PWR_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_default_ng_pwr_items_data),
|
||||||
|
.inversed = 0,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_msn274x_fan_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_FAN_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_msn274x_fan_items_data),
|
||||||
|
.inversed = 1,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static
|
||||||
|
struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_msn274x_data = {
|
||||||
|
.items = mlxplat_mlxcpld_msn274x_items,
|
||||||
|
.counter = ARRAY_SIZE(mlxplat_mlxcpld_msn274x_items),
|
||||||
|
.cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.cell_low = MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET,
|
||||||
|
.mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Platform hotplug MSN201x system family data */
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_msn201x_pwr_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "pwr1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "pwr2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_item mlxplat_mlxcpld_msn201x_items[] = {
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_msn201x_pwr_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_PWR_MASK_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_PWR_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_msn201x_pwr_items_data),
|
||||||
|
.inversed = 0,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static
|
||||||
|
struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_msn201x_data = {
|
||||||
|
.items = mlxplat_mlxcpld_msn21xx_items,
|
||||||
|
.counter = ARRAY_SIZE(mlxplat_mlxcpld_msn201x_items),
|
||||||
|
.cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_AGGR_MASK_DEF,
|
||||||
|
.cell_low = MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET,
|
||||||
|
.mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Platform hotplug next generation system family data */
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_psu_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "psu1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_ng_psu[0],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "psu2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.brdinfo = &mlxplat_mlxcpld_ng_psu[1],
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_PSU_MSNXXXX_NR,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_data mlxplat_mlxcpld_default_ng_fan_items_data[] = {
|
||||||
|
{
|
||||||
|
.label = "fan1",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(0),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan2",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(1),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan3",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(2),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan4",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(3),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan5",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(4),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.label = "fan6",
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = BIT(5),
|
||||||
|
.hpdev.nr = MLXPLAT_CPLD_NR_NONE,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static struct mlxreg_core_item mlxplat_mlxcpld_default_ng_items[] = {
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_default_ng_psu_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_PSU_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_default_ng_psu_items_data),
|
||||||
|
.inversed = 1,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_default_ng_pwr_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_PWR_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_default_ng_pwr_items_data),
|
||||||
|
.inversed = 0,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.data = mlxplat_mlxcpld_default_ng_fan_items_data,
|
||||||
|
.aggr_mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.reg = MLXPLAT_CPLD_LPC_REG_FAN_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_FAN_NG_MASK,
|
||||||
|
.count = ARRAY_SIZE(mlxplat_mlxcpld_default_ng_fan_items_data),
|
||||||
|
.inversed = 1,
|
||||||
|
.health = false,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
static
|
||||||
|
struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_default_ng_data = {
|
||||||
|
.items = mlxplat_mlxcpld_default_ng_items,
|
||||||
|
.counter = ARRAY_SIZE(mlxplat_mlxcpld_default_ng_items),
|
||||||
|
.cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET,
|
||||||
|
.mask = MLXPLAT_CPLD_AGGR_MASK_NG_DEF,
|
||||||
|
.cell_low = MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET,
|
||||||
|
.mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW,
|
||||||
};
|
};
|
||||||
|
|
||||||
static bool mlxplat_mlxcpld_writeable_reg(struct device *dev, unsigned int reg)
|
static bool mlxplat_mlxcpld_writeable_reg(struct device *dev, unsigned int reg)
|
||||||
|
@ -437,7 +712,56 @@ static int __init mlxplat_dmi_msn21xx_matched(const struct dmi_system_id *dmi)
|
||||||
return 1;
|
return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static int __init mlxplat_dmi_msn274x_matched(const struct dmi_system_id *dmi)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) {
|
||||||
|
mlxplat_mux_data[i].values = mlxplat_msn21xx_channels;
|
||||||
|
mlxplat_mux_data[i].n_values =
|
||||||
|
ARRAY_SIZE(mlxplat_msn21xx_channels);
|
||||||
|
}
|
||||||
|
mlxplat_hotplug = &mlxplat_mlxcpld_msn274x_data;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init mlxplat_dmi_msn201x_matched(const struct dmi_system_id *dmi)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) {
|
||||||
|
mlxplat_mux_data[i].values = mlxplat_msn21xx_channels;
|
||||||
|
mlxplat_mux_data[i].n_values =
|
||||||
|
ARRAY_SIZE(mlxplat_msn21xx_channels);
|
||||||
|
}
|
||||||
|
mlxplat_hotplug = &mlxplat_mlxcpld_msn201x_data;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int __init mlxplat_dmi_qmb7xx_matched(const struct dmi_system_id *dmi)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
for (i = 0; i < ARRAY_SIZE(mlxplat_mux_data); i++) {
|
||||||
|
mlxplat_mux_data[i].values = mlxplat_msn21xx_channels;
|
||||||
|
mlxplat_mux_data[i].n_values =
|
||||||
|
ARRAY_SIZE(mlxplat_msn21xx_channels);
|
||||||
|
}
|
||||||
|
mlxplat_hotplug = &mlxplat_mlxcpld_default_ng_data;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
};
|
||||||
|
|
||||||
static const struct dmi_system_id mlxplat_dmi_table[] __initconst = {
|
static const struct dmi_system_id mlxplat_dmi_table[] __initconst = {
|
||||||
|
{
|
||||||
|
.callback = mlxplat_dmi_msn274x_matched,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "MSN274"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{
|
{
|
||||||
.callback = mlxplat_dmi_default_matched,
|
.callback = mlxplat_dmi_default_matched,
|
||||||
.matches = {
|
.matches = {
|
||||||
|
@ -473,6 +797,34 @@ static const struct dmi_system_id mlxplat_dmi_table[] __initconst = {
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "MSN21"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "MSN21"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.callback = mlxplat_dmi_msn201x_matched,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "MSN201"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.callback = mlxplat_dmi_qmb7xx_matched,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "QMB7"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.callback = mlxplat_dmi_qmb7xx_matched,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "SN37"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.callback = mlxplat_dmi_qmb7xx_matched,
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "Mellanox Technologies"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "SN34"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{ }
|
{ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue