|
31 | 31 | struct macsmc_power { |
32 | 32 | struct device *dev; |
33 | 33 | struct apple_smc *smc; |
| 34 | + struct power_supply_desc ac_desc; |
34 | 35 | struct power_supply_desc batt_desc; |
35 | 36 |
|
36 | 37 | struct power_supply *batt; |
@@ -638,9 +639,9 @@ static int macsmc_ac_get_property(struct power_supply *psy, |
638 | 639 |
|
639 | 640 | static enum power_supply_property macsmc_ac_props[] = { |
640 | 641 | POWER_SUPPLY_PROP_ONLINE, |
| 642 | + POWER_SUPPLY_PROP_INPUT_POWER_LIMIT, |
641 | 643 | POWER_SUPPLY_PROP_VOLTAGE_NOW, |
642 | 644 | POWER_SUPPLY_PROP_INPUT_CURRENT_LIMIT, |
643 | | - POWER_SUPPLY_PROP_INPUT_POWER_LIMIT, |
644 | 645 | }; |
645 | 646 |
|
646 | 647 | static const struct power_supply_desc macsmc_ac_desc = { |
@@ -789,6 +790,7 @@ static int macsmc_power_probe(struct platform_device *pdev) |
789 | 790 |
|
790 | 791 | power->dev = &pdev->dev; |
791 | 792 | power->smc = smc; |
| 793 | + power->ac_desc = macsmc_ac_desc; |
792 | 794 | power->batt_desc = macsmc_battery_desc; |
793 | 795 | dev_set_drvdata(&pdev->dev, power); |
794 | 796 |
|
@@ -832,7 +834,12 @@ static int macsmc_power_probe(struct platform_device *pdev) |
832 | 834 | return ret; |
833 | 835 | } |
834 | 836 |
|
835 | | - power->ac = devm_power_supply_register(&pdev->dev, &macsmc_ac_desc, &psy_cfg); |
| 837 | + /* SMC firmware in macOS 15.4 dropped "AC-i" and "AC-n" (and all keys |
| 838 | + * with lower case last letter) without obvious replacement. */ |
| 839 | + if (apple_smc_read_u16(power->smc, SMC_KEY(AC-n), &vu16) < 0) |
| 840 | + power->ac_desc.num_properties -= 2; |
| 841 | + |
| 842 | + power->ac = devm_power_supply_register(&pdev->dev, &power->ac_desc, &psy_cfg); |
836 | 843 | if (IS_ERR(power->ac)) { |
837 | 844 | dev_err(&pdev->dev, "Failed to register AC adapter\n"); |
838 | 845 | ret = PTR_ERR(power->ac); |
|
0 commit comments