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

Commit 2ef2e60d authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branch 'spi/topic/atmel' into spi-next

parents c55b869a 543c954d
Loading
Loading
Loading
Loading
+25 −25
Original line number Diff line number Diff line
@@ -1401,8 +1401,8 @@ static int atmel_spi_transfer(struct spi_device *spi, struct spi_message *msg)
			asd = spi->controller_state;
			bits = (asd->csr >> 4) & 0xf;
			if (bits != xfer->bits_per_word - 8) {
				dev_dbg(&spi->dev, "you can't yet change "
					 "bits_per_word in transfers\n");
				dev_dbg(&spi->dev,
					"you can't yet change bits_per_word in transfers\n");
				return -ENOPROTOOPT;
			}
		}
@@ -1516,7 +1516,7 @@ static int atmel_spi_probe(struct platform_device *pdev)

	/* setup spi core then atmel-specific driver state */
	ret = -ENOMEM;
	master = spi_alloc_master(&pdev->dev, sizeof *as);
	master = spi_alloc_master(&pdev->dev, sizeof(*as));
	if (!master)
		goto out_free;

@@ -1546,9 +1546,11 @@ static int atmel_spi_probe(struct platform_device *pdev)
	INIT_LIST_HEAD(&as->queue);

	as->pdev = pdev;
	as->regs = ioremap(regs->start, resource_size(regs));
	if (!as->regs)
	as->regs = devm_ioremap_resource(&pdev->dev, regs);
	if (IS_ERR(as->regs)) {
		ret = PTR_ERR(as->regs);
		goto out_free_buffer;
	}
	as->phybase = regs->start;
	as->irq = irq;
	as->clk = clk;
@@ -1617,7 +1619,6 @@ static int atmel_spi_probe(struct platform_device *pdev)
out_free_irq:
	free_irq(irq, master);
out_unmap_regs:
	iounmap(as->regs);
out_free_buffer:
	if (!as->use_pdc)
		tasklet_kill(&as->tasklet);
@@ -1669,36 +1670,36 @@ static int atmel_spi_remove(struct platform_device *pdev)
	clk_disable_unprepare(as->clk);
	clk_put(as->clk);
	free_irq(as->irq, master);
	iounmap(as->regs);

	spi_unregister_master(master);

	return 0;
}

#ifdef	CONFIG_PM

static int atmel_spi_suspend(struct platform_device *pdev, pm_message_t mesg)
#ifdef CONFIG_PM_SLEEP
static int atmel_spi_suspend(struct device *dev)
{
	struct spi_master	*master = platform_get_drvdata(pdev);
	struct spi_master	*master = dev_get_drvdata(dev);
	struct atmel_spi	*as = spi_master_get_devdata(master);

	clk_disable_unprepare(as->clk);
	return 0;
}

