| From 45ec6dfcc5f48127d5bd440fb615bbf48f3fc9c1 Mon Sep 17 00:00:00 2001 |
| From: "SkyLake.Huang" <skylake.huang@mediatek.com> |
| Date: Thu, 23 Jun 2022 18:29:51 +0800 |
| Subject: [PATCH] drivers: spi-mt65xx: Move chip_config to driver's private |
| data |
| |
| Signed-off-by: SkyLake.Huang <skylake.huang@mediatek.com> |
| --- |
| drivers/spi/spi-mt65xx.c | 31 +++++++++++------------- |
| include/linux/platform_data/spi-mt65xx.h | 17 ------------- |
| 2 files changed, 14 insertions(+), 34 deletions(-) |
| delete mode 100644 include/linux/platform_data/spi-mt65xx.h |
| |
| diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c |
| index c19e2d4d7..0afd00891 100644 |
| --- a/drivers/spi/spi-mt65xx.c |
| +++ b/drivers/spi/spi-mt65xx.c |
| @@ -14,7 +14,6 @@ |
| #include <linux/of.h> |
| #include <linux/of_gpio.h> |
| #include <linux/platform_device.h> |
| -#include <linux/platform_data/spi-mt65xx.h> |
| #include <linux/pm_runtime.h> |
| #include <linux/spi/spi.h> |
| #include <linux/spi/spi-mem.h> |
| @@ -123,6 +122,11 @@ struct mtk_spi_compatible { |
| bool need_ahb_clk; |
| }; |
| |
| +struct mtk_spi_config { |
| + u32 sample_sel; |
| + u32 get_tick_dly; |
| +}; |
| + |
| struct mtk_spi { |
| void __iomem *base; |
| u32 state; |
| @@ -135,6 +139,7 @@ struct mtk_spi { |
| struct scatterlist *tx_sgl, *rx_sgl; |
| u32 tx_sgl_len, rx_sgl_len; |
| const struct mtk_spi_compatible *dev_comp; |
| + struct mtk_spi_config dev_config; |
| |
| struct completion spimem_done; |
| bool use_spimem; |
| @@ -189,15 +194,6 @@ static const struct mtk_spi_compatible mt8183_compat = { |
| .enhance_timing = true, |
| }; |
| |
| -/* |
| - * A piece of default chip info unless the platform |
| - * supplies it. |
| - */ |
| -static const struct mtk_chip_config mtk_default_chip_info = { |
| - .sample_sel = 0, |
| - .get_tick_dly = 2, |
| -}; |
| - |
| static const struct of_device_id mtk_spi_of_match[] = { |
| { .compatible = "mediatek,ipm-spi-single", |
| .data = (void *)&ipm_compat_single, |
| @@ -255,7 +251,6 @@ static int mtk_spi_hw_init(struct spi_master *master, |
| { |
| u16 cpha, cpol; |
| u32 reg_val; |
| - struct mtk_chip_config *chip_config = spi->controller_data; |
| struct mtk_spi *mdata = spi_master_get_devdata(master); |
| |
| cpha = spi->mode & SPI_CPHA ? 1 : 0; |
| @@ -270,13 +265,13 @@ static int mtk_spi_hw_init(struct spi_master *master, |
| |
| reg_val = readl(mdata->base + SPI_CMD_REG); |
| reg_val &= ~SPI_CMD_IPM_GET_TICKDLY_MASK; |
| - reg_val |= chip_config->get_tick_dly |
| + reg_val |= mdata->dev_config.get_tick_dly |
| << SPI_CMD_IPM_GET_TICKDLY_OFFSET; |
| writel(reg_val, mdata->base + SPI_CMD_REG); |
| } else { |
| reg_val = readl(mdata->base + SPI_CFG1_REG); |
| reg_val &= ~SPI_CFG1_GET_TICKDLY_MASK; |
| - reg_val |= chip_config->get_tick_dly |
| + reg_val |= mdata->dev_config.get_tick_dly |
| << SPI_CFG1_GET_TICKDLY_OFFSET; |
| writel(reg_val, mdata->base + SPI_CFG1_REG); |
| } |
| @@ -326,7 +321,7 @@ static int mtk_spi_hw_init(struct spi_master *master, |
| else |
| reg_val &= ~SPI_CMD_CS_POL; |
| |
| - if (chip_config->sample_sel) |
| + if (mdata->dev_config.sample_sel) |
| reg_val |= SPI_CMD_SAMPLE_SEL; |
| else |
| reg_val &= ~SPI_CMD_SAMPLE_SEL; |
| @@ -623,9 +618,6 @@ static int mtk_spi_setup(struct spi_device *spi) |
| { |
| struct mtk_spi *mdata = spi_master_get_devdata(spi->master); |
| |
| - if (!spi->controller_data) |
| - spi->controller_data = (void *)&mtk_default_chip_info; |
| - |
| if (mdata->dev_comp->need_pad_sel && gpio_is_valid(spi->cs_gpio)) |
| gpio_direction_output(spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); |
| |
| @@ -1025,6 +1017,11 @@ static int mtk_spi_probe(struct platform_device *pdev) |
| } |
| |
| mdata = spi_master_get_devdata(master); |
| + |
| + /* Set device configs to default first. Calibrate it later. */ |
| + mdata->dev_config.sample_sel = 0; |
| + mdata->dev_config.get_tick_dly = 2; |
| + |
| mdata->dev_comp = of_id->data; |
| |
| if (mdata->dev_comp->enhance_timing) |
| diff --git a/include/linux/platform_data/spi-mt65xx.h b/include/linux/platform_data/spi-mt65xx.h |
| deleted file mode 100644 |
| index fae9bc15c..000000000 |
| --- a/include/linux/platform_data/spi-mt65xx.h |
| +++ /dev/null |
| @@ -1,17 +0,0 @@ |
| -/* SPDX-License-Identifier: GPL-2.0-only */ |
| -/* |
| - * MTK SPI bus driver definitions |
| - * |
| - * Copyright (c) 2015 MediaTek Inc. |
| - * Author: Leilk Liu <leilk.liu@mediatek.com> |
| - */ |
| - |
| -#ifndef ____LINUX_PLATFORM_DATA_SPI_MTK_H |
| -#define ____LINUX_PLATFORM_DATA_SPI_MTK_H |
| - |
| -/* Board specific platform_data */ |
| -struct mtk_chip_config { |
| - u32 sample_sel; |
| - u32 get_tick_dly; |
| -}; |
| -#endif |
| -- |
| 2.18.0 |
| |