static struct platform_device *devices[] __initdata = {\r
#ifdef CONFIG_UART1_RK29\r
&rk29_device_uart1,\r
+#endif \r
+#ifdef CONFIG_SPIM_RK29XX\r
+ &rk29xx_device_spi0m,\r
+ &rk29xx_device_spi1m,\r
#endif\r
+ \r
+ #ifdef CONFIG_I2C0_RK29\r
+ &rk29_device_i2c0,\r
+ #endif\r
+ #ifdef CONFIG_I2C1_RK29\r
+ &rk29_device_i2c1,\r
+ #endif\r
+ #ifdef CONFIG_I2C2_RK29\r
+ &rk29_device_i2c2,\r
+ #endif\r
+ #ifdef CONFIG_I2C3_RK29\r
+ &rk29_device_i2c3,\r
+ #endif\r
+ \r
#ifdef CONFIG_SDMMC0_RK29 \r
&rk29_device_sdmmc0,\r
#endif\r
}\r
\r
static void __init machine_rk29_board_init(void)\r
-{\r
+{ \r
+ rk29_board_iomux_init();\r
- platform_add_devices(devices, ARRAY_SIZE(devices)); \r
++ platform_add_devices(devices, ARRAY_SIZE(devices)); \r
+ #ifdef CONFIG_I2C0_RK29\r
+ i2c_register_board_info(default_i2c0_data.bus_num, board_i2c0_devices,\r
+ ARRAY_SIZE(board_i2c0_devices));\r
+ #endif\r
+ #ifdef CONFIG_I2C1_RK29\r
+ i2c_register_board_info(default_i2c1_data.bus_num, board_i2c1_devices,\r
+ ARRAY_SIZE(board_i2c1_devices));\r
+ #endif\r
+ #ifdef CONFIG_I2C2_RK29\r
+ i2c_register_board_info(default_i2c2_data.bus_num, board_i2c2_devices,\r
+ ARRAY_SIZE(board_i2c2_devices));\r
+ #endif\r
+ #ifdef CONFIG_I2C3_RK29\r
+ i2c_register_board_info(default_i2c3_data.bus_num, board_i2c3_devices,\r
+ ARRAY_SIZE(board_i2c3_devices));\r
+ #endif\r
- platform_add_devices(devices, ARRAY_SIZE(devices)); \r
- rk29_board_iomux_init();\r
++\r
+ spi_register_board_info(board_spi_devices, ARRAY_SIZE(board_spi_devices));\r
}\r
\r
static void __init machine_rk29_fixup(struct machine_desc *desc, struct tag *tags,\r
#include <linux/delay.h>
#include <mach/irqs.h>
#include <mach/rk29_iomap.h>
+#include <mach/rk29-dma-pl330.h>
#include "devices.h"
+ #ifdef CONFIG_I2C_RK29
+ static struct resource resources_i2c0[] = {
+ {
+ .start = IRQ_I2C0,
+ .end = IRQ_I2C0,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = RK29_I2C0_PHYS,
+ .end = RK29_I2C0_PHYS + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ };
+ static struct resource resources_i2c1[] = {
+ {
+ .start = IRQ_I2C1,
+ .end = IRQ_I2C1,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = RK29_I2C1_PHYS,
+ .end = RK29_I2C1_PHYS + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ };
+ static struct resource resources_i2c2[] = {
+ {
+ .start = IRQ_I2C2,
+ .end = IRQ_I2C2,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = RK29_I2C2_PHYS,
+ .end = RK29_I2C2_PHYS + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ };
+ static struct resource resources_i2c3[] = {
+ {
+ .start = IRQ_I2C3,
+ .end = IRQ_I2C3,
+ .flags = IORESOURCE_IRQ,
+ },
+ {
+ .start = RK29_I2C3_PHYS,
+ .end = RK29_I2C3_PHYS + SZ_4K - 1,
+ .flags = IORESOURCE_MEM,
+ },
+ };
+
+ struct platform_device rk29_device_i2c0 = {
+ .name = "rk29_i2c",
+ .id = 0,
+ .num_resources = ARRAY_SIZE(resources_i2c0),
+ .resource = resources_i2c0,
+ .dev = {
+ .platform_data = &default_i2c0_data,
+ },
+ };
+ struct platform_device rk29_device_i2c1 = {
+ .name = "rk29_i2c",
+ .id = 1,
+ .num_resources = ARRAY_SIZE(resources_i2c1),
+ .resource = resources_i2c1,
+ .dev = {
+ .platform_data = &default_i2c1_data,
+ },
+ };
+ struct platform_device rk29_device_i2c2 = {
+ .name = "rk29_i2c",
+ .id = 2,
+ .num_resources = ARRAY_SIZE(resources_i2c2),
+ .resource = resources_i2c2,
+ .dev = {
+ .platform_data = &default_i2c2_data,
+ },
+ };
+ struct platform_device rk29_device_i2c3 = {
+ .name = "rk29_i2c",
+ .id = 3,
+ .num_resources = ARRAY_SIZE(resources_i2c3),
+ .resource = resources_i2c3,
+ .dev = {
+ .platform_data = &default_i2c3_data,
+ },
+ };
+ #endif
+
#ifdef CONFIG_SDMMC0_RK29
static struct resource resources_sdmmc0[] = {
{