Linux SPI subsystem development
 help / color / mirror / Atom feed
* [PATCH 0/3] Add LECARC ACPI IDs for DesignWare GPIO, SPI, I2C
@ 2026-05-14  2:40 thomas
  2026-05-14  2:40 ` [PATCH 1/3] gpio: dwapb: Add LECARC ACPI ID thomas
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: thomas @ 2026-05-14  2:40 UTC (permalink / raw)
  To: rafael, lenb, hoan, linusw, brgl, mika.westerberg,
	andriy.shevchenko, jsd, andi.shyti, broonie
  Cc: linux-acpi, linux-kernel, linux-gpio, linux-i2c, linux-spi,
	lucas_hao, puntar_liu, jihua_tao, stan_xu, lumin_liu,
	notics_zhang, braden_zhang, harold_wu, will_zhang, aurora_jiang,
	ryen_lin, andy_jiang, thomas

This patch series adds ACPI identification for LECARC SoCs that
integrate Synopsys DesignWare peripherals.

LECARC platforms use the following ACPI HIDs:
- GPIO: LECA0001 (V1 register offsets)
- SPI:  LECA0002 (requires custom init function)
- I2C:  LECA0003

The patches are independent but share a common dependency on the
ACPI description file (drivers/acpi/acpi_apd.c) for SPI and I2C.
To avoid merge conflicts, they are submitted as a single series
with the following order:

Patch 1: gpio: dwapb – add LECA0001 to dwapb_acpi_match[].
Patch 2: spi: dw-mmio – add LECA0002 and dw_spi_lecarc_init(),
         plus corresponding entry in acpi_apd.c.
Patch 3: i2c: designware – add LECA0003 to dw_i2c_acpi_match[],
         plus corresponding entry in acpi_apd.c.

All changes have been tested on LECARC evaluation board with
kernel v7.0.0-rc6. No regressions observed on existing hardware.

Please apply.

thomas (3):
  gpio: dwapb: Add LECARC ACPI ID
  spi: dw-mmio: Add LECARC ACPI ID and init hook
  i2c: designware: Add LECARC ACPI ID

 drivers/acpi/acpi_apd.c                     | 12 ++++++++++++
 drivers/gpio/gpio-dwapb.c                   |  1 +
 drivers/i2c/busses/i2c-designware-platdrv.c |  1 +
 drivers/spi/spi-dw-mmio.c                   |  9 +++++++++
 4 files changed, 23 insertions(+)

--
2.43.0

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH 1/3] gpio: dwapb: Add LECARC ACPI ID
  2026-05-14  2:40 [PATCH 0/3] Add LECARC ACPI IDs for DesignWare GPIO, SPI, I2C thomas
@ 2026-05-14  2:40 ` thomas
  2026-05-14  2:40 ` [PATCH 2/3] spi: dw-mmio: Add LECARC ACPI ID and init hook thomas
  2026-05-14  2:40 ` [PATCH 3/3] i2c: designware: Add LECARC ACPI ID thomas
  2 siblings, 0 replies; 4+ messages in thread
From: thomas @ 2026-05-14  2:40 UTC (permalink / raw)
  To: rafael, lenb, hoan, linusw, brgl, mika.westerberg,
	andriy.shevchenko, jsd, andi.shyti, broonie
  Cc: linux-acpi, linux-kernel, linux-gpio, linux-i2c, linux-spi,
	lucas_hao, puntar_liu, jihua_tao, stan_xu, lumin_liu,
	notics_zhang, braden_zhang, harold_wu, will_zhang, aurora_jiang,
	ryen_lin, andy_jiang, thomas

Add ACPI ID "LECA0001" for LECARC SoCs that use the DesignWare GPIO
controller with V1 register offsets.

Signed-off-by: thomas <thomas_lin@lecomputing.com>
---
 drivers/gpio/gpio-dwapb.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/gpio/gpio-dwapb.c b/drivers/gpio/gpio-dwapb.c
