From 45ca29049ad0bb0b4e076706d7e9acc271f44757 Mon Sep 17 00:00:00 2001 From: Jay Fang Date: Sat, 22 Dec 2018 11:01:47 +0800 Subject: [PATCH] spi: dw-mmio: add ACPI support mainline inclusion from linux-next commit: 32215a6c6beb8dcda4bb0759b04ce3c30927963b category: feature (SPI ACPI for Hi1620) bugzilla: 5443 CVE: NA TPM chip on D06 is SPI based, so we need to add SPI ACPI support for Hi1620. Two patches already merged for 4.21, but the core support for spi has another patchset needs lots of refactor, so just use the patch from Fang Jian to enable this feature on 4.19 [PATCH 1/4] spi: dw-mmio: add ACPI support [PATCH 2/4] ACPI / APD: Add clock frequency for Hisilicon Hip08 SPI controller [PATCH 3/4] spi: add ACPI support for SPI controller chip select lines(cs-gpios) [PATCH 4/4] hulk_defconfig: ensble SPI designware driver for Hi1620 -------------------------------------------------- The Hisilicon Hip08 platform, that uses ACPI, has this controller. Let's add ACPI support for DW SPI MMIO-based host. The ACPI ID used is "HISI0173" for the Designware SPI controller of Hisilicon Hip08 platform. Signed-off-by: Jay Fang Signed-off-by: Mark Brown Signed-off-by: Hanjun Guo Reviewed-by: Yang Yingliang Signed-off-by: Yang Yingliang --- drivers/spi/spi-dw-mmio.c | 8 ++++++++ drivers/spi/spi-dw.c | 1 + 2 files changed, 9 insertions(+) diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c index e80f60ed6fdf..71f2c81f5347 100644 --- a/drivers/spi/spi-dw-mmio.c +++ b/drivers/spi/spi-dw-mmio.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include @@ -217,12 +218,19 @@ static const struct of_device_id dw_spi_mmio_of_match[] = { }; MODULE_DEVICE_TABLE(of, dw_spi_mmio_of_match); +static const struct acpi_device_id dw_spi_mmio_acpi_match[] = { + {"HISI0173", 0}, + {}, +}; +MODULE_DEVICE_TABLE(acpi, dw_spi_mmio_acpi_match); + static struct platform_driver dw_spi_mmio_driver = { .probe = dw_spi_mmio_probe, .remove = dw_spi_mmio_remove, .driver = { .name = DRIVER_NAME, .of_match_table = dw_spi_mmio_of_match, + .acpi_match_table = ACPI_PTR(dw_spi_mmio_acpi_match), }, }; module_platform_driver(dw_spi_mmio_driver); diff --git a/drivers/spi/spi-dw.c b/drivers/spi/spi-dw.c index ac2eb89ef7a5..b3116da5377a 100644 --- a/drivers/spi/spi-dw.c +++ b/drivers/spi/spi-dw.c @@ -506,6 +506,7 @@ int dw_spi_add_host(struct device *dev, struct dw_spi *dws) master->handle_err = dw_spi_handle_err; master->max_speed_hz = dws->max_freq; master->dev.of_node = dev->of_node; + master->dev.fwnode = dev->fwnode; master->flags = SPI_MASTER_GPIO_SS; if (dws->set_cs) -- GitLab