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

Commit 4aa41ba7 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull spi fixes from Mark Brown:
 "A scattering of driver specific fixes here.

  The fixes from Axel cover bitrot in apparently unmaintained drivers,
  the at79 bug is fixing a glitch on /CS during initialisation of some
  devices which could break some slaves and the remainder are fixes for
  recently introduced bugs from the past release cycle or so"

* tag 'spi-v3.14-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
  spi: atmel: add missing spi_master_{resume,suspend} calls to PM callbacks
  spi: coldfire-qspi: Fix getting correct address for *mcfqspi
  spi: fsl-dspi: Fix getting correct address for master
  spi: spi-ath79: fix initial GPIO CS line setup
  spi: spi-imx: spi_imx_remove: do not disable disabled clocks
  spi-topcliff-pch: Fix probing when DMA mode is used
  spi/topcliff-pch: Fix DMA channel
parents 66a523db d930acfd
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -132,9 +132,9 @@ static int ath79_spi_setup_cs(struct spi_device *spi)


		flags = GPIOF_DIR_OUT;
		flags = GPIOF_DIR_OUT;
		if (spi->mode & SPI_CS_HIGH)
		if (spi->mode & SPI_CS_HIGH)
			flags |= GPIOF_INIT_HIGH;
		else
			flags |= GPIOF_INIT_LOW;
			flags |= GPIOF_INIT_LOW;
		else
			flags |= GPIOF_INIT_HIGH;


		status = gpio_request_one(cdata->gpio, flags,
		status = gpio_request_one(cdata->gpio, flags,
					  dev_name(&spi->dev));
					  dev_name(&spi->dev));
+16 −1
Original line number Original line Diff line number Diff line
@@ -1455,6 +1455,14 @@ static int atmel_spi_suspend(struct device *dev)
{
{
	struct spi_master	*master = dev_get_drvdata(dev);
	struct spi_master	*master = dev_get_drvdata(dev);
	struct atmel_spi	*as = spi_master_get_devdata(master);
	struct atmel_spi	*as = spi_master_get_devdata(master);
	int ret;

	/* Stop the queue running */
	ret = spi_master_suspend(master);
	if (ret) {
		dev_warn(dev, "cannot suspend master\n");
		return ret;
	}


	clk_disable_unprepare(as->clk);
	clk_disable_unprepare(as->clk);
	return 0;
	return 0;
@@ -1464,9 +1472,16 @@ static int atmel_spi_resume(struct device *dev)
{
{
	struct spi_master	*master = dev_get_drvdata(dev);
	struct spi_master	*master = dev_get_drvdata(dev);
	struct atmel_spi	*as = spi_master_get_devdata(master);
	struct atmel_spi	*as = spi_master_get_devdata(master);
	int ret;


	clk_prepare_enable(as->clk);
	clk_prepare_enable(as->clk);
	return 0;

	/* Start the queue running */
	ret = spi_master_resume(master);
	if (ret)
		dev_err(dev, "problem starting queue (%d)\n", ret);

	return ret;
}
}


static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume);
static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume);
+4 −2
Original line number Original line Diff line number Diff line
@@ -514,7 +514,8 @@ static int mcfqspi_resume(struct device *dev)
#ifdef CONFIG_PM_RUNTIME
#ifdef CONFIG_PM_RUNTIME
static int mcfqspi_runtime_suspend(struct device *dev)
static int mcfqspi_runtime_suspend(struct device *dev)
{
{
	struct mcfqspi *mcfqspi = dev_get_drvdata(dev);
	struct spi_master *master = dev_get_drvdata(dev);
	struct mcfqspi *mcfqspi = spi_master_get_devdata(master);


	clk_disable(mcfqspi->clk);
	clk_disable(mcfqspi->clk);


@@ -523,7 +524,8 @@ static int mcfqspi_runtime_suspend(struct device *dev)


static int mcfqspi_runtime_resume(struct device *dev)
static int mcfqspi_runtime_resume(struct device *dev)
{
{
	struct mcfqspi *mcfqspi = dev_get_drvdata(dev);
	struct spi_master *master = dev_get_drvdata(dev);
	struct mcfqspi *mcfqspi = spi_master_get_devdata(master);


	clk_enable(mcfqspi->clk);
	clk_enable(mcfqspi->clk);


+3 −3
Original line number Original line Diff line number Diff line
@@ -420,7 +420,6 @@ static int dspi_suspend(struct device *dev)


static int dspi_resume(struct device *dev)
static int dspi_resume(struct device *dev)
{
{

	struct spi_master *master = dev_get_drvdata(dev);
	struct spi_master *master = dev_get_drvdata(dev);
	struct fsl_dspi *dspi = spi_master_get_devdata(master);
	struct fsl_dspi *dspi = spi_master_get_devdata(master);


@@ -504,7 +503,7 @@ static int dspi_probe(struct platform_device *pdev)
	clk_prepare_enable(dspi->clk);
	clk_prepare_enable(dspi->clk);


	init_waitqueue_head(&dspi->waitq);
	init_waitqueue_head(&dspi->waitq);
	platform_set_drvdata(pdev, dspi);
	platform_set_drvdata(pdev, master);


	ret = spi_bitbang_start(&dspi->bitbang);
	ret = spi_bitbang_start(&dspi->bitbang);
	if (ret != 0) {
	if (ret != 0) {
@@ -525,7 +524,8 @@ static int dspi_probe(struct platform_device *pdev)


static int dspi_remove(struct platform_device *pdev)
static int dspi_remove(struct platform_device *pdev)
{
{
	struct fsl_dspi *dspi = platform_get_drvdata(pdev);
	struct spi_master *master = platform_get_drvdata(pdev);
	struct fsl_dspi *dspi = spi_master_get_devdata(master);


	/* Disconnect from the SPI framework */
	/* Disconnect from the SPI framework */
	spi_bitbang_stop(&dspi->bitbang);
	spi_bitbang_stop(&dspi->bitbang);
+2 −2
Original line number Original line Diff line number Diff line
@@ -948,8 +948,8 @@ static int spi_imx_remove(struct platform_device *pdev)
	spi_bitbang_stop(&spi_imx->bitbang);
	spi_bitbang_stop(&spi_imx->bitbang);


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


	return 0;
	return 0;
Loading