|
@@ -1008,6 +1008,100 @@ static struct mlxreg_core_platform_data mlxplat_default_regs_io_data = {
|
|
|
.counter = ARRAY_SIZE(mlxplat_mlxcpld_default_regs_io_data),
|
|
|
};
|
|
|
|
|
|
+/* Platform register access MSN21xx, MSN201x systems families data */
|
|
|
+static struct mlxreg_core_data mlxplat_mlxcpld_msn21xx_regs_io_data[] = {
|
|
|
+ {
|
|
|
+ .label = "cpld1_version",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_CPLD1_VER_OFFSET,
|
|
|
+ .bit = GENMASK(7, 0),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "cpld2_version",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_CPLD2_VER_OFFSET,
|
|
|
+ .bit = GENMASK(7, 0),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_long_pb",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(0),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_short_pb",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(1),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_aux_pwr_or_ref",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(2),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_sw_reset",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(3),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_main_pwr_fail",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(4),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_asic_thermal",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(5),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "reset_hotswap_or_halt",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_RESET_CAUSE_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(6),
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "psu1_on",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(0),
|
|
|
+ .mode = 0200,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "psu2_on",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(1),
|
|
|
+ .mode = 0200,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "pwr_cycle",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(2),
|
|
|
+ .mode = 0200,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "pwr_down",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_GP1_OFFSET,
|
|
|
+ .mask = GENMASK(7, 0) & ~BIT(3),
|
|
|
+ .mode = 0200,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ .label = "asic_health",
|
|
|
+ .reg = MLXPLAT_CPLD_LPC_REG_ASIC_HEALTH_OFFSET,
|
|
|
+ .mask = MLXPLAT_CPLD_ASIC_MASK,
|
|
|
+ .bit = 1,
|
|
|
+ .mode = 0444,
|
|
|
+ },
|
|
|
+};
|
|
|
+
|
|
|
+static struct mlxreg_core_platform_data mlxplat_msn21xx_regs_io_data = {
|
|
|
+ .data = mlxplat_mlxcpld_msn21xx_regs_io_data,
|
|
|
+ .counter = ARRAY_SIZE(mlxplat_mlxcpld_msn21xx_regs_io_data),
|
|
|
+};
|
|
|
+
|
|
|
/* Platform FAN default */
|
|
|
static struct mlxreg_core_data mlxplat_mlxcpld_default_fan_data[] = {
|
|
|
{
|
|
@@ -1293,6 +1387,7 @@ static int __init mlxplat_dmi_msn21xx_matched(const struct dmi_system_id *dmi)
|
|
|
mlxplat_hotplug->deferred_nr =
|
|
|
mlxplat_msn21xx_channels[MLXPLAT_CPLD_GRP_CHNL_NUM - 1];
|
|
|
mlxplat_led = &mlxplat_msn21xx_led_data;
|
|
|
+ mlxplat_regs_io = &mlxplat_msn21xx_regs_io_data;
|
|
|
|
|
|
return 1;
|
|
|
};
|
|
@@ -1328,6 +1423,7 @@ static int __init mlxplat_dmi_msn201x_matched(const struct dmi_system_id *dmi)
|
|
|
mlxplat_hotplug->deferred_nr =
|
|
|
mlxplat_default_channels[i - 1][MLXPLAT_CPLD_GRP_CHNL_NUM - 1];
|
|
|
mlxplat_led = &mlxplat_default_ng_led_data;
|
|
|
+ mlxplat_regs_io = &mlxplat_msn21xx_regs_io_data;
|
|
|
|
|
|
return 1;
|
|
|
};
|