diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-31 14:54:11 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2016-10-31 14:54:11 -0400 |
commit | 0c183d92b20b5c84ca655b45ef57b3318b83eb9e (patch) | |
tree | 69ea493c665968b4cca9e43d3c7696b6f3242254 /drivers/spi/spi.c | |
parent | 3f7b55b6b26dc89f58ede1ef5d0cec90816ccac6 (diff) | |
parent | 2fbef66e1407d1b13d181f7f5614a5897b452188 (diff) |
Merge tag 'spi-fix-v4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi fixes from Mark Brown: "A few small fixes for SPI, one core fix
that only applies in cases where we're handling DT overlays and a
couple of driver specific fixes:
- Fix handling of error cases when instantiating DT overlays so we
don't end up just ignoring devices that encountered an error during
instantiation.
- Avoid reading uninitialized data when handing spurious interrupts
in the espi driver.
- A driver specific fix for the dspi driver to fix a bad interaction
with u-boot"
* tag 'spi-fix-v4.9-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: dspi: clear SPI_SR before enable interrupt
spi: fsl-espi: avoid processing uninitalized data on error
spi: mark device nodes only in case of successful instantiation
Diffstat (limited to 'drivers/spi/spi.c')
-rw-r--r-- | drivers/spi/spi.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 5787b723b593..838783c3fed0 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -1618,9 +1618,11 @@ static void of_register_spi_devices(struct spi_master *master) | |||
1618 | if (of_node_test_and_set_flag(nc, OF_POPULATED)) | 1618 | if (of_node_test_and_set_flag(nc, OF_POPULATED)) |
1619 | continue; | 1619 | continue; |
1620 | spi = of_register_spi_device(master, nc); | 1620 | spi = of_register_spi_device(master, nc); |
1621 | if (IS_ERR(spi)) | 1621 | if (IS_ERR(spi)) { |
1622 | dev_warn(&master->dev, "Failed to create SPI device for %s\n", | 1622 | dev_warn(&master->dev, "Failed to create SPI device for %s\n", |
1623 | nc->full_name); | 1623 | nc->full_name); |
1624 | of_node_clear_flag(nc, OF_POPULATED); | ||
1625 | } | ||
1624 | } | 1626 | } |
1625 | } | 1627 | } |
1626 | #else | 1628 | #else |
@@ -3131,6 +3133,7 @@ static int of_spi_notify(struct notifier_block *nb, unsigned long action, | |||
3131 | if (IS_ERR(spi)) { | 3133 | if (IS_ERR(spi)) { |
3132 | pr_err("%s: failed to create for '%s'\n", | 3134 | pr_err("%s: failed to create for '%s'\n", |
3133 | __func__, rd->dn->full_name); | 3135 | __func__, rd->dn->full_name); |
3136 | of_node_clear_flag(rd->dn, OF_POPULATED); | ||
3134 | return notifier_from_errno(PTR_ERR(spi)); | 3137 | return notifier_from_errno(PTR_ERR(spi)); |
3135 | } | 3138 | } |
3136 | break; | 3139 | break; |