Message ID | 1394787326-14520-1-git-send-email-s.trumtrar@pengutronix.de |
---|---|
State | Superseded, archived |
Headers | show |
On Fri, Mar 14, 2014 at 08:55:26AM +0000, Steffen Trumtrar wrote: > Allow probing the dw-mmio from devicetree. > > Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> > --- > This was tested on Socfpga and v3.14-rc6 > > .../devicetree/bindings/spi/spi-dw-mmio.txt | 25 ++++++++++++++++++++++ > drivers/spi/spi-dw-mmio.c | 19 +++++++++++++++- > 2 files changed, 43 insertions(+), 1 deletion(-) > create mode 100644 Documentation/devicetree/bindings/spi/spi-dw-mmio.txt > > diff --git a/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt b/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt > new file mode 100644 > index 0000000..2b9bb90 > --- /dev/null > +++ b/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt > @@ -0,0 +1,25 @@ > +Synopsys DesignWare SPI master controller. > + > +Required properties: > +- compatible : "snps,dw-spi-mmio" Is there not a better name than "dw-spi-mmio"? What's the full name of the device, as on a datasheet? Is there no model number? Otherwise this looks ok. > +- reg : The register base for the controller. > +- interrupts : One interrupt, used by the controller. > +- #address-cells : <1>, as required by generic SPI binding. > +- #size-cells : <0>, also as required by generic SPI binding. > + > +Optional properties: > +- num-chipselects : The number of chipselects. If this is optional, when wuold I need to set this? What's the default assumption? Mark: I see some bindings have "num-chipselects", and some have "num-cs". Do you have a preferred form that people could align on? Cheers, Mark. -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, Mar 14, 2014 at 04:14:03PM +0000, Mark Rutland wrote: > > +Synopsys DesignWare SPI master controller. > > + > > +Required properties: > > +- compatible : "snps,dw-spi-mmio" > Is there not a better name than "dw-spi-mmio"? > What's the full name of the device, as on a datasheet? Is there no model > number? It's a Synopsis Designware IP block rather than a part - Google suggests DW_apb_ssi.
On Fri, Mar 14, 2014 at 04:14:03PM +0000, Mark Rutland wrote: > On Fri, Mar 14, 2014 at 08:55:26AM +0000, Steffen Trumtrar wrote: > > +Optional properties: > > +- num-chipselects : The number of chipselects. > If this is optional, when wuold I need to set this? What's the default > assumption? > Mark: I see some bindings have "num-chipselects", and some have > "num-cs". Do you have a preferred form that people could align on? Probably -cs but the whole thing needs reviewing anyway for handling of GPIO based chipselects.
Hi! On Fri, Mar 14, 2014 at 04:26:14PM +0000, Mark Brown wrote: > On Fri, Mar 14, 2014 at 04:14:03PM +0000, Mark Rutland wrote: > > > > +Synopsys DesignWare SPI master controller. > > > + > > > +Required properties: > > > +- compatible : "snps,dw-spi-mmio" > > > Is there not a better name than "dw-spi-mmio"? > > > What's the full name of the device, as on a datasheet? Is there no model > > number? > > It's a Synopsis Designware IP block rather than a part - Google suggests > DW_apb_ssi. That seems to be the correct IP block, so I will change the compatible to "snps,dw-apb-ssi". Thanks, Steffen
diff --git a/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt b/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt new file mode 100644 index 0000000..2b9bb90 --- /dev/null +++ b/Documentation/devicetree/bindings/spi/spi-dw-mmio.txt @@ -0,0 +1,25 @@ +Synopsys DesignWare SPI master controller. + +Required properties: +- compatible : "snps,dw-spi-mmio" +- reg : The register base for the controller. +- interrupts : One interrupt, used by the controller. +- #address-cells : <1>, as required by generic SPI binding. +- #size-cells : <0>, also as required by generic SPI binding. + +Optional properties: +- num-chipselects : The number of chipselects. + +Child nodes as per the generic SPI binding. + +Example: + + spi@fff00000 { + compatible = "snps,dw-spi-mmio"; + reg = <0xfff00000 0x1000>; + interrupts = <0 154 4>; + #address-cells = <1>; + #size-cells = <0>; + num-chipselects = <4>; + }; + diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c index 9af56cd..71345e4 100644 --- a/drivers/spi/spi-dw-mmio.c +++ b/drivers/spi/spi-dw-mmio.c @@ -16,6 +16,8 @@ #include <linux/spi/spi.h> #include <linux/scatterlist.h> #include <linux/module.h> +#include <linux/of.h> +#include <linux/of_platform.h> #include "spi-dw.h" @@ -32,6 +34,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) struct dw_spi *dws; struct resource *mem; int ret; + int val; dwsmmio = devm_kzalloc(&pdev->dev, sizeof(struct dw_spi_mmio), GFP_KERNEL); @@ -66,8 +69,15 @@ static int dw_spi_mmio_probe(struct platform_device *pdev) if (ret) return ret; - dws->bus_num = 0; + dws->bus_num = pdev->id; dws->num_cs = 4; + + if (pdev->dev.of_node) { + if (of_property_read_u32(pdev->dev.of_node, "num-chipselects", + &val)) + dws->num_cs = val; + } + dws->max_freq = clk_get_rate(dwsmmio->clk); ret = dw_spi_add_host(&pdev->dev, dws); @@ -92,12 +102,19 @@ static int dw_spi_mmio_remove(struct platform_device *pdev) return 0; } +static const struct of_device_id dw_spi_mmio_of_match[] = { + { .compatible = "snps,dw-spi-mmio", }, + { /* end of table */} +}; +MODULE_DEVICE_TABLE(of, dw_spi_mmio_of_match); + static struct platform_driver dw_spi_mmio_driver = { .probe = dw_spi_mmio_probe, .remove = dw_spi_mmio_remove, .driver = { .name = DRIVER_NAME, .owner = THIS_MODULE, + .of_match_table = dw_spi_mmio_of_match, }, }; module_platform_driver(dw_spi_mmio_driver);
Allow probing the dw-mmio from devicetree. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> --- This was tested on Socfpga and v3.14-rc6 .../devicetree/bindings/spi/spi-dw-mmio.txt | 25 ++++++++++++++++++++++ drivers/spi/spi-dw-mmio.c | 19 +++++++++++++++- 2 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 Documentation/devicetree/bindings/spi/spi-dw-mmio.txt