* [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
@ 2025-01-28 18:13 Daniel Schaefer
2025-02-03 2:44 ` Tzung-Bi Shih
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Schaefer @ 2025-01-28 18:13 UTC (permalink / raw)
To: chrome-platform; +Cc: Daniel Schaefer, Tzung-Bi Shih, linux, Dustin L . Howett
Load the cros_ec_lpc driver based on a Framework FRMWC006 ACPI device,
which mirrors GOOG0004, but also applies npcx quirks for Framework
systems.
Matching on ACPI will let us avoid having to change the SMBIOS match
rules again and again.
Cc: Tzung-Bi Shih <tzungbi@kernel.org>
Cc: linux@frame.work
Cc: Dustin L. Howett <dustin@howett.net>
Signed-off-by: Daniel Schaefer <dhs@frame.work>
---
V1->V2: Remove platform_set_drvdata, handle it by acpi_device_id table instead
I tested all new possible combinations and they all behave as expected.
If there is any match, /dev/cros_ec will be present, with the below
dmesg.
I did not test any device with GOOG0004.
| DMI match | FRMWC004 match | Notes
| False | False | 3rdparty
| True | False | Current framework
| False | True | Possible future framework
| True | True | Future framework
```
> sudo dmesg | grep cros_ec_lpcs
[ 17.521972] cros_ec_lpcs FRMWC004:00: loaded with quirks 00000001
[ 17.534012] cros_ec_lpcs FRMWC004:00: Chrome EC device registered
```
```
[ 74.366596] cros_ec_lpcs cros_ec_lpcs.0: loaded with quirks 00000001
[ 74.377921] cros_ec_lpcs cros_ec_lpcs.0: Chrome EC device registered
```
---
drivers/platform/chrome/cros_ec_lpc.c | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/drivers/platform/chrome/cros_ec_lpc.c b/drivers/platform/chrome/cros_ec_lpc.c
index 5a2f1d98b350..ea569037b6b2 100644
--- a/drivers/platform/chrome/cros_ec_lpc.c
+++ b/drivers/platform/chrome/cros_ec_lpc.c
@@ -30,6 +30,7 @@
#define DRV_NAME "cros_ec_lpcs"
#define ACPI_DRV_NAME "GOOG0004"
+#define FRMW_ACPI_DRV_NAME "FRMWC004"
/* True if ACPI device is present */
static bool cros_ec_lpc_acpi_device_found;
@@ -514,7 +515,7 @@ static int cros_ec_lpc_probe(struct platform_device *pdev)
acpi_status status;
struct cros_ec_device *ec_dev;
struct cros_ec_lpc *ec_lpc;
- struct lpc_driver_data *driver_data;
+ const struct lpc_driver_data *driver_data;
u8 buf[2] = {};
int irq, ret;
u32 quirks;
@@ -526,6 +527,9 @@ static int cros_ec_lpc_probe(struct platform_device *pdev)
ec_lpc->mmio_memory_base = EC_LPC_ADDR_MEMMAP;
driver_data = platform_get_drvdata(pdev);
+ if (!driver_data) {
+ driver_data = acpi_device_get_match_data(dev);
+ }
if (driver_data) {
quirks = driver_data->quirks;
@@ -696,12 +700,6 @@ static void cros_ec_lpc_remove(struct platform_device *pdev)
cros_ec_unregister(ec_dev);
}
-static const struct acpi_device_id cros_ec_lpc_acpi_device_ids[] = {
- { ACPI_DRV_NAME, 0 },
- { }
-};
-MODULE_DEVICE_TABLE(acpi, cros_ec_lpc_acpi_device_ids);
-
static const struct lpc_driver_data framework_laptop_npcx_lpc_driver_data __initconst = {
.quirks = CROS_EC_LPC_QUIRK_REMAP_MEMORY,
.quirk_mmio_memory_base = 0xE00,
@@ -713,6 +711,13 @@ static const struct lpc_driver_data framework_laptop_mec_lpc_driver_data __initc
.quirk_aml_mutex_name = "ECMT",
};
+static const struct acpi_device_id cros_ec_lpc_acpi_device_ids[] = {
+ { ACPI_DRV_NAME, 0 },
+ { FRMW_ACPI_DRV_NAME, (kernel_ulong_t)&framework_laptop_npcx_lpc_driver_data },
+ { }
+};
+MODULE_DEVICE_TABLE(acpi, cros_ec_lpc_acpi_device_ids);
+
static const struct dmi_system_id cros_ec_lpc_dmi_table[] __initconst = {
{
/*
@@ -866,7 +871,8 @@ static int __init cros_ec_lpc_init(void)
int ret;
const struct dmi_system_id *dmi_match;
- cros_ec_lpc_acpi_device_found = !!cros_ec_lpc_get_device(ACPI_DRV_NAME);
+ cros_ec_lpc_acpi_device_found = !!cros_ec_lpc_get_device(ACPI_DRV_NAME) ||
+ !!cros_ec_lpc_get_device(FRMW_ACPI_DRV_NAME);
dmi_match = dmi_first_match(cros_ec_lpc_dmi_table);
--
2.45.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
2025-01-28 18:13 [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device Daniel Schaefer
@ 2025-02-03 2:44 ` Tzung-Bi Shih
2025-02-14 5:00 ` Daniel Schaefer
0 siblings, 1 reply; 4+ messages in thread
From: Tzung-Bi Shih @ 2025-02-03 2:44 UTC (permalink / raw)
To: Daniel Schaefer; +Cc: chrome-platform, linux, Dustin L . Howett
On Wed, Jan 29, 2025 at 02:13:29AM +0800, Daniel Schaefer wrote:
> Load the cros_ec_lpc driver based on a Framework FRMWC006 ACPI device,
[...]
> > sudo dmesg | grep cros_ec_lpcs
> [ 17.521972] cros_ec_lpcs FRMWC004:00: loaded with quirks 00000001
> [ 17.534012] cros_ec_lpcs FRMWC004:00: Chrome EC device registered
I believe it's a typo. Fixed s/FRMWC006/FRMWC004/ in the commit message.
> [...]
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git for-next
[1/1] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
commit: d83c45aeec9b223fe6db4175e9d1c4f5699cc37a
Thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
2025-02-03 2:44 ` Tzung-Bi Shih
@ 2025-02-14 5:00 ` Daniel Schaefer
2025-02-14 6:10 ` Tzung-Bi Shih
0 siblings, 1 reply; 4+ messages in thread
From: Daniel Schaefer @ 2025-02-14 5:00 UTC (permalink / raw)
To: Tzung-Bi Shih
Cc: chrome-platform, linux, Dustin L . Howett, Alexandru Stan, bleung
Hi Tzung-Bi,
> I believe it's a typo. Fixed s/FRMWC006/FRMWC004/ in the commit message.
Oh yes that's right, thanks.
Is there a chance this can still get into 6.14? I see it just barely
missed going into your for-6.14 - is that right?
6.14 will be included in the upcoming releases of Fedora 42 and Ubuntu
25.04 and we'll need it for some of our upcoming products.
Thanks,
Daniel
On Mon, Feb 3, 2025 at 10:44 AM Tzung-Bi Shih <tzungbi@kernel.org> wrote:
>
> On Wed, Jan 29, 2025 at 02:13:29AM +0800, Daniel Schaefer wrote:
> > Load the cros_ec_lpc driver based on a Framework FRMWC006 ACPI device,
> [...]
> > > sudo dmesg | grep cros_ec_lpcs
> > [ 17.521972] cros_ec_lpcs FRMWC004:00: loaded with quirks 00000001
> > [ 17.534012] cros_ec_lpcs FRMWC004:00: Chrome EC device registered
>
> I believe it's a typo. Fixed s/FRMWC006/FRMWC004/ in the commit message.
>
> > [...]
>
> Applied to
>
> https://git.kernel.org/pub/scm/linux/kernel/git/chrome-platform/linux.git for-next
>
> [1/1] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
> commit: d83c45aeec9b223fe6db4175e9d1c4f5699cc37a
>
> Thanks!
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device
2025-02-14 5:00 ` Daniel Schaefer
@ 2025-02-14 6:10 ` Tzung-Bi Shih
0 siblings, 0 replies; 4+ messages in thread
From: Tzung-Bi Shih @ 2025-02-14 6:10 UTC (permalink / raw)
To: Daniel Schaefer
Cc: chrome-platform, linux, Dustin L . Howett, Alexandru Stan, bleung
On Fri, Feb 14, 2025 at 01:00:07PM +0800, Daniel Schaefer wrote:
> Is there a chance this can still get into 6.14? I see it just barely
Sorry, no. The patch just missed the previous merge window and it has
to wait for the next one unless it's a critical fix.
We want to queue patches a bit time to provide testing robots or pioneers
enough time to report if any issues.
Thank you for understanding.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2025-02-14 6:10 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-01-28 18:13 [PATCH v2] platform/chrome: cros_ec_lpc: Match on Framework ACPI device Daniel Schaefer
2025-02-03 2:44 ` Tzung-Bi Shih
2025-02-14 5:00 ` Daniel Schaefer
2025-02-14 6:10 ` Tzung-Bi Shih
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox