@@ -72,6 +72,36 @@ static struct macsmc_power *g_power;
72
72
#define ACSt_CAN_BOOT_AP BIT(2)
73
73
#define ACSt_CAN_BOOT_IBOOT BIT(1)
74
74
75
+ static void macsmc_do_dbg (struct macsmc_power * power )
76
+ {
77
+ int p_in = 0 , p_sys = 0 , p_3v8 = 0 , p_mpmu = 0 , p_spmu = 0 , p_clvr = 0 , p_cpu = 0 ;
78
+ s32 p_bat = 0 ;
79
+ s16 t_full = 0 , t_empty = 0 ;
80
+ u8 charge = 0 ;
81
+
82
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PDTR ), & p_in , 1000 );
83
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PSTR ), & p_sys , 1000 );
84
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PMVR ), & p_3v8 , 1000 );
85
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PHPC ), & p_cpu , 1000 );
86
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PSVR ), & p_clvr , 1000 );
87
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PPMC ), & p_mpmu , 1000 );
88
+ apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PPSC ), & p_spmu , 1000 );
89
+ apple_smc_read_s32 (power -> smc , SMC_KEY (B0AP ), & p_bat );
90
+ apple_smc_read_s16 (power -> smc , SMC_KEY (B0TE ), & t_empty );
91
+ apple_smc_read_s16 (power -> smc , SMC_KEY (B0TF ), & t_full );
92
+ apple_smc_read_u8 (power -> smc , SMC_KEY (BUIC ), & charge );
93
+
94
+ #define FD3 (x ) ((x) / 1000), abs((x) % 1000)
95
+ dev_info (power -> dev ,
96
+ "In %2d.%03dW Sys %2d.%03dW 3V8 %2d.%03dW MPMU %2d.%03dW SPMU %2d.%03dW "
97
+ "CLVR %2d.%03dW CPU %2d.%03dW Batt %2d.%03dW %d%% T%s %dm\n" ,
98
+ FD3 (p_in ), FD3 (p_sys ), FD3 (p_3v8 ), FD3 (p_mpmu ), FD3 (p_spmu ), FD3 (p_clvr ),
99
+ FD3 (p_cpu ), FD3 (p_bat ), charge ,
100
+ t_full >= 0 ? "full" : "empty" ,
101
+ t_full >= 0 ? t_full : t_empty );
102
+ #undef FD3
103
+ }
104
+
75
105
static int macsmc_battery_get_status (struct macsmc_power * power )
76
106
{
77
107
u64 nocharge_flags ;
@@ -500,34 +530,8 @@ static void macsmc_dbg_work(struct work_struct *wrk)
500
530
{
501
531
struct macsmc_power * power = container_of (to_delayed_work (wrk ),
502
532
struct macsmc_power , dbg_log_work );
503
- int p_in = 0 , p_sys = 0 , p_3v8 = 0 , p_mpmu = 0 , p_spmu = 0 , p_clvr = 0 , p_cpu = 0 ;
504
- s32 p_bat = 0 ;
505
- s16 t_full = 0 , t_empty = 0 ;
506
- u8 charge = 0 ;
507
533
508
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PDTR ), & p_in , 1000 );
509
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PSTR ), & p_sys , 1000 );
510
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PMVR ), & p_3v8 , 1000 );
511
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PHPC ), & p_cpu , 1000 );
512
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PSVR ), & p_clvr , 1000 );
513
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PPMC ), & p_mpmu , 1000 );
514
- apple_smc_read_f32_scaled (power -> smc , SMC_KEY (PPSC ), & p_spmu , 1000 );
515
- apple_smc_read_s32 (power -> smc , SMC_KEY (B0AP ), & p_bat );
516
- apple_smc_read_s16 (power -> smc , SMC_KEY (B0TE ), & t_empty );
517
- apple_smc_read_s16 (power -> smc , SMC_KEY (B0TF ), & t_full );
518
- apple_smc_read_u8 (power -> smc , SMC_KEY (BUIC ), & charge );
519
-
520
- #define FD3 (x ) ((x) / 1000), abs((x) % 1000)
521
-
522
- dev_info (power -> dev ,
523
- "In %2d.%03dW Sys %2d.%03dW 3V8 %2d.%03dW MPMU %2d.%03dW SPMU %2d.%03dW "
524
- "CLVR %2d.%03dW CPU %2d.%03dW Batt %2d.%03dW %d%% T%s %dm\n" ,
525
- FD3 (p_in ), FD3 (p_sys ), FD3 (p_3v8 ), FD3 (p_mpmu ), FD3 (p_spmu ), FD3 (p_clvr ),
526
- FD3 (p_cpu ), FD3 (p_bat ), charge ,
527
- t_full >= 0 ? "full" : "empty" ,
528
- t_full >= 0 ? t_full : t_empty );
529
-
530
- #undef FD3
534
+ macsmc_do_dbg (power );
531
535
532
536
if (log_power )
533
537
schedule_delayed_work (& power -> dbg_log_work , POWER_LOG_INTERVAL );
@@ -620,6 +624,12 @@ static int macsmc_power_event(struct notifier_block *nb, unsigned long event, vo
620
624
} else if ((event & 0xff000000 ) == 0x71000000 ) {
621
625
dev_info (power -> dev , "Unknown charger event 0x%lx\n" , event );
622
626
627
+ return NOTIFY_OK ;
628
+ } else if ((event & 0xffff0000 ) == 0x72010000 ) {
629
+ /* Button event handled by macsmc-hid, but let's do a debug print */
630
+ if (log_power )
631
+ macsmc_do_dbg (power );
632
+
623
633
return NOTIFY_OK ;
624
634
}
625
635
0 commit comments