ARM: mach-shmobile: R-Mobile A1 support.
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Fri, 11 Nov 2011 02:45:52 +0000 (18:45 -0800)
committerPaul Mundt <lethal@linux-sh.org>
Fri, 11 Nov 2011 07:55:31 +0000 (16:55 +0900)
This adds preliminary support for the R8A7740 (R-Mobile A1) CPU

Timer, serial, gic, clock are supported at this point.
This patch is based on v0.1 manual

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Signed-off-by: Paul Mundt <lethal@linux-sh.org>
arch/arm/mach-shmobile/Kconfig
arch/arm/mach-shmobile/Makefile
arch/arm/mach-shmobile/clock-r8a7740.c [new file with mode: 0644]
arch/arm/mach-shmobile/include/mach/common.h
arch/arm/mach-shmobile/include/mach/r8a7740.h [new file with mode: 0644]
arch/arm/mach-shmobile/intc-r8a7740.c [new file with mode: 0644]
arch/arm/mach-shmobile/setup-r8a7740.c [new file with mode: 0644]
drivers/tty/serial/sh-sci.h

index 0828fab2b65c7aa910dcfbcd73e712a1c56f0b61..329a3cb7f99be1a7f7e1620852cd80b3abd5ae44 100644 (file)
@@ -28,6 +28,13 @@ config ARCH_SH73A0
        select ARM_GIC
        select I2C
 
+config ARCH_R8A7740
+       bool "R-Mobile A1 (R8A77400)"
+       select CPU_V7
+       select SH_CLK_CPG
+       select ARCH_WANT_OPTIONAL_GPIOLIB
+       select ARM_GIC
+
 comment "SH-Mobile Board Type"
 
 config MACH_G3EVM
index 2aec2f732515337cdeaa91519ea487bd84e783f3..d61f1eca159ab910e3033fe37cc5aca3856e0b92 100644 (file)
@@ -10,6 +10,7 @@ obj-$(CONFIG_ARCH_SH7367)     += setup-sh7367.o clock-sh7367.o intc-sh7367.o
 obj-$(CONFIG_ARCH_SH7377)      += setup-sh7377.o clock-sh7377.o intc-sh7377.o
 obj-$(CONFIG_ARCH_SH7372)      += setup-sh7372.o clock-sh7372.o intc-sh7372.o
 obj-$(CONFIG_ARCH_SH73A0)      += setup-sh73a0.o clock-sh73a0.o intc-sh73a0.o
+obj-$(CONFIG_ARCH_R8A7740)     += setup-r8a7740.o clock-r8a7740.o intc-r8a7740.o
 
 # SMP objects
 smp-y                          := platsmp.o headsmp.o
@@ -29,6 +30,7 @@ obj-$(CONFIG_ARCH_SH7367)     += entry-intc.o
 obj-$(CONFIG_ARCH_SH7377)      += entry-intc.o
 obj-$(CONFIG_ARCH_SH7372)      += entry-intc.o
 obj-$(CONFIG_ARCH_SH73A0)      += entry-gic.o
+obj-$(CONFIG_ARCH_R8A7740)     += entry-gic.o
 
 # PM objects
 obj-$(CONFIG_SUSPEND)          += suspend.o
