@@ -533,6 +533,21 @@ static struct mlxreg_core_data mlxplat_mlxcpld_default_pwr_items_data[] = {
533533 },
534534};
535535
536+ static struct mlxreg_core_data mlxplat_mlxcpld_default_pwr_wc_items_data [] = {
537+ {
538+ .label = "pwr1" ,
539+ .reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET ,
540+ .mask = BIT (0 ),
541+ .hpdev .nr = MLXPLAT_CPLD_NR_NONE ,
542+ },
543+ {
544+ .label = "pwr2" ,
545+ .reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET ,
546+ .mask = BIT (1 ),
547+ .hpdev .nr = MLXPLAT_CPLD_NR_NONE ,
548+ },
549+ };
550+
536551static struct mlxreg_core_data mlxplat_mlxcpld_default_fan_items_data [] = {
537552 {
538553 .label = "fan1" ,
@@ -661,6 +676,46 @@ struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_default_data = {
661676 .mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW ,
662677};
663678
679+ static struct mlxreg_core_item mlxplat_mlxcpld_default_wc_items [] = {
680+ {
681+ .data = mlxplat_mlxcpld_comex_psu_items_data ,
682+ .aggr_mask = MLXPLAT_CPLD_AGGR_MASK_CARRIER ,
683+ .reg = MLXPLAT_CPLD_LPC_REG_PSU_OFFSET ,
684+ .mask = MLXPLAT_CPLD_PSU_MASK ,
685+ .count = ARRAY_SIZE (mlxplat_mlxcpld_default_psu_items_data ),
686+ .inversed = 1 ,
687+ .health = false,
688+ },
689+ {
690+ .data = mlxplat_mlxcpld_default_pwr_wc_items_data ,
691+ .aggr_mask = MLXPLAT_CPLD_AGGR_MASK_CARRIER ,
692+ .reg = MLXPLAT_CPLD_LPC_REG_PWR_OFFSET ,
693+ .mask = MLXPLAT_CPLD_PWR_MASK ,
694+ .count = ARRAY_SIZE (mlxplat_mlxcpld_default_pwr_items_data ),
695+ .inversed = 0 ,
696+ .health = false,
697+ },
698+ {
699+ .data = mlxplat_mlxcpld_default_asic_items_data ,
700+ .aggr_mask = MLXPLAT_CPLD_AGGR_ASIC_MASK_DEF ,
701+ .reg = MLXPLAT_CPLD_LPC_REG_ASIC_HEALTH_OFFSET ,
702+ .mask = MLXPLAT_CPLD_ASIC_MASK ,
703+ .count = ARRAY_SIZE (mlxplat_mlxcpld_default_asic_items_data ),
704+ .inversed = 0 ,
705+ .health = true,
706+ },
707+ };
708+
709+ static
710+ struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_default_wc_data = {
711+ .items = mlxplat_mlxcpld_default_wc_items ,
712+ .counter = ARRAY_SIZE (mlxplat_mlxcpld_default_wc_items ),
713+ .cell = MLXPLAT_CPLD_LPC_REG_AGGR_OFFSET ,
714+ .mask = MLXPLAT_CPLD_AGGR_MASK_DEF ,
715+ .cell_low = MLXPLAT_CPLD_LPC_REG_AGGRLO_OFFSET ,
716+ .mask_low = MLXPLAT_CPLD_LOW_AGGR_MASK_LOW ,
717+ };
718+
664719static
665720struct mlxreg_core_hotplug_platform_data mlxplat_mlxcpld_comex_data = {
666721 .items = mlxplat_mlxcpld_comex_items ,
@@ -2018,6 +2073,35 @@ static struct mlxreg_core_platform_data mlxplat_default_led_data = {
20182073 .counter = ARRAY_SIZE (mlxplat_mlxcpld_default_led_data ),
20192074};
20202075
2076+ /* Platform led default data for water cooling */
2077+ static struct mlxreg_core_data mlxplat_mlxcpld_default_led_wc_data [] = {
2078+ {
2079+ .label = "status:green" ,
2080+ .reg = MLXPLAT_CPLD_LPC_REG_LED1_OFFSET ,
2081+ .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK ,
2082+ },
2083+ {
2084+ .label = "status:red" ,
2085+ .reg = MLXPLAT_CPLD_LPC_REG_LED1_OFFSET ,
2086+ .mask = MLXPLAT_CPLD_LED_LO_NIBBLE_MASK
2087+ },
2088+ {
2089+ .label = "psu:green" ,
2090+ .reg = MLXPLAT_CPLD_LPC_REG_LED1_OFFSET ,
2091+ .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK ,
2092+ },
2093+ {
2094+ .label = "psu:red" ,
2095+ .reg = MLXPLAT_CPLD_LPC_REG_LED1_OFFSET ,
2096+ .mask = MLXPLAT_CPLD_LED_HI_NIBBLE_MASK ,
2097+ },
2098+ };
2099+
2100+ static struct mlxreg_core_platform_data mlxplat_default_led_wc_data = {
2101+ .data = mlxplat_mlxcpld_default_led_wc_data ,
2102+ .counter = ARRAY_SIZE (mlxplat_mlxcpld_default_led_wc_data ),
2103+ };
2104+
20212105/* Platform led MSN21xx system family data */
20222106static struct mlxreg_core_data mlxplat_mlxcpld_msn21xx_led_data [] = {
20232107 {
@@ -4311,6 +4395,28 @@ static int __init mlxplat_dmi_default_matched(const struct dmi_system_id *dmi)
43114395 return 1 ;
43124396}
43134397
4398+ static int __init mlxplat_dmi_default_wc_matched (const struct dmi_system_id * dmi )
4399+ {
4400+ int i ;
4401+
4402+ mlxplat_max_adap_num = MLXPLAT_CPLD_MAX_PHYS_ADAPTER_NUM ;
4403+ mlxplat_mux_num = ARRAY_SIZE (mlxplat_default_mux_data );
4404+ mlxplat_mux_data = mlxplat_default_mux_data ;
4405+ for (i = 0 ; i < mlxplat_mux_num ; i ++ ) {
4406+ mlxplat_mux_data [i ].values = mlxplat_default_channels [i ];
4407+ mlxplat_mux_data [i ].n_values =
4408+ ARRAY_SIZE (mlxplat_default_channels [i ]);
4409+ }
4410+ mlxplat_hotplug = & mlxplat_mlxcpld_default_wc_data ;
4411+ mlxplat_hotplug -> deferred_nr =
4412+ mlxplat_default_channels [i - 1 ][MLXPLAT_CPLD_GRP_CHNL_NUM - 1 ];
4413+ mlxplat_led = & mlxplat_default_led_wc_data ;
4414+ mlxplat_regs_io = & mlxplat_default_regs_io_data ;
4415+ mlxplat_wd_data [0 ] = & mlxplat_mlxcpld_wd_set_type1 [0 ];
4416+
4417+ return 1 ;
4418+ }
4419+
43144420static int __init mlxplat_dmi_msn21xx_matched (const struct dmi_system_id * dmi )
43154421{
43164422 int i ;
@@ -4474,6 +4580,13 @@ static int __init mlxplat_dmi_modular_matched(const struct dmi_system_id *dmi)
44744580}
44754581
44764582static const struct dmi_system_id mlxplat_dmi_table [] __initconst = {
4583+ {
4584+ .callback = mlxplat_dmi_default_wc_matched ,
4585+ .matches = {
4586+ DMI_MATCH (DMI_BOARD_NAME , "VMOD0001" ),
4587+ DMI_EXACT_MATCH (DMI_PRODUCT_SKU , "HI138" ),
4588+ },
4589+ },
44774590 {
44784591 .callback = mlxplat_dmi_default_matched ,
44794592 .matches = {
0 commit comments