index 15cebc8b5d66..c1f3d83a67c1 100644
--- a/drivers/gpio/gpio-dwapb.c
+++ b/drivers/gpio/gpio-dwapb.c
@@ -694,6 +694,7 @@ static const struct acpi_device_id dwapb_acpi_match[] = {
 	{"APMC0D07", GPIO_REG_OFFSET_V1},
 	{"APMC0D81", GPIO_REG_OFFSET_V2},
 	{"FUJI200A", GPIO_REG_OFFSET_V1},
+	{"LECA0001", GPIO_REG_OFFSET_V1},
 	{ }
 };
 MODULE_DEVICE_TABLE(acpi, dwapb_acpi_match);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 2/3] spi: dw-mmio: Add LECARC ACPI ID and init hook
  2026-05-14  2:40 [PATCH 0/3] Add LECARC ACPI IDs for DesignWare GPIO, SPI, I2C thomas
  2026-05-14  2:40 ` [PATCH 1/3] gpio: dwapb: Add LECARC ACPI ID thomas
@ 2026-05-14  2:40 ` thomas
  2026-05-14  2:40 ` [PATCH 3/3] i2c: designware: Add LECARC ACPI ID thomas
  2 siblings, 0 replies; 4+ messages in thread
From: thomas @ 2026-05-14  2:40 UTC (permalink / raw)
  To: rafael, lenb, hoan, linusw, brgl, mika.westerberg,
	andriy.shevchenko, jsd, andi.shyti, broonie
  Cc: linux-acpi, linux-kernel, linux-gpio, linux-i2c, linux-spi,
	lucas_hao, puntar_liu, jihua_tao, stan_xu, lumin_liu,
	notics_zhang, braden_zhang, harold_wu, will_zhang, aurora_jiang,
	ryen_lin, andy_jiang, thomas

Add ACPI ID "LECA0002" for LECARC SoCs. This ID requires a custom
initialization function dw_spi_lecarc_init() that sets dws->dws.ip
to DW_HSSI_ID.

Also add corresponding ACPI description in acpi_apd.c.

Signed-off-by: thomas <thomas_lin@lecomputing.com>
---
 drivers/acpi/acpi_apd.c   | 7 +++++++
 drivers/spi/spi-dw-mmio.c | 9 +++++++++
 2 files changed, 16 insertions(+)

diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
index bed0791c17fc..3a80e833215e 100644
--- a/drivers/acpi/acpi_apd.c
+++ b/drivers/acpi/acpi_apd.c
@@ -181,6 +181,12 @@ static const struct apd_device_desc hip08_spi_desc = {
 	.setup = acpi_apd_setup,
 	.fixed_clk_rate = 250000000,
 };
+
+static const struct apd_device_desc leca_spi_desc = {
+	.setup = acpi_apd_setup,
+	.fixed_clk_rate = 400000000,
+};
+
 #endif /* CONFIG_ARM64 */
 
 #endif
@@ -252,6 +258,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = {
 	{ "HISI02A3", APD_ADDR(hip08_lite_i2c_desc) },
 	{ "HISI0173", APD_ADDR(hip08_spi_desc) },
 	{ "NXP0001", APD_ADDR(nxp_i2c_desc) },
+	{ "LECA0002", APD_ADDR(leca_spi_desc) },
 #endif
 	{ }
 };
diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c
index 1bfdf24c3227..50b50553b360 100644
--- a/drivers/spi/spi-dw-mmio.c
+++ b/drivers/spi/spi-dw-mmio.c
@@ -234,6 +234,14 @@ static int dw_spi_intel_init(struct platform_device *pdev,
 	return 0;
 }
 
+static int dw_spi_lecarc_init(struct platform_device *pdev,
+			     struct dw_spi_mmio *dwsmmio)
+{
+	dwsmmio->dws.ip = DW_HSSI_ID;
+
+	return 0;
+}
+
 /*
  * DMA-based mem ops are not configured for this device and are not tested.
  */
@@ -453,6 +461,7 @@ MODULE_DEVICE_TABLE(of, dw_spi_mmio_of_match);
 #ifdef CONFIG_ACPI
 static const struct acpi_device_id dw_spi_mmio_acpi_match[] = {
 	{"HISI0173", (kernel_ulong_t)dw_spi_pssi_init},
+	{"LECA0002", (kernel_ulong_t)dw_spi_lecarc_init},
 	{},
 };
 MODULE_DEVICE_TABLE(acpi, dw_spi_mmio_acpi_match);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH 3/3] i2c: designware: Add LECARC ACPI ID
  2026-05-14  2:40 [PATCH 0/3] Add LECARC ACPI IDs for DesignWare GPIO, SPI, I2C thomas
  2026-05-14  2:40 ` [PATCH 1/3] gpio: dwapb: Add LECARC ACPI ID thomas
  2026-05-14  2:40 ` [PATCH 2/3] spi: dw-mmio: Add LECARC ACPI ID and init hook thomas
@ 2026-05-14  2:40 ` thomas
  2 siblings, 0 replies; 4+ messages in thread
