Commit ef7fc902 authored by Paul Mundt's avatar Paul Mundt

Merge branch 'common/serial-rework' into sh-latest

parents fac6c2a8 f43dc23d
...@@ -35,6 +35,8 @@ ...@@ -35,6 +35,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xe6c40000, .mapbase = 0xe6c40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc00), evt2irq(0xc00), .irqs = { evt2irq(0xc00), evt2irq(0xc00),
evt2irq(0xc00), evt2irq(0xc00) }, evt2irq(0xc00), evt2irq(0xc00) },
...@@ -52,6 +54,8 @@ static struct platform_device scif0_device = { ...@@ -52,6 +54,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xe6c50000, .mapbase = 0xe6c50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc20), evt2irq(0xc20), .irqs = { evt2irq(0xc20), evt2irq(0xc20),
evt2irq(0xc20), evt2irq(0xc20) }, evt2irq(0xc20), evt2irq(0xc20) },
...@@ -69,6 +73,8 @@ static struct platform_device scif1_device = { ...@@ -69,6 +73,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xe6c60000, .mapbase = 0xe6c60000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc40), evt2irq(0xc40), .irqs = { evt2irq(0xc40), evt2irq(0xc40),
evt2irq(0xc40), evt2irq(0xc40) }, evt2irq(0xc40), evt2irq(0xc40) },
...@@ -86,6 +92,8 @@ static struct platform_device scif2_device = { ...@@ -86,6 +92,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xe6c70000, .mapbase = 0xe6c70000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc60), evt2irq(0xc60), .irqs = { evt2irq(0xc60), evt2irq(0xc60),
evt2irq(0xc60), evt2irq(0xc60) }, evt2irq(0xc60), evt2irq(0xc60) },
...@@ -103,6 +111,8 @@ static struct platform_device scif3_device = { ...@@ -103,6 +111,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xe6c80000, .mapbase = 0xe6c80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd20), evt2irq(0xd20), .irqs = { evt2irq(0xd20), evt2irq(0xd20),
evt2irq(0xd20), evt2irq(0xd20) }, evt2irq(0xd20), evt2irq(0xd20) },
...@@ -120,6 +130,8 @@ static struct platform_device scif4_device = { ...@@ -120,6 +130,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xe6cb0000, .mapbase = 0xe6cb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd40), evt2irq(0xd40), .irqs = { evt2irq(0xd40), evt2irq(0xd40),
evt2irq(0xd40), evt2irq(0xd40) }, evt2irq(0xd40), evt2irq(0xd40) },
...@@ -137,6 +149,8 @@ static struct platform_device scif5_device = { ...@@ -137,6 +149,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xe6c30000, .mapbase = 0xe6c30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd60), evt2irq(0xd60), .irqs = { evt2irq(0xd60), evt2irq(0xd60),
evt2irq(0xd60), evt2irq(0xd60) }, evt2irq(0xd60), evt2irq(0xd60) },
......
...@@ -38,6 +38,8 @@ ...@@ -38,6 +38,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xe6c40000, .mapbase = 0xe6c40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0c00), evt2irq(0x0c00), .irqs = { evt2irq(0x0c00), evt2irq(0x0c00),
evt2irq(0x0c00), evt2irq(0x0c00) }, evt2irq(0x0c00), evt2irq(0x0c00) },
...@@ -55,6 +57,8 @@ static struct platform_device scif0_device = { ...@@ -55,6 +57,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xe6c50000, .mapbase = 0xe6c50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0c20), evt2irq(0x0c20), .irqs = { evt2irq(0x0c20), evt2irq(0x0c20),
evt2irq(0x0c20), evt2irq(0x0c20) }, evt2irq(0x0c20), evt2irq(0x0c20) },
...@@ -72,6 +76,8 @@ static struct platform_device scif1_device = { ...@@ -72,6 +76,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xe6c60000, .mapbase = 0xe6c60000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0c40), evt2irq(0x0c40), .irqs = { evt2irq(0x0c40), evt2irq(0x0c40),
evt2irq(0x0c40), evt2irq(0x0c40) }, evt2irq(0x0c40), evt2irq(0x0c40) },
...@@ -89,6 +95,8 @@ static struct platform_device scif2_device = { ...@@ -89,6 +95,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xe6c70000, .mapbase = 0xe6c70000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0c60), evt2irq(0x0c60), .irqs = { evt2irq(0x0c60), evt2irq(0x0c60),
evt2irq(0x0c60), evt2irq(0x0c60) }, evt2irq(0x0c60), evt2irq(0x0c60) },
...@@ -106,6 +114,8 @@ static struct platform_device scif3_device = { ...@@ -106,6 +114,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xe6c80000, .mapbase = 0xe6c80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0d20), evt2irq(0x0d20), .irqs = { evt2irq(0x0d20), evt2irq(0x0d20),
evt2irq(0x0d20), evt2irq(0x0d20) }, evt2irq(0x0d20), evt2irq(0x0d20) },
...@@ -123,6 +133,8 @@ static struct platform_device scif4_device = { ...@@ -123,6 +133,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xe6cb0000, .mapbase = 0xe6cb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { evt2irq(0x0d40), evt2irq(0x0d40), .irqs = { evt2irq(0x0d40), evt2irq(0x0d40),
evt2irq(0x0d40), evt2irq(0x0d40) }, evt2irq(0x0d40), evt2irq(0x0d40) },
...@@ -140,6 +152,8 @@ static struct platform_device scif5_device = { ...@@ -140,6 +152,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xe6c30000, .mapbase = 0xe6c30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFB, .type = PORT_SCIFB,
.irqs = { evt2irq(0x0d60), evt2irq(0x0d60), .irqs = { evt2irq(0x0d60), evt2irq(0x0d60),
evt2irq(0x0d60), evt2irq(0x0d60) }, evt2irq(0x0d60), evt2irq(0x0d60) },
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xe6c40000, .mapbase = 0xe6c40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc00), evt2irq(0xc00), .irqs = { evt2irq(0xc00), evt2irq(0xc00),
evt2irq(0xc00), evt2irq(0xc00) }, evt2irq(0xc00), evt2irq(0xc00) },
...@@ -53,6 +55,8 @@ static struct platform_device scif0_device = { ...@@ -53,6 +55,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xe6c50000, .mapbase = 0xe6c50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc20), evt2irq(0xc20), .irqs = { evt2irq(0xc20), evt2irq(0xc20),
evt2irq(0xc20), evt2irq(0xc20) }, evt2irq(0xc20), evt2irq(0xc20) },
...@@ -70,6 +74,8 @@ static struct platform_device scif1_device = { ...@@ -70,6 +74,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xe6c60000, .mapbase = 0xe6c60000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc40), evt2irq(0xc40), .irqs = { evt2irq(0xc40), evt2irq(0xc40),
evt2irq(0xc40), evt2irq(0xc40) }, evt2irq(0xc40), evt2irq(0xc40) },
...@@ -87,6 +93,8 @@ static struct platform_device scif2_device = { ...@@ -87,6 +93,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xe6c70000, .mapbase = 0xe6c70000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xc60), evt2irq(0xc60), .irqs = { evt2irq(0xc60), evt2irq(0xc60),
evt2irq(0xc60), evt2irq(0xc60) }, evt2irq(0xc60), evt2irq(0xc60) },
...@@ -104,6 +112,8 @@ static struct platform_device scif3_device = { ...@@ -104,6 +112,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xe6c80000, .mapbase = 0xe6c80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd20), evt2irq(0xd20), .irqs = { evt2irq(0xd20), evt2irq(0xd20),
evt2irq(0xd20), evt2irq(0xd20) }, evt2irq(0xd20), evt2irq(0xd20) },
...@@ -121,6 +131,8 @@ static struct platform_device scif4_device = { ...@@ -121,6 +131,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xe6cb0000, .mapbase = 0xe6cb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd40), evt2irq(0xd40), .irqs = { evt2irq(0xd40), evt2irq(0xd40),
evt2irq(0xd40), evt2irq(0xd40) }, evt2irq(0xd40), evt2irq(0xd40) },
...@@ -138,6 +150,8 @@ static struct platform_device scif5_device = { ...@@ -138,6 +150,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xe6cc0000, .mapbase = 0xe6cc0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { intcs_evt2irq(0x1a80), intcs_evt2irq(0x1a80), .irqs = { intcs_evt2irq(0x1a80), intcs_evt2irq(0x1a80),
intcs_evt2irq(0x1a80), intcs_evt2irq(0x1a80) }, intcs_evt2irq(0x1a80), intcs_evt2irq(0x1a80) },
...@@ -155,6 +169,8 @@ static struct platform_device scif6_device = { ...@@ -155,6 +169,8 @@ static struct platform_device scif6_device = {
static struct plat_sci_port scif7_platform_data = { static struct plat_sci_port scif7_platform_data = {
.mapbase = 0xe6c30000, .mapbase = 0xe6c30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { evt2irq(0xd60), evt2irq(0xd60), .irqs = { evt2irq(0xd60), evt2irq(0xd60),
evt2irq(0xd60), evt2irq(0xd60) }, evt2irq(0xd60), evt2irq(0xd60) },
......
...@@ -36,6 +36,8 @@ ...@@ -36,6 +36,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xe6c40000, .mapbase = 0xe6c40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(72), gic_spi(72), .irqs = { gic_spi(72), gic_spi(72),
gic_spi(72), gic_spi(72) }, gic_spi(72), gic_spi(72) },
...@@ -52,6 +54,8 @@ static struct platform_device scif0_device = { ...@@ -52,6 +54,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xe6c50000, .mapbase = 0xe6c50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(73), gic_spi(73), .irqs = { gic_spi(73), gic_spi(73),
gic_spi(73), gic_spi(73) }, gic_spi(73), gic_spi(73) },
...@@ -68,6 +72,8 @@ static struct platform_device scif1_device = { ...@@ -68,6 +72,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xe6c60000, .mapbase = 0xe6c60000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(74), gic_spi(74), .irqs = { gic_spi(74), gic_spi(74),
gic_spi(74), gic_spi(74) }, gic_spi(74), gic_spi(74) },
...@@ -84,6 +90,8 @@ static struct platform_device scif2_device = { ...@@ -84,6 +90,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xe6c70000, .mapbase = 0xe6c70000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(75), gic_spi(75), .irqs = { gic_spi(75), gic_spi(75),
gic_spi(75), gic_spi(75) }, gic_spi(75), gic_spi(75) },
...@@ -100,6 +108,8 @@ static struct platform_device scif3_device = { ...@@ -100,6 +108,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xe6c80000, .mapbase = 0xe6c80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(78), gic_spi(78), .irqs = { gic_spi(78), gic_spi(78),
gic_spi(78), gic_spi(78) }, gic_spi(78), gic_spi(78) },
...@@ -116,6 +126,8 @@ static struct platform_device scif4_device = { ...@@ -116,6 +126,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xe6cb0000, .mapbase = 0xe6cb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(79), gic_spi(79), .irqs = { gic_spi(79), gic_spi(79),
gic_spi(79), gic_spi(79) }, gic_spi(79), gic_spi(79) },
...@@ -132,6 +144,8 @@ static struct platform_device scif5_device = { ...@@ -132,6 +144,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xe6cc0000, .mapbase = 0xe6cc0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(156), gic_spi(156), .irqs = { gic_spi(156), gic_spi(156),
gic_spi(156), gic_spi(156) }, gic_spi(156), gic_spi(156) },
...@@ -148,6 +162,8 @@ static struct platform_device scif6_device = { ...@@ -148,6 +162,8 @@ static struct platform_device scif6_device = {
static struct plat_sci_port scif7_platform_data = { static struct plat_sci_port scif7_platform_data = {
.mapbase = 0xe6cd0000, .mapbase = 0xe6cd0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { gic_spi(143), gic_spi(143), .irqs = { gic_spi(143), gic_spi(143),
gic_spi(143), gic_spi(143) }, gic_spi(143), gic_spi(143) },
...@@ -164,6 +180,8 @@ static struct platform_device scif7_device = { ...@@ -164,6 +180,8 @@ static struct platform_device scif7_device = {
static struct plat_sci_port scif8_platform_data = { static struct plat_sci_port scif8_platform_data = {
.mapbase = 0xe6c30000, .mapbase = 0xe6c30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIFB, .type = PORT_SCIFB,
.irqs = { gic_spi(80), gic_spi(80), .irqs = { gic_spi(80), gic_spi(80),
gic_spi(80), gic_spi(80) }, gic_spi(80), gic_spi(80) },
......
...@@ -62,6 +62,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7619", vectors, NULL, ...@@ -62,6 +62,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7619", vectors, NULL,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xf8400000, .mapbase = 0xf8400000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 88, 88, 88, 88 }, .irqs = { 88, 88, 88, 88 },
}; };
...@@ -77,6 +79,8 @@ static struct platform_device scif0_device = { ...@@ -77,6 +79,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xf8410000, .mapbase = 0xf8410000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 92, 92, 92, 92 }, .irqs = { 92, 92, 92, 92 },
}; };
...@@ -92,6 +96,8 @@ static struct platform_device scif1_device = { ...@@ -92,6 +96,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xf8420000, .mapbase = 0xf8420000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 96, 96, 96, 96 }, .irqs = { 96, 96, 96, 96 },
}; };
......
...@@ -201,6 +201,8 @@ static struct platform_device mtu2_2_device = { ...@@ -201,6 +201,8 @@ static struct platform_device mtu2_2_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xff804000, .mapbase = 0xff804000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 220, 220, 220, 220 }, .irqs = { 220, 220, 220, 220 },
}; };
......
...@@ -180,6 +180,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups, ...@@ -180,6 +180,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xfffe8000, .mapbase = 0xfffe8000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 180, 180, 180, 180 } .irqs = { 180, 180, 180, 180 }
}; };
...@@ -195,6 +197,8 @@ static struct platform_device scif0_device = { ...@@ -195,6 +197,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800, .mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 184, 184, 184, 184 } .irqs = { 184, 184, 184, 184 }
}; };
...@@ -210,6 +214,8 @@ static struct platform_device scif1_device = { ...@@ -210,6 +214,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000, .mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 188, 188, 188, 188 } .irqs = { 188, 188, 188, 188 }
}; };
...@@ -225,6 +231,8 @@ static struct platform_device scif2_device = { ...@@ -225,6 +231,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800, .mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 192, 192, 192, 192 } .irqs = { 192, 192, 192, 192 }
}; };
...@@ -240,6 +248,8 @@ static struct platform_device scif3_device = { ...@@ -240,6 +248,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xfffea000, .mapbase = 0xfffea000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 } .irqs = { 196, 196, 196, 196 }
}; };
...@@ -255,6 +265,8 @@ static struct platform_device scif4_device = { ...@@ -255,6 +265,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xfffea800, .mapbase = 0xfffea800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 } .irqs = { 200, 200, 200, 200 }
}; };
...@@ -270,6 +282,8 @@ static struct platform_device scif5_device = { ...@@ -270,6 +282,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xfffeb000, .mapbase = 0xfffeb000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 } .irqs = { 204, 204, 204, 204 }
}; };
...@@ -285,6 +299,8 @@ static struct platform_device scif6_device = { ...@@ -285,6 +299,8 @@ static struct platform_device scif6_device = {
static struct plat_sci_port scif7_platform_data = { static struct plat_sci_port scif7_platform_data = {
.mapbase = 0xfffeb800, .mapbase = 0xfffeb800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 208, 208, 208, 208 } .irqs = { 208, 208, 208, 208 }
}; };
......
...@@ -176,6 +176,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups, ...@@ -176,6 +176,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xfffe8000, .mapbase = 0xfffe8000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 192, 192, 192, 192 }, .irqs = { 192, 192, 192, 192 },
}; };
...@@ -191,6 +193,8 @@ static struct platform_device scif0_device = { ...@@ -191,6 +193,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800, .mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 }, .irqs = { 196, 196, 196, 196 },
}; };
...@@ -206,6 +210,8 @@ static struct platform_device scif1_device = { ...@@ -206,6 +210,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000, .mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 }, .irqs = { 200, 200, 200, 200 },
}; };
...@@ -221,6 +227,8 @@ static struct platform_device scif2_device = { ...@@ -221,6 +227,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800, .mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 }, .irqs = { 204, 204, 204, 204 },
}; };
......
...@@ -136,6 +136,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups, ...@@ -136,6 +136,8 @@ static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xfffe8000, .mapbase = 0xfffe8000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 240, 240, 240, 240 }, .irqs = { 240, 240, 240, 240 },
}; };
...@@ -151,6 +153,8 @@ static struct platform_device scif0_device = { ...@@ -151,6 +153,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800, .mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 244, 244, 244, 244 }, .irqs = { 244, 244, 244, 244 },
}; };
...@@ -166,6 +170,8 @@ static struct platform_device scif1_device = { ...@@ -166,6 +170,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000, .mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 248, 248, 248, 248 }, .irqs = { 248, 248, 248, 248 },
}; };
...@@ -181,6 +187,8 @@ static struct platform_device scif2_device = { ...@@ -181,6 +187,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800, .mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 252, 252, 252, 252 }, .irqs = { 252, 252, 252, 252 },
}; };
......
...@@ -70,6 +70,9 @@ static DECLARE_INTC_DESC(intc_desc, "sh7705", vectors, NULL, ...@@ -70,6 +70,9 @@ static DECLARE_INTC_DESC(intc_desc, "sh7705", vectors, NULL,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xa4410000, .mapbase = 0xa4410000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TIE | SCSCR_RIE | SCSCR_TE |
SCSCR_RE | SCSCR_CKE1 | SCSCR_CKE0,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 56, 56, 56 }, .irqs = { 56, 56, 56 },
}; };
...@@ -85,6 +88,8 @@ static struct platform_device scif0_device = { ...@@ -85,6 +88,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xa4400000, .mapbase = 0xa4400000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TIE | SCSCR_RIE | SCSCR_TE | SCSCR_RE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 52, 52, 52 }, .irqs = { 52, 52, 52 },
}; };
......
...@@ -109,6 +109,8 @@ static struct platform_device rtc_device = { ...@@ -109,6 +109,8 @@ static struct platform_device rtc_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xfffffe80, .mapbase = 0xfffffe80,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCI, .type = PORT_SCI,
.irqs = { 23, 23, 23, 0 }, .irqs = { 23, 23, 23, 0 },
}; };
...@@ -126,6 +128,8 @@ static struct platform_device scif0_device = { ...@@ -126,6 +128,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xa4000150, .mapbase = 0xa4000150,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 56, 56, 56, 56 }, .irqs = { 56, 56, 56, 56 },
}; };
...@@ -143,6 +147,8 @@ static struct platform_device scif1_device = { ...@@ -143,6 +147,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xa4000140, .mapbase = 0xa4000140,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_IRDA, .type = PORT_IRDA,
.irqs = { 52, 52, 52, 52 }, .irqs = { 52, 52, 52, 52 },
}; };
......
...@@ -99,6 +99,9 @@ static struct platform_device rtc_device = { ...@@ -99,6 +99,9 @@ static struct platform_device rtc_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xa4400000, .mapbase = 0xa4400000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE |
SCSCR_CKE1 | SCSCR_CKE0,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 52, 52, 52, 52 }, .irqs = { 52, 52, 52, 52 },
}; };
...@@ -114,6 +117,9 @@ static struct platform_device scif0_device = { ...@@ -114,6 +117,9 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xa4410000, .mapbase = 0xa4410000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE |
SCSCR_CKE1 | SCSCR_CKE0,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 56, 56, 56, 56 }, .irqs = { 56, 56, 56, 56 },
}; };
......
/* /*
* SH7720 Setup * Setup code for SH7720, SH7721.
* *
* Copyright (C) 2007 Markus Brunner, Mark Jonas * Copyright (C) 2007 Markus Brunner, Mark Jonas
* Copyright (C) 2009 Paul Mundt * Copyright (C) 2009 Paul Mundt
...@@ -51,6 +51,8 @@ static struct platform_device rtc_device = { ...@@ -51,6 +51,8 @@ static struct platform_device rtc_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xa4430000, .mapbase = 0xa4430000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
...@@ -66,6 +68,8 @@ static struct platform_device scif0_device = { ...@@ -66,6 +68,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xa4438000, .mapbase = 0xa4438000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_4,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 81, 81, 81, 81 }, .irqs = { 81, 81, 81, 81 },
}; };
......
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe80000, .mapbase = 0xffe80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 41, 43, 42 }, .irqs = { 40, 41, 43, 42 },
}; };
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include <linux/io.h> #include <linux/io.h>
#include <linux/sh_timer.h> #include <linux/sh_timer.h>
#include <linux/serial_sci.h> #include <linux/serial_sci.h>
#include <asm/machtypes.h>
static struct resource rtc_resources[] = { static struct resource rtc_resources[] = {
[0] = { [0] = {
...@@ -35,33 +36,37 @@ static struct platform_device rtc_device = { ...@@ -35,33 +36,37 @@ static struct platform_device rtc_device = {
.resource = rtc_resources, .resource = rtc_resources,
}; };
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port sci_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCI, .type = PORT_SCI,
.irqs = { 23, 23, 23, 0 }, .irqs = { 23, 23, 23, 0 },
}; };
static struct platform_device scif0_device = { static struct platform_device sci_device = {
.name = "sh-sci", .name = "sh-sci",
.id = 0, .id = 0,
.dev = { .dev = {
.platform_data = &scif0_platform_data, .platform_data = &sci_platform_data,
}, },
}; };
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif_platform_data = {
.mapbase = 0xffe80000, .mapbase = 0xffe80000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 40, 40, 40 }, .irqs = { 40, 40, 40, 40 },
}; };
static struct platform_device scif1_device = { static struct platform_device scif_device = {
.name = "sh-sci", .name = "sh-sci",
.id = 1, .id = 1,
.dev = { .dev = {
.platform_data = &scif1_platform_data, .platform_data = &scif_platform_data,
}, },
}; };
...@@ -210,8 +215,6 @@ static struct platform_device tmu4_device = { ...@@ -210,8 +215,6 @@ static struct platform_device tmu4_device = {
#endif #endif
static struct platform_device *sh7750_devices[] __initdata = { static struct platform_device *sh7750_devices[] __initdata = {
&scif0_device,
&scif1_device,
&rtc_device, &rtc_device,
&tmu0_device, &tmu0_device,
&tmu1_device, &tmu1_device,
...@@ -226,14 +229,19 @@ static struct platform_device *sh7750_devices[] __initdata = { ...@@ -226,14 +229,19 @@ static struct platform_device *sh7750_devices[] __initdata = {
static int __init sh7750_devices_setup(void) static int __init sh7750_devices_setup(void)
{ {
if (mach_is_rts7751r2d()) {
platform_register_device(&scif_device);
} else {
platform_register_device(&sci_device);
platform_register_device(&scif_device);
}
return platform_add_devices(sh7750_devices, return platform_add_devices(sh7750_devices,
ARRAY_SIZE(sh7750_devices)); ARRAY_SIZE(sh7750_devices));
} }
arch_initcall(sh7750_devices_setup); arch_initcall(sh7750_devices_setup);
static struct platform_device *sh7750_early_devices[] __initdata = { static struct platform_device *sh7750_early_devices[] __initdata = {
&scif0_device,
&scif1_device,
&tmu0_device, &tmu0_device,
&tmu1_device, &tmu1_device,
&tmu2_device, &tmu2_device,
...@@ -247,6 +255,14 @@ static struct platform_device *sh7750_early_devices[] __initdata = { ...@@ -247,6 +255,14 @@ static struct platform_device *sh7750_early_devices[] __initdata = {
void __init plat_early_device_setup(void) void __init plat_early_device_setup(void)
{ {
if (mach_is_rts7751r2d()) {
scif_platform_data.scscr |= SCSCR_CKE1;
early_platform_add_devices(&scif_device, 1);
} else {
early_platform_add_devices(&sci_device, 1);
early_platform_add_devices(&scif_device, 1);
}
early_platform_add_devices(sh7750_early_devices, early_platform_add_devices(sh7750_early_devices,
ARRAY_SIZE(sh7750_early_devices)); ARRAY_SIZE(sh7750_early_devices));
} }
......
...@@ -129,6 +129,8 @@ static DECLARE_INTC_DESC(intc_desc_irq, "sh7760-irq", vectors_irq, groups, ...@@ -129,6 +129,8 @@ static DECLARE_INTC_DESC(intc_desc_irq, "sh7760-irq", vectors_irq, groups,
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xfe600000, .mapbase = 0xfe600000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 52, 53, 55, 54 }, .irqs = { 52, 53, 55, 54 },
}; };
...@@ -145,6 +147,8 @@ static struct plat_sci_port scif1_platform_data = { ...@@ -145,6 +147,8 @@ static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfe610000, .mapbase = 0xfe610000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF, .type = PORT_SCIF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.irqs = { 72, 73, 75, 74 }, .irqs = { 72, 73, 75, 74 },
}; };
...@@ -159,6 +163,8 @@ static struct platform_device scif1_device = { ...@@ -159,6 +163,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfe620000, .mapbase = 0xfe620000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 76, 77, 79, 78 }, .irqs = { 76, 77, 79, 78 },
}; };
...@@ -174,6 +180,8 @@ static struct platform_device scif2_device = { ...@@ -174,6 +180,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfe480000, .mapbase = 0xfe480000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCI, .type = PORT_SCI,
.irqs = { 80, 81, 82, 0 }, .irqs = { 80, 81, 82, 0 },
}; };
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
...@@ -34,6 +36,8 @@ static struct platform_device scif0_device = { ...@@ -34,6 +36,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 81, 81, 81, 81 }, .irqs = { 81, 81, 81, 81 },
}; };
...@@ -49,6 +53,8 @@ static struct platform_device scif1_device = { ...@@ -49,6 +53,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffe20000, .mapbase = 0xffe20000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 82, 82, 82, 82 }, .irqs = { 82, 82, 82, 82 },
}; };
...@@ -64,6 +70,8 @@ static struct platform_device scif2_device = { ...@@ -64,6 +70,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xffe30000, .mapbase = 0xffe30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 83, 83, 83, 83 }, .irqs = { 83, 83, 83, 83 },
}; };
......
...@@ -21,6 +21,8 @@ ...@@ -21,6 +21,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
......
...@@ -181,6 +181,8 @@ struct platform_device dma_device = { ...@@ -181,6 +181,8 @@ struct platform_device dma_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
...@@ -196,6 +198,8 @@ static struct platform_device scif0_device = { ...@@ -196,6 +198,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 81, 81, 81, 81 }, .irqs = { 81, 81, 81, 81 },
}; };
...@@ -211,6 +215,8 @@ static struct platform_device scif1_device = { ...@@ -211,6 +215,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffe20000, .mapbase = 0xffe20000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 82, 82, 82, 82 }, .irqs = { 82, 82, 82, 82 },
}; };
......
...@@ -24,6 +24,8 @@ ...@@ -24,6 +24,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
...@@ -39,6 +41,8 @@ static struct platform_device scif0_device = { ...@@ -39,6 +41,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 81, 81, 81, 81 }, .irqs = { 81, 81, 81, 81 },
}; };
...@@ -54,6 +58,8 @@ static struct platform_device scif1_device = { ...@@ -54,6 +58,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffe20000, .mapbase = 0xffe20000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 82, 82, 82, 82 }, .irqs = { 82, 82, 82, 82 },
}; };
...@@ -69,6 +75,8 @@ static struct platform_device scif2_device = { ...@@ -69,6 +75,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xa4e30000, .mapbase = 0xa4e30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 56, 56, 56, 56 }, .irqs = { 56, 56, 56, 56 },
}; };
...@@ -84,6 +92,8 @@ static struct platform_device scif3_device = { ...@@ -84,6 +92,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xa4e40000, .mapbase = 0xa4e40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 88, 88, 88, 88 }, .irqs = { 88, 88, 88, 88 },
}; };
...@@ -99,6 +109,8 @@ static struct platform_device scif4_device = { ...@@ -99,6 +109,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xa4e50000, .mapbase = 0xa4e50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 109, 109, 109, 109 }, .irqs = { 109, 109, 109, 109 },
}; };
......
...@@ -257,6 +257,8 @@ static struct platform_device dma1_device = { ...@@ -257,6 +257,8 @@ static struct platform_device dma1_device = {
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 80, 80, 80, 80 }, .irqs = { 80, 80, 80, 80 },
}; };
...@@ -272,6 +274,8 @@ static struct platform_device scif0_device = { ...@@ -272,6 +274,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 81, 81, 81, 81 }, .irqs = { 81, 81, 81, 81 },
}; };
...@@ -287,6 +291,8 @@ static struct platform_device scif1_device = { ...@@ -287,6 +291,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffe20000, .mapbase = 0xffe20000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 82, 82, 82, 82 }, .irqs = { 82, 82, 82, 82 },
}; };
...@@ -302,6 +308,8 @@ static struct platform_device scif2_device = { ...@@ -302,6 +308,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xa4e30000, .mapbase = 0xa4e30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 56, 56, 56, 56 }, .irqs = { 56, 56, 56, 56 },
}; };
...@@ -317,6 +325,8 @@ static struct platform_device scif3_device = { ...@@ -317,6 +325,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xa4e40000, .mapbase = 0xa4e40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 88, 88, 88, 88 }, .irqs = { 88, 88, 88, 88 },
}; };
...@@ -332,6 +342,8 @@ static struct platform_device scif4_device = { ...@@ -332,6 +342,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xa4e50000, .mapbase = 0xa4e50000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE,
.scbrr_algo_id = SCBRR_ALGO_3,
.type = PORT_SCIFA, .type = PORT_SCIFA,
.irqs = { 109, 109, 109, 109 }, .irqs = { 109, 109, 109, 109 },
}; };
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfe4b0000, /* SCIF2 */ .mapbase = 0xfe4b0000, /* SCIF2 */
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 40, 40, 40 }, .irqs = { 40, 40, 40, 40 },
}; };
...@@ -35,6 +37,8 @@ static struct platform_device scif2_device = { ...@@ -35,6 +37,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfe4c0000, /* SCIF3 */ .mapbase = 0xfe4c0000, /* SCIF3 */
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 76, 76, 76, 76 }, .irqs = { 76, 76, 76, 76 },
}; };
...@@ -50,6 +54,8 @@ static struct platform_device scif3_device = { ...@@ -50,6 +54,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xfe4d0000, /* SCIF4 */ .mapbase = 0xfe4d0000, /* SCIF4 */
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 104, 104, 104, 104 }, .irqs = { 104, 104, 104, 104 },
}; };
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 40, 40, 40 }, .irqs = { 40, 40, 40, 40 },
}; };
...@@ -34,6 +36,8 @@ static struct platform_device scif0_device = { ...@@ -34,6 +36,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe08000, .mapbase = 0xffe08000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 76, 76, 76, 76 }, .irqs = { 76, 76, 76, 76 },
}; };
...@@ -49,6 +53,8 @@ static struct platform_device scif1_device = { ...@@ -49,6 +53,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 104, 104, 104, 104 }, .irqs = { 104, 104, 104, 104 },
}; };
......
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xff923000, .mapbase = 0xff923000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 61, 61, 61, 61 }, .irqs = { 61, 61, 61, 61 },
}; };
...@@ -32,6 +34,8 @@ static struct platform_device scif0_device = { ...@@ -32,6 +34,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xff924000, .mapbase = 0xff924000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 62, 62, 62, 62 }, .irqs = { 62, 62, 62, 62 },
}; };
...@@ -47,6 +51,8 @@ static struct platform_device scif1_device = { ...@@ -47,6 +51,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xff925000, .mapbase = 0xff925000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 63, 63, 63, 63 }, .irqs = { 63, 63, 63, 63 },
}; };
...@@ -62,6 +68,8 @@ static struct platform_device scif2_device = { ...@@ -62,6 +68,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xff926000, .mapbase = 0xff926000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 64, 64, 64, 64 }, .irqs = { 64, 64, 64, 64 },
}; };
...@@ -77,6 +85,8 @@ static struct platform_device scif3_device = { ...@@ -77,6 +85,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xff927000, .mapbase = 0xff927000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 65, 65, 65, 65 }, .irqs = { 65, 65, 65, 65 },
}; };
...@@ -92,6 +102,8 @@ static struct platform_device scif4_device = { ...@@ -92,6 +102,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xff928000, .mapbase = 0xff928000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 66, 66, 66, 66 }, .irqs = { 66, 66, 66, 66 },
}; };
...@@ -107,6 +119,8 @@ static struct platform_device scif5_device = { ...@@ -107,6 +119,8 @@ static struct platform_device scif5_device = {
static struct plat_sci_port scif6_platform_data = { static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xff929000, .mapbase = 0xff929000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 67, 67, 67, 67 }, .irqs = { 67, 67, 67, 67 },
}; };
...@@ -122,6 +136,8 @@ static struct platform_device scif6_device = { ...@@ -122,6 +136,8 @@ static struct platform_device scif6_device = {
static struct plat_sci_port scif7_platform_data = { static struct plat_sci_port scif7_platform_data = {
.mapbase = 0xff92a000, .mapbase = 0xff92a000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 68, 68, 68, 68 }, .irqs = { 68, 68, 68, 68 },
}; };
...@@ -137,6 +153,8 @@ static struct platform_device scif7_device = { ...@@ -137,6 +153,8 @@ static struct platform_device scif7_device = {
static struct plat_sci_port scif8_platform_data = { static struct plat_sci_port scif8_platform_data = {
.mapbase = 0xff92b000, .mapbase = 0xff92b000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 69, 69, 69, 69 }, .irqs = { 69, 69, 69, 69 },
}; };
...@@ -152,6 +170,8 @@ static struct platform_device scif8_device = { ...@@ -152,6 +170,8 @@ static struct platform_device scif8_device = {
static struct plat_sci_port scif9_platform_data = { static struct plat_sci_port scif9_platform_data = {
.mapbase = 0xff92c000, .mapbase = 0xff92c000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 70, 70, 70, 70 }, .irqs = { 70, 70, 70, 70 },
}; };
......
...@@ -20,6 +20,8 @@ ...@@ -20,6 +20,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffe00000, .mapbase = 0xffe00000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 40, 40, 40 }, .irqs = { 40, 40, 40, 40 },
}; };
...@@ -35,6 +37,8 @@ static struct platform_device scif0_device = { ...@@ -35,6 +37,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffe10000, .mapbase = 0xffe10000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 76, 76, 76, 76 }, .irqs = { 76, 76, 76, 76 },
}; };
...@@ -379,6 +383,7 @@ static int __init sh7780_devices_setup(void) ...@@ -379,6 +383,7 @@ static int __init sh7780_devices_setup(void)
ARRAY_SIZE(sh7780_devices)); ARRAY_SIZE(sh7780_devices));
} }
arch_initcall(sh7780_devices_setup); arch_initcall(sh7780_devices_setup);
static struct platform_device *sh7780_early_devices[] __initdata = { static struct platform_device *sh7780_early_devices[] __initdata = {
&scif0_device, &scif0_device,
&scif1_device, &scif1_device,
...@@ -392,6 +397,13 @@ static struct platform_device *sh7780_early_devices[] __initdata = { ...@@ -392,6 +397,13 @@ static struct platform_device *sh7780_early_devices[] __initdata = {
void __init plat_early_device_setup(void) void __init plat_early_device_setup(void)
{ {
if (mach_is_sh2007()) {
scif0_platform_data.scscr &= ~SCSCR_CKE1;
scif0_platform_data.scbrr_algo_id = SCBRR_ALGO_2;
scif1_platform_data.scscr &= ~SCSCR_CKE1;
scif1_platform_data.scbrr_algo_id = SCBRR_ALGO_2;
}
early_platform_add_devices(sh7780_early_devices, early_platform_add_devices(sh7780_early_devices,
ARRAY_SIZE(sh7780_early_devices)); ARRAY_SIZE(sh7780_early_devices));
} }
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffea0000, .mapbase = 0xffea0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 40, 40, 40 }, .irqs = { 40, 40, 40, 40 },
}; };
...@@ -38,6 +40,8 @@ static struct platform_device scif0_device = { ...@@ -38,6 +40,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffeb0000, .mapbase = 0xffeb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 44, 44, 44, 44 }, .irqs = { 44, 44, 44, 44 },
}; };
...@@ -53,6 +57,8 @@ static struct platform_device scif1_device = { ...@@ -53,6 +57,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffec0000, .mapbase = 0xffec0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 60, 60, 60, 60 }, .irqs = { 60, 60, 60, 60 },
}; };
...@@ -68,6 +74,8 @@ static struct platform_device scif2_device = { ...@@ -68,6 +74,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xffed0000, .mapbase = 0xffed0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 61, 61, 61, 61 }, .irqs = { 61, 61, 61, 61 },
}; };
...@@ -83,6 +91,8 @@ static struct platform_device scif3_device = { ...@@ -83,6 +91,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xffee0000, .mapbase = 0xffee0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 62, 62, 62, 62 }, .irqs = { 62, 62, 62, 62 },
}; };
...@@ -98,6 +108,8 @@ static struct platform_device scif4_device = { ...@@ -98,6 +108,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xffef0000, .mapbase = 0xffef0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 63, 63, 63, 63 }, .irqs = { 63, 63, 63, 63 },
}; };
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffea0000, .mapbase = 0xffea0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 41, 43, 42 }, .irqs = { 40, 41, 43, 42 },
}; };
...@@ -47,6 +49,8 @@ static struct platform_device scif0_device = { ...@@ -47,6 +49,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffeb0000, .mapbase = 0xffeb0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 44, 44, 44, 44 }, .irqs = { 44, 44, 44, 44 },
}; };
...@@ -62,6 +66,8 @@ static struct platform_device scif1_device = { ...@@ -62,6 +66,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffec0000, .mapbase = 0xffec0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 50, 50, 50, 50 }, .irqs = { 50, 50, 50, 50 },
}; };
...@@ -77,6 +83,8 @@ static struct platform_device scif2_device = { ...@@ -77,6 +83,8 @@ static struct platform_device scif2_device = {
static struct plat_sci_port scif3_platform_data = { static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xffed0000, .mapbase = 0xffed0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 51, 51, 51, 51 }, .irqs = { 51, 51, 51, 51 },
}; };
...@@ -92,6 +100,8 @@ static struct platform_device scif3_device = { ...@@ -92,6 +100,8 @@ static struct platform_device scif3_device = {
static struct plat_sci_port scif4_platform_data = { static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xffee0000, .mapbase = 0xffee0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 52, 52, 52, 52 }, .irqs = { 52, 52, 52, 52 },
}; };
...@@ -107,6 +117,8 @@ static struct platform_device scif4_device = { ...@@ -107,6 +117,8 @@ static struct platform_device scif4_device = {
static struct plat_sci_port scif5_platform_data = { static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xffef0000, .mapbase = 0xffef0000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1,
.scbrr_algo_id = SCBRR_ALGO_1,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 53, 53, 53, 53 }, .irqs = { 53, 53, 53, 53 },
}; };
......
...@@ -29,6 +29,8 @@ ...@@ -29,6 +29,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = 0xffc30000, .mapbase = 0xffc30000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 40, 41, 43, 42 }, .irqs = { 40, 41, 43, 42 },
}; };
...@@ -44,6 +46,8 @@ static struct platform_device scif0_device = { ...@@ -44,6 +46,8 @@ static struct platform_device scif0_device = {
static struct plat_sci_port scif1_platform_data = { static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xffc40000, .mapbase = 0xffc40000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 44, 45, 47, 46 }, .irqs = { 44, 45, 47, 46 },
}; };
...@@ -59,6 +63,8 @@ static struct platform_device scif1_device = { ...@@ -59,6 +63,8 @@ static struct platform_device scif1_device = {
static struct plat_sci_port scif2_platform_data = { static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xffc60000, .mapbase = 0xffc60000,
.flags = UPF_BOOT_AUTOCONF, .flags = UPF_BOOT_AUTOCONF,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 52, 53, 55, 54 }, .irqs = { 52, 53, 55, 54 },
}; };
......
...@@ -19,6 +19,8 @@ ...@@ -19,6 +19,8 @@
static struct plat_sci_port scif0_platform_data = { static struct plat_sci_port scif0_platform_data = {
.mapbase = PHYS_PERIPHERAL_BLOCK + 0x01030000, .mapbase = PHYS_PERIPHERAL_BLOCK + 0x01030000,
.flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP,
.scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE,
.scbrr_algo_id = SCBRR_ALGO_2,
.type = PORT_SCIF, .type = PORT_SCIF,
.irqs = { 39, 40, 42, 0 }, .irqs = { 39, 40, 42, 0 },
}; };
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* *
* SuperH on-chip serial module support. (SCI with no FIFO / with FIFO) * SuperH on-chip serial module support. (SCI with no FIFO / with FIFO)
* *
* Copyright (C) 2002 - 2008 Paul Mundt * Copyright (C) 2002 - 2011 Paul Mundt
* Modified to support SH7720 SCIF. Markus Brunner, Mark Jonas (Jul 2007). * Modified to support SH7720 SCIF. Markus Brunner, Mark Jonas (Jul 2007).
* *
* based off of the old drivers/char/sh-sci.c by: * based off of the old drivers/char/sh-sci.c by:
...@@ -81,14 +81,22 @@ struct sci_port { ...@@ -81,14 +81,22 @@ struct sci_port {
struct timer_list break_timer; struct timer_list break_timer;
int break_flag; int break_flag;
/* SCSCR initialization */
unsigned int scscr;
/* SCBRR calculation algo */
unsigned int scbrr_algo_id;
/* Interface clock */ /* Interface clock */
struct clk *iclk; struct clk *iclk;
/* Function clock */ /* Function clock */
struct clk *fclk; struct clk *fclk;
struct list_head node; struct list_head node;
struct dma_chan *chan_tx; struct dma_chan *chan_tx;
struct dma_chan *chan_rx; struct dma_chan *chan_rx;
#ifdef CONFIG_SERIAL_SH_SCI_DMA #ifdef CONFIG_SERIAL_SH_SCI_DMA
struct device *dma_dev; struct device *dma_dev;
unsigned int slave_tx; unsigned int slave_tx;
...@@ -415,9 +423,9 @@ static void sci_transmit_chars(struct uart_port *port) ...@@ -415,9 +423,9 @@ static void sci_transmit_chars(struct uart_port *port)
if (!(status & SCxSR_TDxE(port))) { if (!(status & SCxSR_TDxE(port))) {
ctrl = sci_in(port, SCSCR); ctrl = sci_in(port, SCSCR);
if (uart_circ_empty(xmit)) if (uart_circ_empty(xmit))
ctrl &= ~SCI_CTRL_FLAGS_TIE; ctrl &= ~SCSCR_TIE;
else else
ctrl |= SCI_CTRL_FLAGS_TIE; ctrl |= SCSCR_TIE;
sci_out(port, SCSCR, ctrl); sci_out(port, SCSCR, ctrl);
return; return;
} }
...@@ -459,7 +467,7 @@ static void sci_transmit_chars(struct uart_port *port) ...@@ -459,7 +467,7 @@ static void sci_transmit_chars(struct uart_port *port)
sci_out(port, SCxSR, SCxSR_TDxE_CLEAR(port)); sci_out(port, SCxSR, SCxSR_TDxE_CLEAR(port));
} }
ctrl |= SCI_CTRL_FLAGS_TIE; ctrl |= SCSCR_TIE;
sci_out(port, SCSCR, ctrl); sci_out(port, SCSCR, ctrl);
} }
} }
...@@ -708,7 +716,7 @@ static irqreturn_t sci_rx_interrupt(int irq, void *ptr) ...@@ -708,7 +716,7 @@ static irqreturn_t sci_rx_interrupt(int irq, void *ptr)
disable_irq_nosync(irq); disable_irq_nosync(irq);
scr |= 0x4000; scr |= 0x4000;
} else { } else {
scr &= ~SCI_CTRL_FLAGS_RIE; scr &= ~SCSCR_RIE;
} }
sci_out(port, SCSCR, scr); sci_out(port, SCSCR, scr);
/* Clear current interrupt */ /* Clear current interrupt */
...@@ -777,6 +785,18 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr) ...@@ -777,6 +785,18 @@ static irqreturn_t sci_br_interrupt(int irq, void *ptr)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
static inline unsigned long port_rx_irq_mask(struct uart_port *port)
{
/*
* Not all ports (such as SCIFA) will support REIE. Rather than
* special-casing the port type, we check the port initialization
* IRQ enable mask to see whether the IRQ is desired at all. If
* it's unset, it's logically inferred that there's no point in
* testing for it.
*/
return SCSCR_RIE | (to_sci_port(port)->scscr & SCSR_REIE);
}
static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr)
{ {
unsigned short ssr_status, scr_status, err_enabled; unsigned short ssr_status, scr_status, err_enabled;
...@@ -786,22 +806,25 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr) ...@@ -786,22 +806,25 @@ static irqreturn_t sci_mpxed_interrupt(int irq, void *ptr)
ssr_status = sci_in(port, SCxSR); ssr_status = sci_in(port, SCxSR);
scr_status = sci_in(port, SCSCR); scr_status = sci_in(port, SCSCR);
err_enabled = scr_status & (SCI_CTRL_FLAGS_REIE | SCI_CTRL_FLAGS_RIE); err_enabled = scr_status & port_rx_irq_mask(port);
/* Tx Interrupt */ /* Tx Interrupt */
if ((ssr_status & SCxSR_TDxE(port)) && (scr_status & SCI_CTRL_FLAGS_TIE) && if ((ssr_status & SCxSR_TDxE(port)) && (scr_status & SCSCR_TIE) &&
!s->chan_tx) !s->chan_tx)
ret = sci_tx_interrupt(irq, ptr); ret = sci_tx_interrupt(irq, ptr);
/* /*
* Rx Interrupt: if we're using DMA, the DMA controller clears RDF / * Rx Interrupt: if we're using DMA, the DMA controller clears RDF /
* DR flags * DR flags
*/ */
if (((ssr_status & SCxSR_RDxF(port)) || s->chan_rx) && if (((ssr_status & SCxSR_RDxF(port)) || s->chan_rx) &&
(scr_status & SCI_CTRL_FLAGS_RIE)) (scr_status & SCSCR_RIE))
ret = sci_rx_interrupt(irq, ptr); ret = sci_rx_interrupt(irq, ptr);
/* Error Interrupt */ /* Error Interrupt */
if ((ssr_status & SCxSR_ERRORS(port)) && err_enabled) if ((ssr_status & SCxSR_ERRORS(port)) && err_enabled)
ret = sci_er_interrupt(irq, ptr); ret = sci_er_interrupt(irq, ptr);
/* Break Interrupt */ /* Break Interrupt */
if ((ssr_status & SCxSR_BRK(port)) && err_enabled) if ((ssr_status & SCxSR_BRK(port)) && err_enabled)
ret = sci_br_interrupt(irq, ptr); ret = sci_br_interrupt(irq, ptr);
...@@ -951,7 +974,7 @@ static void sci_dma_tx_complete(void *arg) ...@@ -951,7 +974,7 @@ static void sci_dma_tx_complete(void *arg)
schedule_work(&s->work_tx); schedule_work(&s->work_tx);
} else if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) { } else if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
u16 ctrl = sci_in(port, SCSCR); u16 ctrl = sci_in(port, SCSCR);
sci_out(port, SCSCR, ctrl & ~SCI_CTRL_FLAGS_TIE); sci_out(port, SCSCR, ctrl & ~SCSCR_TIE);
} }
spin_unlock_irqrestore(&port->lock, flags); spin_unlock_irqrestore(&port->lock, flags);
...@@ -1214,14 +1237,16 @@ static void sci_start_tx(struct uart_port *port) ...@@ -1214,14 +1237,16 @@ static void sci_start_tx(struct uart_port *port)
if (new != scr) if (new != scr)
sci_out(port, SCSCR, new); sci_out(port, SCSCR, new);
} }
if (s->chan_tx && !uart_circ_empty(&s->port.state->xmit) && if (s->chan_tx && !uart_circ_empty(&s->port.state->xmit) &&
s->cookie_tx < 0) s->cookie_tx < 0)
schedule_work(&s->work_tx); schedule_work(&s->work_tx);
#endif #endif
if (!s->chan_tx || port->type == PORT_SCIFA || port->type == PORT_SCIFB) { if (!s->chan_tx || port->type == PORT_SCIFA || port->type == PORT_SCIFB) {
/* Set TIE (Transmit Interrupt Enable) bit in SCSCR */ /* Set TIE (Transmit Interrupt Enable) bit in SCSCR */
ctrl = sci_in(port, SCSCR); ctrl = sci_in(port, SCSCR);
sci_out(port, SCSCR, ctrl | SCI_CTRL_FLAGS_TIE); sci_out(port, SCSCR, ctrl | SCSCR_TIE);
} }
} }
...@@ -1231,20 +1256,24 @@ static void sci_stop_tx(struct uart_port *port) ...@@ -1231,20 +1256,24 @@ static void sci_stop_tx(struct uart_port *port)
/* Clear TIE (Transmit Interrupt Enable) bit in SCSCR */ /* Clear TIE (Transmit Interrupt Enable) bit in SCSCR */
ctrl = sci_in(port, SCSCR); ctrl = sci_in(port, SCSCR);
if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
ctrl &= ~0x8000; ctrl &= ~0x8000;
ctrl &= ~SCI_CTRL_FLAGS_TIE;
ctrl &= ~SCSCR_TIE;
sci_out(port, SCSCR, ctrl); sci_out(port, SCSCR, ctrl);
} }
static void sci_start_rx(struct uart_port *port) static void sci_start_rx(struct uart_port *port)
{ {
unsigned short ctrl = SCI_CTRL_FLAGS_RIE | SCI_CTRL_FLAGS_REIE; unsigned short ctrl;
ctrl = sci_in(port, SCSCR) | port_rx_irq_mask(port);
/* Set RIE (Receive Interrupt Enable) bit in SCSCR */
ctrl |= sci_in(port, SCSCR);
if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
ctrl &= ~0x4000; ctrl &= ~0x4000;
sci_out(port, SCSCR, ctrl); sci_out(port, SCSCR, ctrl);
} }
...@@ -1252,11 +1281,13 @@ static void sci_stop_rx(struct uart_port *port) ...@@ -1252,11 +1281,13 @@ static void sci_stop_rx(struct uart_port *port)
{ {
unsigned short ctrl; unsigned short ctrl;
/* Clear RIE (Receive Interrupt Enable) bit in SCSCR */
ctrl = sci_in(port, SCSCR); ctrl = sci_in(port, SCSCR);
if (port->type == PORT_SCIFA || port->type == PORT_SCIFB) if (port->type == PORT_SCIFA || port->type == PORT_SCIFB)
ctrl &= ~0x4000; ctrl &= ~0x4000;
ctrl &= ~(SCI_CTRL_FLAGS_RIE | SCI_CTRL_FLAGS_REIE);
ctrl &= ~port_rx_irq_mask(port);
sci_out(port, SCSCR, ctrl); sci_out(port, SCSCR, ctrl);
} }
...@@ -1296,7 +1327,7 @@ static void rx_timer_fn(unsigned long arg) ...@@ -1296,7 +1327,7 @@ static void rx_timer_fn(unsigned long arg)
scr &= ~0x4000; scr &= ~0x4000;
enable_irq(s->irqs[1]); enable_irq(s->irqs[1]);
} }
sci_out(port, SCSCR, scr | SCI_CTRL_FLAGS_RIE); sci_out(port, SCSCR, scr | SCSCR_RIE);
dev_dbg(port->dev, "DMA Rx timed out\n"); dev_dbg(port->dev, "DMA Rx timed out\n");
schedule_work(&s->work_rx); schedule_work(&s->work_rx);
} }
...@@ -1442,12 +1473,31 @@ static void sci_shutdown(struct uart_port *port) ...@@ -1442,12 +1473,31 @@ static void sci_shutdown(struct uart_port *port)
s->disable(port); s->disable(port);
} }
static unsigned int sci_scbrr_calc(unsigned int algo_id, unsigned int bps,
unsigned long freq)
{
switch (algo_id) {
case SCBRR_ALGO_1:
return ((freq + 16 * bps) / (16 * bps) - 1);
case SCBRR_ALGO_2:
return ((freq + 16 * bps) / (32 * bps) - 1);
case SCBRR_ALGO_3:
return (((freq * 2) + 16 * bps) / (16 * bps) - 1);
case SCBRR_ALGO_4:
return (((freq * 2) + 16 * bps) / (32 * bps) - 1);
case SCBRR_ALGO_5:
return (((freq * 1000 / 32) / bps) - 1);
}
/* Warn, but use a safe default */
WARN_ON(1);
return ((freq + 16 * bps) / (32 * bps) - 1);
}
static void sci_set_termios(struct uart_port *port, struct ktermios *termios, static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
struct ktermios *old) struct ktermios *old)
{ {
#ifdef CONFIG_SERIAL_SH_SCI_DMA
struct sci_port *s = to_sci_port(port); struct sci_port *s = to_sci_port(port);
#endif
unsigned int status, baud, smr_val, max_baud; unsigned int status, baud, smr_val, max_baud;
int t = -1; int t = -1;
u16 scfcr = 0; u16 scfcr = 0;
...@@ -1464,7 +1514,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -1464,7 +1514,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
baud = uart_get_baud_rate(port, termios, old, 0, max_baud); baud = uart_get_baud_rate(port, termios, old, 0, max_baud);
if (likely(baud && port->uartclk)) if (likely(baud && port->uartclk))
t = SCBRR_VALUE(baud, port->uartclk); t = sci_scbrr_calc(s->scbrr_algo_id, baud, port->uartclk);
do { do {
status = sci_in(port, SCxSR); status = sci_in(port, SCxSR);
...@@ -1506,7 +1556,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios, ...@@ -1506,7 +1556,7 @@ static void sci_set_termios(struct uart_port *port, struct ktermios *termios,
sci_init_pins(port, termios->c_cflag); sci_init_pins(port, termios->c_cflag);
sci_out(port, SCFCR, scfcr | ((termios->c_cflag & CRTSCTS) ? SCFCR_MCE : 0)); sci_out(port, SCFCR, scfcr | ((termios->c_cflag & CRTSCTS) ? SCFCR_MCE : 0));
sci_out(port, SCSCR, SCSCR_INIT(port)); sci_out(port, SCSCR, s->scscr);
#ifdef CONFIG_SERIAL_SH_SCI_DMA #ifdef CONFIG_SERIAL_SH_SCI_DMA
/* /*
...@@ -1679,9 +1729,11 @@ static int __devinit sci_init_single(struct platform_device *dev, ...@@ -1679,9 +1729,11 @@ static int __devinit sci_init_single(struct platform_device *dev,
port->mapbase = p->mapbase; port->mapbase = p->mapbase;
port->membase = p->membase; port->membase = p->membase;
port->irq = p->irqs[SCIx_TXI_IRQ]; port->irq = p->irqs[SCIx_TXI_IRQ];
port->flags = p->flags; port->flags = p->flags;
sci_port->type = port->type = p->type; sci_port->type = port->type = p->type;
sci_port->scscr = p->scscr;
sci_port->scbrr_algo_id = p->scbrr_algo_id;
#ifdef CONFIG_SERIAL_SH_SCI_DMA #ifdef CONFIG_SERIAL_SH_SCI_DMA
sci_port->dma_dev = p->dma_dev; sci_port->dma_dev = p->dma_dev;
......
This diff is collapsed.
...@@ -8,6 +8,23 @@ ...@@ -8,6 +8,23 @@
* Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts) * Generic header for SuperH SCI(F) (used by sh/sh64/h8300 and related parts)
*/ */
enum {
SCBRR_ALGO_1, /* ((clk + 16 * bps) / (16 * bps) - 1) */
SCBRR_ALGO_2, /* ((clk + 16 * bps) / (32 * bps) - 1) */
SCBRR_ALGO_3, /* (((clk * 2) + 16 * bps) / (16 * bps) - 1) */
SCBRR_ALGO_4, /* (((clk * 2) + 16 * bps) / (32 * bps) - 1) */
SCBRR_ALGO_5, /* (((clk * 1000 / 32) / bps) - 1) */
};
#define SCSCR_TIE (1 << 7)
#define SCSCR_RIE (1 << 6)
#define SCSCR_TE (1 << 5)
#define SCSCR_RE (1 << 4)
#define SCSCR_REIE (1 << 3) /* not supported by all parts */
#define SCSCR_TOIE (1 << 2) /* not supported by all parts */
#define SCSCR_CKE1 (1 << 1)
#define SCSCR_CKE0 (1 << 0)
/* Offsets into the sci_port->irqs array */ /* Offsets into the sci_port->irqs array */
enum { enum {
SCIx_ERI_IRQ, SCIx_ERI_IRQ,
...@@ -29,7 +46,12 @@ struct plat_sci_port { ...@@ -29,7 +46,12 @@ struct plat_sci_port {
unsigned int type; /* SCI / SCIF / IRDA */ unsigned int type; /* SCI / SCIF / IRDA */
upf_t flags; /* UPF_* flags */ upf_t flags; /* UPF_* flags */
char *clk; /* clock string */ char *clk; /* clock string */
unsigned int scbrr_algo_id; /* SCBRR calculation algo */
unsigned int scscr; /* SCSCR initialization */
struct device *dma_dev; struct device *dma_dev;
#ifdef CONFIG_SERIAL_SH_SCI_DMA #ifdef CONFIG_SERIAL_SH_SCI_DMA
unsigned int dma_slave_tx; unsigned int dma_slave_tx;
unsigned int dma_slave_rx; unsigned int dma_slave_rx;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment