From 4432f3b652b2e76178473a87f1f859b07aaf54bc Mon Sep 17 00:00:00 2001 From: Jon Hunter Date: Thu, 4 Apr 2024 13:40:08 +0100 Subject: [PATCH] spi: Fix build for Linux v6.9 For Linux v6.9 the compatibility layer that existed for transitioning SPI drivers from using the legacy 'master' based naming to the 'controller' based naming for functions, structures and variables has been removed. This is causing the various SPI driver build failures. The compatibility layer was first introduced in Linux v4.13 by commit 8caab75fd2c2 ("spi: Generalize SPI "master" to "controller"") and given that the newer "controller" based naming works for kernels from v4.13, update the various SPI drivers to use the new naming for all current supported kernels. Bug 4471899 Change-Id: I5d9fcc429ab4262eb2827b61eb5aec729059f4b5 Signed-off-by: Jon Hunter Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3109504 Reviewed-by: Paritosh Dixit GVS: Gerrit_Virtual_Submit Reviewed-by: Brad Griffis Reviewed-by: svc-sw-mobile-l4t Reviewed-by: svcacv --- drivers/spi/spi-tegra124-slave.c | 40 ++++++++--------- drivers/spi/spi-tegra210-quad.c | 76 ++++++++++++++++---------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/drivers/spi/spi-tegra124-slave.c b/drivers/spi/spi-tegra124-slave.c index bfd480d9..dfc1e1f6 100644 --- a/drivers/spi/spi-tegra124-slave.c +++ b/drivers/spi/spi-tegra124-slave.c @@ -372,7 +372,7 @@ static ssize_t force_unpacked_mode_set(struct device *dev, struct spi_controller *controller = dev_get_drvdata(dev); if (controller) { - tspi = spi_master_get_devdata(controller); + tspi = spi_controller_get_devdata(controller); if (tspi && count) { tspi->force_unpacked_mode = ((buf[0] - '0') > 0); return count; @@ -389,7 +389,7 @@ static ssize_t force_unpacked_mode_show(struct device *dev, struct spi_controller *controller = dev_get_drvdata(dev); if (controller) { - tspi = spi_master_get_devdata(controller); + tspi = spi_controller_get_devdata(controller); return sprintf(buf, "%d", tspi->force_unpacked_mode); } return -ENODEV; @@ -426,7 +426,7 @@ static inline void tegra_spi_fence(struct tegra_spi_data *tspi) int tegra124_spi_slave_register_callback(struct spi_device *spi, spi_callback func_ready, spi_callback func_isr, void *client_data) { - struct tegra_spi_data *tspi = spi_master_get_devdata(spi->controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(spi->controller); /* Expect atleast one callback function. */ if (!tspi || (!func_ready && !func_isr)) @@ -1184,7 +1184,7 @@ static void set_best_clk_source(struct spi_device *spi, const char *pclk_name, *fpclk_name = NULL; struct device_node *node; struct property *prop; - struct tegra_spi_data *tspi = spi_master_get_devdata(spi->controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(spi->controller); node = spi->controller->dev.of_node; if (!of_property_count_strings(node, "nvidia,clk-parents")) @@ -1255,7 +1255,7 @@ static int tegra_spi_start_transfer_one(struct spi_device *spi, struct spi_transfer *t, bool is_first_of_msg, bool is_single_xfer) { - struct tegra_spi_data *tspi = spi_master_get_devdata(spi->controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(spi->controller); struct tegra_spi_controller_data *cdata = spi->controller_data; u32 speed; u32 core_speed; @@ -1424,7 +1424,7 @@ static struct tegra_spi_controller_data static int tegra_spi_setup(struct spi_device *spi) { - struct tegra_spi_data *tspi = spi_master_get_devdata(spi->controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(spi->controller); struct tegra_spi_controller_data *cdata = spi->controller_data; unsigned long val; unsigned long flags; @@ -1763,7 +1763,7 @@ static int tegra_spi_transfer_one_message(struct spi_controller *controller, { bool is_first_msg = true; int single_xfer; - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); struct spi_transfer *xfer; struct spi_device *spi = msg->spi; int ret; @@ -2004,7 +2004,7 @@ static int tegra_spi_probe(struct platform_device *pdev) controller->bus_num = bus_num; dev_set_drvdata(&pdev->dev, controller); - tspi = spi_master_get_devdata(controller); + tspi = spi_controller_get_devdata(controller); tspi->controller = controller; tspi->clock_always_on = pdata->is_clkon_always; tspi->rx_trig_words = pdata->rx_trig_words; @@ -2141,7 +2141,7 @@ static int tegra_spi_probe(struct platform_device *pdev) pm_runtime_put(&pdev->dev); controller->dev.of_node = pdev->dev.of_node; - ret = spi_register_master(controller); + ret = spi_register_controller(controller); if (ret < 0) { dev_err(&pdev->dev, "cannot register to ctrlr err %d\n", ret); goto exit_pm_disable; @@ -2150,12 +2150,12 @@ static int tegra_spi_probe(struct platform_device *pdev) #ifdef TEGRA_SPI_SLAVE_DEBUG ret = device_create_file(&pdev->dev, &dev_attr_force_unpacked_mode); if (ret != 0) - goto exit_unregister_master; + goto exit_unregister_controller; return ret; -exit_unregister_master: - spi_unregister_master(controller); +exit_unregister_controller: + spi_unregister_controller(controller); #endif return ret; @@ -2178,13 +2178,13 @@ exit_free_irq: static int tegra_spi_remove(struct platform_device *pdev) { struct spi_controller *controller = dev_get_drvdata(&pdev->dev); - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); #ifdef TEGRA_SPI_SLAVE_DEBUG device_remove_file(&pdev->dev, &dev_attr_force_unpacked_mode); #endif free_irq(tspi->irq, tspi); - spi_unregister_master(controller); + spi_unregister_controller(controller); if (tspi->tx_dma_chan) tegra_spi_deinit_dma_param(tspi, false); @@ -2206,10 +2206,10 @@ static int tegra_spi_remove(struct platform_device *pdev) static int tegra_spi_suspend(struct device *dev) { struct spi_controller *controller = dev_get_drvdata(dev); - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); int ret; - ret = spi_master_suspend(controller); + ret = spi_controller_suspend(controller); if (tspi->clock_always_on) clk_disable_unprepare(tspi->clk); @@ -2220,7 +2220,7 @@ static int tegra_spi_suspend(struct device *dev) static int tegra_spi_resume(struct device *dev) { struct spi_controller *controller = dev_get_drvdata(dev); - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); int ret; if (tspi->clock_always_on) { @@ -2239,14 +2239,14 @@ static int tegra_spi_resume(struct device *dev) tegra_spi_writel(tspi, tspi->command1_reg, SPI_COMMAND1); pm_runtime_put(dev); - return spi_master_resume(controller); + return spi_controller_resume(controller); } #endif static int tegra_spi_runtime_suspend(struct device *dev) { struct spi_controller *controller = dev_get_drvdata(dev); - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); /* Flush all write which are in PPSB queue by reading back */ tegra_spi_readl(tspi, SPI_COMMAND1); @@ -2258,7 +2258,7 @@ static int tegra_spi_runtime_suspend(struct device *dev) static int tegra_spi_runtime_resume(struct device *dev) { struct spi_controller *controller = dev_get_drvdata(dev); - struct tegra_spi_data *tspi = spi_master_get_devdata(controller); + struct tegra_spi_data *tspi = spi_controller_get_devdata(controller); int ret; ret = clk_prepare_enable(tspi->clk); diff --git a/drivers/spi/spi-tegra210-quad.c b/drivers/spi/spi-tegra210-quad.c index 727efe01..2f5d885f 100644 --- a/drivers/spi/spi-tegra210-quad.c +++ b/drivers/spi/spi-tegra210-quad.c @@ -202,7 +202,7 @@ struct tegra_qspi_client_data { struct tegra_qspi { struct device *dev; - struct spi_master *master; + struct spi_controller *controller; /* lock to protect data accessed by irq */ spinlock_t lock; @@ -905,7 +905,7 @@ err_out: static u32 tegra_qspi_setup_transfer_one(struct spi_device *spi, struct spi_transfer *t, bool is_first_of_msg) { - struct tegra_qspi *tqspi = spi_master_get_devdata(spi->master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(spi->controller); struct tegra_qspi_client_data *cdata = spi->controller_data; u32 command1, command2, speed = t->speed_hz; u8 bits_per_word = t->bits_per_word; @@ -1023,7 +1023,7 @@ regs_por: static int tegra_qspi_start_transfer_one(struct spi_device *spi, struct spi_transfer *t, u32 command1) { - struct tegra_qspi *tqspi = spi_master_get_devdata(spi->master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(spi->controller); unsigned int total_fifo_words; u8 bus_width = 0; int ret; @@ -1078,7 +1078,7 @@ static int tegra_qspi_start_transfer_one(struct spi_device *spi, static struct tegra_qspi_client_data *tegra_qspi_parse_cdata_dt(struct spi_device *spi) { struct tegra_qspi_client_data *cdata; - struct tegra_qspi *tqspi = spi_master_get_devdata(spi->master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(spi->controller); cdata = devm_kzalloc(tqspi->dev, sizeof(*cdata), GFP_KERNEL); if (!cdata) @@ -1094,7 +1094,7 @@ static struct tegra_qspi_client_data *tegra_qspi_parse_cdata_dt(struct spi_devic static int tegra_qspi_setup(struct spi_device *spi) { - struct tegra_qspi *tqspi = spi_master_get_devdata(spi->master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(spi->controller); struct tegra_qspi_client_data *cdata = spi->controller_data; unsigned long flags; u32 val; @@ -1169,7 +1169,7 @@ static void tegra_qspi_handle_error(struct tegra_qspi *tqspi) static void tegra_qspi_transfer_end(struct spi_device *spi) { - struct tegra_qspi *tqspi = spi_master_get_devdata(spi->master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(spi->controller); int cs_val = (spi->mode & SPI_CS_HIGH) ? 0 : 1; if (cs_val) @@ -1489,10 +1489,10 @@ static bool tegra_qspi_validate_cmb_seq(struct tegra_qspi *tqspi, return true; } -static int tegra_qspi_transfer_one_message(struct spi_master *master, +static int tegra_qspi_transfer_one_message(struct spi_controller *controller, struct spi_message *msg) { - struct tegra_qspi *tqspi = spi_master_get_devdata(master); + struct tegra_qspi *tqspi = spi_controller_get_devdata(controller); int ret; if (tegra_qspi_validate_cmb_seq(tqspi, msg)) @@ -1500,7 +1500,7 @@ static int tegra_qspi_transfer_one_message(struct spi_master *master, else ret = tegra_qspi_non_combined_seq_xfer(tqspi, msg); - spi_finalize_current_message(master); + spi_finalize_current_message(controller); return ret; } @@ -1713,33 +1713,33 @@ MODULE_DEVICE_TABLE(acpi, tegra_qspi_acpi_match); static int tegra_qspi_probe(struct platform_device *pdev) { - struct spi_master *master; + struct spi_controller *controller; struct tegra_qspi *tqspi; struct resource *r; int ret, qspi_irq; int bus_num; u32 as_delay; - master = devm_spi_alloc_master(&pdev->dev, sizeof(*tqspi)); - if (!master) + controller = devm_spi_alloc_master(&pdev->dev, sizeof(*tqspi)); + if (!controller) return -ENOMEM; - platform_set_drvdata(pdev, master); - tqspi = spi_master_get_devdata(master); + platform_set_drvdata(pdev, controller); + tqspi = spi_controller_get_devdata(controller); - master->mode_bits = SPI_MODE_0 | SPI_MODE_3 | SPI_CS_HIGH | + controller->mode_bits = SPI_MODE_0 | SPI_MODE_3 | SPI_CS_HIGH | SPI_TX_DUAL | SPI_RX_DUAL | SPI_TX_QUAD | SPI_RX_QUAD; - master->bits_per_word_mask = SPI_BPW_MASK(32) | SPI_BPW_MASK(16) | SPI_BPW_MASK(8); - master->setup = tegra_qspi_setup; - master->transfer_one_message = tegra_qspi_transfer_one_message; - master->num_chipselect = 1; - master->auto_runtime_pm = true; + controller->bits_per_word_mask = SPI_BPW_MASK(32) | SPI_BPW_MASK(16) | SPI_BPW_MASK(8); + controller->setup = tegra_qspi_setup; + controller->transfer_one_message = tegra_qspi_transfer_one_message; + controller->num_chipselect = 1; + controller->auto_runtime_pm = true; bus_num = of_alias_get_id(pdev->dev.of_node, "spi"); if (bus_num >= 0) - master->bus_num = bus_num; + controller->bus_num = bus_num; - tqspi->master = master; + tqspi->controller = controller; tqspi->dev = &pdev->dev; #if !defined(CONFIG_TEGRA_PROD_NEXT_GEN) tqspi->prod_list = devm_tegra_prod_get(&pdev->dev); @@ -1754,7 +1754,7 @@ static int tegra_qspi_probe(struct platform_device *pdev) spin_lock_init(&tqspi->lock); tqspi->soc_data = device_get_match_data(&pdev->dev); - master->num_chipselect = tqspi->soc_data->cs_count; + controller->num_chipselect = tqspi->soc_data->cs_count; r = platform_get_resource(pdev, IORESOURCE_MEM, 0); tqspi->base = devm_ioremap_resource(&pdev->dev, r); if (IS_ERR(tqspi->base)) @@ -1826,10 +1826,10 @@ static int tegra_qspi_probe(struct platform_device *pdev) goto exit_pm_disable; } - master->dev.of_node = pdev->dev.of_node; - ret = spi_register_master(master); + controller->dev.of_node = pdev->dev.of_node; + ret = spi_register_controller(controller); if (ret < 0) { - dev_err(&pdev->dev, "failed to register master: %d\n", ret); + dev_err(&pdev->dev, "failed to register controller: %d\n", ret); goto exit_free_irq; } @@ -1846,10 +1846,10 @@ exit_pm_disable: static int tegra_qspi_remove(struct platform_device *pdev) { - struct spi_master *master = platform_get_drvdata(pdev); - struct tegra_qspi *tqspi = spi_master_get_devdata(master); + struct spi_controller *controller = platform_get_drvdata(pdev); + struct tegra_qspi *tqspi = spi_controller_get_devdata(controller); - spi_unregister_master(master); + spi_unregister_controller(controller); free_irq(tqspi->irq, tqspi); pm_runtime_put_noidle(&pdev->dev); pm_runtime_force_suspend(&pdev->dev); @@ -1860,15 +1860,15 @@ static int tegra_qspi_remove(struct platform_device *pdev) static int __maybe_unused tegra_qspi_suspend(struct device *dev) { - struct spi_master *master = dev_get_drvdata(dev); + struct spi_controller *controller = dev_get_drvdata(dev); - return spi_master_suspend(master); + return spi_controller_suspend(controller); } static int __maybe_unused tegra_qspi_resume(struct device *dev) { - struct spi_master *master = dev_get_drvdata(dev); - struct tegra_qspi *tqspi = spi_master_get_devdata(master); + struct spi_controller *controller = dev_get_drvdata(dev); + struct tegra_qspi *tqspi = spi_controller_get_devdata(controller); int ret; ret = pm_runtime_resume_and_get(dev); @@ -1884,13 +1884,13 @@ static int __maybe_unused tegra_qspi_resume(struct device *dev) pm_runtime_put_autosuspend(dev); pm_runtime_put(dev); - return spi_master_resume(master); + return spi_controller_resume(controller); } static int __maybe_unused tegra_qspi_runtime_suspend(struct device *dev) { - struct spi_master *master = dev_get_drvdata(dev); - struct tegra_qspi *tqspi = spi_master_get_devdata(master); + struct spi_controller *controller = dev_get_drvdata(dev); + struct tegra_qspi *tqspi = spi_controller_get_devdata(controller); /* Runtime pm disabled with ACPI */ if (has_acpi_companion(tqspi->dev)) @@ -1905,8 +1905,8 @@ static int __maybe_unused tegra_qspi_runtime_suspend(struct device *dev) static int __maybe_unused tegra_qspi_runtime_resume(struct device *dev) { - struct spi_master *master = dev_get_drvdata(dev); - struct tegra_qspi *tqspi = spi_master_get_devdata(master); + struct spi_controller *controller = dev_get_drvdata(dev); + struct tegra_qspi *tqspi = spi_controller_get_devdata(controller); int ret; /* Runtime pm disabled with ACPI */