summaryrefslogtreecommitdiff
path: root/target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch')
-rw-r--r--target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch216
1 files changed, 0 insertions, 216 deletions
diff --git a/target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch b/target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch
deleted file mode 100644
index 0269052..0000000
--- a/target/linux/brcm2708/patches-3.18/0053-i2c-bcm2708-add-device-tree-support.patch
+++ /dev/null
@@ -1,216 +0,0 @@
-From 772f3f8c0c321b2817d35f48d553db023ead2d90 Mon Sep 17 00:00:00 2001
-From: notro <notro@tronnes.org>
-Date: Tue, 29 Jul 2014 11:04:49 +0200
-Subject: [PATCH 053/114] i2c: bcm2708: add device tree support
-
-Add DT support to driver and add to .dtsi file.
-Setup pins in .dts file.
-i2c is disabled by default.
-
-Signed-off-by: Noralf Tronnes <notro@tronnes.org>
-
-bcm2708: don't register i2c controllers when using DT
-
-The devices for the i2c controllers are in the Device Tree.
-Only register devices when not using DT.
-
-Signed-off-by: Noralf Tronnes <notro@tronnes.org>
-
-i2c: bcm2835: make driver available on ARCH_BCM2708
-
-Make this driver available on ARCH_BCM2708
-
-Signed-off-by: Noralf Tronnes <notro@tronnes.org>
----
- arch/arm/boot/dts/bcm2708-rpi-b.dts | 24 ++++++++++++++++++++++++
- arch/arm/boot/dts/bcm2708.dtsi | 27 +++++++++++++++++++++++++++
- arch/arm/mach-bcm2708/bcm2708.c | 6 ++++--
- drivers/i2c/busses/Kconfig | 2 +-
- drivers/i2c/busses/i2c-bcm2708.c | 24 ++++++++++++++++++++++++
- 5 files changed, 80 insertions(+), 3 deletions(-)
-
---- a/arch/arm/boot/dts/bcm2708-rpi-b.dts
-+++ b/arch/arm/boot/dts/bcm2708-rpi-b.dts
-@@ -8,6 +8,8 @@
-
- aliases {
- spi0 = &spi0;
-+ i2c0 = &i2c0;
-+ i2c1 = &i2c1;
- };
- };
-
-@@ -16,6 +18,16 @@
- brcm,pins = <7 8 9 10 11>;
- brcm,function = <4>; /* alt0 */
- };
-+
-+ i2c0_pins: i2c0 {
-+ brcm,pins = <0 1>;
-+ brcm,function = <4>;
-+ };
-+
-+ i2c1_pins: i2c1 {
-+ brcm,pins = <2 3>;
-+ brcm,function = <4>;
-+ };
- };
-
- &spi0 {
-@@ -38,3 +50,15 @@
- spi-max-frequency = <500000>;
- };
- };
-+
-+&i2c0 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&i2c0_pins>;
-+ clock-frequency = <100000>;
-+};
-+
-+&i2c1 {
-+ pinctrl-names = "default";
-+ pinctrl-0 = <&i2c1_pins>;
-+ clock-frequency = <100000>;
-+};
---- a/arch/arm/boot/dts/bcm2708.dtsi
-+++ b/arch/arm/boot/dts/bcm2708.dtsi
-@@ -48,6 +48,26 @@
- #size-cells = <0>;
- status = "disabled";
- };
-+
-+ i2c0: i2c@7e205000 {
-+ compatible = "brcm,bcm2708-i2c";
-+ reg = <0x7e205000 0x1000>;
-+ interrupts = <2 21>;
-+ clocks = <&clk_i2c>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
-+
-+ i2c1: i2c@7e804000 {
-+ compatible = "brcm,bcm2708-i2c";
-+ reg = <0x7e804000 0x1000>;
-+ interrupts = <2 21>;
-+ clocks = <&clk_i2c>;
-+ #address-cells = <1>;
-+ #size-cells = <0>;
-+ status = "disabled";
-+ };
- };
-
- clocks {
-@@ -55,6 +75,13 @@
- #address-cells = <1>;
- #size-cells = <0>;
-
-+ clk_i2c: i2c {
-+ compatible = "fixed-clock";
-+ reg = <1>;
-+ #clock-cells = <0>;
-+ clock-frequency = <250000000>;
-+ };
-+
- clk_spi: clock@2 {
- compatible = "fixed-clock";
- reg = <2>;
---- a/arch/arm/mach-bcm2708/bcm2708.c
-+++ b/arch/arm/mach-bcm2708/bcm2708.c
-@@ -532,6 +532,7 @@ static struct spi_board_info bcm2708_spi
- };
- #endif
-
-+#ifndef CONFIG_OF
- static struct resource bcm2708_bsc0_resources[] = {
- {
- .start = BSC0_BASE,
-@@ -570,6 +571,7 @@ static struct platform_device bcm2708_bs
- .num_resources = ARRAY_SIZE(bcm2708_bsc1_resources),
- .resource = bcm2708_bsc1_resources,
- };
-+#endif
-
- static struct platform_device bcm2835_hwmon_device = {
- .name = "bcm2835_hwmon",
-@@ -797,8 +799,8 @@ void __init bcm2708_init(void)
- bcm_register_device(&bcm2708_alsa_devices[i]);
-
- bcm_register_device_dt(&bcm2708_spi_device);
-- bcm_register_device(&bcm2708_bsc0_device);
-- bcm_register_device(&bcm2708_bsc1_device);
-+ bcm_register_device_dt(&bcm2708_bsc0_device);
-+ bcm_register_device_dt(&bcm2708_bsc1_device);
-
- bcm_register_device(&bcm2835_hwmon_device);
- bcm_register_device(&bcm2835_thermal_device);
---- a/drivers/i2c/busses/Kconfig
-+++ b/drivers/i2c/busses/Kconfig
-@@ -362,7 +362,7 @@ config I2C_AXXIA
-
- config I2C_BCM2835
- tristate "Broadcom BCM2835 I2C controller"
-- depends on ARCH_BCM2835
-+ depends on ARCH_BCM2835 || ARCH_BCM2708
- help
- If you say yes to this option, support will be included for the
- BCM2835 I2C controller.
---- a/drivers/i2c/busses/i2c-bcm2708.c
-+++ b/drivers/i2c/busses/i2c-bcm2708.c
-@@ -26,6 +26,7 @@
- #include <linux/spinlock.h>
- #include <linux/clk.h>
- #include <linux/err.h>
-+#include <linux/of.h>
- #include <linux/platform_device.h>
- #include <linux/io.h>
- #include <linux/slab.h>
-@@ -303,6 +304,21 @@ static int bcm2708_i2c_probe(struct plat
- unsigned long bus_hz;
- u32 cdiv;
-
-+ if (pdev->dev.of_node) {
-+ u32 bus_clk_rate;
-+ pdev->id = of_alias_get_id(pdev->dev.of_node, "i2c");
-+ if (pdev->id < 0) {
-+ dev_err(&pdev->dev, "alias is missing\n");
-+ return -EINVAL;
-+ }
-+ if (!of_property_read_u32(pdev->dev.of_node,
-+ "clock-frequency", &bus_clk_rate))
-+ baudrate = bus_clk_rate;
-+ else
-+ dev_warn(&pdev->dev,
-+ "Could not read clock-frequency property\n");
-+ }
-+
- regs = platform_get_resource(pdev, IORESOURCE_MEM, 0);
- if (!regs) {
- dev_err(&pdev->dev, "could not get IO memory\n");
-@@ -336,6 +352,7 @@ static int bcm2708_i2c_probe(struct plat
- adap->dev.parent = &pdev->dev;
- adap->nr = pdev->id;
- strlcpy(adap->name, dev_name(&pdev->dev), sizeof(adap->name));
-+ adap->dev.of_node = pdev->dev.of_node;
-
- switch (pdev->id) {
- case 0:
-@@ -416,10 +433,17 @@ static int bcm2708_i2c_remove(struct pla
- return 0;
- }
-
-+static const struct of_device_id bcm2708_i2c_of_match[] = {
-+ { .compatible = "brcm,bcm2708-i2c" },
-+ {},
-+};
-+MODULE_DEVICE_TABLE(of, bcm2708_i2c_of_match);
-+
- static struct platform_driver bcm2708_i2c_driver = {
- .driver = {
- .name = DRV_NAME,
- .owner = THIS_MODULE,
-+ .of_match_table = bcm2708_i2c_of_match,
- },
- .probe = bcm2708_i2c_probe,
- .remove = bcm2708_i2c_remove,