Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7e5ad716 authored by Mark Brown's avatar Mark Brown
Browse files

Merge remote-tracking branches 'spi/topic/dw', 'spi/topic/efm32',...

Merge remote-tracking branches 'spi/topic/dw', 'spi/topic/efm32', 'spi/topic/fsl' and 'spi/topic/omap-uwire' into spi-next
Loading
Loading
Loading
Loading
+7 −6
Original line number Diff line number Diff line
@@ -10,11 +10,12 @@ Required properties:
- cs-gpios: see spi-bus.txt

Recommended properties :
- efm32,location: Value to write to the ROUTE register's LOCATION bitfield to
                  configure the pinmux for the device, see datasheet for values.
                  If "efm32,location" property is not provided, keeping what is
                  already configured in the hardware, so its either the reset
                  default 0 or whatever the bootloader did.
- energymicro,location: Value to write to the ROUTE register's LOCATION
                        bitfield to configure the pinmux for the device, see
                        datasheet for values.
                        If this property is not provided, keeping what is
                        already configured in the hardware, so its either the
                        reset default 0 or whatever the bootloader did.

Example:

@@ -26,7 +27,7 @@ spi1: spi@0x4000c400 { /* USART1 */
	interrupts = <15 16>;
	clocks = <&cmu 20>;
	cs-gpios = <&gpio 51 1>; // D3
	efm32,location = <1>;
	energymicro,location = <1>;
	status = "ok";

	ks8851@0 {
+28 −0
Original line number Diff line number Diff line
Synopsys DesignWare AMBA 2.0 Synchronous Serial Interface.

Required properties:
- compatible : "snps,dw-apb-ssi"
- 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:
- cs-gpios : Specifies the gpio pis to be used for chipselects.
- num-cs : The number of chipselects. If omitted, this will default to 4.

Child nodes as per the generic SPI binding.

Example:

	spi@fff00000 {
		compatible = "snps,dw-apb-ssi";
		reg = <0xfff00000 0x1000>;
		interrupts = <0 154 4>;
		#address-cells = <1>;
		#size-cells = <0>;
		num-cs = <2>;
		cs-gpios = <&gpio0 13 0>,
			   <&gpio0 14 0>;
	};
+18 −1
Original line number Diff line number Diff line
@@ -16,7 +16,9 @@
#include <linux/spi/spi.h>
#include <linux/scatterlist.h>
#include <linux/module.h>
#include <linux/of.h>
#include <linux/of_gpio.h>
#include <linux/of_platform.h>

#include "spi-dw.h"

@@ -33,6 +35,7 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
	struct dw_spi *dws;
	struct resource *mem;
	int ret;
	int num_cs;

	dwsmmio = devm_kzalloc(&pdev->dev, sizeof(struct dw_spi_mmio),
			GFP_KERNEL);
@@ -68,9 +71,16 @@ static int dw_spi_mmio_probe(struct platform_device *pdev)
		return ret;

	dws->bus_num = pdev->id;
	dws->num_cs = 4;

	dws->max_freq = clk_get_rate(dwsmmio->clk);

	num_cs = 4;

	if (pdev->dev.of_node)
		of_property_read_u32(pdev->dev.of_node, "num-cs", &num_cs);

	dws->num_cs = num_cs;

	if (pdev->dev.of_node) {
		int i;

@@ -114,12 +124,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-apb-ssi", },
	{ /* 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);
+7 −1
Original line number Diff line number Diff line
@@ -294,10 +294,16 @@ static void efm32_spi_probe_dt(struct platform_device *pdev,
	u32 location;
	int ret;

	ret = of_property_read_u32(np, "energymicro,location", &location);

	if (ret)
		/* fall back to wrongly namespaced property */
		ret = of_property_read_u32(np, "efm32,location", &location);

	if (ret)
		/* fall back to old and (wrongly) generic property "location" */
		ret = of_property_read_u32(np, "location", &location);

	if (!ret) {
		dev_dbg(&pdev->dev, "using location %u\n", location);
	} else {
+1 −1
Original line number Diff line number Diff line
@@ -196,7 +196,7 @@ int of_mpc8xxx_spi_probe(struct platform_device *ofdev)

	pinfo = devm_kzalloc(&ofdev->dev, sizeof(*pinfo), GFP_KERNEL);
	if (!pinfo)
		return -ENOMEM;
		return ret;

	pdata = &pinfo->pdata;
	dev->platform_data = pdata;
Loading