aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/spi
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2012-10-03 12:44:08 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2012-10-03 12:44:08 -0400
commita54dfb1a845c38a97686268d8c4086a63d9493aa (patch)
tree3b31c81672fa89102aae929cc6c1e48e6e9382f4 /drivers/spi
parenteb0ad9c06d51edb5d18a7007fd4d77a8805b2ba7 (diff)
parent36165f55055781a0e4bf32d775241796414504b0 (diff)
Merge tag 'dt-for-3.7' of git://sources.calxeda.com/kernel/linux
Pull devicetree updates from Rob Herring: - Import of latest upstream device tree compiler (dtc) - New function of_get_child_by_name - Support for #size-cells of 0 and #addr-cells of >2 - Couple of DT binding documentation updates Fix up trivial conflicts due to of_get_child_by_name() having been added next to the new of_get_next_available_child(). * tag 'dt-for-3.7' of git://sources.calxeda.com/kernel/linux: MAINTAINERS: add scripts/dtc under Devicetree maintainers dtc: import latest upstream dtc dt: Document general interrupt controller bindings dt/s3c64xx/spi: Use of_get_child_by_name to get a named child dt: introduce of_get_child_by_name to get child node by name of: i2c: add support for wakeup-source property of/address: Handle #address-cells > 2 specially DT: export of_irq_to_resource_table() devicetree: serial: Add documentation for imx serial devicetree: pwm: mxs-pwm.txt: Fix reg field annotation of: Allow busses with #size-cells=0
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/spi-s3c64xx.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c
index 1860c3aca7e2..1a81c90a4a71 100644
--- a/drivers/spi/spi-s3c64xx.c
+++ b/drivers/spi/spi-s3c64xx.c
@@ -835,9 +835,7 @@ static struct s3c64xx_spi_csinfo *s3c64xx_get_slave_ctrldata(
835 return ERR_PTR(-EINVAL); 835 return ERR_PTR(-EINVAL);
836 } 836 }
837 837
838 for_each_child_of_node(slave_np, data_np) 838 data_np = of_get_child_by_name(slave_np, "controller-data");
839 if (!strcmp(data_np->name, "controller-data"))
840 break;
841 if (!data_np) { 839 if (!data_np) {
842 dev_err(&spi->dev, "child node 'controller-data' not found\n"); 840 dev_err(&spi->dev, "child node 'controller-data' not found\n");
843 return ERR_PTR(-EINVAL); 841 return ERR_PTR(-EINVAL);
@@ -847,6 +845,7 @@ static struct s3c64xx_spi_csinfo *s3c64xx_get_slave_ctrldata(
847 if (!cs) { 845 if (!cs) {
848 dev_err(&spi->dev, "could not allocate memory for controller" 846 dev_err(&spi->dev, "could not allocate memory for controller"
849 " data\n"); 847 " data\n");
848 of_node_put(data_np);
850 return ERR_PTR(-ENOMEM); 849 return ERR_PTR(-ENOMEM);
851 } 850 }
852 851
@@ -855,11 +854,13 @@ static struct s3c64xx_spi_csinfo *s3c64xx_get_slave_ctrldata(
855 dev_err(&spi->dev, "chip select gpio is not specified or " 854 dev_err(&spi->dev, "chip select gpio is not specified or "
856 "invalid\n"); 855 "invalid\n");
857 kfree(cs); 856 kfree(cs);
857 of_node_put(data_np);
858 return ERR_PTR(-EINVAL); 858 return ERR_PTR(-EINVAL);
859 } 859 }
860 860
861 of_property_read_u32(data_np, "samsung,spi-feedback-delay", &fb_delay); 861 of_property_read_u32(data_np, "samsung,spi-feedback-delay", &fb_delay);
862 cs->fb_delay = fb_delay; 862 cs->fb_delay = fb_delay;
863 of_node_put(data_np);
863 return cs; 864 return cs;
864} 865}
865 866