platform/chrome: cros_ec_lpc: pass driver_data from DMI to the device
authorDustin L. Howett <dustin@howett.net>
Wed, 3 Apr 2024 00:47:11 +0000 (19:47 -0500)
committerTzung-Bi Shih <tzungbi@kernel.org>
Wed, 24 Apr 2024 08:46:00 +0000 (16:46 +0800)
lpc_driver_data will be stored in drvdata until probe is complete.

Signed-off-by: Dustin L. Howett <dustin@howett.net>
Reviewed-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Thomas Weißschuh <linux@weissschuh.net>
Tested-by: Mario Limonciello <superm1@gmail.com>
Link: https://lore.kernel.org/r/20240403004713.130365-3-dustin@howett.net
Signed-off-by: Tzung-Bi Shih <tzungbi@kernel.org>
drivers/platform/chrome/cros_ec_lpc.c

index 5e2856c5185b6c8389a94b77b4774a6f587a6bd5..b3aa60e0feb3d12dc4bae307ac3bfaf137333e6a 100644 (file)
@@ -627,14 +627,16 @@ static int __init cros_ec_lpc_init(void)
 {
        int ret;
        acpi_status status;
+       const struct dmi_system_id *dmi_match;
 
        status = acpi_get_devices(ACPI_DRV_NAME, cros_ec_lpc_parse_device,
                                  &cros_ec_lpc_acpi_device_found, NULL);
        if (ACPI_FAILURE(status))
                pr_warn(DRV_NAME ": Looking for %s failed\n", ACPI_DRV_NAME);
 
-       if (!cros_ec_lpc_acpi_device_found &&
-           !dmi_check_system(cros_ec_lpc_dmi_table)) {
+       dmi_match = dmi_first_match(cros_ec_lpc_dmi_table);
+
+       if (!cros_ec_lpc_acpi_device_found && !dmi_match) {
                pr_err(DRV_NAME ": unsupported system.\n");
                return -ENODEV;
        }
@@ -647,6 +649,9 @@ static int __init cros_ec_lpc_init(void)
        }
 
        if (!cros_ec_lpc_acpi_device_found) {
+               /* Pass the DMI match's driver data down to the platform device */
+               platform_set_drvdata(&cros_ec_lpc_device, dmi_match->driver_data);
+
                /* Register the device, and it'll get hooked up automatically */
                ret = platform_device_register(&cros_ec_lpc_device);
                if (ret) {