Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Unverified Commit 7a4e28ab authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'spi/fix/imx' and 'spi/fix/sh-msiof' into spi-linus

Loading
Loading
Loading
Loading
+13 −2
Original line number Diff line number Diff line
@@ -1668,12 +1668,23 @@ static int spi_imx_remove(struct platform_device *pdev)
{
	struct spi_master *master = platform_get_drvdata(pdev);
	struct spi_imx_data *spi_imx = spi_master_get_devdata(master);
	int ret;

	spi_bitbang_stop(&spi_imx->bitbang);

	ret = clk_enable(spi_imx->clk_per);
	if (ret)
		return ret;

	ret = clk_enable(spi_imx->clk_ipg);
	if (ret) {
		clk_disable(spi_imx->clk_per);
		return ret;
	}

	writel(0, spi_imx->base + MXC_CSPICTRL);
	clk_unprepare(spi_imx->clk_ipg);
	clk_unprepare(spi_imx->clk_per);
	clk_disable_unprepare(spi_imx->clk_ipg);
	clk_disable_unprepare(spi_imx->clk_per);
	spi_imx_sdma_exit(spi_imx);
	spi_master_put(master);

+11 −1
Original line number Diff line number Diff line
@@ -784,10 +784,20 @@ static int sh_msiof_dma_once(struct sh_msiof_spi_priv *p, const void *tx,
		goto stop_dma;
	}

	/* wait for tx fifo to be emptied / rx fifo to be filled */
	/* wait for tx/rx DMA completion */
	ret = sh_msiof_wait_for_completion(p);
	if (ret)
		goto stop_reset;

	if (!rx) {
		reinit_completion(&p->done);
		sh_msiof_write(p, IER, IER_TEOFE);

		/* wait for tx fifo to be emptied */
		ret = sh_msiof_wait_for_completion(p);
		if (ret)
			goto stop_reset;
	}

	/* clear status bits */
	sh_msiof_reset_str(p);