| From 144241217d14c71a07dd18f93a5cc0f3e0a8f4b9 Mon Sep 17 00:00:00 2001 |
| From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Date: Fri, 6 Dec 2013 10:59:48 +0100 |
| Subject: sh: Declare SCIF register base and IRQ as resources |
| |
| Passing the register base address and IRQ through platform data is |
| deprecated. Use resources instead. |
| |
| Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| (cherry picked from commit d850acf975bee46e43c3cd80d2d287010195c63b) |
| (Queued by Simon Horman for v3.14 but not yet in Linus's tree) |
| Signed-off-by: Simon Horman <horms+renesas@verge.net.au> |
| --- |
| arch/sh/kernel/cpu/sh2/setup-sh7619.c | 27 +++++++--- |
| arch/sh/kernel/cpu/sh2a/setup-mxg.c | 9 +++- |
| arch/sh/kernel/cpu/sh2a/setup-sh7201.c | 72 +++++++++++++++++++------ |
| arch/sh/kernel/cpu/sh2a/setup-sh7203.c | 36 ++++++++++--- |
| arch/sh/kernel/cpu/sh2a/setup-sh7206.c | 36 ++++++++++--- |
| arch/sh/kernel/cpu/sh2a/setup-sh7264.c | 96 ++++++++++++++++++++++++++++------ |
| arch/sh/kernel/cpu/sh2a/setup-sh7269.c | 96 ++++++++++++++++++++++++++++------ |
| arch/sh/kernel/cpu/sh3/setup-sh7705.c | 18 +++++-- |
| arch/sh/kernel/cpu/sh3/setup-sh770x.c | 27 +++++++--- |
| arch/sh/kernel/cpu/sh3/setup-sh7710.c | 18 +++++-- |
| arch/sh/kernel/cpu/sh3/setup-sh7720.c | 18 +++++-- |
| arch/sh/kernel/cpu/sh4/setup-sh4-202.c | 15 ++++-- |
| arch/sh/kernel/cpu/sh4/setup-sh7750.c | 18 +++++-- |
| arch/sh/kernel/cpu/sh4/setup-sh7760.c | 58 +++++++++++++------- |
| arch/sh/kernel/cpu/sh4a/setup-sh7343.c | 36 ++++++++++--- |
| arch/sh/kernel/cpu/sh4a/setup-sh7366.c | 9 +++- |
| arch/sh/kernel/cpu/sh4a/setup-sh7722.c | 27 +++++++--- |
| arch/sh/kernel/cpu/sh4a/setup-sh7723.c | 54 ++++++++++++++----- |
| arch/sh/kernel/cpu/sh4a/setup-sh7724.c | 54 ++++++++++++++----- |
| arch/sh/kernel/cpu/sh4a/setup-sh7734.c | 66 ++++++++++++++++------- |
| arch/sh/kernel/cpu/sh4a/setup-sh7757.c | 27 +++++++--- |
| arch/sh/kernel/cpu/sh4a/setup-sh7763.c | 27 +++++++--- |
| arch/sh/kernel/cpu/sh4a/setup-sh7770.c | 90 ++++++++++++++++++++++++------- |
| arch/sh/kernel/cpu/sh4a/setup-sh7780.c | 18 +++++-- |
| arch/sh/kernel/cpu/sh4a/setup-sh7785.c | 54 ++++++++++++++----- |
| arch/sh/kernel/cpu/sh4a/setup-sh7786.c | 82 ++++++++++++++++++++++------- |
| arch/sh/kernel/cpu/sh4a/setup-shx3.c | 45 ++++++++++------ |
| arch/sh/kernel/cpu/sh5/setup-sh5.c | 11 +++- |
| 28 files changed, 883 insertions(+), 261 deletions(-) |
| |
| diff --git a/arch/sh/kernel/cpu/sh2/setup-sh7619.c b/arch/sh/kernel/cpu/sh2/setup-sh7619.c |
| index bb11e1925178..b708432c33b0 100644 |
| --- a/arch/sh/kernel/cpu/sh2/setup-sh7619.c |
| +++ b/arch/sh/kernel/cpu/sh2/setup-sh7619.c |
| @@ -60,51 +60,66 @@ static DECLARE_INTC_DESC(intc_desc, "sh7619", vectors, NULL, |
| NULL, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xf8400000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(88), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xf8400000, 0x100), |
| + DEFINE_RES_IRQ(88), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xf8410000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(92), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xf8410000, 0x100), |
| + DEFINE_RES_IRQ(92), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xf8420000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(96), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xf8420000, 0x100), |
| + DEFINE_RES_IRQ(96), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-mxg.c b/arch/sh/kernel/cpu/sh2a/setup-mxg.c |
| index f7f1cf2af302..9bdc61143f40 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-mxg.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-mxg.c |
| @@ -199,17 +199,22 @@ static struct platform_device mtu2_2_device = { |
| }; |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xff804000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(220), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xff804000, 0x100), |
| + DEFINE_RES_IRQ(220), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7201.c b/arch/sh/kernel/cpu/sh2a/setup-sh7201.c |
| index 7b84785b8962..7585c4ed7c5c 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-sh7201.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7201.c |
| @@ -178,136 +178,176 @@ static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfffe8000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(180), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8000, 0x100), |
| + DEFINE_RES_IRQ(180), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xfffe8800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(184), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8800, 0x100), |
| + DEFINE_RES_IRQ(184), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfffe9000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(188), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9000, 0x100), |
| + DEFINE_RES_IRQ(188), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfffe9800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(192), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9800, 0x100), |
| + DEFINE_RES_IRQ(192), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xfffea000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(196), |
| +}; |
| + |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xfffea000, 0x100), |
| + DEFINE_RES_IRQ(196), |
| }; |
| |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xfffea800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(200), |
| +}; |
| + |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xfffea800, 0x100), |
| + DEFINE_RES_IRQ(200), |
| }; |
| |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif6_platform_data = { |
| - .mapbase = 0xfffeb000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(204), |
| +}; |
| + |
| +static struct resource scif6_resources[] = { |
| + DEFINE_RES_MEM(0xfffeb000, 0x100), |
| + DEFINE_RES_IRQ(204), |
| }; |
| |
| static struct platform_device scif6_device = { |
| .name = "sh-sci", |
| .id = 6, |
| + .resource = scif6_resources, |
| + .num_resources = ARRAY_SIZE(scif6_resources), |
| .dev = { |
| .platform_data = &scif6_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif7_platform_data = { |
| - .mapbase = 0xfffeb800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(208), |
| +}; |
| + |
| +static struct resource scif7_resources[] = { |
| + DEFINE_RES_MEM(0xfffeb800, 0x100), |
| + DEFINE_RES_IRQ(208), |
| }; |
| |
| static struct platform_device scif7_device = { |
| .name = "sh-sci", |
| .id = 7, |
| + .resource = scif7_resources, |
| + .num_resources = ARRAY_SIZE(scif7_resources), |
| .dev = { |
| .platform_data = &scif7_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c |
| index bfc33f6a28c3..f2a9baaa541b 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-sh7203.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7203.c |
| @@ -174,76 +174,96 @@ static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfffe8000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(192), |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8000, 0x100), |
| + DEFINE_RES_IRQ(192), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xfffe8800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(196), |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8800, 0x100), |
| + DEFINE_RES_IRQ(196), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfffe9000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(200), |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9000, 0x100), |
| + DEFINE_RES_IRQ(200), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfffe9800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(204), |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9800, 0x100), |
| + DEFINE_RES_IRQ(204), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c |
| index a5010741de85..fc7cacd36729 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-sh7206.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7206.c |
| @@ -134,68 +134,88 @@ static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfffe8000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(240), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8000, 0x100), |
| + DEFINE_RES_IRQ(240), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xfffe8800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(244), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8800, 0x100), |
| + DEFINE_RES_IRQ(244), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfffe9000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(248), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9000, 0x100), |
| + DEFINE_RES_IRQ(248), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfffe9800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(252), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9800, 0x100), |
| + DEFINE_RES_IRQ(252), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7264.c b/arch/sh/kernel/cpu/sh2a/setup-sh7264.c |
| index ce5c1b5aebfa..00edbdabcaa1 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-sh7264.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7264.c |
| @@ -226,152 +226,216 @@ static DECLARE_INTC_DESC(intc_desc, "sh7264", vectors, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfffe8000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 233, 234, 235, 232 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8000, 0x100), |
| + DEFINE_RES_IRQ(233), |
| + DEFINE_RES_IRQ(234), |
| + DEFINE_RES_IRQ(235), |
| + DEFINE_RES_IRQ(232), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xfffe8800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 237, 238, 239, 236 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xfffe8800, 0x100), |
| + DEFINE_RES_IRQ(237), |
| + DEFINE_RES_IRQ(238), |
| + DEFINE_RES_IRQ(239), |
| + DEFINE_RES_IRQ(236), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfffe9000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 241, 242, 243, 240 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9000, 0x100), |
| + DEFINE_RES_IRQ(241), |
| + DEFINE_RES_IRQ(242), |
| + DEFINE_RES_IRQ(243), |
| + DEFINE_RES_IRQ(240), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfffe9800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 245, 246, 247, 244 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfffe9800, 0x100), |
| + DEFINE_RES_IRQ(245), |
| + DEFINE_RES_IRQ(246), |
| + DEFINE_RES_IRQ(247), |
| + DEFINE_RES_IRQ(244), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xfffea000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 249, 250, 251, 248 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xfffea000, 0x100), |
| + DEFINE_RES_IRQ(249), |
| + DEFINE_RES_IRQ(250), |
| + DEFINE_RES_IRQ(251), |
| + DEFINE_RES_IRQ(248), |
| +}; |
| + |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xfffea800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 253, 254, 255, 252 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xfffea800, 0x100), |
| + DEFINE_RES_IRQ(253), |
| + DEFINE_RES_IRQ(254), |
| + DEFINE_RES_IRQ(255), |
| + DEFINE_RES_IRQ(252), |
| +}; |
| + |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif6_platform_data = { |
| - .mapbase = 0xfffeb000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 257, 258, 259, 256 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif6_resources[] = { |
| + DEFINE_RES_MEM(0xfffeb000, 0x100), |
| + DEFINE_RES_IRQ(257), |
| + DEFINE_RES_IRQ(258), |
| + DEFINE_RES_IRQ(259), |
| + DEFINE_RES_IRQ(256), |
| +}; |
| + |
| static struct platform_device scif6_device = { |
| .name = "sh-sci", |
| .id = 6, |
| + .resource = scif6_resources, |
| + .num_resources = ARRAY_SIZE(scif6_resources), |
| .dev = { |
| .platform_data = &scif6_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif7_platform_data = { |
| - .mapbase = 0xfffeb800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 261, 262, 263, 260 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif7_resources[] = { |
| + DEFINE_RES_MEM(0xfffeb800, 0x100), |
| + DEFINE_RES_IRQ(261), |
| + DEFINE_RES_IRQ(262), |
| + DEFINE_RES_IRQ(263), |
| + DEFINE_RES_IRQ(260), |
| +}; |
| + |
| static struct platform_device scif7_device = { |
| .name = "sh-sci", |
| .id = 7, |
| + .resource = scif7_resources, |
| + .num_resources = ARRAY_SIZE(scif7_resources), |
| .dev = { |
| .platform_data = &scif7_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh2a/setup-sh7269.c b/arch/sh/kernel/cpu/sh2a/setup-sh7269.c |
| index e82ae9d8d3bc..5cdbaac322a0 100644 |
| --- a/arch/sh/kernel/cpu/sh2a/setup-sh7269.c |
| +++ b/arch/sh/kernel/cpu/sh2a/setup-sh7269.c |
| @@ -248,152 +248,216 @@ static DECLARE_INTC_DESC(intc_desc, "sh7269", vectors, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xe8007000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 259, 260, 261, 258 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xe8007000, 0x100), |
| + DEFINE_RES_IRQ(259), |
| + DEFINE_RES_IRQ(260), |
| + DEFINE_RES_IRQ(261), |
| + DEFINE_RES_IRQ(258), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xe8007800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 263, 264, 265, 262 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xe8007800, 0x100), |
| + DEFINE_RES_IRQ(263), |
| + DEFINE_RES_IRQ(264), |
| + DEFINE_RES_IRQ(265), |
| + DEFINE_RES_IRQ(262), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xe8008000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 267, 268, 269, 266 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xe8008000, 0x100), |
| + DEFINE_RES_IRQ(267), |
| + DEFINE_RES_IRQ(268), |
| + DEFINE_RES_IRQ(269), |
| + DEFINE_RES_IRQ(266), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xe8008800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 271, 272, 273, 270 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xe8008800, 0x100), |
| + DEFINE_RES_IRQ(271), |
| + DEFINE_RES_IRQ(272), |
| + DEFINE_RES_IRQ(273), |
| + DEFINE_RES_IRQ(270), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xe8009000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 275, 276, 277, 274 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xe8009000, 0x100), |
| + DEFINE_RES_IRQ(275), |
| + DEFINE_RES_IRQ(276), |
| + DEFINE_RES_IRQ(277), |
| + DEFINE_RES_IRQ(274), |
| +}; |
| + |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xe8009800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 279, 280, 281, 278 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xe8009800, 0x100), |
| + DEFINE_RES_IRQ(279), |
| + DEFINE_RES_IRQ(280), |
| + DEFINE_RES_IRQ(281), |
| + DEFINE_RES_IRQ(278), |
| +}; |
| + |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif6_platform_data = { |
| - .mapbase = 0xe800a000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 283, 284, 285, 282 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif6_resources[] = { |
| + DEFINE_RES_MEM(0xe800a000, 0x100), |
| + DEFINE_RES_IRQ(283), |
| + DEFINE_RES_IRQ(284), |
| + DEFINE_RES_IRQ(285), |
| + DEFINE_RES_IRQ(282), |
| +}; |
| + |
| static struct platform_device scif6_device = { |
| .name = "sh-sci", |
| .id = 6, |
| + .resource = scif6_resources, |
| + .num_resources = ARRAY_SIZE(scif6_resources), |
| .dev = { |
| .platform_data = &scif6_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif7_platform_data = { |
| - .mapbase = 0xe800a800, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RIE | SCSCR_TIE | SCSCR_RE | SCSCR_TE | |
| SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 287, 288, 289, 286 }, |
| .regtype = SCIx_SH2_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif7_resources[] = { |
| + DEFINE_RES_MEM(0xe800a800, 0x100), |
| + DEFINE_RES_IRQ(287), |
| + DEFINE_RES_IRQ(288), |
| + DEFINE_RES_IRQ(289), |
| + DEFINE_RES_IRQ(286), |
| +}; |
| + |
| static struct platform_device scif7_device = { |
| .name = "sh-sci", |
| .id = 7, |
| + .resource = scif7_resources, |
| + .num_resources = ARRAY_SIZE(scif7_resources), |
| .dev = { |
| .platform_data = &scif7_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7705.c b/arch/sh/kernel/cpu/sh3/setup-sh7705.c |
| index 03e4c96f2b11..10dd0a01d5f8 100644 |
| --- a/arch/sh/kernel/cpu/sh3/setup-sh7705.c |
| +++ b/arch/sh/kernel/cpu/sh3/setup-sh7705.c |
| @@ -70,39 +70,49 @@ static DECLARE_INTC_DESC(intc_desc, "sh7705", vectors, NULL, |
| NULL, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xa4410000, |
| .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, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| .ops = &sh770x_sci_port_ops, |
| .regtype = SCIx_SH7705_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xa4410000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xa4400000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TIE | SCSCR_RIE | SCSCR_TE | SCSCR_RE, |
| .scbrr_algo_id = SCBRR_ALGO_4, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x880)), |
| .ops = &sh770x_sci_port_ops, |
| .regtype = SCIx_SH7705_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xa4400000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh3/setup-sh770x.c b/arch/sh/kernel/cpu/sh3/setup-sh770x.c |
| index ba26cd9ce69b..d5541b0a6dc5 100644 |
| --- a/arch/sh/kernel/cpu/sh3/setup-sh770x.c |
| +++ b/arch/sh/kernel/cpu/sh3/setup-sh770x.c |
| @@ -109,20 +109,25 @@ static struct platform_device rtc_device = { |
| }; |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfffffe80, |
| .port_reg = 0xa4000136, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCI, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x4e0)), |
| .ops = &sh770x_sci_port_ops, |
| .regshift = 1, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfffffe80, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x4e0)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| @@ -131,19 +136,24 @@ static struct platform_device scif0_device = { |
| defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
| defined(CONFIG_CPU_SUBTYPE_SH7709) |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xa4000150, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| .ops = &sh770x_sci_port_ops, |
| .regtype = SCIx_SH3_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xa4000150, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| @@ -152,20 +162,25 @@ static struct platform_device scif1_device = { |
| #if defined(CONFIG_CPU_SUBTYPE_SH7707) || \ |
| defined(CONFIG_CPU_SUBTYPE_SH7709) |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xa4000140, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_IRDA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x880)), |
| .ops = &sh770x_sci_port_ops, |
| .regshift = 1, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xa4000140, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7710.c b/arch/sh/kernel/cpu/sh3/setup-sh7710.c |
| index 93c9c5e24a7a..de229f5c6b1e 100644 |
| --- a/arch/sh/kernel/cpu/sh3/setup-sh7710.c |
| +++ b/arch/sh/kernel/cpu/sh3/setup-sh7710.c |
| @@ -98,36 +98,46 @@ static struct platform_device rtc_device = { |
| }; |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xa4400000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE | |
| SCSCR_CKE1 | SCSCR_CKE0, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x880)), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xa4400000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xa4410000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE | |
| SCSCR_CKE1 | SCSCR_CKE0, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xa4410000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh3/setup-sh7720.c b/arch/sh/kernel/cpu/sh3/setup-sh7720.c |
| index 42d991f632b1..ca835819357b 100644 |
| --- a/arch/sh/kernel/cpu/sh3/setup-sh7720.c |
| +++ b/arch/sh/kernel/cpu/sh3/setup-sh7720.c |
| @@ -52,38 +52,48 @@ static struct platform_device rtc_device = { |
| }; |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xa4430000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE, |
| .scbrr_algo_id = SCBRR_ALGO_4, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| .ops = &sh7720_sci_port_ops, |
| .regtype = SCIx_SH7705_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xa4430000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xa4438000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE, |
| .scbrr_algo_id = SCBRR_ALGO_4, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
| .ops = &sh7720_sci_port_ops, |
| .regtype = SCIx_SH7705_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xa4438000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c |
| index 2a5320aa73bb..0fc6a105144a 100644 |
| --- a/arch/sh/kernel/cpu/sh4/setup-sh4-202.c |
| +++ b/arch/sh/kernel/cpu/sh4/setup-sh4-202.c |
| @@ -17,20 +17,25 @@ |
| #include <linux/io.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe80000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x700), |
| - evt2irq(0x720), |
| - evt2irq(0x760), |
| - evt2irq(0x740) }, |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe80000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| + DEFINE_RES_IRQ(evt2irq(0x720)), |
| + DEFINE_RES_IRQ(evt2irq(0x760)), |
| + DEFINE_RES_IRQ(evt2irq(0x740)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7750.c b/arch/sh/kernel/cpu/sh4/setup-sh7750.c |
| index 04a45512596f..5613c15d8163 100644 |
| --- a/arch/sh/kernel/cpu/sh4/setup-sh7750.c |
| +++ b/arch/sh/kernel/cpu/sh4/setup-sh7750.c |
| @@ -38,36 +38,46 @@ static struct platform_device rtc_device = { |
| }; |
| |
| static struct plat_sci_port sci_platform_data = { |
| - .mapbase = 0xffe00000, |
| .port_reg = 0xffe0001C, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCI, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x4e0)), |
| .regshift = 2, |
| }; |
| |
| +static struct resource sci_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x4e0)), |
| +}; |
| + |
| static struct platform_device sci_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = sci_resources, |
| + .num_resources = ARRAY_SIZE(sci_resources), |
| .dev = { |
| .platform_data = &sci_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif_platform_data = { |
| - .mapbase = 0xffe80000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_TE | SCSCR_RE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
| +}; |
| + |
| +static struct resource scif_resources[] = { |
| + DEFINE_RES_MEM(0xffe80000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| }; |
| |
| static struct platform_device scif_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif_resources, |
| + .num_resources = ARRAY_SIZE(scif_resources), |
| .dev = { |
| .platform_data = &scif_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4/setup-sh7760.c b/arch/sh/kernel/cpu/sh4/setup-sh7760.c |
| index 98e075ada44e..a83e6f5a42d0 100644 |
| --- a/arch/sh/kernel/cpu/sh4/setup-sh7760.c |
| +++ b/arch/sh/kernel/cpu/sh4/setup-sh7760.c |
| @@ -128,83 +128,103 @@ static DECLARE_INTC_DESC(intc_desc_irq, "sh7760-irq", vectors_irq, groups, |
| mask_registers, prio_registers, NULL); |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xfe600000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x880), |
| - evt2irq(0x8a0), |
| - evt2irq(0x8e0), |
| - evt2irq(0x8c0) }, |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xfe600000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| + DEFINE_RES_IRQ(evt2irq(0x8a0)), |
| + DEFINE_RES_IRQ(evt2irq(0x8e0)), |
| + DEFINE_RES_IRQ(evt2irq(0x8c0)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xfe610000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .type = PORT_SCIF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| - .irqs = { evt2irq(0xb00), |
| - evt2irq(0xb20), |
| - evt2irq(0xb60), |
| - evt2irq(0xb40) }, |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xfe610000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xb00)), |
| + DEFINE_RES_IRQ(evt2irq(0xb20)), |
| + DEFINE_RES_IRQ(evt2irq(0xb60)), |
| + DEFINE_RES_IRQ(evt2irq(0xb40)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfe620000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0xb80), |
| - evt2irq(0xba0), |
| - evt2irq(0xbe0), |
| - evt2irq(0xbc0) }, |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfe620000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xb80)), |
| + DEFINE_RES_IRQ(evt2irq(0xba0)), |
| + DEFINE_RES_IRQ(evt2irq(0xbe0)), |
| + DEFINE_RES_IRQ(evt2irq(0xbc0)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfe480000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCI, |
| - .irqs = { evt2irq(0xc00), |
| - evt2irq(0xc20), |
| - evt2irq(0xc40), }, |
| .regshift = 2, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfe480000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| + DEFINE_RES_IRQ(evt2irq(0xc40)), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c |
| index b91ea8300a3e..8b45f672448d 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7343.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7343.c |
| @@ -18,68 +18,88 @@ |
| |
| /* Serial */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe10000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffe20000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe20000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc40)), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xffe30000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc60)), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xffe30000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc60)), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c |
| index 0bd09d51419f..317f710a5b2b 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7366.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7366.c |
| @@ -20,18 +20,23 @@ |
| #include <asm/clock.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .port_reg = 0xa405013e, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c |
| index 6a868b091c2d..6aeebb5299f6 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7722.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7722.c |
| @@ -179,57 +179,72 @@ struct platform_device dma_device = { |
| |
| /* Serial */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| .ops = &sh7722_sci_port_ops, |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe10000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
| .ops = &sh7722_sci_port_ops, |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffe20000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
| .ops = &sh7722_sci_port_ops, |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe20000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc40)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c |
| index 28d6fd835fe0..521a09ef4ffe 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7723.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7723.c |
| @@ -23,111 +23,141 @@ |
| |
| /* Serial */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .port_reg = 0xa4050160, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe10000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffe20000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe20000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc40)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xa4e30000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xa4e30000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xa4e40000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xd00)), |
| +}; |
| + |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xa4e40000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xd00)), |
| }; |
| |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xa4e50000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xfa0)), |
| +}; |
| + |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xa4e50000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xfa0)), |
| }; |
| |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c |
| index 26b74c2f9496..fb0a23749147 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7724.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7724.c |
| @@ -290,111 +290,141 @@ static struct platform_device dma1_device = { |
| |
| /* Serial */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc00)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc00)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe10000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc20)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc20)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffe20000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xc40)), |
| .regtype = SCIx_SH4_SCIF_NO_SCSPTR_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe20000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xc40)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xa4e30000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xa4e30000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xa4e40000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xd00)), |
| +}; |
| + |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xa4e40000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xd00)), |
| }; |
| |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xa4e50000, |
| .port_reg = SCIx_NOT_SUPPORTED, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE, |
| .scbrr_algo_id = SCBRR_ALGO_3, |
| .type = PORT_SCIFA, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xfa0)), |
| +}; |
| + |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xa4e50000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xfa0)), |
| }; |
| |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7734.c b/arch/sh/kernel/cpu/sh4a/setup-sh7734.c |
| index f799971d453c..bedf8fb5be6f 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7734.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7734.c |
| @@ -25,108 +25,138 @@ |
| |
| /* SCIF */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xFFE40000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x8C0)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe40000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x8c0)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| - .id = 0, |
| + .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xFFE41000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x8E0)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe41000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x8e0)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| - .id = 1, |
| + .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xFFE42000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x900)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe42000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x900)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| - .id = 2, |
| + .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xFFE43000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x920)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xffe43000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x920)), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| - .id = 3, |
| + .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xFFE44000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x940)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xffe44000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x940)), |
| +}; |
| + |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| - .id = 4, |
| + .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xFFE43000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x960)), |
| .regtype = SCIx_SH4_SCIF_REGTYPE, |
| }; |
| |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xffe43000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x960)), |
| +}; |
| + |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| - .id = 5, |
| + .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c |
| index 9079a0f9ea9b..6b8d0e61704c 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7757.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7757.c |
| @@ -24,51 +24,66 @@ |
| #include <cpu/sh7757.h> |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xfe4b0000, /* SCIF2 */ |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xfe4b0000, 0x100), /* SCIF2 */ |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xfe4c0000, /* SCIF3 */ |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xfe4c0000, 0x100), /* SCIF3 */ |
| + DEFINE_RES_IRQ(evt2irq(0xb80)), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xfe4d0000, /* SCIF4 */ |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xF00)), |
| +}; |
| + |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xfe4d0000, 0x100), /* SCIF4 */ |
| + DEFINE_RES_IRQ(evt2irq(0xf00)), |
| }; |
| |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c |
| index 1686acaaf45a..940505cec66f 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7763.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7763.c |
| @@ -19,54 +19,69 @@ |
| #include <linux/usb/ohci_pdriver.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe08000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe08000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xb80)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffe10000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xf00)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xf00)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c |
| index 256ea7a45164..f9c04dee4e82 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7770.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7770.c |
| @@ -16,170 +16,220 @@ |
| #include <linux/io.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xff923000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9a0)), |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xff923000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9a0)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xff924000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9c0)), |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xff924000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9c0)), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xff925000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9e0)), |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xff925000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9e0)), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xff926000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xa00)), |
| +}; |
| + |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xff926000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xa00)), |
| }; |
| |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xff927000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xa20)), |
| +}; |
| + |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xff927000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xa20)), |
| }; |
| |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xff928000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xa40)), |
| +}; |
| + |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xff928000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xa40)), |
| }; |
| |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif6_platform_data = { |
| - .mapbase = 0xff929000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xa60)), |
| +}; |
| + |
| +static struct resource scif6_resources[] = { |
| + DEFINE_RES_MEM(0xff929000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xa60)), |
| }; |
| |
| static struct platform_device scif6_device = { |
| .name = "sh-sci", |
| .id = 6, |
| + .resource = scif6_resources, |
| + .num_resources = ARRAY_SIZE(scif6_resources), |
| .dev = { |
| .platform_data = &scif6_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif7_platform_data = { |
| - .mapbase = 0xff92a000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xa80)), |
| +}; |
| + |
| +static struct resource scif7_resources[] = { |
| + DEFINE_RES_MEM(0xff92a000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xa80)), |
| }; |
| |
| static struct platform_device scif7_device = { |
| .name = "sh-sci", |
| .id = 7, |
| + .resource = scif7_resources, |
| + .num_resources = ARRAY_SIZE(scif7_resources), |
| .dev = { |
| .platform_data = &scif7_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif8_platform_data = { |
| - .mapbase = 0xff92b000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xaa0)), |
| +}; |
| + |
| +static struct resource scif8_resources[] = { |
| + DEFINE_RES_MEM(0xff92b000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xaa0)), |
| }; |
| |
| static struct platform_device scif8_device = { |
| .name = "sh-sci", |
| .id = 8, |
| + .resource = scif8_resources, |
| + .num_resources = ARRAY_SIZE(scif8_resources), |
| .dev = { |
| .platform_data = &scif8_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif9_platform_data = { |
| - .mapbase = 0xff92c000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_TOIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xac0)), |
| +}; |
| + |
| +static struct resource scif9_resources[] = { |
| + DEFINE_RES_MEM(0xff92c000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xac0)), |
| }; |
| |
| static struct platform_device scif9_device = { |
| .name = "sh-sci", |
| .id = 9, |
| + .resource = scif9_resources, |
| + .num_resources = ARRAY_SIZE(scif9_resources), |
| .dev = { |
| .platform_data = &scif9_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c |
| index de45b704687a..227f8f4080fa 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7780.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7780.c |
| @@ -18,36 +18,46 @@ |
| #include <cpu/dma-register.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffe00000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffe00000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffe10000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0xb80)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffe10000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0xb80)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c |
| index 0968ecb962e6..b9f64c1ee895 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7785.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7785.c |
| @@ -20,108 +20,138 @@ |
| #include <cpu/dma-register.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffea0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x700)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffea0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffeb0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x780)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffeb0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x780)), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffec0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x980)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffec0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x980)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xffed0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9a0)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xffed0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9a0)), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xffee0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9c0)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xffee0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9c0)), |
| +}; |
| + |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xffef0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x9e0)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xffef0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x9e0)), |
| +}; |
| + |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c |
| index ab52d4d4484d..92b95ceabd6e 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-sh7786.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-sh7786.c |
| @@ -28,21 +28,26 @@ |
| #include <asm/mmzone.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffea0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x700), |
| - evt2irq(0x720), |
| - evt2irq(0x760), |
| - evt2irq(0x740) }, |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffea0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| + DEFINE_RES_IRQ(evt2irq(0x720)), |
| + DEFINE_RES_IRQ(evt2irq(0x760)), |
| + DEFINE_RES_IRQ(evt2irq(0x740)), |
| +}; |
| + |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| @@ -52,90 +57,124 @@ static struct platform_device scif0_device = { |
| * The rest of these all have multiplexed IRQs |
| */ |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffeb0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x780)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffeb0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x780)), |
| +}; |
| + |
| +static struct resource scif1_demux_resources[] = { |
| + DEFINE_RES_MEM(0xffeb0000, 0x100), |
| + /* Placeholders, see sh7786_devices_setup() */ |
| + DEFINE_RES_IRQ(0), |
| + DEFINE_RES_IRQ(0), |
| + DEFINE_RES_IRQ(0), |
| + DEFINE_RES_IRQ(0), |
| +}; |
| + |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffec0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x840)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffec0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x840)), |
| +}; |
| + |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif3_platform_data = { |
| - .mapbase = 0xffed0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x860)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif3_resources[] = { |
| + DEFINE_RES_MEM(0xffed0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x860)), |
| +}; |
| + |
| static struct platform_device scif3_device = { |
| .name = "sh-sci", |
| .id = 3, |
| + .resource = scif3_resources, |
| + .num_resources = ARRAY_SIZE(scif3_resources), |
| .dev = { |
| .platform_data = &scif3_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif4_platform_data = { |
| - .mapbase = 0xffee0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x880)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif4_resources[] = { |
| + DEFINE_RES_MEM(0xffee0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| +}; |
| + |
| static struct platform_device scif4_device = { |
| .name = "sh-sci", |
| .id = 4, |
| + .resource = scif4_resources, |
| + .num_resources = ARRAY_SIZE(scif4_resources), |
| .dev = { |
| .platform_data = &scif4_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif5_platform_data = { |
| - .mapbase = 0xffef0000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE | SCSCR_CKE1, |
| .scbrr_algo_id = SCBRR_ALGO_1, |
| .type = PORT_SCIF, |
| - .irqs = SCIx_IRQ_MUXED(evt2irq(0x8a0)), |
| .regtype = SCIx_SH4_SCIF_FIFODATA_REGTYPE, |
| }; |
| |
| +static struct resource scif5_resources[] = { |
| + DEFINE_RES_MEM(0xffef0000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x8a0)), |
| +}; |
| + |
| static struct platform_device scif5_device = { |
| .name = "sh-sci", |
| .id = 5, |
| + .resource = scif5_resources, |
| + .num_resources = ARRAY_SIZE(scif5_resources), |
| .dev = { |
| .platform_data = &scif5_platform_data, |
| }, |
| @@ -1037,13 +1076,16 @@ static int __init sh7786_devices_setup(void) |
| */ |
| irq = intc_irq_lookup(sh7786_intc_desc.name, TXI1); |
| if (irq > 0) { |
| - scif1_platform_data.irqs[SCIx_TXI_IRQ] = irq; |
| - scif1_platform_data.irqs[SCIx_ERI_IRQ] = |
| + scif1_demux_resources[1].start = |
| intc_irq_lookup(sh7786_intc_desc.name, ERI1); |
| - scif1_platform_data.irqs[SCIx_BRI_IRQ] = |
| - intc_irq_lookup(sh7786_intc_desc.name, BRI1); |
| - scif1_platform_data.irqs[SCIx_RXI_IRQ] = |
| + scif1_demux_resources[2].start = |
| intc_irq_lookup(sh7786_intc_desc.name, RXI1); |
| + scif1_demux_resources[3].start = irq; |
| + scif1_demux_resources[4].start = |
| + intc_irq_lookup(sh7786_intc_desc.name, BRI1); |
| + |
| + scif1_device.resource = scif1_demux_resources; |
| + scif1_device.num_resources = ARRAY_SIZE(scif1_demux_resources); |
| } |
| |
| ret = platform_add_devices(sh7786_early_devices, |
| diff --git a/arch/sh/kernel/cpu/sh4a/setup-shx3.c b/arch/sh/kernel/cpu/sh4a/setup-shx3.c |
| index 688f7ed1bab1..4d65be9be001 100644 |
| --- a/arch/sh/kernel/cpu/sh4a/setup-shx3.c |
| +++ b/arch/sh/kernel/cpu/sh4a/setup-shx3.c |
| @@ -28,60 +28,75 @@ |
| * all rather than adding infrastructure to hack around it. |
| */ |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = 0xffc30000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x700), |
| - evt2irq(0x720), |
| - evt2irq(0x760), |
| - evt2irq(0x740) }, |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(0xffc30000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x700)), |
| + DEFINE_RES_IRQ(evt2irq(0x720)), |
| + DEFINE_RES_IRQ(evt2irq(0x760)), |
| + DEFINE_RES_IRQ(evt2irq(0x740)), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif1_platform_data = { |
| - .mapbase = 0xffc40000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x780), |
| - evt2irq(0x7a0), |
| - evt2irq(0x7e0), |
| - evt2irq(0x7c0) }, |
| +}; |
| + |
| +static struct resource scif1_resources[] = { |
| + DEFINE_RES_MEM(0xffc40000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x780)), |
| + DEFINE_RES_IRQ(evt2irq(0x7a0)), |
| + DEFINE_RES_IRQ(evt2irq(0x7e0)), |
| + DEFINE_RES_IRQ(evt2irq(0x7c0)), |
| }; |
| |
| static struct platform_device scif1_device = { |
| .name = "sh-sci", |
| .id = 1, |
| + .resource = scif1_resources, |
| + .num_resources = ARRAY_SIZE(scif1_resources), |
| .dev = { |
| .platform_data = &scif1_platform_data, |
| }, |
| }; |
| |
| static struct plat_sci_port scif2_platform_data = { |
| - .mapbase = 0xffc60000, |
| .flags = UPF_BOOT_AUTOCONF, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { evt2irq(0x880), |
| - evt2irq(0x8a0), |
| - evt2irq(0x8e0), |
| - evt2irq(0x8c0) }, |
| +}; |
| + |
| +static struct resource scif2_resources[] = { |
| + DEFINE_RES_MEM(0xffc60000, 0x100), |
| + DEFINE_RES_IRQ(evt2irq(0x880)), |
| + DEFINE_RES_IRQ(evt2irq(0x8a0)), |
| + DEFINE_RES_IRQ(evt2irq(0x8e0)), |
| + DEFINE_RES_IRQ(evt2irq(0x8c0)), |
| }; |
| |
| static struct platform_device scif2_device = { |
| .name = "sh-sci", |
| .id = 2, |
| + .resource = scif2_resources, |
| + .num_resources = ARRAY_SIZE(scif2_resources), |
| .dev = { |
| .platform_data = &scif2_platform_data, |
| }, |
| diff --git a/arch/sh/kernel/cpu/sh5/setup-sh5.c b/arch/sh/kernel/cpu/sh5/setup-sh5.c |
| index 18419f1de963..64b098162c98 100644 |
| --- a/arch/sh/kernel/cpu/sh5/setup-sh5.c |
| +++ b/arch/sh/kernel/cpu/sh5/setup-sh5.c |
| @@ -17,17 +17,24 @@ |
| #include <asm/addrspace.h> |
| |
| static struct plat_sci_port scif0_platform_data = { |
| - .mapbase = PHYS_PERIPHERAL_BLOCK + 0x01030000, |
| .flags = UPF_BOOT_AUTOCONF | UPF_IOREMAP, |
| .scscr = SCSCR_RE | SCSCR_TE | SCSCR_REIE, |
| .scbrr_algo_id = SCBRR_ALGO_2, |
| .type = PORT_SCIF, |
| - .irqs = { 39, 40, 42, 0 }, |
| +}; |
| + |
| +static struct resource scif0_resources[] = { |
| + DEFINE_RES_MEM(PHYS_PERIPHERAL_BLOCK + 0x01030000, 0x100), |
| + DEFINE_RES_IRQ(39), |
| + DEFINE_RES_IRQ(40), |
| + DEFINE_RES_IRQ(42), |
| }; |
| |
| static struct platform_device scif0_device = { |
| .name = "sh-sci", |
| .id = 0, |
| + .resource = scif0_resources, |
| + .num_resources = ARRAY_SIZE(scif0_resources), |
| .dev = { |
| .platform_data = &scif0_platform_data, |
| }, |
| -- |
| 1.8.5.rc3 |
| |