mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
chrome platform changes for 6.12
* Improvements - Adjust DMI match table for Framework Laptop for improving maintainabilities for both legacy and new models. - Add .remove driver callback for cros_ec_typec for allowing the driver to be rebound. - Use kmemdup_array() for taking care possible overflows. -----BEGIN PGP SIGNATURE----- iIkEABYIADEWIQS0yQeDP3cjLyifNRUrxTEGBto89AUCZugZQRMcdHp1bmdiaUBr ZXJuZWwub3JnAAoJECvFMQYG2jz0BuUBAKnNSFD0fcYpG7Sy3r1Ox2cvrfwSR3Lm YN+H3cy+ISEZAQCIiZms9U+oocmajWs0Fup+9TY9OsrgNabV0ZiZV5xpAg== =qQmu -----END PGP SIGNATURE----- Merge tag 'chrome-platform-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux Pull chrome platform updates from Tzung-Bi Shih: - Adjust DMI match table for Framework Laptop for improving maintainabilities for both legacy and new models - Add .remove driver callback for cros_ec_typec in order to allow the driver to be rebound - Use kmemdup_array() for taking care possible overflows * tag 'chrome-platform-for-6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux: platform/chrome: chromeos_laptop: Use kmemdup_array platform/chrome: cros_ec_typec: add remove driver hook platform/chrome: cros_ec_lpc: switch primary DMI data for Framework Laptop
This commit is contained in:
commit
9f39757957
@ -749,10 +749,9 @@ chromeos_laptop_prepare_i2c_peripherals(struct chromeos_laptop *cros_laptop,
|
|||||||
if (!src->num_i2c_peripherals)
|
if (!src->num_i2c_peripherals)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
i2c_peripherals = kmemdup(src->i2c_peripherals,
|
i2c_peripherals = kmemdup_array(src->i2c_peripherals,
|
||||||
src->num_i2c_peripherals *
|
src->num_i2c_peripherals,
|
||||||
sizeof(*src->i2c_peripherals),
|
sizeof(*i2c_peripherals), GFP_KERNEL);
|
||||||
GFP_KERNEL);
|
|
||||||
if (!i2c_peripherals)
|
if (!i2c_peripherals)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
@ -631,12 +631,12 @@ static const struct acpi_device_id cros_ec_lpc_acpi_device_ids[] = {
|
|||||||
};
|
};
|
||||||
MODULE_DEVICE_TABLE(acpi, cros_ec_lpc_acpi_device_ids);
|
MODULE_DEVICE_TABLE(acpi, cros_ec_lpc_acpi_device_ids);
|
||||||
|
|
||||||
static const struct lpc_driver_data framework_laptop_amd_lpc_driver_data __initconst = {
|
static const struct lpc_driver_data framework_laptop_npcx_lpc_driver_data __initconst = {
|
||||||
.quirks = CROS_EC_LPC_QUIRK_REMAP_MEMORY,
|
.quirks = CROS_EC_LPC_QUIRK_REMAP_MEMORY,
|
||||||
.quirk_mmio_memory_base = 0xE00,
|
.quirk_mmio_memory_base = 0xE00,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct lpc_driver_data framework_laptop_11_lpc_driver_data __initconst = {
|
static const struct lpc_driver_data framework_laptop_mec_lpc_driver_data __initconst = {
|
||||||
.quirks = CROS_EC_LPC_QUIRK_ACPI_ID|CROS_EC_LPC_QUIRK_AML_MUTEX,
|
.quirks = CROS_EC_LPC_QUIRK_ACPI_ID|CROS_EC_LPC_QUIRK_AML_MUTEX,
|
||||||
.quirk_acpi_id = "PNP0C09",
|
.quirk_acpi_id = "PNP0C09",
|
||||||
.quirk_aml_mutex_name = "ECMT",
|
.quirk_aml_mutex_name = "ECMT",
|
||||||
@ -696,21 +696,39 @@ static const struct dmi_system_id cros_ec_lpc_dmi_table[] __initconst = {
|
|||||||
},
|
},
|
||||||
/* A small number of non-Chromebook/box machines also use the ChromeOS EC */
|
/* A small number of non-Chromebook/box machines also use the ChromeOS EC */
|
||||||
{
|
{
|
||||||
/* the Framework Laptop 13 (AMD Ryzen) and 16 (AMD Ryzen) */
|
/* Framework Laptop (11th Gen Intel Core) */
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "AMD Ryzen"),
|
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Laptop"),
|
||||||
DMI_MATCH(DMI_PRODUCT_FAMILY, "Laptop"),
|
|
||||||
},
|
},
|
||||||
.driver_data = (void *)&framework_laptop_amd_lpc_driver_data,
|
.driver_data = (void *)&framework_laptop_mec_lpc_driver_data,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
/* the Framework Laptop (Intel 11th, 12th, 13th Generation) */
|
/* Framework Laptop (12th Gen Intel Core) */
|
||||||
.matches = {
|
.matches = {
|
||||||
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Laptop"),
|
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "12th Gen Intel Core"),
|
||||||
},
|
},
|
||||||
.driver_data = (void *)&framework_laptop_11_lpc_driver_data,
|
.driver_data = (void *)&framework_laptop_mec_lpc_driver_data,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/* Framework Laptop (13th Gen Intel Core) */
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
||||||
|
DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "13th Gen Intel Core"),
|
||||||
|
},
|
||||||
|
.driver_data = (void *)&framework_laptop_mec_lpc_driver_data,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* All remaining Framework Laptop models (13 AMD Ryzen, 16 AMD
|
||||||
|
* Ryzen, Intel Core Ultra)
|
||||||
|
*/
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "Framework"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_FAMILY, "Laptop"),
|
||||||
|
},
|
||||||
|
.driver_data = (void *)&framework_laptop_npcx_lpc_driver_data,
|
||||||
},
|
},
|
||||||
{ /* sentinel */ }
|
{ /* sentinel */ }
|
||||||
};
|
};
|
||||||
|
@ -1285,6 +1285,15 @@ unregister_ports:
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void cros_typec_remove(struct platform_device *pdev)
|
||||||
|
{
|
||||||
|
struct cros_typec_data *typec = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
|
cros_usbpd_unregister_notify(&typec->nb);
|
||||||
|
cancel_work_sync(&typec->port_work);
|
||||||
|
cros_unregister_ports(typec);
|
||||||
|
}
|
||||||
|
|
||||||
static int __maybe_unused cros_typec_suspend(struct device *dev)
|
static int __maybe_unused cros_typec_suspend(struct device *dev)
|
||||||
{
|
{
|
||||||
struct cros_typec_data *typec = dev_get_drvdata(dev);
|
struct cros_typec_data *typec = dev_get_drvdata(dev);
|
||||||
@ -1316,6 +1325,7 @@ static struct platform_driver cros_typec_driver = {
|
|||||||
.pm = &cros_typec_pm_ops,
|
.pm = &cros_typec_pm_ops,
|
||||||
},
|
},
|
||||||
.probe = cros_typec_probe,
|
.probe = cros_typec_probe,
|
||||||
|
.remove_new = cros_typec_remove,
|
||||||
};
|
};
|
||||||
|
|
||||||
module_platform_driver(cros_typec_driver);
|
module_platform_driver(cros_typec_driver);
|
||||||
|
Loading…
Reference in New Issue
Block a user