mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	spi: Fixes for v4.20
A few driver specific fixes here, nothing big or that stands out for anyone other than the driver users. -----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAlv+uFQTHGJyb29uaWVA a2VybmVsLm9yZwAKCRAk1otyXVSH0GN/B/9rkzlaRTNvBepsN3qbDfFotIt2+9T0 as4tDY5t+C6PWHkKaqezTuKzin+fSOpSQ9n8rx2yc9oddwpelDsqLVxUlxRuN+RB C+UBfls7rP3J8AlYaGFor+N+MjiRuWVpfYW0PbFf1kM8l1fmOP7FC7BB76G1Ketu 3U9DSWeL5YMZq+IIXI3e77f3luq4/bo2DVxNMQ/PL/frbpRIqOVYag5kGFRxYYez 7rcAo68mOCv/85xdqNZ5u2m+xO/fpSYV+CGFXbYvGPizFIGl9REnw+8DE7EVSCo7 xsPsMuj/bE0Gr3frPguZ0XFsOyFB+SVxqMQxQt2zKiEDuLtQYTFmhs9h =kDIQ -----END PGP SIGNATURE----- Merge tag 'spi-fix-v4.20-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi Pull spi fixes from Mark Brown: "A few driver specific fixes here, nothing big or that stands out for anyone other than the driver users. The omap2-mcspi fix is for issues that started showing up with a change in defconfig in this release to make cpuidle get turned on by default" * tag 'spi-fix-v4.20-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: omap2-mcspi: Add missing suspend and resume calls spi: mediatek: use correct mata->xfer_len when in fifo transfer spi: uniphier: fix incorrect property items
This commit is contained in:
		
						commit
						5b26f7180c
					
				
					 3 changed files with 35 additions and 20 deletions
				
			
		|  | @ -5,18 +5,20 @@ UniPhier SoCs have SCSSI which supports SPI single channel. | |||
| Required properties: | ||||
|  - compatible: should be "socionext,uniphier-scssi" | ||||
|  - reg: address and length of the spi master registers | ||||
|  - #address-cells: must be <1>, see spi-bus.txt | ||||
|  - #size-cells: must be <0>, see spi-bus.txt | ||||
|  - clocks: A phandle to the clock for the device. | ||||
|  - resets: A phandle to the reset control for the device. | ||||
|  - interrupts: a single interrupt specifier | ||||
|  - pinctrl-names: should be "default" | ||||
|  - pinctrl-0: pin control state for the default mode | ||||
|  - clocks: a phandle to the clock for the device | ||||
|  - resets: a phandle to the reset control for the device | ||||
| 
 | ||||
| Example: | ||||
| 
 | ||||
| spi0: spi@54006000 { | ||||
| 	compatible = "socionext,uniphier-scssi"; | ||||
| 	reg = <0x54006000 0x100>; | ||||
| 	#address-cells = <1>; | ||||
| 	#size-cells = <0>; | ||||
| 	interrupts = <0 39 4>; | ||||
| 	pinctrl-names = "default"; | ||||
| 	pinctrl-0 = <&pinctrl_spi0>; | ||||
| 	clocks = <&peri_clk 11>; | ||||
| 	resets = <&peri_rst 11>; | ||||
| }; | ||||
|  |  | |||
|  | @ -522,11 +522,11 @@ static irqreturn_t mtk_spi_interrupt(int irq, void *dev_id) | |||
| 		mdata->xfer_len = min(MTK_SPI_MAX_FIFO_SIZE, len); | ||||
| 		mtk_spi_setup_packet(master); | ||||
| 
 | ||||
| 		cnt = len / 4; | ||||
| 		cnt = mdata->xfer_len / 4; | ||||
| 		iowrite32_rep(mdata->base + SPI_TX_DATA_REG, | ||||
| 				trans->tx_buf + mdata->num_xfered, cnt); | ||||
| 
 | ||||
| 		remainder = len % 4; | ||||
| 		remainder = mdata->xfer_len % 4; | ||||
| 		if (remainder > 0) { | ||||
| 			reg_val = 0; | ||||
| 			memcpy(®_val, | ||||
|  |  | |||
|  | @ -1540,13 +1540,26 @@ static int omap2_mcspi_remove(struct platform_device *pdev) | |||
| /* work with hotplug and coldplug */ | ||||
| MODULE_ALIAS("platform:omap2_mcspi"); | ||||
| 
 | ||||
| #ifdef	CONFIG_SUSPEND | ||||
| static int omap2_mcspi_suspend_noirq(struct device *dev) | ||||
| static int __maybe_unused omap2_mcspi_suspend(struct device *dev) | ||||
| { | ||||
| 	return pinctrl_pm_select_sleep_state(dev); | ||||
| 	struct spi_master *master = dev_get_drvdata(dev); | ||||
| 	struct omap2_mcspi *mcspi = spi_master_get_devdata(master); | ||||
| 	int error; | ||||
| 
 | ||||
| 	error = pinctrl_pm_select_sleep_state(dev); | ||||
| 	if (error) | ||||
| 		dev_warn(mcspi->dev, "%s: failed to set pins: %i\n", | ||||
| 			 __func__, error); | ||||
| 
 | ||||
| 	error = spi_master_suspend(master); | ||||
| 	if (error) | ||||
| 		dev_warn(mcspi->dev, "%s: master suspend failed: %i\n", | ||||
| 			 __func__, error); | ||||
| 
 | ||||
| 	return pm_runtime_force_suspend(dev); | ||||
| } | ||||
| 
 | ||||
| static int omap2_mcspi_resume_noirq(struct device *dev) | ||||
| static int __maybe_unused omap2_mcspi_resume(struct device *dev) | ||||
| { | ||||
| 	struct spi_master *master = dev_get_drvdata(dev); | ||||
| 	struct omap2_mcspi *mcspi = spi_master_get_devdata(master); | ||||
|  | @ -1557,17 +1570,17 @@ static int omap2_mcspi_resume_noirq(struct device *dev) | |||
| 		dev_warn(mcspi->dev, "%s: failed to set pins: %i\n", | ||||
| 			 __func__, error); | ||||
| 
 | ||||
| 	return 0; | ||||
| 	error = spi_master_resume(master); | ||||
| 	if (error) | ||||
| 		dev_warn(mcspi->dev, "%s: master resume failed: %i\n", | ||||
| 			 __func__, error); | ||||
| 
 | ||||
| 	return pm_runtime_force_resume(dev); | ||||
| } | ||||
| 
 | ||||
| #else | ||||
| #define omap2_mcspi_suspend_noirq	NULL | ||||
| #define omap2_mcspi_resume_noirq	NULL | ||||
| #endif | ||||
| 
 | ||||
| static const struct dev_pm_ops omap2_mcspi_pm_ops = { | ||||
| 	.suspend_noirq = omap2_mcspi_suspend_noirq, | ||||
| 	.resume_noirq = omap2_mcspi_resume_noirq, | ||||
| 	SET_SYSTEM_SLEEP_PM_OPS(omap2_mcspi_suspend, | ||||
| 				omap2_mcspi_resume) | ||||
| 	.runtime_resume	= omap_mcspi_runtime_resume, | ||||
| }; | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Linus Torvalds
						Linus Torvalds