diff --git a/arch/arm/mach-shmobile/clock-r8a7740.c b/arch/arm/mach-shmobile/clock-r8a7740.c
new file mode 100644 (file)
index 0000000..5bb02f2
--- /dev/null
@@ -0,0 +1,378 @@
+/*
+ * R8A7740 processor support
+ *
+ * Copyright (C) 2011  Renesas Solutions Corp.
+ * Copyright (C) 2011  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+#include <linux/init.h>
+#include <linux/kernel.h>
+#include <linux/io.h>
+#include <linux/sh_clk.h>
+#include <linux/clkdev.h>
+#include <mach/common.h>
+#include <mach/r8a7740.h>
+
+/*
+ *        |  MDx  |  XTAL1/EXTAL1   |  System   | EXTALR |
+ *  Clock |-------+-----------------+  clock    | 32.768 |   RCLK
+ *  Mode  | 2/1/0 | src         MHz |  source   |  KHz   |  source
+ * -------+-------+-----------------+-----------+--------+----------
+ *    0   | 0 0 0 | External  20~50 | XTAL1     |    O   |  EXTALR
+ *    1   | 0 0 1 | Crystal   20~30 | XTAL1     |    O   |  EXTALR
+ *    2   | 0 1 0 | External  40~50 | XTAL1 / 2 |    O   |  EXTALR
+ *    3   | 0 1 1 | Crystal   40~50 | XTAL1 / 2 |    O   |  EXTALR
+ *    4   | 1 0 0 | External  20~50 | XTAL1     |    x   |  XTAL1 / 1024
+ *    5   | 1 0 1 | Crystal   20~30 | XTAL1     |    x   |  XTAL1 / 1024
+ *    6   | 1 1 0 | External  40~50 | XTAL1 / 2 |    x   |  XTAL1 / 2048
+ *    7   | 1 1 1 | Crystal   40~50 | XTAL1 / 2 |    x   |  XTAL1 / 2048
+ */
+
+/* CPG registers */
+#define FRQCRA         0xe6150000
+#define FRQCRB         0xe6150004
+#define FRQCRC         0xe61500e0
+#define PLLC01CR       0xe6150028
+
+#define SUBCKCR                0xe6150080
+
+#define MSTPSR0                0xe6150030
+#define MSTPSR1                0xe6150038
+#define MSTPSR2                0xe6150040
+#define MSTPSR3                0xe6150048
+#define MSTPSR4                0xe615004c
+#define SMSTPCR0       0xe6150130
+#define SMSTPCR1       0xe6150134
+#define SMSTPCR2       0xe6150138
+#define SMSTPCR3       0xe615013c
+#define SMSTPCR4       0xe6150140
+
+/* Fixed 32 KHz root clock from EXTALR pin */
+static struct clk extalr_clk = {
+       .rate   = 32768,
+};
+
+/*
+ * 25MHz default rate for the EXTAL1 root input clock.
+ * If needed, reset this with clk_set_rate() from the platform code.
+ */
+static struct clk extal1_clk = {
+       .rate   = 25000000,
+};
+
+/*
+ * 48MHz default rate for the EXTAL2 root input clock.
+ * If needed, reset this with clk_set_rate() from the platform code.
+ */
+static struct clk extal2_clk = {
+       .rate   = 48000000,
+};
+
+/*
+ * 27MHz default rate for the DV_CLKI root input clock.
+ * If needed, reset this with clk_set_rate() from the platform code.
+ */
+static struct clk dv_clk = {
+       .rate   = 27000000,
+};
+
+static unsigned long div_recalc(struct clk *clk)
+{
+       return clk->parent->rate / (int)(clk->priv);
+}
+
+static struct clk_ops div_clk_ops = {
+       .recalc = div_recalc,
+};
+
+/* extal1 / 2 */
+static struct clk extal1_div2_clk = {
+       .ops    = &div_clk_ops,
+       .priv   = (void *)2,
+       .parent = &extal1_clk,
+};
+
+/* extal1 / 1024 */
+static struct clk extal1_div1024_clk = {
+       .ops    = &div_clk_ops,
+       .priv   = (void *)1024,
+       .parent = &extal1_clk,
+};
+
+/* extal1 / 2 / 1024 */
+static struct clk extal1_div2048_clk = {
+       .ops    = &div_clk_ops,
+       .priv   = (void *)1024,
+       .parent = &extal1_div2_clk,
+};
+
+/* extal2 / 2 */
+static struct clk extal2_div2_clk = {
+       .ops    = &div_clk_ops,
+       .priv   = (void *)2,
+       .parent = &extal2_clk,
+};
+
+static struct clk_ops followparent_clk_ops = {
+       .recalc = followparent_recalc,
+};
+
+/* Main clock */
+static struct clk system_clk = {
+       .ops    = &followparent_clk_ops,
+};
+
+static struct clk system_div2_clk = {
+       .ops    = &div_clk_ops,
+       .priv   = (void *)2,
+       .parent = &system_clk,
+};
+
+/* r_clk */
+static struct clk r_clk = {
+       .ops    = &followparent_clk_ops,
+};
+
+/* PLLC0/PLLC1 */
+static unsigned long pllc01_recalc(struct clk *clk)
+{
+       unsigned long mult = 1;
+
+       if (__raw_readl(PLLC01CR) & (1 << 14))
+               mult = ((__raw_readl(clk->enable_reg) >> 24) & 0x7f) + 1;
+
+       return clk->parent->rate * mult;
+}
+
+static struct clk_ops pllc01_clk_ops = {
+       .recalc         = pllc01_recalc,
+};
+
+static struct clk pllc0_clk = {
+       .ops            = &pllc01_clk_ops,
+       .flags          = CLK_ENABLE_ON_INIT,
+       .parent         = &system_clk,
+       .enable_reg     = (void __iomem *)FRQCRC,
+};
+
+static struct clk pllc1_clk = {
+       .ops            = &pllc01_clk_ops,
+       .flags          = CLK_ENABLE_ON_INIT,
+       .parent         = &system_div2_clk,
+       .enable_reg     = (void __iomem *)FRQCRA,
+};
+
+/* PLLC1 / 2 */
+static struct clk pllc1_div2_clk = {
+       .ops            = &div_clk_ops,
+       .priv           = (void *)2,
+       .parent         = &pllc1_clk,
+};
+
+struct clk *main_clks[] = {
+       &extalr_clk,
+       &extal1_clk,
+       &extal2_clk,
+       &extal1_div2_clk,
+       &extal1_div1024_clk,
+       &extal1_div2048_clk,
+       &extal2_div2_clk,
+       &dv_clk,
+       &system_clk,
+       &system_div2_clk,
+       &r_clk,
+       &pllc0_clk,
+       &pllc1_clk,
+       &pllc1_div2_clk,
+};
+
+static void div4_kick(struct clk *clk)
+{
+       unsigned long value;
+
+       /* set KICK bit in FRQCRB to update hardware setting */
+       value = __raw_readl(FRQCRB);
+       value |= (1 << 31);
+       __raw_writel(value, FRQCRB);
+}
+
+static int divisors[] = { 2, 3, 4, 6, 8, 12, 16, 18,
+                         24, 32, 36, 48, 0, 72, 96, 0 };
+
+static struct clk_div_mult_table div4_div_mult_table = {
+       .divisors = divisors,
+       .nr_divisors = ARRAY_SIZE(divisors),
+};
+
+static struct clk_div4_table div4_table = {
+       .div_mult_table = &div4_div_mult_table,
+       .kick = div4_kick,
+};
+
+enum {
+       DIV4_I, DIV4_ZG, DIV4_B, DIV4_M1, DIV4_HP,
+       DIV4_HPP, DIV4_S, DIV4_ZB, DIV4_M3, DIV4_CP,
+       DIV4_NR
+};
+
+struct clk div4_clks[DIV4_NR] = {
+       [DIV4_I]        = SH_CLK_DIV4(&pllc1_clk, FRQCRA, 20, 0x6fff, CLK_ENABLE_ON_INIT),
+       [DIV4_ZG]       = SH_CLK_DIV4(&pllc1_clk, FRQCRA, 16, 0x6fff, CLK_ENABLE_ON_INIT),
+       [DIV4_B]        = SH_CLK_DIV4(&pllc1_clk, FRQCRA,  8, 0x6fff, CLK_ENABLE_ON_INIT),
+       [DIV4_M1]       = SH_CLK_DIV4(&pllc1_clk, FRQCRA,  4, 0x6fff, CLK_ENABLE_ON_INIT),
+       [DIV4_HP]       = SH_CLK_DIV4(&pllc1_clk, FRQCRB,  4, 0x6fff, 0),
+       [DIV4_HPP]      = SH_CLK_DIV4(&pllc1_clk, FRQCRC, 20, 0x6fff, 0),
+       [DIV4_S]        = SH_CLK_DIV4(&pllc1_clk, FRQCRC, 12, 0x6fff, 0),
+       [DIV4_ZB]       = SH_CLK_DIV4(&pllc1_clk, FRQCRC,  8, 0x6fff, 0),
+       [DIV4_M3]       = SH_CLK_DIV4(&pllc1_clk, FRQCRC,  4, 0x6fff, 0),
+       [DIV4_CP]       = SH_CLK_DIV4(&pllc1_clk, FRQCRC,  0, 0x6fff, 0),
+};
+
+enum {
+       DIV6_SUB,
+       DIV6_NR
+};
+
+static struct clk div6_clks[DIV6_NR] = {
+       [DIV6_SUB]      = SH_CLK_DIV6(&pllc1_div2_clk, SUBCKCR, 0),
+};
+
+enum {
+       MSTP125,
+       MSTP116, MSTP111,
+
+       MSTP230,
+       MSTP222,
+       MSTP207, MSTP206, MSTP204, MSTP203, MSTP202, MSTP201, MSTP200,
+
+       MSTP329, MSTP323,
+
+       MSTP_NR
+};
+
+static struct clk mstp_clks[MSTP_NR] = {
+       [MSTP125] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 25, 0), /* TMU0 */
+       [MSTP116] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 16, 0), /* IIC0 */
+       [MSTP111] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR1, 11, 0), /* TMU1 */
+
+       [MSTP230] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 30, 0), /* SCIFA6 */
+       [MSTP222] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2, 22, 0), /* SCIFA7 */
+       [MSTP207] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  7, 0), /* SCIFA5 */
+       [MSTP206] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  6, 0), /* SCIFB */
+       [MSTP204] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  4, 0), /* SCIFA0 */
+       [MSTP203] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  3, 0), /* SCIFA1 */
+       [MSTP202] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  2, 0), /* SCIFA2 */
+       [MSTP201] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  1, 0), /* SCIFA3 */
+       [MSTP200] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR2,  0, 0), /* SCIFA4 */
+
+       [MSTP329] = SH_CLK_MSTP32(&r_clk,               SMSTPCR3, 29, 0), /* CMT10 */
+       [MSTP323] = SH_CLK_MSTP32(&div6_clks[DIV6_SUB], SMSTPCR3, 23, 0), /* IIC1 */
+};
+
+static struct clk_lookup lookups[] = {
+       /* main clocks */
+       CLKDEV_CON_ID("extalr",                 &extalr_clk),
+       CLKDEV_CON_ID("extal1",                 &extal1_clk),
+       CLKDEV_CON_ID("extal2",                 &extal2_clk),
+       CLKDEV_CON_ID("extal1_div2",            &extal1_div2_clk),
+       CLKDEV_CON_ID("extal1_div1024",         &extal1_div1024_clk),
+       CLKDEV_CON_ID("extal1_div2048",         &extal1_div2048_clk),
+       CLKDEV_CON_ID("extal2_div2",            &extal2_div2_clk),
+       CLKDEV_CON_ID("dv_clk",                 &dv_clk),
+       CLKDEV_CON_ID("system_clk",             &system_clk),
+       CLKDEV_CON_ID("system_div2_clk",        &system_div2_clk),
+       CLKDEV_CON_ID("r_clk",                  &r_clk),
+       CLKDEV_CON_ID("pllc0_clk",              &pllc0_clk),
+       CLKDEV_CON_ID("pllc1_clk",              &pllc1_clk),
+       CLKDEV_CON_ID("pllc1_div2_clk",         &pllc1_div2_clk),
+
+       /* DIV4 clocks */
+       CLKDEV_CON_ID("i_clk",                  &div4_clks[DIV4_I]),
+       CLKDEV_CON_ID("zg_clk",                 &div4_clks[DIV4_ZG]),
+       CLKDEV_CON_ID("b_clk",                  &div4_clks[DIV4_B]),
+       CLKDEV_CON_ID("m1_clk",                 &div4_clks[DIV4_M1]),
+       CLKDEV_CON_ID("hp_clk",                 &div4_clks[DIV4_HP]),
+       CLKDEV_CON_ID("hpp_clk",                &div4_clks[DIV4_HPP]),
+       CLKDEV_CON_ID("s_clk",                  &div4_clks[DIV4_S]),
+       CLKDEV_CON_ID("zb_clk",                 &div4_clks[DIV4_ZB]),
+       CLKDEV_CON_ID("m3_clk",                 &div4_clks[DIV4_M3]),
+       CLKDEV_CON_ID("cp_clk",                 &div4_clks[DIV4_CP]),
+
+       /* DIV6 clocks */
+       CLKDEV_CON_ID("sub_clk",                &div6_clks[DIV6_SUB]),
+
+       /* MSTP32 clocks */
+       CLKDEV_DEV_ID("sh_tmu.1",               &mstp_clks[MSTP111]),
+       CLKDEV_DEV_ID("i2c-sh_mobile.0",        &mstp_clks[MSTP116]),
+       CLKDEV_DEV_ID("sh_tmu.0",               &mstp_clks[MSTP125]),
+
+       CLKDEV_DEV_ID("sh-sci.4",               &mstp_clks[MSTP200]),
+       CLKDEV_DEV_ID("sh-sci.3",               &mstp_clks[MSTP201]),
+       CLKDEV_DEV_ID("sh-sci.2",               &mstp_clks[MSTP202]),
+       CLKDEV_DEV_ID("sh-sci.1",               &mstp_clks[MSTP203]),
+       CLKDEV_DEV_ID("sh-sci.0",               &mstp_clks[MSTP204]),
+       CLKDEV_DEV_ID("sh-sci.8",               &mstp_clks[MSTP206]),
+       CLKDEV_DEV_ID("sh-sci.5",               &mstp_clks[MSTP207]),
+
+       CLKDEV_DEV_ID("sh-sci.7",               &mstp_clks[MSTP222]),
+       CLKDEV_DEV_ID("sh-sci.6",               &mstp_clks[MSTP230]),
+
+       CLKDEV_DEV_ID("sh_cmt.10",              &mstp_clks[MSTP329]),
+       CLKDEV_DEV_ID("i2c-sh_mobile.1",        &mstp_clks[MSTP323]),
+};
+
+void __init r8a7740_clock_init(u8 md_ck)
+{
+       int k, ret = 0;
+
+       /* detect system clock parent */
+       if (md_ck & MD_CK1)
+               system_clk.parent = &extal1_div2_clk;
+       else
+               system_clk.parent = &extal1_clk;
+
+       /* detect RCLK parent */
+       switch (md_ck & (MD_CK2 | MD_CK1)) {
+       case MD_CK2 | MD_CK1:
+               r_clk.parent = &extal1_div2048_clk;
+               break;
+       case MD_CK2:
+               r_clk.parent = &extal1_div1024_clk;
+               break;
+       case MD_CK1:
+       default:
+               r_clk.parent = &extalr_clk;
+               break;
+       }
+
+       for (k = 0; !ret && (k < ARRAY_SIZE(main_clks)); k++)
+               ret = clk_register(main_clks[k]);
+
+       if (!ret)
+               ret = sh_clk_div4_register(div4_clks, DIV4_NR, &div4_table);
+
+       if (!ret)
+               ret = sh_clk_div6_register(div6_clks, DIV6_NR);
+
+       if (!ret)
+               ret = sh_clk_mstp32_register(mstp_clks, MSTP_NR);
+
+       clkdev_add_table(lookups, ARRAY_SIZE(lookups));
+
+       if (!ret)
+               clk_init();
+       else
+               panic("failed to setup r8a7740 clocks\n");
+}
index 834bd6cd508f1f75625fb1f1126507ca9acf25d4..5055a00a83d4cb119f75653fb924e7bbd051b000 100644 (file)
@@ -53,4 +53,10 @@ extern void sh73a0_secondary_init(unsigned int cpu);
 extern int sh73a0_boot_secondary(unsigned int cpu);
 extern void sh73a0_smp_prepare_cpus(void);
 
