@@ -519,8 +519,12 @@ int ac_boot_status(void)
519519 return (* host_get_customer_memmap (0x48 ) & BIT (0 )) ? true : false;
520520}
521521
522+ /* counter for chassis open while ec no power, only rtc power */
522523static uint8_t chassis_vtr_open_count ;
524+ /* counter for chassis open while ec has power */
523525static uint8_t chassis_open_count ;
526+ /* counter for chassis press while ec has power, clear when enter S0 */
527+ static uint8_t chassis_press_counter ;
524528
525529static void check_chassis_open (int init )
526530{
@@ -543,6 +547,11 @@ static void check_chassis_open(int init)
543547 ++ chassis_open_count );
544548 }
545549
550+ /* counter for chasis pin */
551+ if (chipset_in_state (CHIPSET_STATE_ANY_OFF ))
552+ if (chassis_press_counter < 0xFF )
553+ chassis_press_counter ++ ;
554+
546555 CPRINTF ("Chassis was open" );
547556 }
548557}
@@ -1335,3 +1344,21 @@ static enum ec_status host_chassis_intrusion_control(struct host_cmd_handler_arg
13351344}
13361345DECLARE_HOST_COMMAND (EC_CMD_CHASSIS_INTRUSION , host_chassis_intrusion_control ,
13371346 EC_VER_MASK (0 ));
1347+
1348+ static enum ec_status chassis_counter (struct host_cmd_handler_args * args )
1349+ {
1350+ struct ec_response_chassis_counter * r = args -> response ;
1351+
1352+
1353+ CPRINTS ("Read chassis counter: %d" , chassis_press_counter );
1354+ r -> press_counter = chassis_press_counter ;
1355+
1356+ /* clear when bios get, bios will get this data while post */
1357+ chassis_press_counter = 0 ;
1358+
1359+ args -> response_size = sizeof (* r );
1360+
1361+ return EC_RES_SUCCESS ;
1362+
1363+ }
1364+ DECLARE_HOST_COMMAND (EC_CMD_CHASSIS_COUNTER , chassis_counter , EC_VER_MASK (0 ));
0 commit comments