mirror of https://gitee.com/openkylin/linux.git
spi: Fixes for v5.2
A small set of fixes here, one core fix for error handling when we fail to set up the hardware before initiating a transfer and another one reverting a change in the core which broke Raspberry Pi in common use cases as part of some optimization work. There's also a couple of driver specific fixes. -----BEGIN PGP SIGNATURE----- iQFHBAABCgAxFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAlz+aEETHGJyb29uaWVA a2VybmVsLm9yZwAKCRAk1otyXVSH0EdhB/9pSAaTxpo2LmLY11WDqCll5E5wwV0n twjqcJkCpik2gp08xf/l1C563XvaAEUmidMGjpSGNhbd+UFUY4jBksDZd8t+phNA lOFL03sWxUGd46SvsYCLByzIu1dp8LKQ7JkDvb+OChDMai9YyeHwF4Pl7L7EHI6P yB3m84o3X82NnVxZJZAkim27Bn1LMcmKvFJxiLPyzycdI41+Vzf+Hx0dSzTKHKXb wbh3tsSok1l3NHOW0xXCf8pG5KtBeISo7RxQE2XuVkxB3LcEbbbG+Q1NvBHQLmty VtSkLUGc3+mUdaaIh2CW3AkECRtkPG6qngBns0NScXca4xQ9/J3X4zlg =ktil -----END PGP SIGNATURE----- Merge tag 'spi-fix-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi Pull spi fixes from Mark Brown: "A small set of fixes here. One core fix for error handling when we fail to set up the hardware before initiating a transfer and another one reverting a change in the core which broke Raspberry Pi in common use cases as part of some optimization work. There's also a couple of driver specific fixes" * tag 'spi-fix-v5.2-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: abort spi_sync if failed to prepare_transfer_hardware spi: spi-fsl-spi: call spi_finalize_current_message() at the end spi: bitbang: Fix NULL pointer dereference in spi_unregister_master spi: Fix Raspberry Pi breakage
This commit is contained in:
commit
e59bf4282c
|
@ -406,7 +406,7 @@ int spi_bitbang_start(struct spi_bitbang *bitbang)
|
|||
if (ret)
|
||||
spi_master_put(master);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(spi_bitbang_start);
|
||||
|
||||
|
|
|
@ -428,7 +428,6 @@ static int fsl_spi_do_one_msg(struct spi_master *master,
|
|||
}
|
||||
|
||||
m->status = status;
|
||||
spi_finalize_current_message(master);
|
||||
|
||||
if (status || !cs_change) {
|
||||
ndelay(nsecs);
|
||||
|
@ -436,6 +435,7 @@ static int fsl_spi_do_one_msg(struct spi_master *master,
|
|||
}
|
||||
|
||||
fsl_spi_setup_transfer(spi, NULL);
|
||||
spi_finalize_current_message(master);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1181,10 +1181,10 @@ static int spi_transfer_one_message(struct spi_controller *ctlr,
|
|||
if (msg->status && ctlr->handle_err)
|
||||
ctlr->handle_err(ctlr, msg);
|
||||
|
||||
spi_finalize_current_message(ctlr);
|
||||
|
||||
spi_res_release(ctlr, msg);
|
||||
|
||||
spi_finalize_current_message(ctlr);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -1307,10 +1307,15 @@ static void __spi_pump_messages(struct spi_controller *ctlr, bool in_kthread)
|
|||
ret = ctlr->prepare_transfer_hardware(ctlr);
|
||||
if (ret) {
|
||||
dev_err(&ctlr->dev,
|
||||
"failed to prepare transfer hardware\n");
|
||||
"failed to prepare transfer hardware: %d\n",
|
||||
ret);
|
||||
|
||||
if (ctlr->auto_runtime_pm)
|
||||
pm_runtime_put(ctlr->dev.parent);
|
||||
|
||||
ctlr->cur_msg->status = ret;
|
||||
spi_finalize_current_message(ctlr);
|
||||
|
||||
mutex_unlock(&ctlr->io_mutex);
|
||||
return;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue