Merge remote-tracking branches 'spi/fix/bcm2835', 'spi/fix/bcm63xx', 'spi/fix/mpc512x-psc', 'spi/fix/mxs', 'spi/fix/pxa2xx', 'spi/fix/qspi', 'spi/fix/rspi' and 'spi/fix/txx9' into spi-linus
This commit is contained in:
parent
b8aba7611b
e0b35b89d8
ec3252687a
a4469a429f
e322ce9365
c50325f7bc
cbcabb7a30
53063ec6e2
b38f87ec50
commit
c18158f1fd
@ -377,7 +377,7 @@ out_master_put:
|
|||||||
|
|
||||||
static int bcm2835_spi_remove(struct platform_device *pdev)
|
static int bcm2835_spi_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct spi_master *master = spi_master_get(platform_get_drvdata(pdev));
|
struct spi_master *master = platform_get_drvdata(pdev);
|
||||||
struct bcm2835_spi *bs = spi_master_get_devdata(master);
|
struct bcm2835_spi *bs = spi_master_get_devdata(master);
|
||||||
|
|
||||||
free_irq(bs->irq, master);
|
free_irq(bs->irq, master);
|
||||||
|
@ -435,7 +435,7 @@ out:
|
|||||||
|
|
||||||
static int bcm63xx_spi_remove(struct platform_device *pdev)
|
static int bcm63xx_spi_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct spi_master *master = spi_master_get(platform_get_drvdata(pdev));
|
struct spi_master *master = platform_get_drvdata(pdev);
|
||||||
struct bcm63xx_spi *bs = spi_master_get_devdata(master);
|
struct bcm63xx_spi *bs = spi_master_get_devdata(master);
|
||||||
|
|
||||||
/* reset spi block */
|
/* reset spi block */
|
||||||
|
@ -557,7 +557,7 @@ free_master:
|
|||||||
|
|
||||||
static int mpc512x_psc_spi_do_remove(struct device *dev)
|
static int mpc512x_psc_spi_do_remove(struct device *dev)
|
||||||
{
|
{
|
||||||
struct spi_master *master = spi_master_get(dev_get_drvdata(dev));
|
struct spi_master *master = dev_get_drvdata(dev);
|
||||||
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
|
struct mpc512x_psc_spi *mps = spi_master_get_devdata(master);
|
||||||
|
|
||||||
clk_disable_unprepare(mps->clk_mclk);
|
clk_disable_unprepare(mps->clk_mclk);
|
||||||
|
@ -565,7 +565,7 @@ static int mxs_spi_remove(struct platform_device *pdev)
|
|||||||
struct mxs_spi *spi;
|
struct mxs_spi *spi;
|
||||||
struct mxs_ssp *ssp;
|
struct mxs_ssp *ssp;
|
||||||
|
|
||||||
master = spi_master_get(platform_get_drvdata(pdev));
|
master = platform_get_drvdata(pdev);
|
||||||
spi = spi_master_get_devdata(master);
|
spi = spi_master_get_devdata(master);
|
||||||
ssp = &spi->ssp;
|
ssp = &spi->ssp;
|
||||||
|
|
||||||
|
@ -1073,6 +1073,8 @@ pxa2xx_spi_acpi_get_pdata(struct platform_device *pdev)
|
|||||||
static struct acpi_device_id pxa2xx_spi_acpi_match[] = {
|
static struct acpi_device_id pxa2xx_spi_acpi_match[] = {
|
||||||
{ "INT33C0", 0 },
|
{ "INT33C0", 0 },
|
||||||
{ "INT33C1", 0 },
|
{ "INT33C1", 0 },
|
||||||
|
{ "INT3430", 0 },
|
||||||
|
{ "INT3431", 0 },
|
||||||
{ "80860F0E", 0 },
|
{ "80860F0E", 0 },
|
||||||
{ },
|
{ },
|
||||||
};
|
};
|
||||||
@ -1291,6 +1293,9 @@ static int pxa2xx_spi_resume(struct device *dev)
|
|||||||
/* Enable the SSP clock */
|
/* Enable the SSP clock */
|
||||||
clk_prepare_enable(ssp->clk);
|
clk_prepare_enable(ssp->clk);
|
||||||
|
|
||||||
|
/* Restore LPSS private register bits */
|
||||||
|
lpss_ssp_setup(drv_data);
|
||||||
|
|
||||||
/* Start the queue running */
|
/* Start the queue running */
|
||||||
status = spi_master_resume(drv_data->master);
|
status = spi_master_resume(drv_data->master);
|
||||||
if (status != 0) {
|
if (status != 0) {
|
||||||
|
@ -885,14 +885,13 @@ static void rspi_release_dma(struct rspi_data *rspi)
|
|||||||
|
|
||||||
static int rspi_remove(struct platform_device *pdev)
|
static int rspi_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct rspi_data *rspi = spi_master_get(platform_get_drvdata(pdev));
|
struct rspi_data *rspi = platform_get_drvdata(pdev);
|
||||||
|
|
||||||
spi_unregister_master(rspi->master);
|
spi_unregister_master(rspi->master);
|
||||||
rspi_release_dma(rspi);
|
rspi_release_dma(rspi);
|
||||||
free_irq(platform_get_irq(pdev, 0), rspi);
|
free_irq(platform_get_irq(pdev, 0), rspi);
|
||||||
clk_put(rspi->clk);
|
clk_put(rspi->clk);
|
||||||
iounmap(rspi->addr);
|
iounmap(rspi->addr);
|
||||||
spi_master_put(rspi->master);
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -161,7 +161,7 @@ static int ti_qspi_setup(struct spi_device *spi)
|
|||||||
qspi->spi_max_frequency, clk_div);
|
qspi->spi_max_frequency, clk_div);
|
||||||
|
|
||||||
ret = pm_runtime_get_sync(qspi->dev);
|
ret = pm_runtime_get_sync(qspi->dev);
|
||||||
if (ret) {
|
if (ret < 0) {
|
||||||
dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
|
dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -459,11 +459,10 @@ static int ti_qspi_probe(struct platform_device *pdev)
|
|||||||
if (!of_property_read_u32(np, "num-cs", &num_cs))
|
if (!of_property_read_u32(np, "num-cs", &num_cs))
|
||||||
master->num_chipselect = num_cs;
|
master->num_chipselect = num_cs;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, master);
|
|
||||||
|
|
||||||
qspi = spi_master_get_devdata(master);
|
qspi = spi_master_get_devdata(master);
|
||||||
qspi->master = master;
|
qspi->master = master;
|
||||||
qspi->dev = &pdev->dev;
|
qspi->dev = &pdev->dev;
|
||||||
|
platform_set_drvdata(pdev, qspi);
|
||||||
|
|
||||||
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
r = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||||
|
|
||||||
@ -517,10 +516,26 @@ free_master:
|
|||||||
|
|
||||||
static int ti_qspi_remove(struct platform_device *pdev)
|
static int ti_qspi_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct ti_qspi *qspi = platform_get_drvdata(pdev);
|
struct spi_master *master;
|
||||||
|
struct ti_qspi *qspi;
|
||||||
|
int ret;
|
||||||
|
|
||||||
|
master = platform_get_drvdata(pdev);
|
||||||
|
qspi = spi_master_get_devdata(master);
|
||||||
|
|
||||||
|
ret = pm_runtime_get_sync(qspi->dev);
|
||||||
|
if (ret < 0) {
|
||||||
|
dev_err(qspi->dev, "pm_runtime_get_sync() failed\n");
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
ti_qspi_write(qspi, QSPI_WC_INT_DISABLE, QSPI_INTR_ENABLE_CLEAR_REG);
|
ti_qspi_write(qspi, QSPI_WC_INT_DISABLE, QSPI_INTR_ENABLE_CLEAR_REG);
|
||||||
|
|
||||||
|
pm_runtime_put(qspi->dev);
|
||||||
|
pm_runtime_disable(&pdev->dev);
|
||||||
|
|
||||||
|
spi_unregister_master(master);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -425,7 +425,7 @@ exit:
|
|||||||
|
|
||||||
static int txx9spi_remove(struct platform_device *dev)
|
static int txx9spi_remove(struct platform_device *dev)
|
||||||
{
|
{
|
||||||
struct spi_master *master = spi_master_get(platform_get_drvdata(dev));
|
struct spi_master *master = platform_get_drvdata(dev);
|
||||||
struct txx9spi *c = spi_master_get_devdata(master);
|
struct txx9spi *c = spi_master_get_devdata(master);
|
||||||
|
|
||||||
destroy_workqueue(c->workqueue);
|
destroy_workqueue(c->workqueue);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user