From: thomas @ 2026-05-14  2:40 UTC (permalink / raw)
  To: rafael, lenb, hoan, linusw, brgl, mika.westerberg,
	andriy.shevchenko, jsd, andi.shyti, broonie
  Cc: linux-acpi, linux-kernel, linux-gpio, linux-i2c, linux-spi,
	lucas_hao, puntar_liu, jihua_tao, stan_xu, lumin_liu,
	notics_zhang, braden_zhang, harold_wu, will_zhang, aurora_jiang,
	ryen_lin, andy_jiang, thomas

Add ACPI ID "LECA0003" for LECARC SoCs that integrate the DesignWare
I2C controller.

Also add corresponding ACPI description in acpi_apd.c.

Signed-off-by: thomas <thomas_lin@lecomputing.com>
---
 drivers/acpi/acpi_apd.c                     | 5 +++++
 drivers/i2c/busses/i2c-designware-platdrv.c | 1 +
 2 files changed, 6 insertions(+)

diff --git a/drivers/acpi/acpi_apd.c b/drivers/acpi/acpi_apd.c
index 3a80e833215e..ae6a7da56e89 100644
--- a/drivers/acpi/acpi_apd.c
+++ b/drivers/acpi/acpi_apd.c
@@ -187,6 +187,10 @@ static const struct apd_device_desc leca_spi_desc = {
 	.fixed_clk_rate = 400000000,
 };
 
+static const struct apd_device_desc leca_i2c_desc = {
+	.setup = acpi_apd_setup,
+	.fixed_clk_rate = 250000000,
+};
 #endif /* CONFIG_ARM64 */
 
 #endif
@@ -259,6 +263,7 @@ static const struct acpi_device_id acpi_apd_device_ids[] = {
 	{ "HISI0173", APD_ADDR(hip08_spi_desc) },
 	{ "NXP0001", APD_ADDR(nxp_i2c_desc) },
 	{ "LECA0002", APD_ADDR(leca_spi_desc) },
+	{ "LECA0003", APD_ADDR(leca_i2c_desc) },
 #endif
 	{ }
 };
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c
index 3351c4a9ef11..b435b4015f02 100644
--- a/drivers/i2c/busses/i2c-designware-platdrv.c
+++ b/drivers/i2c/busses/i2c-designware-platdrv.c
@@ -279,6 +279,7 @@ static const struct acpi_device_id dw_i2c_acpi_match[] = {
 	{ "INT3432", 0 },
 	{ "INT3433", 0 },
 	{ "INTC10EF", 0 },
+	{ "LECA0003", 0 },
 	{}
 };
 MODULE_DEVICE_TABLE(acpi, dw_i2c_acpi_match);
-- 
2.43.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-05-14  3:14 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-14  2:40 [PATCH 0/3] Add LECARC ACPI IDs for DesignWare GPIO, SPI, I2C thomas
2026-05-14  2:40 ` [PATCH 1/3] gpio: dwapb: Add LECARC ACPI ID thomas
2026-05-14  2:40 ` [PATCH 2/3] spi: dw-mmio: Add LECARC ACPI ID and init hook thomas
2026-05-14  2:40 ` [PATCH 3/3] i2c: designware: Add LECARC ACPI ID thomas

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox