diff options
Diffstat (limited to 'target/linux/brcm2708/patches-3.18/0052-spi-bcm2708-add-device-tree-support.patch')
-rw-r--r-- | target/linux/brcm2708/patches-3.18/0052-spi-bcm2708-add-device-tree-support.patch | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/target/linux/brcm2708/patches-3.18/0052-spi-bcm2708-add-device-tree-support.patch b/target/linux/brcm2708/patches-3.18/0052-spi-bcm2708-add-device-tree-support.patch deleted file mode 100644 index 8969c30b0c..0000000000 --- a/target/linux/brcm2708/patches-3.18/0052-spi-bcm2708-add-device-tree-support.patch +++ /dev/null @@ -1,199 +0,0 @@ -From 5de6baef9b5d9e3a84e0c3752cfb7eaef2eb1a0f Mon Sep 17 00:00:00 2001 -From: notro <notro@tronnes.org> -Date: Sun, 27 Jul 2014 20:12:58 +0200 -Subject: [PATCH 052/114] spi: bcm2708: add device tree support - -Add DT support to driver and add to .dtsi file. -Setup pins and spidev in .dts file. -SPI is disabled by default. - -Signed-off-by: Noralf Tronnes <notro@tronnes.org> - -BCM2708: don't register SPI controller when using DT - -The device for the SPI controller is in the Device Tree. -Only register the device when not using DT. - -Signed-off-by: Noralf Tronnes <notro@tronnes.org> - -spi: bcm2835: make driver available on ARCH_BCM2708 - -Make this driver available on ARCH_BCM2708 - -Signed-off-by: Noralf Tronnes <notro@tronnes.org> - -bcm2708: Remove the prohibition on mixing SPIDEV and DT ---- - arch/arm/boot/dts/bcm2708-rpi-b.dts | 32 ++++++++++++++++++++++++++++++++ - arch/arm/boot/dts/bcm2708.dtsi | 18 ++++++++++++++++++ - arch/arm/mach-bcm2708/bcm2708.c | 19 ++++++++++++++++--- - drivers/spi/Kconfig | 2 +- - drivers/spi/spi-bcm2708.c | 8 ++++++++ - 5 files changed, 75 insertions(+), 4 deletions(-) - ---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts -+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts -@@ -5,4 +5,36 @@ - / { - compatible = "brcm,bcm2708"; - model = "Raspberry Pi"; -+ -+ aliases { -+ spi0 = &spi0; -+ }; -+}; -+ -+&gpio { -+ spi0_pins: spi0_pins { -+ brcm,pins = <7 8 9 10 11>; -+ brcm,function = <4>; /* alt0 */ -+ }; -+}; -+ -+&spi0 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&spi0_pins>; -+ -+ spidev@0{ -+ compatible = "spidev"; -+ reg = <0>; /* CE0 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; -+ -+ spidev@1{ -+ compatible = "spidev"; -+ reg = <1>; /* CE1 */ -+ #address-cells = <1>; -+ #size-cells = <0>; -+ spi-max-frequency = <500000>; -+ }; - }; ---- a/arch/arm/boot/dts/bcm2708.dtsi -+++ b/arch/arm/boot/dts/bcm2708.dtsi -@@ -38,11 +38,29 @@ - interrupt-controller; - #interrupt-cells = <2>; - }; -+ -+ spi0: spi@7e204000 { -+ compatible = "brcm,bcm2708-spi"; -+ reg = <0x7e204000 0x1000>; -+ interrupts = <2 22>; -+ clocks = <&clk_spi>; -+ #address-cells = <1>; -+ #size-cells = <0>; -+ status = "disabled"; -+ }; - }; - - clocks { - compatible = "simple-bus"; - #address-cells = <1>; - #size-cells = <0>; -+ -+ clk_spi: clock@2 { -+ compatible = "fixed-clock"; -+ reg = <2>; -+ #clock-cells = <0>; -+ clock-output-names = "spi"; -+ clock-frequency = <250000000>; -+ }; - }; - }; ---- a/arch/arm/mach-bcm2708/bcm2708.c -+++ b/arch/arm/mach-bcm2708/bcm2708.c -@@ -486,6 +486,7 @@ static struct platform_device bcm2708_al - }, - }; - -+#ifndef CONFIG_OF - static struct resource bcm2708_spi_resources[] = { - { - .start = SPI0_BASE, -@@ -509,6 +510,7 @@ static struct platform_device bcm2708_sp - .dma_mask = &bcm2708_spi_dmamask, - .coherent_dma_mask = DMA_BIT_MASK(DMA_MASK_BITS_COMMON)}, - }; -+#endif - - #ifdef CONFIG_BCM2708_SPIDEV - static struct spi_board_info bcm2708_spi_devices[] = { -@@ -670,6 +672,16 @@ int __init bcm_register_device(struct pl - return ret; - } - -+/* -+ * Use this macro for platform devices that are present in the Device Tree. -+ * This way the device is only added on non-DT builds. -+ */ -+#ifdef CONFIG_OF -+#define bcm_register_device_dt(pdev) -+#else -+#define bcm_register_device_dt(pdev) bcm_register_device(pdev) -+#endif -+ - int calc_rsts(int partition) - { - return PM_PASSWORD | -@@ -784,7 +796,7 @@ void __init bcm2708_init(void) - for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++) - bcm_register_device(&bcm2708_alsa_devices[i]); - -- bcm_register_device(&bcm2708_spi_device); -+ bcm_register_device_dt(&bcm2708_spi_device); - bcm_register_device(&bcm2708_bsc0_device); - bcm_register_device(&bcm2708_bsc1_device); - -@@ -824,8 +836,9 @@ void __init bcm2708_init(void) - system_serial_low = serial; - - #ifdef CONFIG_BCM2708_SPIDEV -- spi_register_board_info(bcm2708_spi_devices, -- ARRAY_SIZE(bcm2708_spi_devices)); -+ if (!use_dt) -+ spi_register_board_info(bcm2708_spi_devices, -+ ARRAY_SIZE(bcm2708_spi_devices)); - #endif - } - ---- a/drivers/spi/Kconfig -+++ b/drivers/spi/Kconfig -@@ -77,7 +77,7 @@ config SPI_ATMEL - - config SPI_BCM2835 - tristate "BCM2835 SPI controller" -- depends on ARCH_BCM2835 || COMPILE_TEST -+ depends on ARCH_BCM2835 || ARCH_BCM2708 || COMPILE_TEST - help - This selects a driver for the Broadcom BCM2835 SPI master. - ---- a/drivers/spi/spi-bcm2708.c -+++ b/drivers/spi/spi-bcm2708.c -@@ -512,6 +512,7 @@ static int bcm2708_spi_probe(struct plat - master->setup = bcm2708_spi_setup; - master->transfer = bcm2708_spi_transfer; - master->cleanup = bcm2708_spi_cleanup; -+ master->dev.of_node = pdev->dev.of_node; - platform_set_drvdata(pdev, master); - - bs = spi_master_get_devdata(master); -@@ -596,10 +597,17 @@ static int bcm2708_spi_remove(struct pla - return 0; - } - -+static const struct of_device_id bcm2708_spi_match[] = { -+ { .compatible = "brcm,bcm2708-spi", }, -+ {} -+}; -+MODULE_DEVICE_TABLE(of, bcm2708_spi_match); -+ - static struct platform_driver bcm2708_spi_driver = { - .driver = { - .name = DRV_NAME, - .owner = THIS_MODULE, -+ .of_match_table = bcm2708_spi_match, - }, - .probe = bcm2708_spi_probe, - .remove = bcm2708_spi_remove, |