diff options
-rw-r--r-- | MAINTAINERS | 12 | ||||
-rw-r--r-- | drivers/spi/spi-img-spfi.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-mt65xx.c | 1 | ||||
-rw-r--r-- | drivers/spi/spi-pxa2xx-pci.c | 1 | ||||
-rw-r--r-- | drivers/spi/spi-qup.c | 1 | ||||
-rw-r--r-- | drivers/spi/spi-sh-msiof.c | 3 | ||||
-rw-r--r-- | drivers/spi/spi.c | 10 |
7 files changed, 23 insertions, 7 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index db814a89599c..1fbd77d2de77 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -1644,7 +1644,6 @@ F: drivers/*/*s3c64xx* | |||
1644 | F: drivers/*/*s5pv210* | 1644 | F: drivers/*/*s5pv210* |
1645 | F: drivers/memory/samsung/* | 1645 | F: drivers/memory/samsung/* |
1646 | F: drivers/soc/samsung/* | 1646 | F: drivers/soc/samsung/* |
1647 | F: drivers/spi/spi-s3c* | ||
1648 | F: Documentation/arm/Samsung/ | 1647 | F: Documentation/arm/Samsung/ |
1649 | F: Documentation/devicetree/bindings/arm/samsung/ | 1648 | F: Documentation/devicetree/bindings/arm/samsung/ |
1650 | F: Documentation/devicetree/bindings/sram/samsung-sram.txt | 1649 | F: Documentation/devicetree/bindings/sram/samsung-sram.txt |
@@ -10254,6 +10253,17 @@ S: Supported | |||
10254 | L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) | 10253 | L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) |
10255 | F: drivers/clk/samsung/ | 10254 | F: drivers/clk/samsung/ |
10256 | 10255 | ||
10256 | SAMSUNG SPI DRIVERS | ||
10257 | M: Kukjin Kim <kgene@kernel.org> | ||
10258 | M: Krzysztof Kozlowski <krzk@kernel.org> | ||
10259 | M: Andi Shyti <andi.shyti@samsung.com> | ||
10260 | L: linux-spi@vger.kernel.org | ||
10261 | L: linux-samsung-soc@vger.kernel.org (moderated for non-subscribers) | ||
10262 | S: Maintained | ||
10263 | F: Documentation/devicetree/bindings/spi/spi-samsung.txt | ||
10264 | F: drivers/spi/spi-s3c* | ||
10265 | F: include/linux/platform_data/spi-s3c64xx.h | ||
10266 | |||
10257 | SAMSUNG SXGBE DRIVERS | 10267 | SAMSUNG SXGBE DRIVERS |
10258 | M: Byungho An <bh74.an@samsung.com> | 10268 | M: Byungho An <bh74.an@samsung.com> |
10259 | M: Girish K S <ks.giri@samsung.com> | 10269 | M: Girish K S <ks.giri@samsung.com> |
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c index 823cbc92d1e7..7a37090dabbe 100644 --- a/drivers/spi/spi-img-spfi.c +++ b/drivers/spi/spi-img-spfi.c | |||
@@ -720,8 +720,6 @@ static int img_spfi_remove(struct platform_device *pdev) | |||
720 | clk_disable_unprepare(spfi->sys_clk); | 720 | clk_disable_unprepare(spfi->sys_clk); |
721 | } | 721 | } |
722 | 722 | ||
723 | spi_master_put(master); | ||
724 | |||
725 | return 0; | 723 | return 0; |
726 | } | 724 | } |
727 | 725 | ||
diff --git a/drivers/spi/spi-mt65xx.c b/drivers/spi/spi-mt65xx.c index 0be89e052428..899d7a8f0889 100644 --- a/drivers/spi/spi-mt65xx.c +++ b/drivers/spi/spi-mt65xx.c | |||
@@ -685,7 +685,6 @@ static int mtk_spi_remove(struct platform_device *pdev) | |||
685 | pm_runtime_disable(&pdev->dev); | 685 | pm_runtime_disable(&pdev->dev); |
686 | 686 | ||
687 | mtk_spi_reset(mdata); | 687 | mtk_spi_reset(mdata); |
688 | spi_master_put(master); | ||
689 | 688 | ||
690 | return 0; | 689 | return 0; |
691 | } | 690 | } |
diff --git a/drivers/spi/spi-pxa2xx-pci.c b/drivers/spi/spi-pxa2xx-pci.c index f3df522db93b..58d2d48e16a5 100644 --- a/drivers/spi/spi-pxa2xx-pci.c +++ b/drivers/spi/spi-pxa2xx-pci.c | |||
@@ -214,6 +214,7 @@ static int pxa2xx_spi_pci_probe(struct pci_dev *dev, | |||
214 | return PTR_ERR(ssp->clk); | 214 | return PTR_ERR(ssp->clk); |
215 | 215 | ||
216 | memset(&pi, 0, sizeof(pi)); | 216 | memset(&pi, 0, sizeof(pi)); |
217 | pi.fwnode = dev->dev.fwnode; | ||
217 | pi.parent = &dev->dev; | 218 | pi.parent = &dev->dev; |
218 | pi.name = "pxa2xx-spi"; | 219 | pi.name = "pxa2xx-spi"; |
219 | pi.id = ssp->port_id; | 220 | pi.id = ssp->port_id; |
diff --git a/drivers/spi/spi-qup.c b/drivers/spi/spi-qup.c index c338ef1136f6..7f1555621f8e 100644 --- a/drivers/spi/spi-qup.c +++ b/drivers/spi/spi-qup.c | |||
@@ -1030,7 +1030,6 @@ static int spi_qup_remove(struct platform_device *pdev) | |||
1030 | 1030 | ||
1031 | pm_runtime_put_noidle(&pdev->dev); | 1031 | pm_runtime_put_noidle(&pdev->dev); |
1032 | pm_runtime_disable(&pdev->dev); | 1032 | pm_runtime_disable(&pdev->dev); |
1033 | spi_master_put(master); | ||
1034 | 1033 | ||
1035 | return 0; | 1034 | return 0; |
1036 | } | 1035 | } |
diff --git a/drivers/spi/spi-sh-msiof.c b/drivers/spi/spi-sh-msiof.c index 0f83ad1d5a58..1de3a772eb7d 100644 --- a/drivers/spi/spi-sh-msiof.c +++ b/drivers/spi/spi-sh-msiof.c | |||
@@ -262,6 +262,9 @@ static void sh_msiof_spi_set_clk_regs(struct sh_msiof_spi_priv *p, | |||
262 | 262 | ||
263 | for (k = 0; k < ARRAY_SIZE(sh_msiof_spi_div_table); k++) { | 263 | for (k = 0; k < ARRAY_SIZE(sh_msiof_spi_div_table); k++) { |
264 | brps = DIV_ROUND_UP(div, sh_msiof_spi_div_table[k].div); | 264 | brps = DIV_ROUND_UP(div, sh_msiof_spi_div_table[k].div); |
265 | /* SCR_BRDV_DIV_1 is valid only if BRPS is x 1/1 or x 1/2 */ | ||
266 | if (sh_msiof_spi_div_table[k].div == 1 && brps > 2) | ||
267 | continue; | ||
265 | if (brps <= 32) /* max of brdv is 32 */ | 268 | if (brps <= 32) /* max of brdv is 32 */ |
266 | break; | 269 | break; |
267 | } | 270 | } |
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c index 51ad42fad567..200ca228d885 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c | |||
@@ -960,7 +960,7 @@ static int spi_transfer_one_message(struct spi_master *master, | |||
960 | struct spi_transfer *xfer; | 960 | struct spi_transfer *xfer; |
961 | bool keep_cs = false; | 961 | bool keep_cs = false; |
962 | int ret = 0; | 962 | int ret = 0; |
963 | unsigned long ms = 1; | 963 | unsigned long long ms = 1; |
964 | struct spi_statistics *statm = &master->statistics; | 964 | struct spi_statistics *statm = &master->statistics; |
965 | struct spi_statistics *stats = &msg->spi->statistics; | 965 | struct spi_statistics *stats = &msg->spi->statistics; |
966 | 966 | ||
@@ -991,9 +991,13 @@ static int spi_transfer_one_message(struct spi_master *master, | |||
991 | 991 | ||
992 | if (ret > 0) { | 992 | if (ret > 0) { |
993 | ret = 0; | 993 | ret = 0; |
994 | ms = xfer->len * 8 * 1000 / xfer->speed_hz; | 994 | ms = 8LL * 1000LL * xfer->len; |
995 | do_div(ms, xfer->speed_hz); | ||
995 | ms += ms + 100; /* some tolerance */ | 996 | ms += ms + 100; /* some tolerance */ |
996 | 997 | ||
998 | if (ms > UINT_MAX) | ||
999 | ms = UINT_MAX; | ||
1000 | |||
997 | ms = wait_for_completion_timeout(&master->xfer_completion, | 1001 | ms = wait_for_completion_timeout(&master->xfer_completion, |
998 | msecs_to_jiffies(ms)); | 1002 | msecs_to_jiffies(ms)); |
999 | } | 1003 | } |
@@ -1159,6 +1163,7 @@ static void __spi_pump_messages(struct spi_master *master, bool in_kthread) | |||
1159 | if (ret < 0) { | 1163 | if (ret < 0) { |
1160 | dev_err(&master->dev, "Failed to power device: %d\n", | 1164 | dev_err(&master->dev, "Failed to power device: %d\n", |
1161 | ret); | 1165 | ret); |
1166 | mutex_unlock(&master->io_mutex); | ||
1162 | return; | 1167 | return; |
1163 | } | 1168 | } |
1164 | } | 1169 | } |
@@ -1174,6 +1179,7 @@ static void __spi_pump_messages(struct spi_master *master, bool in_kthread) | |||
1174 | 1179 | ||
1175 | if (master->auto_runtime_pm) | 1180 | if (master->auto_runtime_pm) |
1176 | pm_runtime_put(master->dev.parent); | 1181 | pm_runtime_put(master->dev.parent); |
1182 | mutex_unlock(&master->io_mutex); | ||
1177 | return; | 1183 | return; |
1178 | } | 1184 | } |
1179 | } | 1185 | } |