[ARM] tegra: move sdhci and i2c to generic devices.c
authorErik Gilling <konkers@android.com>
Wed, 31 Mar 2010 20:49:16 +0000 (13:49 -0700)
committerColin Cross <ccross@android.com>
Wed, 6 Oct 2010 23:26:51 +0000 (16:26 -0700)
Change-Id: Ib8d500cb868663d851af5e849815bc2a1312f659
Signed-off-by: Erik Gilling <konkers@android.com>
arch/arm/mach-tegra/Makefile
arch/arm/mach-tegra/devices.c [new file with mode: 0644]
arch/arm/mach-tegra/devices.h [new file with mode: 0644]

index 6096715ec0e8799a1bc8c26d3d417c5ebeb8ba3e..288e3369c31d955b74e820388fc91fb391f5c6f9 100644 (file)
@@ -5,6 +5,7 @@ obj-y                                   += clock.o
 obj-y                                   += timer.o
 obj-y                                   += gpio.o
 obj-y                                   += pinmux.o
+obj-y                                   += devices.o
 obj-y                                   += powergate.o
 obj-y                                  += suspend.o
 obj-y                                  += fuse.o
diff --git a/arch/arm/mach-tegra/devices.c b/arch/arm/mach-tegra/devices.c
new file mode 100644 (file)
index 0000000..6903ae4
--- /dev/null
@@ -0,0 +1,216 @@
+/*
+ * arch/arm/mach-tegra/devices.c
+ *
+ * Copyright (C) 2010 Google, Inc.
+ *
+ * Author:
+ *     Colin Cross <ccross@android.com>
+ *     Erik Gilling <ccross@android.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+
+#include <linux/resource.h>
+#include <linux/platform_device.h>
+#include <mach/irqs.h>
+#include <mach/iomap.h>
+
+static struct resource i2c_resource1[] = {
+       [0] = {
+               .start  = INT_I2C,
+               .end    = INT_I2C,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_I2C_BASE,
+               .end    = TEGRA_I2C_BASE + TEGRA_I2C_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource i2c_resource2[] = {
+       [0] = {
+               .start  = INT_I2C2,
+               .end    = INT_I2C2,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_I2C2_BASE,
+               .end    = TEGRA_I2C2_BASE + TEGRA_I2C2_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource i2c_resource3[] = {
+       [0] = {
+               .start  = INT_I2C3,
+               .end    = INT_I2C3,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_I2C3_BASE,
+               .end    = TEGRA_I2C3_BASE + TEGRA_I2C3_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource i2c_resource4[] = {
+       [0] = {
+               .start  = INT_DVC,
+               .end    = INT_DVC,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_DVC_BASE,
+               .end    = TEGRA_DVC_BASE + TEGRA_DVC_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct platform_device tegra_i2c_device1 = {
+       .name           = "tegra-i2c",
+       .id             = 0,
+       .resource       = i2c_resource1,
+       .num_resources  = ARRAY_SIZE(i2c_resource1),
+       .dev = {
+               .platform_data = 0,
+       },
+};
+
+static struct platform_device tegra_i2c_device2 = {
+       .name           = "tegra-i2c",
+       .id             = 1,
+       .resource       = i2c_resource2,
+       .num_resources  = ARRAY_SIZE(i2c_resource2),
+       .dev = {
+               .platform_data = 0,
+       },
+};
+
+static struct platform_device tegra_i2c_device3 = {
+       .name           = "tegra-i2c",
+       .id             = 2,
+       .resource       = i2c_resource3,
+       .num_resources  = ARRAY_SIZE(i2c_resource3),
+       .dev = {
+               .platform_data = 0,
+       },
+};
+
+static struct platform_device tegra_i2c_device4 = {
+       .name           = "tegra-i2c",
+       .id             = 3,
+       .resource       = i2c_resource4,
+       .num_resources  = ARRAY_SIZE(i2c_resource4),
+       .dev = {
+               .platform_data = 0,
+       },
+};
+
+static struct resource sdhci_resource1[] = {
+       [0] = {
+               .start  = INT_SDMMC1,
+               .end    = INT_SDMMC1,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_SDMMC1_BASE,
+               .end    = TEGRA_SDMMC1_BASE + TEGRA_SDMMC1_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource sdhci_resource2[] = {
+       [0] = {
+               .start  = INT_SDMMC2,
+               .end    = INT_SDMMC2,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_SDMMC2_BASE,
+               .end    = TEGRA_SDMMC2_BASE + TEGRA_SDMMC2_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource sdhci_resource3[] = {
+       [0] = {
+               .start  = INT_SDMMC3,
+               .end    = INT_SDMMC3,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_SDMMC3_BASE,
+               .end    = TEGRA_SDMMC3_BASE + TEGRA_SDMMC3_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+static struct resource sdhci_resource4[] = {
+       [0] = {
+               .start  = INT_SDMMC4,
+               .end    = INT_SDMMC4,
+               .flags  = IORESOURCE_IRQ,
+       },
+       [1] = {
+               .start  = TEGRA_SDMMC4_BASE,
+               .end    = TEGRA_SDMMC4_BASE + TEGRA_SDMMC4_SIZE-1,
+               .flags  = IORESOURCE_MEM,
+       },
+};
+
+
+/* board files should fill in platform_data register the devices themselvs.
+ * See board-harmony.c for an example
+ */
+struct platform_device tegra_sdhci_device1 = {
+       .name           = "sdhci-tegra",
+       .id             = 0,
+       .resource       = sdhci_resource1,
+       .num_resources  = ARRAY_SIZE(sdhci_resource1),
+};
+
+struct platform_device tegra_sdhci_device2 = {
+       .name           = "sdhci-tegra",
+       .id             = 1,
+       .resource       = sdhci_resource2,
+       .num_resources  = ARRAY_SIZE(sdhci_resource2),
+};
+
+struct platform_device tegra_sdhci_device3 = {
+       .name           = "sdhci-tegra",
+       .id             = 2,
+       .resource       = sdhci_resource3,
+       .num_resources  = ARRAY_SIZE(sdhci_resource3),
+};
+
+struct platform_device tegra_sdhci_device4 = {
+       .name           = "sdhci-tegra",
+       .id             = 3,
+       .resource       = sdhci_resource4,
+       .num_resources  = ARRAY_SIZE(sdhci_resource4),
+};
+
+
+static struct platform_device *tegra_devices[] __initdata = {
+       &tegra_i2c_device1,
+       &tegra_i2c_device2,
+       &tegra_i2c_device3,
+       &tegra_i2c_device4,
+};
+
+static int __init tegra_devices_init(void)
+{
+       return platform_add_devices(tegra_devices, ARRAY_SIZE(tegra_devices));
+};
+
+arch_initcall(tegra_devices_init);
diff --git a/arch/arm/mach-tegra/devices.h b/arch/arm/mach-tegra/devices.h
new file mode 100644 (file)
index 0000000..8fecb73
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * arch/arm/mach-tegra/devices.c
+ *
+ * Copyright (C) 2010 Google, Inc.
+ *
+ * Author:
+ *     Colin Cross <ccross@android.com>
+ *     Erik Gilling <ccross@android.com>
+ *
+ * This software is licensed under the terms of the GNU General Public
+ * License version 2, as published by the Free Software Foundation, and
+ * may be copied, distributed, and modified under those terms.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ */
+
+#ifndef __MACH_TEGRA_DEVICES_H
+#define __MACH_TEGRA_DEVICES_H
+
+#include <linux/platform_device.h>
+
+extern struct platform_device tegra_sdhci_device1;
+extern struct platform_device tegra_sdhci_device2;
+extern struct platform_device tegra_sdhci_device3;
+extern struct platform_device tegra_sdhci_device4;
+
+#endif