@@ -1454,6 +1454,99 @@ static void command_isl9241_dump(int chgnum)
14541454 dump_reg_range (chgnum , 0x90 , 0x91 );
14551455 dump_reg_range (chgnum , 0xFE , 0xFF );
14561456}
1457+ static enum ec_error_list command_isl9241_dump_get (int chgnum , uint32_t * regs , int size ) {
1458+ int index = 0 ;
1459+ int reg ;
1460+ int regval ;
1461+ int rv ;
1462+ if (size != 33 ) {
1463+ ccprintf ("ERROR: Size != 31\n" );
1464+ return EC_ERROR_PARAM2 ;
1465+ }
1466+ if (!regs ) {
1467+ ccprintf ("ERROR: Regs = NULL\n" );
1468+ return EC_ERROR_PARAM1 ;
1469+ }
1470+ // 2
1471+ for (reg = 0x14 ; reg <= 0x15 ; reg ++ ) {
1472+ rv = isl9241_read (chgnum , reg , & regval );
1473+ if (!rv )
1474+ ccprintf ("0x%04x\n" , regval );
1475+ else
1476+ ccprintf ("ERR (%d)\n" , rv );
1477+ regs [index ] = regval ;
1478+ index ++ ;
1479+ }
1480+ // 8
1481+ for (reg = 0x38 ; reg <= 0x40 ; reg ++ ) {
1482+ rv = isl9241_read (chgnum , reg , & regval );
1483+ if (!rv )
1484+ ccprintf ("0x%04x\n" , regval );
1485+ else
1486+ ccprintf ("ERR (%d)\n" , rv );
1487+ regs [index ] = regval ;
1488+ index ++ ;
1489+ }
1490+ // 1
1491+ for (reg = 0x43 ; reg <= 0x43 ; reg ++ ) {
1492+ rv = isl9241_read (chgnum , reg , & regval );
1493+ if (!rv )
1494+ ccprintf ("0x%04x\n" , regval );
1495+ else
1496+ ccprintf ("ERR (%d)\n" , rv );
1497+ regs [index ] = regval ;
1498+ index ++ ;
1499+ }
1500+
1501+ // 8
1502+ for (reg = 0x47 ; reg <= 0x4F ; reg ++ ) {
1503+ rv = isl9241_read (chgnum , reg , & regval );
1504+ if (!rv )
1505+ ccprintf ("0x%04x\n" , regval );
1506+ else
1507+ ccprintf ("ERR (%d)\n" , rv );
1508+ regs [index ] = regval ;
1509+ index ++ ;
1510+ }
1511+
1512+ // 8
1513+ for (reg = 0x80 ; reg <= 0x87 ; reg ++ ) {
1514+ rv = isl9241_read (chgnum , reg , & regval );
1515+ if (!rv )
1516+ ccprintf ("0x%04x\n" , regval );
1517+ else
1518+ ccprintf ("ERR (%d)\n" , rv );
1519+ regs [index ] = regval ;
1520+ index ++ ;
1521+ }
1522+
1523+ // 2
1524+ for (reg = 0x90 ; reg <= 0x91 ; reg ++ ) {
1525+ rv = isl9241_read (chgnum , reg , & regval );
1526+ if (!rv )
1527+ ccprintf ("0x%04x\n" , regval );
1528+ else
1529+ ccprintf ("ERR (%d)\n" , rv );
1530+ regs [index ] = regval ;
1531+ index ++ ;
1532+ }
1533+
1534+ // 2
1535+ for (reg = 0xFE ; reg <= 0xFF ; reg ++ ) {
1536+ rv = isl9241_read (chgnum , reg , & regval );
1537+ if (!rv )
1538+ ccprintf ("0x%04x\n" , regval );
1539+ else
1540+ ccprintf ("ERR (%d)\n" , rv );
1541+ regs [index ] = regval ;
1542+ index ++ ;
1543+ }
1544+ ccprintf ("index=%d\n" , index );
1545+ // Total: 2 + 9 + 1 + 9 + 8 + 2 + 2 = 33
1546+ cflush ();
1547+ return EC_SUCCESS ;
1548+ }
1549+
14571550#endif /* CONFIG_CMD_CHARGER_DUMP */
14581551
14591552const struct charger_drv isl9241_drv = {
@@ -1487,6 +1580,7 @@ const struct charger_drv isl9241_drv = {
14871580#endif
14881581#ifdef CONFIG_CMD_CHARGER_DUMP
14891582 .dump_registers = & command_isl9241_dump ,
1583+ .dump_registers_get = & command_isl9241_dump_get ,
14901584#endif
14911585#ifdef CONFIG_CHARGER_DUMP_PROCHOT
14921586 .dump_prochot = & isl9241_dump_prochot_status ,
0 commit comments