+extern void r8a7740_init_irq(void);
+extern void r8a7740_add_early_devices(void);
+extern void r8a7740_add_standard_devices(void);
+extern void r8a7740_clock_init(u8 md_ck);
+extern void r8a7740_pinmux_init(void);
+
 #endif /* __ARCH_MACH_COMMON_H */
diff --git a/arch/arm/mach-shmobile/include/mach/r8a7740.h b/arch/arm/mach-shmobile/include/mach/r8a7740.h
new file mode 100644 (file)
index 0000000..9d447ab
--- /dev/null
@@ -0,0 +1,584 @@
+/*
+ * Copyright (C) 2011  Renesas Solutions Corp.
+ * Copyright (C) 2011  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#ifndef __ASM_R8A7740_H__
+#define __ASM_R8A7740_H__
+
+/*
+ * MD_CKx pin
+ */
+#define MD_CK2 (1 << 2)
+#define MD_CK1 (1 << 1)
+#define MD_CK0 (1 << 0)
+
+/*
+ * Pin Function Controller:
+ *     GPIO_FN_xx - GPIO used to select pin function
+ *     GPIO_PORTxx - GPIO mapped to real I/O pin on CPU
+ */
+enum {
+       /* PORT */
+       GPIO_PORT0, GPIO_PORT1, GPIO_PORT2, GPIO_PORT3, GPIO_PORT4,
+       GPIO_PORT5, GPIO_PORT6, GPIO_PORT7, GPIO_PORT8, GPIO_PORT9,
+
+       GPIO_PORT10, GPIO_PORT11, GPIO_PORT12, GPIO_PORT13, GPIO_PORT14,
+       GPIO_PORT15, GPIO_PORT16, GPIO_PORT17, GPIO_PORT18, GPIO_PORT19,
+
+       GPIO_PORT20, GPIO_PORT21, GPIO_PORT22, GPIO_PORT23, GPIO_PORT24,
+       GPIO_PORT25, GPIO_PORT26, GPIO_PORT27, GPIO_PORT28, GPIO_PORT29,
+
+       GPIO_PORT30, GPIO_PORT31, GPIO_PORT32, GPIO_PORT33, GPIO_PORT34,
+       GPIO_PORT35, GPIO_PORT36, GPIO_PORT37, GPIO_PORT38, GPIO_PORT39,
+
+       GPIO_PORT40, GPIO_PORT41, GPIO_PORT42, GPIO_PORT43, GPIO_PORT44,
+       GPIO_PORT45, GPIO_PORT46, GPIO_PORT47, GPIO_PORT48, GPIO_PORT49,
+
+       GPIO_PORT50, GPIO_PORT51, GPIO_PORT52, GPIO_PORT53, GPIO_PORT54,
+       GPIO_PORT55, GPIO_PORT56, GPIO_PORT57, GPIO_PORT58, GPIO_PORT59,
+
+       GPIO_PORT60, GPIO_PORT61, GPIO_PORT62, GPIO_PORT63, GPIO_PORT64,
+       GPIO_PORT65, GPIO_PORT66, GPIO_PORT67, GPIO_PORT68, GPIO_PORT69,
+
+       GPIO_PORT70, GPIO_PORT71, GPIO_PORT72, GPIO_PORT73, GPIO_PORT74,
+       GPIO_PORT75, GPIO_PORT76, GPIO_PORT77, GPIO_PORT78, GPIO_PORT79,
+
+       GPIO_PORT80, GPIO_PORT81, GPIO_PORT82, GPIO_PORT83, GPIO_PORT84,
+       GPIO_PORT85, GPIO_PORT86, GPIO_PORT87, GPIO_PORT88, GPIO_PORT89,
+
+       GPIO_PORT90, GPIO_PORT91, GPIO_PORT92, GPIO_PORT93, GPIO_PORT94,
+       GPIO_PORT95, GPIO_PORT96, GPIO_PORT97, GPIO_PORT98, GPIO_PORT99,
+
+       GPIO_PORT100, GPIO_PORT101, GPIO_PORT102, GPIO_PORT103, GPIO_PORT104,
+       GPIO_PORT105, GPIO_PORT106, GPIO_PORT107, GPIO_PORT108, GPIO_PORT109,
+
+       GPIO_PORT110, GPIO_PORT111, GPIO_PORT112, GPIO_PORT113, GPIO_PORT114,
+       GPIO_PORT115, GPIO_PORT116, GPIO_PORT117, GPIO_PORT118, GPIO_PORT119,
+
+       GPIO_PORT120, GPIO_PORT121, GPIO_PORT122, GPIO_PORT123, GPIO_PORT124,
+       GPIO_PORT125, GPIO_PORT126, GPIO_PORT127, GPIO_PORT128, GPIO_PORT129,
+
+       GPIO_PORT130, GPIO_PORT131, GPIO_PORT132, GPIO_PORT133, GPIO_PORT134,
+       GPIO_PORT135, GPIO_PORT136, GPIO_PORT137, GPIO_PORT138, GPIO_PORT139,
+
+       GPIO_PORT140, GPIO_PORT141, GPIO_PORT142, GPIO_PORT143, GPIO_PORT144,
+       GPIO_PORT145, GPIO_PORT146, GPIO_PORT147, GPIO_PORT148, GPIO_PORT149,
+
+       GPIO_PORT150, GPIO_PORT151, GPIO_PORT152, GPIO_PORT153, GPIO_PORT154,
+       GPIO_PORT155, GPIO_PORT156, GPIO_PORT157, GPIO_PORT158, GPIO_PORT159,
+
+       GPIO_PORT160, GPIO_PORT161, GPIO_PORT162, GPIO_PORT163, GPIO_PORT164,
+       GPIO_PORT165, GPIO_PORT166, GPIO_PORT167, GPIO_PORT168, GPIO_PORT169,
+
+       GPIO_PORT170, GPIO_PORT171, GPIO_PORT172, GPIO_PORT173, GPIO_PORT174,
+       GPIO_PORT175, GPIO_PORT176, GPIO_PORT177, GPIO_PORT178, GPIO_PORT179,
+
+       GPIO_PORT180, GPIO_PORT181, GPIO_PORT182, GPIO_PORT183, GPIO_PORT184,
+       GPIO_PORT185, GPIO_PORT186, GPIO_PORT187, GPIO_PORT188, GPIO_PORT189,
+
+       GPIO_PORT190, GPIO_PORT191, GPIO_PORT192, GPIO_PORT193, GPIO_PORT194,
+       GPIO_PORT195, GPIO_PORT196, GPIO_PORT197, GPIO_PORT198, GPIO_PORT199,
+
+       GPIO_PORT200, GPIO_PORT201, GPIO_PORT202, GPIO_PORT203, GPIO_PORT204,
+       GPIO_PORT205, GPIO_PORT206, GPIO_PORT207, GPIO_PORT208, GPIO_PORT209,
+
+       GPIO_PORT210, GPIO_PORT211,
+
+       /* IRQ */
+       GPIO_FN_IRQ0_PORT2,     GPIO_FN_IRQ0_PORT13,
+       GPIO_FN_IRQ1,
+       GPIO_FN_IRQ2_PORT11,    GPIO_FN_IRQ2_PORT12,
+       GPIO_FN_IRQ3_PORT10,    GPIO_FN_IRQ3_PORT14,
+       GPIO_FN_IRQ4_PORT15,    GPIO_FN_IRQ4_PORT172,
+       GPIO_FN_IRQ5_PORT0,     GPIO_FN_IRQ5_PORT1,
+       GPIO_FN_IRQ6_PORT121,   GPIO_FN_IRQ6_PORT173,
+       GPIO_FN_IRQ7_PORT120,   GPIO_FN_IRQ7_PORT209,
+       GPIO_FN_IRQ8,
+       GPIO_FN_IRQ9_PORT118,   GPIO_FN_IRQ9_PORT210,
+       GPIO_FN_IRQ10,
+       GPIO_FN_IRQ11,
+       GPIO_FN_IRQ12_PORT42,   GPIO_FN_IRQ12_PORT97,
+       GPIO_FN_IRQ13_PORT64,   GPIO_FN_IRQ13_PORT98,
+       GPIO_FN_IRQ14_PORT63,   GPIO_FN_IRQ14_PORT99,
+       GPIO_FN_IRQ15_PORT62,   GPIO_FN_IRQ15_PORT100,
+       GPIO_FN_IRQ16_PORT68,   GPIO_FN_IRQ16_PORT211,
+       GPIO_FN_IRQ17,
+       GPIO_FN_IRQ18,
+       GPIO_FN_IRQ19,
+       GPIO_FN_IRQ20,
+       GPIO_FN_IRQ21,
+       GPIO_FN_IRQ22,
+       GPIO_FN_IRQ23,
+       GPIO_FN_IRQ24,
+       GPIO_FN_IRQ25,
+       GPIO_FN_IRQ26_PORT58,   GPIO_FN_IRQ26_PORT81,
+       GPIO_FN_IRQ27_PORT57,   GPIO_FN_IRQ27_PORT168,
+       GPIO_FN_IRQ28_PORT56,   GPIO_FN_IRQ28_PORT169,
+       GPIO_FN_IRQ29_PORT50,   GPIO_FN_IRQ29_PORT170,
+       GPIO_FN_IRQ30_PORT49,   GPIO_FN_IRQ30_PORT171,
+       GPIO_FN_IRQ31_PORT41,   GPIO_FN_IRQ31_PORT167,
+
+       /* Function */
+
+       /* DBGT */
+       GPIO_FN_DBGMDT2,        GPIO_FN_DBGMDT1,        GPIO_FN_DBGMDT0,
+       GPIO_FN_DBGMD10,        GPIO_FN_DBGMD11,        GPIO_FN_DBGMD20,
+       GPIO_FN_DBGMD21,
+
+       /* FSI */
+       GPIO_FN_FSIAISLD_PORT0,         /* FSIAISLD Port 0/5 */
+       GPIO_FN_FSIAISLD_PORT5,
+       GPIO_FN_FSIASPDIF_PORT9,        /* FSIASPDIF Port 9/18 */
+       GPIO_FN_FSIASPDIF_PORT18,
+       GPIO_FN_FSIAOSLD1,      GPIO_FN_FSIAOSLD2,
+       GPIO_FN_FSIAOLR,        GPIO_FN_FSIAOBT,
+       GPIO_FN_FSIAOSLD,       GPIO_FN_FSIAOMC,
+       GPIO_FN_FSIACK,         GPIO_FN_FSIAILR,
+       GPIO_FN_FSIAIBT,
+
+       /* FMSI */
+       GPIO_FN_FMSISLD_PORT1, /* FMSISLD Port 1/6 */
+       GPIO_FN_FMSISLD_PORT6,
+       GPIO_FN_FMSIILR,        GPIO_FN_FMSIIBT,
+       GPIO_FN_FMSIOLR,        GPIO_FN_FMSIOBT,
+       GPIO_FN_FMSICK,         GPIO_FN_FMSOILR,
+       GPIO_FN_FMSOIBT,        GPIO_FN_FMSOOLR,
+       GPIO_FN_FMSOOBT,        GPIO_FN_FMSOSLD,
+       GPIO_FN_FMSOCK,
+
+       /* SCIFA0 */
+       GPIO_FN_SCIFA0_SCK,     GPIO_FN_SCIFA0_CTS,
+       GPIO_FN_SCIFA0_RTS,     GPIO_FN_SCIFA0_RXD,
+       GPIO_FN_SCIFA0_TXD,
+
+       /* SCIFA1 */
+       GPIO_FN_SCIFA1_CTS,     GPIO_FN_SCIFA1_SCK,
+       GPIO_FN_SCIFA1_RXD,     GPIO_FN_SCIFA1_TXD,
+       GPIO_FN_SCIFA1_RTS,
+
+       /* SCIFA2 */
+       GPIO_FN_SCIFA2_SCK_PORT22, /* SCIFA2_SCK Port 22/199 */
+       GPIO_FN_SCIFA2_SCK_PORT199,
+       GPIO_FN_SCIFA2_RXD,     GPIO_FN_SCIFA2_TXD,
+       GPIO_FN_SCIFA2_CTS,     GPIO_FN_SCIFA2_RTS,
+
+       /* SCIFA3 */
+       GPIO_FN_SCIFA3_RTS_PORT105, /* MSEL5CR_8_0 */
+       GPIO_FN_SCIFA3_SCK_PORT116,
+       GPIO_FN_SCIFA3_CTS_PORT117,
+       GPIO_FN_SCIFA3_RXD_PORT174,
+       GPIO_FN_SCIFA3_TXD_PORT175,
+
+       GPIO_FN_SCIFA3_RTS_PORT161, /* MSEL5CR_8_1 */
+       GPIO_FN_SCIFA3_SCK_PORT158,
+       GPIO_FN_SCIFA3_CTS_PORT162,
+       GPIO_FN_SCIFA3_RXD_PORT159,
+       GPIO_FN_SCIFA3_TXD_PORT160,
+
+       /* SCIFA4 */
+       GPIO_FN_SCIFA4_RXD_PORT12, /* MSEL5CR[12:11] = 00 */
+       GPIO_FN_SCIFA4_TXD_PORT13,
+
+       GPIO_FN_SCIFA4_RXD_PORT204, /* MSEL5CR[12:11] = 01 */
+       GPIO_FN_SCIFA4_TXD_PORT203,
+
+       GPIO_FN_SCIFA4_RXD_PORT94, /* MSEL5CR[12:11] = 10 */
+       GPIO_FN_SCIFA4_TXD_PORT93,
+
+       GPIO_FN_SCIFA4_SCK_PORT21, /* SCIFA4_SCK Port 21/205 */
+       GPIO_FN_SCIFA4_SCK_PORT205,
+
+       /* SCIFA5 */
+       GPIO_FN_SCIFA5_TXD_PORT20, /* MSEL5CR[15:14] = 00 */
+       GPIO_FN_SCIFA5_RXD_PORT10,
+
+       GPIO_FN_SCIFA5_RXD_PORT207, /* MSEL5CR[15:14] = 01 */
+       GPIO_FN_SCIFA5_TXD_PORT208,
+
+       GPIO_FN_SCIFA5_TXD_PORT91, /* MSEL5CR[15:14] = 10 */
+       GPIO_FN_SCIFA5_RXD_PORT92,
+
+       GPIO_FN_SCIFA5_SCK_PORT23, /* SCIFA5_SCK Port 23/206 */
+       GPIO_FN_SCIFA5_SCK_PORT206,
+
+       /* SCIFA6 */
+       GPIO_FN_SCIFA6_SCK,     GPIO_FN_SCIFA6_RXD,     GPIO_FN_SCIFA6_TXD,
+
+       /* SCIFA7 */
+       GPIO_FN_SCIFA7_TXD,     GPIO_FN_SCIFA7_RXD,
+
+       /* SCIFAB */
+       GPIO_FN_SCIFB_SCK_PORT190, /* MSEL5CR_17_0 */
+       GPIO_FN_SCIFB_RXD_PORT191,
+       GPIO_FN_SCIFB_TXD_PORT192,
+       GPIO_FN_SCIFB_RTS_PORT186,
+       GPIO_FN_SCIFB_CTS_PORT187,
+
+       GPIO_FN_SCIFB_SCK_PORT2, /* MSEL5CR_17_1 */
+       GPIO_FN_SCIFB_RXD_PORT3,
+       GPIO_FN_SCIFB_TXD_PORT4,
+       GPIO_FN_SCIFB_RTS_PORT172,
+       GPIO_FN_SCIFB_CTS_PORT173,
+
+       /* LCD0 */
+       GPIO_FN_LCDC0_SELECT,
+       GPIO_FN_LCD0_D0,        GPIO_FN_LCD0_D1,        GPIO_FN_LCD0_D2,
+       GPIO_FN_LCD0_D3,        GPIO_FN_LCD0_D4,        GPIO_FN_LCD0_D5,
+       GPIO_FN_LCD0_D6,        GPIO_FN_LCD0_D7,        GPIO_FN_LCD0_D8,
+       GPIO_FN_LCD0_D9,        GPIO_FN_LCD0_D10,       GPIO_FN_LCD0_D11,
+       GPIO_FN_LCD0_D12,       GPIO_FN_LCD0_D13,       GPIO_FN_LCD0_D14,
+       GPIO_FN_LCD0_D15,       GPIO_FN_LCD0_D16,       GPIO_FN_LCD0_D17,
+       GPIO_FN_LCD0_DON,       GPIO_FN_LCD0_VCPWC,     GPIO_FN_LCD0_VEPWC,
+
+       GPIO_FN_LCD0_DCK,       GPIO_FN_LCD0_VSYN, /* for RGB */
+       GPIO_FN_LCD0_HSYN,      GPIO_FN_LCD0_DISP, /* for RGB */
+
+       GPIO_FN_LCD0_WR,        GPIO_FN_LCD0_RD, /* for SYS */
+       GPIO_FN_LCD0_CS,        GPIO_FN_LCD0_RS, /* for SYS */
+
+       GPIO_FN_LCD0_D18_PORT163,       GPIO_FN_LCD0_D19_PORT162,
+       GPIO_FN_LCD0_D20_PORT161,       GPIO_FN_LCD0_D21_PORT158,
+       GPIO_FN_LCD0_D22_PORT160,       GPIO_FN_LCD0_D23_PORT159,
+       GPIO_FN_LCD0_LCLK_PORT165,       /* MSEL5CR_6_1 */
+
+       GPIO_FN_LCD0_D18_PORT40,        GPIO_FN_LCD0_D19_PORT4,
+       GPIO_FN_LCD0_D20_PORT3,         GPIO_FN_LCD0_D21_PORT2,
+       GPIO_FN_LCD0_D22_PORT0,         GPIO_FN_LCD0_D23_PORT1,
+       GPIO_FN_LCD0_LCLK_PORT102,      /* MSEL5CR_6_0 */
+
+       /* LCD1 */
+       GPIO_FN_LCDC1_SELECT,
+       GPIO_FN_LCD1_D0,        GPIO_FN_LCD1_D1,        GPIO_FN_LCD1_D2,
+       GPIO_FN_LCD1_D3,        GPIO_FN_LCD1_D4,        GPIO_FN_LCD1_D5,
+       GPIO_FN_LCD1_D6,        GPIO_FN_LCD1_D7,        GPIO_FN_LCD1_D8,
+       GPIO_FN_LCD1_D9,        GPIO_FN_LCD1_D10,       GPIO_FN_LCD1_D11,
+       GPIO_FN_LCD1_D12,       GPIO_FN_LCD1_D13,       GPIO_FN_LCD1_D14,
+       GPIO_FN_LCD1_D15,       GPIO_FN_LCD1_D16,       GPIO_FN_LCD1_D17,
+       GPIO_FN_LCD1_D18,       GPIO_FN_LCD1_D19,       GPIO_FN_LCD1_D20,
+       GPIO_FN_LCD1_D21,       GPIO_FN_LCD1_D22,       GPIO_FN_LCD1_D23,
+       GPIO_FN_LCD1_DON,       GPIO_FN_LCD1_VCPWC,
+       GPIO_FN_LCD1_LCLK,      GPIO_FN_LCD1_VEPWC,
+
+       GPIO_FN_LCD1_DCK,       GPIO_FN_LCD1_VSYN, /* for RGB */
+       GPIO_FN_LCD1_HSYN,      GPIO_FN_LCD1_DISP, /* for RGB */
+
+       GPIO_FN_LCD1_WR,        GPIO_FN_LCD1_RD, /* for SYS */
+       GPIO_FN_LCD1_CS,        GPIO_FN_LCD1_RS, /* for SYS */
+
+       /* RSPI */
+       GPIO_FN_RSPI_SSL0_A,    GPIO_FN_RSPI_SSL1_A,
+       GPIO_FN_RSPI_SSL2_A,    GPIO_FN_RSPI_SSL3_A,
+       GPIO_FN_RSPI_MOSI_A,    GPIO_FN_RSPI_MISO_A,
+       GPIO_FN_RSPI_CK_A,
+
+       /* VIO CKO */
+       GPIO_FN_VIO_CKO1,
+       GPIO_FN_VIO_CKO2,
+       GPIO_FN_VIO_CKO_1,
+       GPIO_FN_VIO_CKO,
+
+       /* VIO0 */
+       GPIO_FN_VIO0_D0,        GPIO_FN_VIO0_D1,        GPIO_FN_VIO0_D2,
+       GPIO_FN_VIO0_D3,        GPIO_FN_VIO0_D4,        GPIO_FN_VIO0_D5,
+       GPIO_FN_VIO0_D6,        GPIO_FN_VIO0_D7,        GPIO_FN_VIO0_D8,
+       GPIO_FN_VIO0_D9,        GPIO_FN_VIO0_D10,       GPIO_FN_VIO0_D11,
+       GPIO_FN_VIO0_D12,       GPIO_FN_VIO0_VD,        GPIO_FN_VIO0_HD,
+       GPIO_FN_VIO0_CLK,       GPIO_FN_VIO0_FIELD,
+
+       GPIO_FN_VIO0_D13_PORT26, /* MSEL5CR_27_0 */
+       GPIO_FN_VIO0_D14_PORT25,
+       GPIO_FN_VIO0_D15_PORT24,
+
+       GPIO_FN_VIO0_D13_PORT22, /* MSEL5CR_27_1 */
+       GPIO_FN_VIO0_D14_PORT95,
+       GPIO_FN_VIO0_D15_PORT96,
+
+       /* VIO1 */
+       GPIO_FN_VIO1_D0,        GPIO_FN_VIO1_D1,        GPIO_FN_VIO1_D2,
+       GPIO_FN_VIO1_D3,        GPIO_FN_VIO1_D4,        GPIO_FN_VIO1_D5,
+       GPIO_FN_VIO1_D6,        GPIO_FN_VIO1_D7,        GPIO_FN_VIO1_VD,
+       GPIO_FN_VIO1_HD,        GPIO_FN_VIO1_CLK,       GPIO_FN_VIO1_FIELD,
+
+       /* TPU0 */
+       GPIO_FN_TPU0TO0,        GPIO_FN_TPU0TO1,
+       GPIO_FN_TPU0TO3,
+       GPIO_FN_TPU0TO2_PORT66, /* TPU0TO2 Port 66/202 */
+       GPIO_FN_TPU0TO2_PORT202,
+
+       /* SSP1 0 */
+       GPIO_FN_STP0_IPD0,      GPIO_FN_STP0_IPD1,      GPIO_FN_STP0_IPD2,
+       GPIO_FN_STP0_IPD3,      GPIO_FN_STP0_IPD4,      GPIO_FN_STP0_IPD5,
+       GPIO_FN_STP0_IPD6,      GPIO_FN_STP0_IPD7,      GPIO_FN_STP0_IPEN,
+       GPIO_FN_STP0_IPCLK,     GPIO_FN_STP0_IPSYNC,
+
+       /* SSP1 1 */
+       GPIO_FN_STP1_IPD1,      GPIO_FN_STP1_IPD2,      GPIO_FN_STP1_IPD3,
+       GPIO_FN_STP1_IPD4,      GPIO_FN_STP1_IPD5,      GPIO_FN_STP1_IPD6,
+       GPIO_FN_STP1_IPD7,      GPIO_FN_STP1_IPCLK,     GPIO_FN_STP1_IPSYNC,
+
+       GPIO_FN_STP1_IPD0_PORT186, /* MSEL5CR_23_0 */
+       GPIO_FN_STP1_IPEN_PORT187,
+
+       GPIO_FN_STP1_IPD0_PORT194, /* MSEL5CR_23_1 */
+       GPIO_FN_STP1_IPEN_PORT193,
+
+       /* SIM */
+       GPIO_FN_SIM_RST,        GPIO_FN_SIM_CLK,
+       GPIO_FN_SIM_D_PORT22, /* SIM_D  Port 22/199 */
+       GPIO_FN_SIM_D_PORT199,
+
+       /* SDHI0 */
+       GPIO_FN_SDHI0_D0,       GPIO_FN_SDHI0_D1,       GPIO_FN_SDHI0_D2,
+       GPIO_FN_SDHI0_D3,       GPIO_FN_SDHI0_CD,       GPIO_FN_SDHI0_WP,
+       GPIO_FN_SDHI0_CMD,      GPIO_FN_SDHI0_CLK,
+
+       /* SDHI1 */
+       GPIO_FN_SDHI1_D0,       GPIO_FN_SDHI1_D1,       GPIO_FN_SDHI1_D2,
+       GPIO_FN_SDHI1_D3,       GPIO_FN_SDHI1_CD,       GPIO_FN_SDHI1_WP,
+       GPIO_FN_SDHI1_CMD,      GPIO_FN_SDHI1_CLK,
+
+       /* SDHI2 */
+       GPIO_FN_SDHI2_D0,       GPIO_FN_SDHI2_D1,       GPIO_FN_SDHI2_D2,
+       GPIO_FN_SDHI2_D3,       GPIO_FN_SDHI2_CLK,      GPIO_FN_SDHI2_CMD,
+
+       GPIO_FN_SDHI2_CD_PORT24, /* MSEL5CR_19_0 */
+       GPIO_FN_SDHI2_WP_PORT25,
+
+       GPIO_FN_SDHI2_WP_PORT177, /* MSEL5CR_19_1 */
+       GPIO_FN_SDHI2_CD_PORT202,
+
+       /* MSIOF2 */
+       GPIO_FN_MSIOF2_TXD,     GPIO_FN_MSIOF2_RXD,     GPIO_FN_MSIOF2_TSCK,
+       GPIO_FN_MSIOF2_SS2,     GPIO_FN_MSIOF2_TSYNC,   GPIO_FN_MSIOF2_SS1,
+       GPIO_FN_MSIOF2_MCK1,    GPIO_FN_MSIOF2_MCK0,    GPIO_FN_MSIOF2_RSYNC,
+       GPIO_FN_MSIOF2_RSCK,
+
+       /* KEYSC */
+       GPIO_FN_KEYIN4,         GPIO_FN_KEYIN5,
+       GPIO_FN_KEYIN6,         GPIO_FN_KEYIN7,
+       GPIO_FN_KEYOUT0,        GPIO_FN_KEYOUT1,        GPIO_FN_KEYOUT2,
+       GPIO_FN_KEYOUT3,        GPIO_FN_KEYOUT4,        GPIO_FN_KEYOUT5,
+       GPIO_FN_KEYOUT6,        GPIO_FN_KEYOUT7,
+
+       GPIO_FN_KEYIN0_PORT43, /* MSEL4CR_18_0 */
+       GPIO_FN_KEYIN1_PORT44,
+       GPIO_FN_KEYIN2_PORT45,
+       GPIO_FN_KEYIN3_PORT46,
+
+       GPIO_FN_KEYIN0_PORT58, /* MSEL4CR_18_1 */
+       GPIO_FN_KEYIN1_PORT57,
+       GPIO_FN_KEYIN2_PORT56,
+       GPIO_FN_KEYIN3_PORT55,
+
+       /* VOU */
+       GPIO_FN_DV_D0,  GPIO_FN_DV_D1,  GPIO_FN_DV_D2,  GPIO_FN_DV_D3,
+       GPIO_FN_DV_D4,  GPIO_FN_DV_D5,  GPIO_FN_DV_D6,  GPIO_FN_DV_D7,
+       GPIO_FN_DV_D8,  GPIO_FN_DV_D9,  GPIO_FN_DV_D10, GPIO_FN_DV_D11,
+       GPIO_FN_DV_D12, GPIO_FN_DV_D13, GPIO_FN_DV_D14, GPIO_FN_DV_D15,
+       GPIO_FN_DV_CLK,
+       GPIO_FN_DV_VSYNC,
+       GPIO_FN_DV_HSYNC,
+
+       /* MEMC */
+       GPIO_FN_MEMC_AD0,       GPIO_FN_MEMC_AD1,       GPIO_FN_MEMC_AD2,
+       GPIO_FN_MEMC_AD3,       GPIO_FN_MEMC_AD4,       GPIO_FN_MEMC_AD5,
+       GPIO_FN_MEMC_AD6,       GPIO_FN_MEMC_AD7,       GPIO_FN_MEMC_AD8,
+       GPIO_FN_MEMC_AD9,       GPIO_FN_MEMC_AD10,      GPIO_FN_MEMC_AD11,
+       GPIO_FN_MEMC_AD12,      GPIO_FN_MEMC_AD13,      GPIO_FN_MEMC_AD14,
+       GPIO_FN_MEMC_AD15,      GPIO_FN_MEMC_CS0,       GPIO_FN_MEMC_INT,
+       GPIO_FN_MEMC_NWE,       GPIO_FN_MEMC_NOE,
+
+       GPIO_FN_MEMC_CS1, /* MSEL4CR_6_0 */
+       GPIO_FN_MEMC_ADV,
+       GPIO_FN_MEMC_WAIT,
+       GPIO_FN_MEMC_BUSCLK,
+
+       GPIO_FN_MEMC_A1, /* MSEL4CR_6_1 */
+       GPIO_FN_MEMC_DREQ0,
+       GPIO_FN_MEMC_DREQ1,
+       GPIO_FN_MEMC_A0,
+
+       /* MMC */
+       GPIO_FN_MMC0_D0_PORT68,         GPIO_FN_MMC0_D1_PORT69,
+       GPIO_FN_MMC0_D2_PORT70,         GPIO_FN_MMC0_D3_PORT71,
+       GPIO_FN_MMC0_D4_PORT72,         GPIO_FN_MMC0_D5_PORT73,
+       GPIO_FN_MMC0_D6_PORT74,         GPIO_FN_MMC0_D7_PORT75,
+       GPIO_FN_MMC0_CLK_PORT66,
+       GPIO_FN_MMC0_CMD_PORT67,        /* MSEL4CR_15_0 */
+
+       GPIO_FN_MMC1_D0_PORT149,        GPIO_FN_MMC1_D1_PORT148,
+       GPIO_FN_MMC1_D2_PORT147,        GPIO_FN_MMC1_D3_PORT146,
+       GPIO_FN_MMC1_D4_PORT145,        GPIO_FN_MMC1_D5_PORT144,
+       GPIO_FN_MMC1_D6_PORT143,        GPIO_FN_MMC1_D7_PORT142,
+       GPIO_FN_MMC1_CLK_PORT103,
+       GPIO_FN_MMC1_CMD_PORT104,       /* MSEL4CR_15_1 */
+
+       /* MSIOF0 */
+       GPIO_FN_MSIOF0_SS1,     GPIO_FN_MSIOF0_SS2,
+       GPIO_FN_MSIOF0_RXD,     GPIO_FN_MSIOF0_TXD,
+       GPIO_FN_MSIOF0_MCK0,    GPIO_FN_MSIOF0_MCK1,
+       GPIO_FN_MSIOF0_RSYNC,   GPIO_FN_MSIOF0_RSCK,
+       GPIO_FN_MSIOF0_TSCK,    GPIO_FN_MSIOF0_TSYNC,
+
+       /* MSIOF1 */
+       GPIO_FN_MSIOF1_RSCK,    GPIO_FN_MSIOF1_RSYNC,
+       GPIO_FN_MSIOF1_MCK0,    GPIO_FN_MSIOF1_MCK1,
+
+       GPIO_FN_MSIOF1_SS2_PORT116,     GPIO_FN_MSIOF1_SS1_PORT117,
+       GPIO_FN_MSIOF1_RXD_PORT118,     GPIO_FN_MSIOF1_TXD_PORT119,
+       GPIO_FN_MSIOF1_TSYNC_PORT120,
+       GPIO_FN_MSIOF1_TSCK_PORT121,    /* MSEL4CR_10_0 */
+
+       GPIO_FN_MSIOF1_SS1_PORT67,      GPIO_FN_MSIOF1_TSCK_PORT72,
+       GPIO_FN_MSIOF1_TSYNC_PORT73,    GPIO_FN_MSIOF1_TXD_PORT74,
+       GPIO_FN_MSIOF1_RXD_PORT75,
+       GPIO_FN_MSIOF1_SS2_PORT202,     /* MSEL4CR_10_1 */
+
+       /* GPIO */
+       GPIO_FN_GPO0,   GPIO_FN_GPI0,
+       GPIO_FN_GPO1,   GPIO_FN_GPI1,
+
+       /* USB0 */
+       GPIO_FN_USB0_OCI,       GPIO_FN_USB0_PPON,      GPIO_FN_VBUS,
+
+       /* USB1 */
+       GPIO_FN_USB1_OCI,       GPIO_FN_USB1_PPON,
+
+       /* BBIF1 */
+       GPIO_FN_BBIF1_RXD,      GPIO_FN_BBIF1_TXD,      GPIO_FN_BBIF1_TSYNC,
+       GPIO_FN_BBIF1_TSCK,     GPIO_FN_BBIF1_RSCK,     GPIO_FN_BBIF1_RSYNC,
+       GPIO_FN_BBIF1_FLOW,     GPIO_FN_BBIF1_RX_FLOW_N,
+
+       /* BBIF2 */
+       GPIO_FN_BBIF2_TXD2_PORT5, /* MSEL5CR_0_0 */
+       GPIO_FN_BBIF2_RXD2_PORT60,
+       GPIO_FN_BBIF2_TSYNC2_PORT6,
+       GPIO_FN_BBIF2_TSCK2_PORT59,
+
+       GPIO_FN_BBIF2_RXD2_PORT90, /* MSEL5CR_0_1 */
+       GPIO_FN_BBIF2_TXD2_PORT183,
+       GPIO_FN_BBIF2_TSCK2_PORT89,
+       GPIO_FN_BBIF2_TSYNC2_PORT184,
+
+       /* BSC / FLCTL / PCMCIA */
+       GPIO_FN_CS0,    GPIO_FN_CS2,    GPIO_FN_CS4,
+       GPIO_FN_CS5B,   GPIO_FN_CS6A,
+       GPIO_FN_CS5A_PORT105, /* CS5A PORT 19/105 */
+       GPIO_FN_CS5A_PORT19,
+       GPIO_FN_IOIS16, /* ? */
+
+       GPIO_FN_A0,     GPIO_FN_A1,     GPIO_FN_A2,     GPIO_FN_A3,
+       GPIO_FN_A4_FOE,         /* share with FLCTL */
+       GPIO_FN_A5_FCDE,        /* share with FLCTL */
+       GPIO_FN_A6,     GPIO_FN_A7,     GPIO_FN_A8,     GPIO_FN_A9,
+       GPIO_FN_A10,    GPIO_FN_A11,    GPIO_FN_A12,    GPIO_FN_A13,
+       GPIO_FN_A14,    GPIO_FN_A15,    GPIO_FN_A16,    GPIO_FN_A17,
+       GPIO_FN_A18,    GPIO_FN_A19,    GPIO_FN_A20,    GPIO_FN_A21,
+       GPIO_FN_A22,    GPIO_FN_A23,    GPIO_FN_A24,    GPIO_FN_A25,
+       GPIO_FN_A26,
+
+       GPIO_FN_D0_NAF0,        GPIO_FN_D1_NAF1,        /* share with FLCTL */
+       GPIO_FN_D2_NAF2,        GPIO_FN_D3_NAF3,        /* share with FLCTL */
+       GPIO_FN_D4_NAF4,        GPIO_FN_D5_NAF5,        /* share with FLCTL */
+       GPIO_FN_D6_NAF6,        GPIO_FN_D7_NAF7,        /* share with FLCTL */
+       GPIO_FN_D8_NAF8,        GPIO_FN_D9_NAF9,        /* share with FLCTL */
+       GPIO_FN_D10_NAF10,      GPIO_FN_D11_NAF11,      /* share with FLCTL */
+       GPIO_FN_D12_NAF12,      GPIO_FN_D13_NAF13,      /* share with FLCTL */
+       GPIO_FN_D14_NAF14,      GPIO_FN_D15_NAF15,      /* share with FLCTL */
+
+       GPIO_FN_D16,    GPIO_FN_D17,    GPIO_FN_D18,    GPIO_FN_D19,
+       GPIO_FN_D20,    GPIO_FN_D21,    GPIO_FN_D22,    GPIO_FN_D23,
+       GPIO_FN_D24,    GPIO_FN_D25,    GPIO_FN_D26,    GPIO_FN_D27,
+       GPIO_FN_D28,    GPIO_FN_D29,    GPIO_FN_D30,    GPIO_FN_D31,
+
+       GPIO_FN_WE0_FWE,        /* share with FLCTL */
+       GPIO_FN_WE1,
+       GPIO_FN_WE2_ICIORD,     /* share with PCMCIA */
+       GPIO_FN_WE3_ICIOWR,     /* share with PCMCIA */
+       GPIO_FN_CKO,    GPIO_FN_BS,     GPIO_FN_RDWR,
+       GPIO_FN_RD_FSC,         /* share with FLCTL */
+       GPIO_FN_WAIT_PORT177,   /* WAIT Port 90/177 */
+       GPIO_FN_WAIT_PORT90,
+
+       GPIO_FN_FCE0,   GPIO_FN_FCE1,   GPIO_FN_FRB, /* FLCTL */
+
+       /* IRDA */
+       GPIO_FN_IRDA_FIRSEL,    GPIO_FN_IRDA_IN,        GPIO_FN_IRDA_OUT,
+
+       /* ATAPI */
+       GPIO_FN_IDE_D0,         GPIO_FN_IDE_D1,         GPIO_FN_IDE_D2,
+       GPIO_FN_IDE_D3,         GPIO_FN_IDE_D4,         GPIO_FN_IDE_D5,
+       GPIO_FN_IDE_D6,         GPIO_FN_IDE_D7,         GPIO_FN_IDE_D8,
+       GPIO_FN_IDE_D9,         GPIO_FN_IDE_D10,        GPIO_FN_IDE_D11,
+       GPIO_FN_IDE_D12,        GPIO_FN_IDE_D13,        GPIO_FN_IDE_D14,
+       GPIO_FN_IDE_D15,        GPIO_FN_IDE_A0,         GPIO_FN_IDE_A1,
+       GPIO_FN_IDE_A2,         GPIO_FN_IDE_CS0,        GPIO_FN_IDE_CS1,
+       GPIO_FN_IDE_IOWR,       GPIO_FN_IDE_IORD,       GPIO_FN_IDE_IORDY,
+       GPIO_FN_IDE_INT,        GPIO_FN_IDE_RST,        GPIO_FN_IDE_DIRECTION,
+       GPIO_FN_IDE_EXBUF_ENB,  GPIO_FN_IDE_IODACK,     GPIO_FN_IDE_IODREQ,
+
+       /* RMII */
+       GPIO_FN_RMII_CRS_DV,    GPIO_FN_RMII_RX_ER,     GPIO_FN_RMII_RXD0,
+       GPIO_FN_RMII_RXD1,      GPIO_FN_RMII_TX_EN,     GPIO_FN_RMII_TXD0,
+       GPIO_FN_RMII_MDC,       GPIO_FN_RMII_TXD1,      GPIO_FN_RMII_MDIO,
+       GPIO_FN_RMII_REF50CK,   /* for RMII */
+       GPIO_FN_RMII_REF125CK,  /* for GMII */
+
+       /* GEther */
+       GPIO_FN_ET_TX_CLK,      GPIO_FN_ET_TX_EN,       GPIO_FN_ET_ETXD0,
+       GPIO_FN_ET_ETXD1,       GPIO_FN_ET_ETXD2,       GPIO_FN_ET_ETXD3,
+       GPIO_FN_ET_ETXD4,       GPIO_FN_ET_ETXD5, /* for GEther */
+       GPIO_FN_ET_ETXD6,       GPIO_FN_ET_ETXD7, /* for GEther */
+       GPIO_FN_ET_COL,         GPIO_FN_ET_TX_ER,
+       GPIO_FN_ET_RX_CLK,      GPIO_FN_ET_RX_DV,
+       GPIO_FN_ET_ERXD0,       GPIO_FN_ET_ERXD1,
+       GPIO_FN_ET_ERXD2,       GPIO_FN_ET_ERXD3,
+       GPIO_FN_ET_ERXD4,       GPIO_FN_ET_ERXD5, /* for GEther */
+       GPIO_FN_ET_ERXD6,       GPIO_FN_ET_ERXD7, /* for GEther */
+       GPIO_FN_ET_RX_ER,       GPIO_FN_ET_CRS,
+       GPIO_FN_ET_MDC,         GPIO_FN_ET_MDIO,
+       GPIO_FN_ET_LINK,        GPIO_FN_ET_PHY_INT,
+       GPIO_FN_ET_WOL,         GPIO_FN_ET_GTX_CLK,
+
+       /* DMA0 */
+       GPIO_FN_DREQ0,          GPIO_FN_DACK0,
+
+       /* DMA1 */
+       GPIO_FN_DREQ1,          GPIO_FN_DACK1,
+
+       /* SYSC */
+       GPIO_FN_RESETOUTS,
+       GPIO_FN_RESETP_PULLUP,
+       GPIO_FN_RESETP_PLAIN,
+
+       /* SDENC */
+       GPIO_FN_SDENC_CPG,
+       GPIO_FN_SDENC_DV_CLKI,
+
+       /* IRREM */
+       GPIO_FN_IROUT,
+
+       /* DEBUG */
+       GPIO_FN_EDEBGREQ_PULLDOWN,
+       GPIO_FN_EDEBGREQ_PULLUP,
+
+       GPIO_FN_TRACEAUD_FROM_VIO,
+       GPIO_FN_TRACEAUD_FROM_LCDC0,
+       GPIO_FN_TRACEAUD_FROM_MEMC,
+};
+
+#endif /* __ASM_R8A7740_H__ */
diff --git a/arch/arm/mach-shmobile/intc-r8a7740.c b/arch/arm/mach-shmobile/intc-r8a7740.c
new file mode 100644 (file)
index 0000000..c62a205
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * R8A7740 processor support
+ *
+ * Copyright (C) 2011  Renesas Solutions Corp.
+ * Copyright (C) 2011  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+
+#include <linux/irq.h>
+#include <linux/io.h>
+#include <asm/hardware/gic.h>
+
+#define INTA_CTRL      0xe605807c
+
+static int r8a7740_set_wake(struct irq_data *data, unsigned int on)
+{
+       return 0; /* always allow wakeup */
+}
+
+void __init r8a7740_init_irq(void)
+{
+       void __iomem *gic_dist_base = __io(0xf0001000);
+       void __iomem *gic_cpu_base = __io(0xf0000000);
+
+       /*
+        * Change INT_SEL INTCA->GIC
+        * (on GPIO)
+        */
+       __raw_writel(__raw_readl(INTA_CTRL) & ~(1 << 1), INTA_CTRL);
+
+       gic_init(0, 29, gic_dist_base, gic_cpu_base);
+       gic_arch_extn.irq_set_wake = r8a7740_set_wake;
+}
diff --git a/arch/arm/mach-shmobile/setup-r8a7740.c b/arch/arm/mach-shmobile/setup-r8a7740.c
new file mode 100644 (file)
index 0000000..5548518
--- /dev/null
@@ -0,0 +1,246 @@
+/*
+ * R8A7740 processor support
+ *
+ * Copyright (C) 2011  Renesas Solutions Corp.
+ * Copyright (C) 2011  Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * 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.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+ */
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/serial_sci.h>
+#include <linux/sh_timer.h>
+#include <mach/r8a7740.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+
+/* SCIFA0 */
+static struct plat_sci_port scif0_platform_data = {
+       .mapbase        = 0xe6c40000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(100)),
+};
+
+static struct platform_device scif0_device = {
+       .name           = "sh-sci",
+       .id             = 0,
+       .dev            = {
+               .platform_data  = &scif0_platform_data,
+       },
+};
+
+/* SCIFA1 */
+static struct plat_sci_port scif1_platform_data = {
+       .mapbase        = 0xe6c50000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(101)),
+};
+
+static struct platform_device scif1_device = {
+       .name           = "sh-sci",
+       .id             = 1,
+       .dev            = {
+               .platform_data  = &scif1_platform_data,
+       },
+};
+
+/* SCIFA2 */
+static struct plat_sci_port scif2_platform_data = {
+       .mapbase        = 0xe6c60000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(102)),
+};
+
+static struct platform_device scif2_device = {
+       .name           = "sh-sci",
+       .id             = 2,
+       .dev            = {
+               .platform_data  = &scif2_platform_data,
+       },
+};
+
+/* SCIFA3 */
+static struct plat_sci_port scif3_platform_data = {
+       .mapbase        = 0xe6c70000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(103)),
+};
+
+static struct platform_device scif3_device = {
+       .name           = "sh-sci",
+       .id             = 3,
+       .dev            = {
+               .platform_data  = &scif3_platform_data,
+       },
+};
+
+/* SCIFA4 */
+static struct plat_sci_port scif4_platform_data = {
+       .mapbase        = 0xe6c80000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(104)),
+};
+
+static struct platform_device scif4_device = {
+       .name           = "sh-sci",
+       .id             = 4,
+       .dev            = {
+               .platform_data  = &scif4_platform_data,
+       },
+};
+
+/* SCIFA5 */
+static struct plat_sci_port scif5_platform_data = {
+       .mapbase        = 0xe6cb0000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(105)),
+};
+
+static struct platform_device scif5_device = {
+       .name           = "sh-sci",
+       .id             = 5,
+       .dev            = {
+               .platform_data  = &scif5_platform_data,
+       },
+};
+
+/* SCIFA6 */
+static struct plat_sci_port scif6_platform_data = {
+       .mapbase        = 0xe6cc0000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(106)),
+};
+
+static struct platform_device scif6_device = {
+       .name           = "sh-sci",
+       .id             = 6,
+       .dev            = {
+               .platform_data  = &scif6_platform_data,
+       },
+};
+
+/* SCIFA7 */
+static struct plat_sci_port scif7_platform_data = {
+       .mapbase        = 0xe6cd0000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFA,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(107)),
+};
+
+static struct platform_device scif7_device = {
+       .name           = "sh-sci",
+       .id             = 7,
+       .dev            = {
+               .platform_data  = &scif7_platform_data,
+       },
+};
+
+/* SCIFB */
+static struct plat_sci_port scifb_platform_data = {
+       .mapbase        = 0xe6c30000,
+       .flags          = UPF_BOOT_AUTOCONF,
+       .scscr          = SCSCR_RE | SCSCR_TE,
+       .scbrr_algo_id  = SCBRR_ALGO_4,
+       .type           = PORT_SCIFB,
+       .irqs           = SCIx_IRQ_MUXED(gic_spi(108)),
+};
+
+static struct platform_device scifb_device = {
+       .name           = "sh-sci",
+       .id             = 8,
+       .dev            = {
+               .platform_data  = &scifb_platform_data,
+       },
+};
+
+/* CMT */
+static struct sh_timer_config cmt10_platform_data = {
+       .name = "CMT10",
+       .channel_offset = 0x10,
+       .timer_bit = 0,
+       .clockevent_rating = 125,
+       .clocksource_rating = 125,
+};
+
+static struct resource cmt10_resources[] = {
+       [0] = {
+               .name   = "CMT10",
+               .start  = 0xe6138010,
+               .end    = 0xe613801b,
+               .flags  = IORESOURCE_MEM,
+       },
+       [1] = {
+               .start  = gic_spi(58),
+               .flags  = IORESOURCE_IRQ,
+       },
+};
+
+static struct platform_device cmt10_device = {
+       .name           = "sh_cmt",
+       .id             = 10,
+       .dev = {
+               .platform_data  = &cmt10_platform_data,
+       },
+       .resource       = cmt10_resources,
+       .num_resources  = ARRAY_SIZE(cmt10_resources),
+};
+
+static struct platform_device *r8a7740_early_devices[] __initdata = {
+       &scif0_device,
+       &scif1_device,
+       &scif2_device,
+       &scif3_device,
+       &scif4_device,
+       &scif5_device,
+       &scif6_device,
+       &scif7_device,
+       &scifb_device,
+       &cmt10_device,
+};
+
+void __init r8a7740_add_standard_devices(void)
+{
+       platform_add_devices(r8a7740_early_devices,
+                           ARRAY_SIZE(r8a7740_early_devices));
+}
+
+void __init r8a7740_add_early_devices(void)
+{
+       early_platform_add_devices(r8a7740_early_devices,
+                                  ARRAY_SIZE(r8a7740_early_devices));
+}
index e9bed038aa1fc11e3c3b2f0ef3c01e967118b846..a1a2d364f92b6a5fa92e865e4fd91954ce6119dc 100644 (file)
@@ -17,7 +17,9 @@
     defined(CONFIG_ARCH_SH73A0) || \
     defined(CONFIG_ARCH_SH7367) || \
     defined(CONFIG_ARCH_SH7377) || \
-    defined(CONFIG_ARCH_SH7372)
+    defined(CONFIG_ARCH_SH7372) || \
+    defined(CONFIG_ARCH_R8A7740)
+
 # define SCxSR_RDxF_CLEAR(port)         (sci_in(port, SCxSR) & 0xfffc)
 # define SCxSR_ERROR_CLEAR(port) (sci_in(port, SCxSR) & 0xfd73)
 # define SCxSR_TDxE_CLEAR(port)         (sci_in(port, SCxSR) & 0xffdf)