static int atmel_spi_resume(struct platform_device *pdev)
static int atmel_spi_resume(struct device *dev)
{
	struct spi_master	*master = platform_get_drvdata(pdev);
	struct spi_master	*master = dev_get_drvdata(dev);
	struct atmel_spi	*as = spi_master_get_devdata(master);

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

static SIMPLE_DEV_PM_OPS(atmel_spi_pm_ops, atmel_spi_suspend, atmel_spi_resume);

#define ATMEL_SPI_PM_OPS	(&atmel_spi_pm_ops)
#else
#define	atmel_spi_suspend	NULL
#define	atmel_spi_resume	NULL
#define ATMEL_SPI_PM_OPS	NULL
#endif

#if defined(CONFIG_OF)
@@ -1714,10 +1715,9 @@ static struct platform_driver atmel_spi_driver = {
	.driver		= {
		.name	= "atmel_spi",
		.owner	= THIS_MODULE,
		.pm	= ATMEL_SPI_PM_OPS,
		.of_match_table	= of_match_ptr(atmel_spi_dt_ids),
	},
	.suspend	= atmel_spi_suspend,
	.resume		= atmel_spi_resume,
	.probe		= atmel_spi_probe,
	.remove		= atmel_spi_remove,
};
+1 −1
Original line number Diff line number Diff line
@@ -592,7 +592,7 @@ bfin_sport_spi_setup(struct spi_device *spi)
			 */
			if (chip_info->ctl_reg || chip_info->enable_dma) {
				ret = -EINVAL;
				dev_err(&spi->dev, "don't set ctl_reg/enable_dma fields");
				dev_err(&spi->dev, "don't set ctl_reg/enable_dma fields\n");
				goto error;
			}
			chip->cs_chg_udelay = chip_info->cs_chg_udelay;
+11 −10
Original line number Diff line number Diff line
@@ -524,7 +524,7 @@ static irqreturn_t bfin_spi_dma_irq_handler(int irq, void *dev_id)
	timeout = jiffies + HZ;
	while (!(bfin_read(&drv_data->regs->stat) & BIT_STAT_SPIF))
		if (!time_before(jiffies, timeout)) {
			dev_warn(&drv_data->pdev->dev, "timeout waiting for SPIF");
			dev_warn(&drv_data->pdev->dev, "timeout waiting for SPIF\n");
			break;
		} else
			cpu_relax();
@@ -913,8 +913,9 @@ static void bfin_spi_pump_messages(struct work_struct *work)
	drv_data->cur_transfer = list_entry(drv_data->cur_msg->transfers.next,
					    struct spi_transfer, transfer_list);

	dev_dbg(&drv_data->pdev->dev, "got a message to pump, "
		"state is set to: baud %d, flag 0x%x, ctl 0x%x\n",
	dev_dbg(&drv_data->pdev->dev,
		"got a message to pump, state is set to: baud "
		"%d, flag 0x%x, ctl 0x%x\n",
		drv_data->cur_chip->baud, drv_data->cur_chip->flag,
		drv_data->cur_chip->ctl_reg);

@@ -1013,8 +1014,8 @@ static int bfin_spi_setup(struct spi_device *spi)
		 * but let's assume (for now) they do.
		 */
		if (chip_info->ctl_reg & ~bfin_ctl_reg) {
			dev_err(&spi->dev, "do not set bits in ctl_reg "
				"that the SPI framework manages\n");
			dev_err(&spi->dev,
				"do not set bits in ctl_reg that the SPI framework manages\n");
			goto error;
		}
		chip->enable_dma = chip_info->enable_dma != 0
@@ -1050,17 +1051,17 @@ static int bfin_spi_setup(struct spi_device *spi)
	chip->chip_select_num = spi->chip_select;
	if (chip->chip_select_num < MAX_CTRL_CS) {
		if (!(spi->mode & SPI_CPHA))
			dev_warn(&spi->dev, "Warning: SPI CPHA not set:"
				" Slave Select not under software control!\n"
				" See Documentation/blackfin/bfin-spi-notes.txt");
			dev_warn(&spi->dev,
				"Warning: SPI CPHA not set: Slave Select not under software control!\n"
				"See Documentation/blackfin/bfin-spi-notes.txt\n");

		chip->flag = (1 << spi->chip_select) << 8;
	} else
		chip->cs_gpio = chip->chip_select_num - MAX_CTRL_CS;

	if (chip->enable_dma && chip->pio_interrupt) {
		dev_err(&spi->dev, "enable_dma is set, "
				"do not set pio_interrupt\n");
		dev_err(&spi->dev,
			"enable_dma is set, do not set pio_interrupt\n");
		goto error;
	}
	/*
+2 −2
Original line number Diff line number Diff line
@@ -870,8 +870,8 @@ void dw_spi_remove_host(struct dw_spi *dws)
	/* Remove the queue */
	status = destroy_queue(dws);
	if (status != 0)
		dev_err(&dws->master->dev, "dw_spi_remove: workqueue will not "
			"complete, message memory not freed\n");
		dev_err(&dws->master->dev,
			"dw_spi_remove: workqueue will not complete, message memory not freed\n");

	if (dws->dma_ops && dws->dma_ops->dma_exit)
		dws->dma_ops->dma_exit(dws);
+2 −2
Original line number Diff line number Diff line
@@ -330,7 +330,7 @@ static int ep93xx_spi_chip_setup(const struct ep93xx_spi *espi,

	dev_dbg(&espi->pdev->dev, "setup: mode %d, cpsr %d, scr %d, dss %d\n",
		chip->spi->mode, div_cpsr, div_scr, dss);
	dev_dbg(&espi->pdev->dev, "setup: cr0 %#x", cr0);
	dev_dbg(&espi->pdev->dev, "setup: cr0 %#x\n", cr0);

	ep93xx_spi_write_u8(espi, SSPCPSR, div_cpsr);
	ep93xx_spi_write_u16(espi, SSPCR0, cr0);
@@ -509,7 +509,7 @@ ep93xx_spi_dma_prepare(struct ep93xx_spi *espi, enum dma_transfer_direction dir)
	}

	if (WARN_ON(len)) {
		dev_warn(&espi->pdev->dev, "len = %zu expected 0!", len);
		dev_warn(&espi->pdev->dev, "len = %zu expected 0!\n", len);
		return ERR_PTR(-EINVAL);
	}

Loading