spi: Fixes for v5.10
A small collection of driver specific fixes that have come in since the merge window, nothing too major here but all good to ahve. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAl+kBdoACgkQJNaLcl1U h9D5HAf/Znx8CshbXBUXAOlO2FnRBN6OsJk7jRoyL4+r+z76nO689CjXB1a2vbND adKj2ifYthylkt+kLiiG2H48hHmb6Yceqz9fXz7++IU9UF1ozXhwebbsj03pd1jV /UHREWeLZRf5x0AkQcNusXbcWNc4cuiFTAHigUS/+NJs3rzX3LEaQ8EazymIuAzU zS0EY6+yYpOctzdJ624IaHtBbrF7z8io83HR458Br+jArRrbmeWB9GbKaqgp2yLu t37mapV9OZd9er/wdJ+dNY5CAzQ8YYpVdth+6aCwQKA0ZuKTG5Y6+QD75EsTlHuR d8aMzf4/GCszYWqLu6hayCa6iD4SAQ== =4bPG -----END PGP SIGNATURE----- Merge tag 'spi-fix-v5.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi Pull spi fixes from Mark Brown: "A small collection of driver specific fixes that have come in since the merge window, nothing too major here but all good to have" * tag 'spi-fix-v5.10-rc2' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: fsl-dspi: fix wrong pointer in suspend/resume spi: bcm2835: fix gpio cs level inversion spi: imx: fix runtime pm support for !CONFIG_PM
This commit is contained in:
Коммит
cf26c71487
|
@ -1259,18 +1259,6 @@ static int bcm2835_spi_setup(struct spi_device *spi)
|
|||
if (!chip)
|
||||
return 0;
|
||||
|
||||
/*
|
||||
* Retrieve the corresponding GPIO line used for CS.
|
||||
* The inversion semantics will be handled by the GPIO core
|
||||
* code, so we pass GPIOD_OUT_LOW for "unasserted" and
|
||||
* the correct flag for inversion semantics. The SPI_CS_HIGH
|
||||
* on spi->mode cannot be checked for polarity in this case
|
||||
* as the flag use_gpio_descriptors enforces SPI_CS_HIGH.
|
||||
*/
|
||||
if (of_property_read_bool(spi->dev.of_node, "spi-cs-high"))
|
||||
lflags = GPIO_ACTIVE_HIGH;
|
||||
else
|
||||
lflags = GPIO_ACTIVE_LOW;
|
||||
spi->cs_gpiod = gpiochip_request_own_desc(chip, 8 - spi->chip_select,
|
||||
DRV_NAME,
|
||||
lflags,
|
||||
|
|
|
@ -1080,12 +1080,11 @@ MODULE_DEVICE_TABLE(of, fsl_dspi_dt_ids);
|
|||
#ifdef CONFIG_PM_SLEEP
|
||||
static int dspi_suspend(struct device *dev)
|
||||
{
|
||||
struct spi_controller *ctlr = dev_get_drvdata(dev);
|
||||
struct fsl_dspi *dspi = spi_controller_get_devdata(ctlr);
|
||||
struct fsl_dspi *dspi = dev_get_drvdata(dev);
|
||||
|
||||
if (dspi->irq)
|
||||
disable_irq(dspi->irq);
|
||||
spi_controller_suspend(ctlr);
|
||||
spi_controller_suspend(dspi->ctlr);
|
||||
clk_disable_unprepare(dspi->clk);
|
||||
|
||||
pinctrl_pm_select_sleep_state(dev);
|
||||
|
@ -1095,8 +1094,7 @@ static int dspi_suspend(struct device *dev)
|
|||
|
||||
static int dspi_resume(struct device *dev)
|
||||
{
|
||||
struct spi_controller *ctlr = dev_get_drvdata(dev);
|
||||
struct fsl_dspi *dspi = spi_controller_get_devdata(ctlr);
|
||||
struct fsl_dspi *dspi = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
pinctrl_pm_select_default_state(dev);
|
||||
|
@ -1104,7 +1102,7 @@ static int dspi_resume(struct device *dev)
|
|||
ret = clk_prepare_enable(dspi->clk);
|
||||
if (ret)
|
||||
return ret;
|
||||
spi_controller_resume(ctlr);
|
||||
spi_controller_resume(dspi->ctlr);
|
||||
if (dspi->irq)
|
||||
enable_irq(dspi->irq);
|
||||
|
||||
|
|
|
@ -1676,15 +1676,18 @@ static int spi_imx_probe(struct platform_device *pdev)
|
|||
goto out_master_put;
|
||||
}
|
||||
|
||||
pm_runtime_enable(spi_imx->dev);
|
||||
ret = clk_prepare_enable(spi_imx->clk_per);
|
||||
if (ret)
|
||||
goto out_master_put;
|
||||
|
||||
ret = clk_prepare_enable(spi_imx->clk_ipg);
|
||||
if (ret)
|
||||
goto out_put_per;
|
||||
|
||||
pm_runtime_set_autosuspend_delay(spi_imx->dev, MXC_RPM_TIMEOUT);
|
||||
pm_runtime_use_autosuspend(spi_imx->dev);
|
||||
|
||||
ret = pm_runtime_get_sync(spi_imx->dev);
|
||||
if (ret < 0) {
|
||||
dev_err(spi_imx->dev, "failed to enable clock\n");
|
||||
goto out_runtime_pm_put;
|
||||
}
|
||||
pm_runtime_set_active(spi_imx->dev);
|
||||
pm_runtime_enable(spi_imx->dev);
|
||||
|
||||
spi_imx->spi_clk = clk_get_rate(spi_imx->clk_per);
|
||||
/*
|
||||
|
@ -1722,8 +1725,12 @@ out_bitbang_start:
|
|||
spi_imx_sdma_exit(spi_imx);
|
||||
out_runtime_pm_put:
|
||||
pm_runtime_dont_use_autosuspend(spi_imx->dev);
|
||||
pm_runtime_put_sync(spi_imx->dev);
|
||||
pm_runtime_set_suspended(&pdev->dev);
|
||||
pm_runtime_disable(spi_imx->dev);
|
||||
|
||||
clk_disable_unprepare(spi_imx->clk_ipg);
|
||||
out_put_per:
|
||||
clk_disable_unprepare(spi_imx->clk_per);
|
||||
out_master_put:
|
||||
spi_master_put(master);
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче