aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2017-02-19 11:40:55 -0500
committerMark Brown <broonie@kernel.org>2017-02-19 11:40:55 -0500
commit42af2f5c52daec0c182af66984927ef64885bbcc (patch)
tree4ac2ceb6f29d7419ed4b32b3673102ee64895b6c
parente0afd0facfa921db8d5757709600a136d9cbba6c (diff)
parent8324147f38019865b29d03baf28412d2ec0bd828 (diff)
Merge remote-tracking branch 'spi/topic/core' into spi-next
-rw-r--r--drivers/spi/spi-fsl-spi.c17
-rw-r--r--drivers/spi/spi.c10
2 files changed, 16 insertions, 11 deletions
diff --git a/drivers/spi/spi-fsl-spi.c b/drivers/spi/spi-fsl-spi.c
index 8b290d9d7935..0fc3452652ae 100644
--- a/drivers/spi/spi-fsl-spi.c
+++ b/drivers/spi/spi-fsl-spi.c
@@ -267,10 +267,9 @@ static int fsl_spi_setup_transfer(struct spi_device *spi,
267 if ((mpc8xxx_spi->spibrg / hz) > 64) { 267 if ((mpc8xxx_spi->spibrg / hz) > 64) {
268 cs->hw_mode |= SPMODE_DIV16; 268 cs->hw_mode |= SPMODE_DIV16;
269 pm = (mpc8xxx_spi->spibrg - 1) / (hz * 64) + 1; 269 pm = (mpc8xxx_spi->spibrg - 1) / (hz * 64) + 1;
270 270 WARN_ONCE(pm > 16,
271 WARN_ONCE(pm > 16, "%s: Requested speed is too low: %d Hz. " 271 "%s: Requested speed is too low: %d Hz. Will use %d Hz instead.\n",
272 "Will use %d Hz instead.\n", dev_name(&spi->dev), 272 dev_name(&spi->dev), hz, mpc8xxx_spi->spibrg / 1024);
273 hz, mpc8xxx_spi->spibrg / 1024);
274 if (pm > 16) 273 if (pm > 16)
275 pm = 16; 274 pm = 16;
276 } else { 275 } else {
@@ -727,12 +726,13 @@ static int of_fsl_spi_get_chipselects(struct device *dev)
727 return 0; 726 return 0;
728 } 727 }
729 728
730 pinfo->gpios = kmalloc(ngpios * sizeof(*pinfo->gpios), GFP_KERNEL); 729 pinfo->gpios = kmalloc_array(ngpios, sizeof(*pinfo->gpios),
730 GFP_KERNEL);
731 if (!pinfo->gpios) 731 if (!pinfo->gpios)
732 return -ENOMEM; 732 return -ENOMEM;
733 memset(pinfo->gpios, -1, ngpios * sizeof(*pinfo->gpios)); 733 memset(pinfo->gpios, -1, ngpios * sizeof(*pinfo->gpios));
734 734
735 pinfo->alow_flags = kzalloc(ngpios * sizeof(*pinfo->alow_flags), 735 pinfo->alow_flags = kcalloc(ngpios, sizeof(*pinfo->alow_flags),
736 GFP_KERNEL); 736 GFP_KERNEL);
737 if (!pinfo->alow_flags) { 737 if (!pinfo->alow_flags) {
738 ret = -ENOMEM; 738 ret = -ENOMEM;
@@ -762,8 +762,9 @@ static int of_fsl_spi_get_chipselects(struct device *dev)
762 ret = gpio_direction_output(pinfo->gpios[i], 762 ret = gpio_direction_output(pinfo->gpios[i],
763 pinfo->alow_flags[i]); 763 pinfo->alow_flags[i]);
764 if (ret) { 764 if (ret) {
765 dev_err(dev, "can't set output direction for gpio " 765 dev_err(dev,
766 "#%d: %d\n", i, ret); 766 "can't set output direction for gpio #%d: %d\n",
767 i, ret);
767 goto err_loop; 768 goto err_loop;
768 } 769 }
769 } 770 }
diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c
index 656dd3e3220c..59cb26470d70 100644
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
@@ -621,8 +621,10 @@ void spi_unregister_device(struct spi_device *spi)
621 if (!spi) 621 if (!spi)
622 return; 622 return;
623 623
624 if (spi->dev.of_node) 624 if (spi->dev.of_node) {
625 of_node_clear_flag(spi->dev.of_node, OF_POPULATED); 625 of_node_clear_flag(spi->dev.of_node, OF_POPULATED);
626 of_node_put(spi->dev.of_node);
627 }
626 if (ACPI_COMPANION(&spi->dev)) 628 if (ACPI_COMPANION(&spi->dev))
627 acpi_device_clear_enumerated(ACPI_COMPANION(&spi->dev)); 629 acpi_device_clear_enumerated(ACPI_COMPANION(&spi->dev));
628 device_unregister(&spi->dev); 630 device_unregister(&spi->dev);
@@ -672,7 +674,7 @@ int spi_register_board_info(struct spi_board_info const *info, unsigned n)
672 if (!n) 674 if (!n)
673 return -EINVAL; 675 return -EINVAL;
674 676
675 bi = kzalloc(n * sizeof(*bi), GFP_KERNEL); 677 bi = kcalloc(n, sizeof(*bi), GFP_KERNEL);
676 if (!bi) 678 if (!bi)
677 return -ENOMEM; 679 return -ENOMEM;
678 680
@@ -1603,11 +1605,13 @@ of_register_spi_device(struct spi_master *master, struct device_node *nc)
1603 if (rc) { 1605 if (rc) {
1604 dev_err(&master->dev, "spi_device register error %s\n", 1606 dev_err(&master->dev, "spi_device register error %s\n",
1605 nc->full_name); 1607 nc->full_name);
1606 goto err_out; 1608 goto err_of_node_put;
1607 } 1609 }
1608 1610
1609 return spi; 1611 return spi;
1610 1612
1613err_of_node_put:
1614 of_node_put(nc);
1611err_out: 1615err_out:
1612 spi_dev_put(spi); 1616 spi_dev_put(spi);
1613 return ERR_PTR(rc); 1617 return ERR_PTR(rc);