Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'platform-drivers-x86-v6.14-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Ilpo Järvinen:
"Fixes and new HW support.

The diff is a bit larger than I'd prefer at this point due to
unwinding the amd/pmf driver's error handling properly instead of
calling a deinit function that was a can full of worms.

Summary:

- amd/pmf:
- Fix error handling in amd_pmf_init_smart_pc()
- Fix missing hidden options for Smart PC

- surface: aggregator_registry: Add Support for Surface Pro 11"

* tag 'platform-drivers-x86-v6.14-5' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
MAINTAINERS: Update Ike Panhc's email address
platform/x86/amd: pmf: Fix missing hidden options for Smart PC
platform/surface: aggregator_registry: Add Support for Surface Pro 11
platform/x86/amd/pmf: fix cleanup in amd_pmf_init_smart_pc()

+33 -13
+1
.mailmap
··· 281 281 Herbert Xu <herbert@gondor.apana.org.au> 282 282 Huacai Chen <chenhuacai@kernel.org> <chenhc@lemote.com> 283 283 Huacai Chen <chenhuacai@kernel.org> <chenhuacai@loongson.cn> 284 + Ike Panhc <ikepanhc@gmail.com> <ike.pan@canonical.com> 284 285 J. Bruce Fields <bfields@fieldses.org> <bfields@redhat.com> 285 286 J. Bruce Fields <bfields@fieldses.org> <bfields@citi.umich.edu> 286 287 Jacob Shin <Jacob.Shin@amd.com>
+1 -1
MAINTAINERS
··· 11141 11141 F: drivers/i2c/busses/i2c-icy.c 11142 11142 11143 11143 IDEAPAD LAPTOP EXTRAS DRIVER 11144 - M: Ike Panhc <ike.pan@canonical.com> 11144 + M: Ike Panhc <ikepanhc@gmail.com> 11145 11145 L: platform-driver-x86@vger.kernel.org 11146 11146 S: Maintained 11147 11147 W: http://launchpad.net/ideapad-laptop
+4 -1
drivers/platform/surface/surface_aggregator_registry.c
··· 371 371 NULL, 372 372 }; 373 373 374 - /* Devices for Surface Pro 9 (Intel/x86) and 10 */ 374 + /* Devices for Surface Pro 9, 10 and 11 (Intel/x86) */ 375 375 static const struct software_node *ssam_node_group_sp9[] = { 376 376 &ssam_node_root, 377 377 &ssam_node_hub_kip, ··· 429 429 430 430 /* Surface Pro 10 */ 431 431 { "MSHW0510", (unsigned long)ssam_node_group_sp9 }, 432 + 433 + /* Surface Pro 11 */ 434 + { "MSHW0583", (unsigned long)ssam_node_group_sp9 }, 432 435 433 436 /* Surface Book 2 */ 434 437 { "MSHW0107", (unsigned long)ssam_node_group_gen5 },
+2
drivers/platform/x86/amd/pmf/spc.c
··· 219 219 220 220 switch (dev->current_profile) { 221 221 case PLATFORM_PROFILE_PERFORMANCE: 222 + case PLATFORM_PROFILE_BALANCED_PERFORMANCE: 222 223 val = TA_BEST_PERFORMANCE; 223 224 break; 224 225 case PLATFORM_PROFILE_BALANCED: 225 226 val = TA_BETTER_PERFORMANCE; 226 227 break; 227 228 case PLATFORM_PROFILE_LOW_POWER: 229 + case PLATFORM_PROFILE_QUIET: 228 230 val = TA_BEST_BATTERY; 229 231 break; 230 232 default:
+25 -11
drivers/platform/x86/amd/pmf/tee-if.c
··· 510 510 511 511 ret = amd_pmf_set_dram_addr(dev, true); 512 512 if (ret) 513 - goto error; 513 + goto err_cancel_work; 514 514 515 515 dev->policy_base = devm_ioremap_resource(dev->dev, dev->res); 516 516 if (IS_ERR(dev->policy_base)) { 517 517 ret = PTR_ERR(dev->policy_base); 518 - goto error; 518 + goto err_free_dram_buf; 519 519 } 520 520 521 521 dev->policy_buf = kzalloc(dev->policy_sz, GFP_KERNEL); 522 522 if (!dev->policy_buf) { 523 523 ret = -ENOMEM; 524 - goto error; 524 + goto err_free_dram_buf; 525 525 } 526 526 527 527 memcpy_fromio(dev->policy_buf, dev->policy_base, dev->policy_sz); ··· 531 531 dev->prev_data = kzalloc(sizeof(*dev->prev_data), GFP_KERNEL); 532 532 if (!dev->prev_data) { 533 533 ret = -ENOMEM; 534 - goto error; 534 + goto err_free_policy; 535 535 } 536 536 537 537 for (i = 0; i < ARRAY_SIZE(amd_pmf_ta_uuid); i++) { 538 538 ret = amd_pmf_tee_init(dev, &amd_pmf_ta_uuid[i]); 539 539 if (ret) 540 - return ret; 540 + goto err_free_prev_data; 541 541 542 542 ret = amd_pmf_start_policy_engine(dev); 543 543 switch (ret) { ··· 550 550 status = false; 551 551 break; 552 552 default: 553 - goto error; 553 + ret = -EINVAL; 554 + amd_pmf_tee_deinit(dev); 555 + goto err_free_prev_data; 554 556 } 555 557 556 558 if (status) 557 559 break; 558 560 } 559 561 560 - if (!status && !pb_side_load) 561 - goto error; 562 + if (!status && !pb_side_load) { 563 + ret = -EINVAL; 564 + goto err_free_prev_data; 565 + } 562 566 563 567 if (pb_side_load) 564 568 amd_pmf_open_pb(dev, dev->dbgfs_dir); 565 569 566 570 ret = amd_pmf_register_input_device(dev); 567 571 if (ret) 568 - goto error; 572 + goto err_pmf_remove_pb; 569 573 570 574 return 0; 571 575 572 - error: 573 - amd_pmf_deinit_smart_pc(dev); 576 + err_pmf_remove_pb: 577 + if (pb_side_load && dev->esbin) 578 + amd_pmf_remove_pb(dev); 579 + amd_pmf_tee_deinit(dev); 580 + err_free_prev_data: 581 + kfree(dev->prev_data); 582 + err_free_policy: 583 + kfree(dev->policy_buf); 584 + err_free_dram_buf: 585 + kfree(dev->buf); 586 + err_cancel_work: 587 + cancel_delayed_work_sync(&dev->pb_work); 574 588 575 589 return ret; 576 590 }