ARM: shmobile: koelsch: Add I2C support
authorValentine Barshak <valentine.barshak@cogentembedded.com>
Tue, 4 Feb 2014 18:48:20 +0000 (22:48 +0400)
committerSimon Horman <horms+renesas@verge.net.au>
Thu, 6 Feb 2014 06:51:59 +0000 (15:51 +0900)
This adds I2C[1245] busses support to Koelsch board.
I2C[03] do not have any slave devices connected and
are not used because of the following:
* I2C0 pins are multiplexed with LBSC pins;
* I2C3 pins are multiplexed with EtherMAC and VIN0 pins.

Signed-off-by: Valentine Barshak <valentine.barshak@cogentembedded.com>
Signed-off-by: Simon Horman <horms+renesas@verge.net.au>
arch/arm/mach-shmobile/board-koelsch.c

index 1ec3b91b475ce9bf1344faadaac8ddb3bd6b2a7d..2741dba74aaa54733be1c7753809d97e0f20c6bb 100644 (file)
@@ -165,6 +165,38 @@ static const struct platform_device_info sata0_info __initconst = {
        .dma_mask       = DMA_BIT_MASK(32),
 };
 
+/* I2C */
+static const struct resource i2c_resources[] __initconst = {
+       /* I2C0 */
+       DEFINE_RES_MEM(0xE6508000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(287)),
+       /* I2C1 */
+       DEFINE_RES_MEM(0xE6518000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(288)),
+       /* I2C2 */
+       DEFINE_RES_MEM(0xE6530000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(286)),
+       /* I2C3 */
+       DEFINE_RES_MEM(0xE6540000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(290)),
+       /* I2C4 */
+       DEFINE_RES_MEM(0xE6520000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(19)),
+       /* I2C5 */
+       DEFINE_RES_MEM(0xE6528000, 0x40),
+       DEFINE_RES_IRQ(gic_spi(20)),
+};
+
+static void __init koelsch_add_i2c(unsigned idx)
+{
+       unsigned res_idx = idx * 2;
+
+       BUG_ON(res_idx >= ARRAY_SIZE(i2c_resources));
+
+       platform_device_register_simple("i2c-rcar_gen2", idx,
+                                       i2c_resources + res_idx, 2);
+}
+
 static const struct pinctrl_map koelsch_pinctrl_map[] = {
        /* DU */
        PIN_MAP_MUX_GROUP_DEFAULT("rcar-du-r8a7791", "pfc-r8a7791",
@@ -188,6 +220,15 @@ static const struct pinctrl_map koelsch_pinctrl_map[] = {
        /* SCIF1 (CN20: DEBUG SERIAL1) */
        PIN_MAP_MUX_GROUP_DEFAULT("sh-sci.7", "pfc-r8a7791",
                                  "scif1_data_d", "scif1"),
+       /* I2C1 */
+       PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.1", "pfc-r8a7791",
+                                 "i2c1_e", "i2c1"),
+       /* I2C2 */
+       PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.2", "pfc-r8a7791",
+                                 "i2c2", "i2c2"),
+       /* I2C4 */
+       PIN_MAP_MUX_GROUP_DEFAULT("i2c-rcar_gen2.4", "pfc-r8a7791",
+                                 "i2c4_c", "i2c4"),
 };
 
 static void __init koelsch_add_standard_devices(void)
@@ -211,6 +252,11 @@ static void __init koelsch_add_standard_devices(void)
        koelsch_add_du_device();
 
        platform_device_register_full(&sata0_info);
+
+       koelsch_add_i2c(1);
+       koelsch_add_i2c(2);
+       koelsch_add_i2c(4);
+       koelsch_add_i2c(5);
 }
 
 /*