All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Frank Wunderlich <frank-w@public-files.de>
Cc: oe-kbuild-all@lists.linux.dev
Subject: [frank-w-bpi-r2-4.14:6.12-rsslro 74/80] drivers/spi/spi-mt65xx.c:348:33: warning: unused variable 'chip_config'
Date: Mon, 4 Nov 2024 07:29:05 +0800	[thread overview]
Message-ID: <202411040745.vOFbiCQF-lkp@intel.com> (raw)

tree:   https://github.com/frank-w/BPI-R2-4.14 6.12-rsslro
head:   8f436b83a2c7a7e02b26f01d869eb879d88b5805
commit: 8616912a95a6ddcfb98477c5c1d7efbf4ba3ab18 [74/80] drivers: spi-mt65xx: Move chip_config to driver's private data
config: i386-allyesconfig (https://download.01.org/0day-ci/archive/20241104/202411040745.vOFbiCQF-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241104/202411040745.vOFbiCQF-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202411040745.vOFbiCQF-lkp@intel.com/

All warnings (new ones prefixed by >>):

   drivers/spi/spi-mt65xx.c: In function 'mtk_spi_hw_init':
>> drivers/spi/spi-mt65xx.c:348:33: warning: unused variable 'chip_config' [-Wunused-variable]
     348 |         struct mtk_chip_config *chip_config = spi->controller_data;
         |                                 ^~~~~~~~~~~
--
>> drivers/spi/spi-mt65xx.c:176: warning: Function parameter or struct member 'sample_sel' not described in 'mtk_spi'
>> drivers/spi/spi-mt65xx.c:176: warning: Function parameter or struct member 'get_tick_dly' not described in 'mtk_spi'

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for MODVERSIONS
   Depends on [n]: MODULES [=y] && !COMPILE_TEST [=y]
   Selected by [y]:
   - RANDSTRUCT_FULL [=y] && (CC_HAS_RANDSTRUCT [=n] || GCC_PLUGINS [=y]) && MODULES [=y]
   WARNING: unmet direct dependencies detected for GET_FREE_REGION
   Depends on [n]: SPARSEMEM [=n]
   Selected by [y]:
   - RESOURCE_KUNIT_TEST [=y] && RUNTIME_TESTING_MENU [=y] && KUNIT [=y]


vim +/chip_config +348 drivers/spi/spi-mt65xx.c

a568231f463225 Leilk Liu                           2015-08-07  130  
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  131  /**
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  132   * struct mtk_spi - SPI driver instance
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  133   * @base:		Start address of the SPI controller registers
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  134   * @state:		SPI controller state
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  135   * @pad_num:		Number of pad_sel entries
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  136   * @pad_sel:		Groups of pins to select
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  137   * @parent_clk:		Parent of sel_clk
cae1578847e60a Yang Yingliang                      2023-08-23  138   * @sel_clk:		SPI host mux clock
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  139   * @spi_clk:		Peripheral clock
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  140   * @spi_hclk:		AHB bus clock
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  141   * @cur_transfer:	Currently processed SPI transfer
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  142   * @xfer_len:		Number of bytes to transfer
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  143   * @num_xfered:		Number of transferred bytes
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  144   * @tx_sgl:		TX transfer scatterlist
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  145   * @rx_sgl:		RX transfer scatterlist
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  146   * @tx_sgl_len:		Size of TX DMA transfer
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  147   * @rx_sgl_len:		Size of RX DMA transfer
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  148   * @dev_comp:		Device data structure
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  149   * @spi_clk_hz:		Current SPI clock in Hz
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  150   * @spimem_done:	SPI-MEM operation completion
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  151   * @use_spimem:		Enables SPI-MEM
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  152   * @dev:		Device pointer
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  153   * @tx_dma:		DMA start for SPI-MEM TX
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  154   * @rx_dma:		DMA start for SPI-MEM RX
3c5cd2e23fe4c8 AngeloGioacchino Del Regno          2022-04-07  155   */
a568231f463225 Leilk Liu                           2015-08-07  156  struct mtk_spi {
a568231f463225 Leilk Liu                           2015-08-07  157  	void __iomem *base;
a568231f463225 Leilk Liu                           2015-08-07  158  	u32 state;
37457607ecaffe Leilk Liu                           2015-10-26  159  	int pad_num;
37457607ecaffe Leilk Liu                           2015-10-26  160  	u32 *pad_sel;
a740f4e684c020 Leilk Liu                           2022-03-21  161  	struct clk *parent_clk, *sel_clk, *spi_clk, *spi_hclk;
a568231f463225 Leilk Liu                           2015-08-07  162  	struct spi_transfer *cur_transfer;
a568231f463225 Leilk Liu                           2015-08-07  163  	u32 xfer_len;
00bca73bfca4fb Peter Shih                          2018-09-10  164  	u32 num_xfered;
a568231f463225 Leilk Liu                           2015-08-07  165  	struct scatterlist *tx_sgl, *rx_sgl;
a568231f463225 Leilk Liu                           2015-08-07  166  	u32 tx_sgl_len, rx_sgl_len;
a568231f463225 Leilk Liu                           2015-08-07  167  	const struct mtk_spi_compatible *dev_comp;
162a31effc4182 Mason Zhang                         2021-06-29  168  	u32 spi_clk_hz;
9f763fd20da7d8 Leilk Liu                           2022-03-21  169  	struct completion spimem_done;
9f763fd20da7d8 Leilk Liu                           2022-03-21  170  	bool use_spimem;
9f763fd20da7d8 Leilk Liu                           2022-03-21  171  	struct device *dev;
9f763fd20da7d8 Leilk Liu                           2022-03-21  172  	dma_addr_t tx_dma;
9f763fd20da7d8 Leilk Liu                           2022-03-21  173  	dma_addr_t rx_dma;
8616912a95a6dd SkyLake.Huang                       2022-06-23  174  	u32 sample_sel;
8616912a95a6dd SkyLake.Huang                       2022-06-23  175  	u32 get_tick_dly;
a568231f463225 Leilk Liu                           2015-08-07 @176  };
a568231f463225 Leilk Liu                           2015-08-07  177  
4eaf6f730355ce Leilk Liu                           2015-12-31  178  static const struct mtk_spi_compatible mtk_common_compat;
fc4f226fece3d0 Leilk Liu                           2017-06-12  179  
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  180  static const struct mtk_spi_compatible mt2712_compat = {
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  181  	.must_tx = true,
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  182  };
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  183  
7e963fb2a33ce4 Leilk Liu                           2022-03-15  184  static const struct mtk_spi_compatible mtk_ipm_compat = {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  185  	.enhance_timing = true,
7e963fb2a33ce4 Leilk Liu                           2022-03-15  186  	.dma_ext = true,
7e963fb2a33ce4 Leilk Liu                           2022-03-15  187  	.ipm_design = true,
7e963fb2a33ce4 Leilk Liu                           2022-03-15  188  };
7e963fb2a33ce4 Leilk Liu                           2022-03-15  189  
2c231e0ab63851 luhua.xu                            2019-09-11  190  static const struct mtk_spi_compatible mt6765_compat = {
2c231e0ab63851 luhua.xu                            2019-09-11  191  	.need_pad_sel = true,
2c231e0ab63851 luhua.xu                            2019-09-11  192  	.must_tx = true,
2c231e0ab63851 luhua.xu                            2019-09-11  193  	.enhance_timing = true,
fdeae8f5a2e5eb luhua.xu                            2019-09-11  194  	.dma_ext = true,
2c231e0ab63851 luhua.xu                            2019-09-11  195  };
2c231e0ab63851 luhua.xu                            2019-09-11  196  
fc4f226fece3d0 Leilk Liu                           2017-06-12  197  static const struct mtk_spi_compatible mt7622_compat = {
fc4f226fece3d0 Leilk Liu                           2017-06-12  198  	.must_tx = true,
fc4f226fece3d0 Leilk Liu                           2017-06-12  199  	.enhance_timing = true,
fc4f226fece3d0 Leilk Liu                           2017-06-12  200  };
fc4f226fece3d0 Leilk Liu                           2017-06-12  201  
a568231f463225 Leilk Liu                           2015-08-07  202  static const struct mtk_spi_compatible mt8173_compat = {
af57937e862370 Leilk Liu                           2015-08-20  203  	.need_pad_sel = true,
af57937e862370 Leilk Liu                           2015-08-20  204  	.must_tx = true,
a568231f463225 Leilk Liu                           2015-08-07  205  };
a568231f463225 Leilk Liu                           2015-08-07  206  
b654aa6f2bbb00 Leilk Liu                           2018-11-01  207  static const struct mtk_spi_compatible mt8183_compat = {
b654aa6f2bbb00 Leilk Liu                           2018-11-01  208  	.need_pad_sel = true,
b654aa6f2bbb00 Leilk Liu                           2018-11-01  209  	.must_tx = true,
b654aa6f2bbb00 Leilk Liu                           2018-11-01  210  	.enhance_timing = true,
b654aa6f2bbb00 Leilk Liu                           2018-11-01  211  };
b654aa6f2bbb00 Leilk Liu                           2018-11-01  212  
162a31effc4182 Mason Zhang                         2021-06-29  213  static const struct mtk_spi_compatible mt6893_compat = {
162a31effc4182 Mason Zhang                         2021-06-29  214  	.need_pad_sel = true,
162a31effc4182 Mason Zhang                         2021-06-29  215  	.must_tx = true,
162a31effc4182 Mason Zhang                         2021-06-29  216  	.enhance_timing = true,
162a31effc4182 Mason Zhang                         2021-06-29  217  	.dma_ext = true,
162a31effc4182 Mason Zhang                         2021-06-29  218  	.no_need_unprepare = true,
162a31effc4182 Mason Zhang                         2021-06-29  219  };
162a31effc4182 Mason Zhang                         2021-06-29  220  
a568231f463225 Leilk Liu                           2015-08-07  221  static const struct of_device_id mtk_spi_of_match[] = {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  222  	{ .compatible = "mediatek,spi-ipm",
7e963fb2a33ce4 Leilk Liu                           2022-03-15  223  		.data = (void *)&mtk_ipm_compat,
7e963fb2a33ce4 Leilk Liu                           2022-03-15  224  	},
15bcdefdc71a79 Leilk Liu                           2015-12-31  225  	{ .compatible = "mediatek,mt2701-spi",
15bcdefdc71a79 Leilk Liu                           2015-12-31  226  		.data = (void *)&mtk_common_compat,
15bcdefdc71a79 Leilk Liu                           2015-12-31  227  	},
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  228  	{ .compatible = "mediatek,mt2712-spi",
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  229  		.data = (void *)&mt2712_compat,
b6b1f2d9cf796c leilk.liu@mediatek.com              2017-06-20  230  	},
4eaf6f730355ce Leilk Liu                           2015-12-31  231  	{ .compatible = "mediatek,mt6589-spi",
4eaf6f730355ce Leilk Liu                           2015-12-31  232  		.data = (void *)&mtk_common_compat,
4eaf6f730355ce Leilk Liu                           2015-12-31  233  	},
2c231e0ab63851 luhua.xu                            2019-09-11  234  	{ .compatible = "mediatek,mt6765-spi",
2c231e0ab63851 luhua.xu                            2019-09-11  235  		.data = (void *)&mt6765_compat,
2c231e0ab63851 luhua.xu                            2019-09-11  236  	},
fc4f226fece3d0 Leilk Liu                           2017-06-12  237  	{ .compatible = "mediatek,mt7622-spi",
fc4f226fece3d0 Leilk Liu                           2017-06-12  238  		.data = (void *)&mt7622_compat,
fc4f226fece3d0 Leilk Liu                           2017-06-12  239  	},
942779c6f1f899 Leilk Liu                           2018-11-20  240  	{ .compatible = "mediatek,mt7629-spi",
942779c6f1f899 Leilk Liu                           2018-11-20  241  		.data = (void *)&mt7622_compat,
942779c6f1f899 Leilk Liu                           2018-11-20  242  	},
4eaf6f730355ce Leilk Liu                           2015-12-31  243  	{ .compatible = "mediatek,mt8135-spi",
4eaf6f730355ce Leilk Liu                           2015-12-31  244  		.data = (void *)&mtk_common_compat,
4eaf6f730355ce Leilk Liu                           2015-12-31  245  	},
4eaf6f730355ce Leilk Liu                           2015-12-31  246  	{ .compatible = "mediatek,mt8173-spi",
4eaf6f730355ce Leilk Liu                           2015-12-31  247  		.data = (void *)&mt8173_compat,
4eaf6f730355ce Leilk Liu                           2015-12-31  248  	},
b654aa6f2bbb00 Leilk Liu                           2018-11-01  249  	{ .compatible = "mediatek,mt8183-spi",
b654aa6f2bbb00 Leilk Liu                           2018-11-01  250  		.data = (void *)&mt8183_compat,
b654aa6f2bbb00 Leilk Liu                           2018-11-01  251  	},
8cf125c403f4e0 leilk.liu                           2020-07-21  252  	{ .compatible = "mediatek,mt8192-spi",
8cf125c403f4e0 leilk.liu                           2020-07-21  253  		.data = (void *)&mt6765_compat,
8cf125c403f4e0 leilk.liu                           2020-07-21  254  	},
162a31effc4182 Mason Zhang                         2021-06-29  255  	{ .compatible = "mediatek,mt6893-spi",
162a31effc4182 Mason Zhang                         2021-06-29  256  		.data = (void *)&mt6893_compat,
162a31effc4182 Mason Zhang                         2021-06-29  257  	},
a568231f463225 Leilk Liu                           2015-08-07  258  	{}
a568231f463225 Leilk Liu                           2015-08-07  259  };
a568231f463225 Leilk Liu                           2015-08-07  260  MODULE_DEVICE_TABLE(of, mtk_spi_of_match);
a568231f463225 Leilk Liu                           2015-08-07  261  
a568231f463225 Leilk Liu                           2015-08-07  262  static void mtk_spi_reset(struct mtk_spi *mdata)
a568231f463225 Leilk Liu                           2015-08-07  263  {
a568231f463225 Leilk Liu                           2015-08-07  264  	u32 reg_val;
a568231f463225 Leilk Liu                           2015-08-07  265  
a568231f463225 Leilk Liu                           2015-08-07  266  	/* set the software reset bit in SPI_CMD_REG. */
a568231f463225 Leilk Liu                           2015-08-07  267  	reg_val = readl(mdata->base + SPI_CMD_REG);
a568231f463225 Leilk Liu                           2015-08-07  268  	reg_val |= SPI_CMD_RST;
a568231f463225 Leilk Liu                           2015-08-07  269  	writel(reg_val, mdata->base + SPI_CMD_REG);
a568231f463225 Leilk Liu                           2015-08-07  270  
a568231f463225 Leilk Liu                           2015-08-07  271  	reg_val = readl(mdata->base + SPI_CMD_REG);
a568231f463225 Leilk Liu                           2015-08-07  272  	reg_val &= ~SPI_CMD_RST;
a568231f463225 Leilk Liu                           2015-08-07  273  	writel(reg_val, mdata->base + SPI_CMD_REG);
a568231f463225 Leilk Liu                           2015-08-07  274  }
a568231f463225 Leilk Liu                           2015-08-07  275  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  276  static int mtk_spi_set_hw_cs_timing(struct spi_device *spi)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  277  {
cae1578847e60a Yang Yingliang                      2023-08-23  278  	struct mtk_spi *mdata = spi_controller_get_devdata(spi->controller);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  279  	struct spi_delay *cs_setup = &spi->cs_setup;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  280  	struct spi_delay *cs_hold = &spi->cs_hold;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  281  	struct spi_delay *cs_inactive = &spi->cs_inactive;
5c842e51ac6313 Mason Zhang                         2021-08-09  282  	u32 setup, hold, inactive;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  283  	u32 reg_val;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  284  	int delay;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  285  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  286  	delay = spi_delay_to_ns(cs_setup, NULL);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  287  	if (delay < 0)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  288  		return delay;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  289  	setup = (delay * DIV_ROUND_UP(mdata->spi_clk_hz, 1000000)) / 1000;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  290  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  291  	delay = spi_delay_to_ns(cs_hold, NULL);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  292  	if (delay < 0)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  293  		return delay;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  294  	hold = (delay * DIV_ROUND_UP(mdata->spi_clk_hz, 1000000)) / 1000;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  295  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  296  	delay = spi_delay_to_ns(cs_inactive, NULL);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  297  	if (delay < 0)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  298  		return delay;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  299  	inactive = (delay * DIV_ROUND_UP(mdata->spi_clk_hz, 1000000)) / 1000;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  300  
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  301  	if (hold || setup) {
04e6bb0d6bb127 Mason Zhang                         2021-08-04  302  		reg_val = readl(mdata->base + SPI_CFG0_REG);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  303  		if (mdata->dev_comp->enhance_timing) {
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  304  			if (hold) {
5c842e51ac6313 Mason Zhang                         2021-08-09  305  				hold = min_t(u32, hold, 0x10000);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  306  				reg_val &= ~(0xffff << SPI_ADJUST_CFG0_CS_HOLD_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  307  				reg_val |= (((hold - 1) & 0xffff)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  308  					<< SPI_ADJUST_CFG0_CS_HOLD_OFFSET);
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  309  			}
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  310  			if (setup) {
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  311  				setup = min_t(u32, setup, 0x10000);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  312  				reg_val &= ~(0xffff << SPI_ADJUST_CFG0_CS_SETUP_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  313  				reg_val |= (((setup - 1) & 0xffff)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  314  					<< SPI_ADJUST_CFG0_CS_SETUP_OFFSET);
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  315  			}
04e6bb0d6bb127 Mason Zhang                         2021-08-04  316  		} else {
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  317  			if (hold) {
5c842e51ac6313 Mason Zhang                         2021-08-09  318  				hold = min_t(u32, hold, 0x100);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  319  				reg_val &= ~(0xff << SPI_CFG0_CS_HOLD_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  320  				reg_val |= (((hold - 1) & 0xff) << SPI_CFG0_CS_HOLD_OFFSET);
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  321  			}
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  322  			if (setup) {
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  323  				setup = min_t(u32, setup, 0x100);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  324  				reg_val &= ~(0xff << SPI_CFG0_CS_SETUP_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  325  				reg_val |= (((setup - 1) & 0xff)
04e6bb0d6bb127 Mason Zhang                         2021-08-04  326  					<< SPI_CFG0_CS_SETUP_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  327  			}
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  328  		}
04e6bb0d6bb127 Mason Zhang                         2021-08-04  329  		writel(reg_val, mdata->base + SPI_CFG0_REG);
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  330  	}
04e6bb0d6bb127 Mason Zhang                         2021-08-04  331  
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  332  	if (inactive) {
5c842e51ac6313 Mason Zhang                         2021-08-09  333  		inactive = min_t(u32, inactive, 0x100);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  334  		reg_val = readl(mdata->base + SPI_CFG1_REG);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  335  		reg_val &= ~SPI_CFG1_CS_IDLE_MASK;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  336  		reg_val |= (((inactive - 1) & 0xff) << SPI_CFG1_CS_IDLE_OFFSET);
04e6bb0d6bb127 Mason Zhang                         2021-08-04  337  		writel(reg_val, mdata->base + SPI_CFG1_REG);
3672bb820f3292 Dafna Hirschfeld                    2021-10-01  338  	}
04e6bb0d6bb127 Mason Zhang                         2021-08-04  339  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  340  	return 0;
04e6bb0d6bb127 Mason Zhang                         2021-08-04  341  }
04e6bb0d6bb127 Mason Zhang                         2021-08-04  342  
cae1578847e60a Yang Yingliang                      2023-08-23  343  static int mtk_spi_hw_init(struct spi_controller *host,
7e963fb2a33ce4 Leilk Liu                           2022-03-15  344  			   struct spi_device *spi)
a568231f463225 Leilk Liu                           2015-08-07  345  {
79b5d3f24dcec5 Leilk Liu                           2015-10-26  346  	u16 cpha, cpol;
a568231f463225 Leilk Liu                           2015-08-07  347  	u32 reg_val;
58a984c79a68d5 Leilk Liu                           2015-10-26 @348  	struct mtk_chip_config *chip_config = spi->controller_data;
cae1578847e60a Yang Yingliang                      2023-08-23  349  	struct mtk_spi *mdata = spi_controller_get_devdata(host);
79b5d3f24dcec5 Leilk Liu                           2015-10-26  350  
79b5d3f24dcec5 Leilk Liu                           2015-10-26  351  	cpha = spi->mode & SPI_CPHA ? 1 : 0;
79b5d3f24dcec5 Leilk Liu                           2015-10-26  352  	cpol = spi->mode & SPI_CPOL ? 1 : 0;
79b5d3f24dcec5 Leilk Liu                           2015-10-26  353  
79b5d3f24dcec5 Leilk Liu                           2015-10-26  354  	reg_val = readl(mdata->base + SPI_CMD_REG);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  355  	if (mdata->dev_comp->ipm_design) {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  356  		/* SPI transfer without idle time until packet length done */
7e963fb2a33ce4 Leilk Liu                           2022-03-15  357  		reg_val |= SPI_CMD_IPM_NONIDLE_MODE;
7e963fb2a33ce4 Leilk Liu                           2022-03-15  358  		if (spi->mode & SPI_LOOP)
7e963fb2a33ce4 Leilk Liu                           2022-03-15  359  			reg_val |= SPI_CMD_IPM_SPIM_LOOP;
7e963fb2a33ce4 Leilk Liu                           2022-03-15  360  		else
7e963fb2a33ce4 Leilk Liu                           2022-03-15  361  			reg_val &= ~SPI_CMD_IPM_SPIM_LOOP;
7e963fb2a33ce4 Leilk Liu                           2022-03-15  362  	}
7e963fb2a33ce4 Leilk Liu                           2022-03-15  363  
79b5d3f24dcec5 Leilk Liu                           2015-10-26  364  	if (cpha)
79b5d3f24dcec5 Leilk Liu                           2015-10-26  365  		reg_val |= SPI_CMD_CPHA;
79b5d3f24dcec5 Leilk Liu                           2015-10-26  366  	else
79b5d3f24dcec5 Leilk Liu                           2015-10-26  367  		reg_val &= ~SPI_CMD_CPHA;
79b5d3f24dcec5 Leilk Liu                           2015-10-26  368  	if (cpol)
79b5d3f24dcec5 Leilk Liu                           2015-10-26  369  		reg_val |= SPI_CMD_CPOL;
79b5d3f24dcec5 Leilk Liu                           2015-10-26  370  	else
79b5d3f24dcec5 Leilk Liu                           2015-10-26  371  		reg_val &= ~SPI_CMD_CPOL;
a568231f463225 Leilk Liu                           2015-08-07  372  
a568231f463225 Leilk Liu                           2015-08-07  373  	/* set the mlsbx and mlsbtx */
3e582c6e911ffe Leilk Liu                           2019-06-05  374  	if (spi->mode & SPI_LSB_FIRST) {
a71d6ea6d3ec3e Leilk Liu                           2015-08-20  375  		reg_val &= ~SPI_CMD_TXMSBF;
a71d6ea6d3ec3e Leilk Liu                           2015-08-20  376  		reg_val &= ~SPI_CMD_RXMSBF;
3e582c6e911ffe Leilk Liu                           2019-06-05  377  	} else {
3e582c6e911ffe Leilk Liu                           2019-06-05  378  		reg_val |= SPI_CMD_TXMSBF;
3e582c6e911ffe Leilk Liu                           2019-06-05  379  		reg_val |= SPI_CMD_RXMSBF;
3e582c6e911ffe Leilk Liu                           2019-06-05  380  	}
a568231f463225 Leilk Liu                           2015-08-07  381  
a568231f463225 Leilk Liu                           2015-08-07  382  	/* set the tx/rx endian */
44f636da4e71e0 Leilk Liu                           2015-08-20  383  #ifdef __LITTLE_ENDIAN
44f636da4e71e0 Leilk Liu                           2015-08-20  384  	reg_val &= ~SPI_CMD_TX_ENDIAN;
44f636da4e71e0 Leilk Liu                           2015-08-20  385  	reg_val &= ~SPI_CMD_RX_ENDIAN;
44f636da4e71e0 Leilk Liu                           2015-08-20  386  #else
44f636da4e71e0 Leilk Liu                           2015-08-20  387  	reg_val |= SPI_CMD_TX_ENDIAN;
44f636da4e71e0 Leilk Liu                           2015-08-20  388  	reg_val |= SPI_CMD_RX_ENDIAN;
44f636da4e71e0 Leilk Liu                           2015-08-20  389  #endif
a568231f463225 Leilk Liu                           2015-08-07  390  
058fe49da3b6ab Leilk Liu                           2017-06-12  391  	if (mdata->dev_comp->enhance_timing) {
ae7c2d342a10db Luhua Xu                            2019-11-18  392  		/* set CS polarity */
ae7c2d342a10db Luhua Xu                            2019-11-18  393  		if (spi->mode & SPI_CS_HIGH)
058fe49da3b6ab Leilk Liu                           2017-06-12  394  			reg_val |= SPI_CMD_CS_POL;
058fe49da3b6ab Leilk Liu                           2017-06-12  395  		else
058fe49da3b6ab Leilk Liu                           2017-06-12  396  			reg_val &= ~SPI_CMD_CS_POL;
ae7c2d342a10db Luhua Xu                            2019-11-18  397  
8616912a95a6dd SkyLake.Huang                       2022-06-23  398  		if (mdata->sample_sel)
058fe49da3b6ab Leilk Liu                           2017-06-12  399  			reg_val |= SPI_CMD_SAMPLE_SEL;
058fe49da3b6ab Leilk Liu                           2017-06-12  400  		else
058fe49da3b6ab Leilk Liu                           2017-06-12  401  			reg_val &= ~SPI_CMD_SAMPLE_SEL;
058fe49da3b6ab Leilk Liu                           2017-06-12  402  	}
058fe49da3b6ab Leilk Liu                           2017-06-12  403  
a568231f463225 Leilk Liu                           2015-08-07  404  	/* set finish and pause interrupt always enable */
152933244a1a32 Leilk Liu                           2015-08-27  405  	reg_val |= SPI_CMD_FINISH_IE | SPI_CMD_PAUSE_IE;
a568231f463225 Leilk Liu                           2015-08-07  406  
a568231f463225 Leilk Liu                           2015-08-07  407  	/* disable dma mode */
a568231f463225 Leilk Liu                           2015-08-07  408  	reg_val &= ~(SPI_CMD_TX_DMA | SPI_CMD_RX_DMA);
a568231f463225 Leilk Liu                           2015-08-07  409  
a568231f463225 Leilk Liu                           2015-08-07  410  	/* disable deassert mode */
a568231f463225 Leilk Liu                           2015-08-07  411  	reg_val &= ~SPI_CMD_DEASSERT;
a568231f463225 Leilk Liu                           2015-08-07  412  
a568231f463225 Leilk Liu                           2015-08-07  413  	writel(reg_val, mdata->base + SPI_CMD_REG);
a568231f463225 Leilk Liu                           2015-08-07  414  
a568231f463225 Leilk Liu                           2015-08-07  415  	/* pad select */
a568231f463225 Leilk Liu                           2015-08-07  416  	if (mdata->dev_comp->need_pad_sel)
9e264f3f85a56c Amit Kumar Mahapatra via Alsa-devel 2023-03-10  417  		writel(mdata->pad_sel[spi_get_chipselect(spi, 0)],
37457607ecaffe Leilk Liu                           2015-10-26  418  		       mdata->base + SPI_PAD_SEL_REG);
a568231f463225 Leilk Liu                           2015-08-07  419  
f84d866ab43fcc Mason Zhang                         2021-07-13  420  	/* tick delay */
03b1be379dcee2 Leilk Liu                           2022-03-15  421  	if (mdata->dev_comp->enhance_timing) {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  422  		if (mdata->dev_comp->ipm_design) {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  423  			reg_val = readl(mdata->base + SPI_CMD_REG);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  424  			reg_val &= ~SPI_CMD_IPM_GET_TICKDLY_MASK;
8616912a95a6dd SkyLake.Huang                       2022-06-23  425  			reg_val |= ((mdata->get_tick_dly & 0x7)
7e963fb2a33ce4 Leilk Liu                           2022-03-15  426  				    << SPI_CMD_IPM_GET_TICKDLY_OFFSET);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  427  			writel(reg_val, mdata->base + SPI_CMD_REG);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  428  		} else {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  429  			reg_val = readl(mdata->base + SPI_CFG1_REG);
f84d866ab43fcc Mason Zhang                         2021-07-13  430  			reg_val &= ~SPI_CFG1_GET_TICK_DLY_MASK;
8616912a95a6dd SkyLake.Huang                       2022-06-23  431  			reg_val |= ((mdata->get_tick_dly & 0x7)
f84d866ab43fcc Mason Zhang                         2021-07-13  432  				    << SPI_CFG1_GET_TICK_DLY_OFFSET);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  433  			writel(reg_val, mdata->base + SPI_CFG1_REG);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  434  		}
03b1be379dcee2 Leilk Liu                           2022-03-15  435  	} else {
7e963fb2a33ce4 Leilk Liu                           2022-03-15  436  		reg_val = readl(mdata->base + SPI_CFG1_REG);
03b1be379dcee2 Leilk Liu                           2022-03-15  437  		reg_val &= ~SPI_CFG1_GET_TICK_DLY_MASK_V1;
8616912a95a6dd SkyLake.Huang                       2022-06-23  438  		reg_val |= ((mdata->get_tick_dly & 0x3)
03b1be379dcee2 Leilk Liu                           2022-03-15  439  			    << SPI_CFG1_GET_TICK_DLY_OFFSET_V1);
f84d866ab43fcc Mason Zhang                         2021-07-13  440  		writel(reg_val, mdata->base + SPI_CFG1_REG);
7e963fb2a33ce4 Leilk Liu                           2022-03-15  441  	}
f84d866ab43fcc Mason Zhang                         2021-07-13  442  
04e6bb0d6bb127 Mason Zhang                         2021-08-04  443  	/* set hw cs timing */
04e6bb0d6bb127 Mason Zhang                         2021-08-04  444  	mtk_spi_set_hw_cs_timing(spi);
a568231f463225 Leilk Liu                           2015-08-07  445  	return 0;
a568231f463225 Leilk Liu                           2015-08-07  446  }
a568231f463225 Leilk Liu                           2015-08-07  447  

:::::: The code at line 348 was first introduced by commit
:::::: 58a984c79a68d508ccfccf4b82c0eaf7f487c399 spi: mediatek: handle controller_data in mtk_spi_setup

:::::: TO: Leilk Liu <leilk.liu@mediatek.com>
:::::: CC: Mark Brown <broonie@kernel.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

                 reply	other threads:[~2024-11-03 23:29 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202411040745.vOFbiCQF-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=frank-w@public-files.de \
    --cc=oe-kbuild-all@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.