Commit be091d20 authored by Magnus Damm's avatar Magnus Damm Committed by Paul Mundt

sh: sh2a scif pdata (sh7201/sh7203/sh7206/mxg)

This patch breaks out the sh2a scif serial port platform
data from a shared platform device to one platform
device per port. Also, add serial ports to the list of
early platform devices.
Signed-off-by: default avatarMagnus Damm <damm@opensource.se>
Signed-off-by: default avatarPaul Mundt <lethal@linux-sh.org>
parent 632fd800
...@@ -207,27 +207,23 @@ static struct platform_device mtu2_2_device = { ...@@ -207,27 +207,23 @@ static struct platform_device mtu2_2_device = {
.num_resources = ARRAY_SIZE(mtu2_2_resources), .num_resources = ARRAY_SIZE(mtu2_2_resources),
}; };
static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port scif0_platform_data = {
{ .mapbase = 0xff804000,
.mapbase = 0xff804000, .flags = UPF_BOOT_AUTOCONF,
.flags = UPF_BOOT_AUTOCONF, .type = PORT_SCIF,
.type = PORT_SCIF, .irqs = { 220, 220, 220, 220 },
.irqs = { 220, 220, 220, 220 },
}, {
.flags = 0,
}
}; };
static struct platform_device sci_device = { static struct platform_device scif0_device = {
.name = "sh-sci", .name = "sh-sci",
.id = -1, .id = 0,
.dev = { .dev = {
.platform_data = sci_platform_data, .platform_data = &scif0_platform_data,
}, },
}; };
static struct platform_device *mxg_devices[] __initdata = { static struct platform_device *mxg_devices[] __initdata = {
&sci_device, &scif0_device,
&mtu2_0_device, &mtu2_0_device,
&mtu2_1_device, &mtu2_1_device,
&mtu2_2_device, &mtu2_2_device,
...@@ -246,6 +242,7 @@ void __init plat_irq_setup(void) ...@@ -246,6 +242,7 @@ void __init plat_irq_setup(void)
} }
static struct platform_device *mxg_early_devices[] __initdata = { static struct platform_device *mxg_early_devices[] __initdata = {
&scif0_device,
&mtu2_0_device, &mtu2_0_device,
&mtu2_1_device, &mtu2_1_device,
&mtu2_2_device, &mtu2_2_device,
......
...@@ -177,57 +177,123 @@ static struct intc_mask_reg mask_registers[] __initdata = { ...@@ -177,57 +177,123 @@ static struct intc_mask_reg mask_registers[] __initdata = {
static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups, static DECLARE_INTC_DESC(intc_desc, "sh7201", vectors, groups,
mask_registers, prio_registers, NULL); mask_registers, prio_registers, NULL);
static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port scif0_platform_data = {
{ .mapbase = 0xfffe8000,
.mapbase = 0xfffe8000, .flags = UPF_BOOT_AUTOCONF,
.flags = UPF_BOOT_AUTOCONF, .type = PORT_SCIF,
.type = PORT_SCIF, .irqs = { 180, 180, 180, 180 }
.irqs = { 180, 180, 180, 180 } };
}, {
.mapbase = 0xfffe8800, static struct platform_device scif0_device = {
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 184, 184, 184, 184 }
}, {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 188, 188, 188, 188 }
}, {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 192, 192, 192, 192 }
}, {
.mapbase = 0xfffea000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 }
}, {
.mapbase = 0xfffea800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 }
}, {
.mapbase = 0xfffeb000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 }
}, {
.mapbase = 0xfffeb800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 208, 208, 208, 208 }
}, {
.flags = 0,
}
};
static struct platform_device sci_device = {
.name = "sh-sci", .name = "sh-sci",
.id = -1, .id = 0,
.dev = {
.platform_data = &scif0_platform_data,
},
};
static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 184, 184, 184, 184 }
};
static struct platform_device scif1_device = {
.name = "sh-sci",
.id = 1,
.dev = {
.platform_data = &scif1_platform_data,
},
};
static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 188, 188, 188, 188 }
};
static struct platform_device scif2_device = {
.name = "sh-sci",
.id = 2,
.dev = {
.platform_data = &scif2_platform_data,
},
};
static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 192, 192, 192, 192 }
};
static struct platform_device scif3_device = {
.name = "sh-sci",
.id = 3,
.dev = {
.platform_data = &scif3_platform_data,
},
};
static struct plat_sci_port scif4_platform_data = {
.mapbase = 0xfffea000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 }
};
static struct platform_device scif4_device = {
.name = "sh-sci",
.id = 4,
.dev = {
.platform_data = &scif4_platform_data,
},
};
static struct plat_sci_port scif5_platform_data = {
.mapbase = 0xfffea800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 }
};
static struct platform_device scif5_device = {
.name = "sh-sci",
.id = 5,
.dev = {
.platform_data = &scif5_platform_data,
},
};
static struct plat_sci_port scif6_platform_data = {
.mapbase = 0xfffeb000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 }
};
static struct platform_device scif6_device = {
.name = "sh-sci",
.id = 6,
.dev = {
.platform_data = &scif6_platform_data,
},
};
static struct plat_sci_port scif7_platform_data = {
.mapbase = 0xfffeb800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 208, 208, 208, 208 }
};
static struct platform_device scif7_device = {
.name = "sh-sci",
.id = 7,
.dev = { .dev = {
.platform_data = sci_platform_data, .platform_data = &scif7_platform_data,
}, },
}; };
...@@ -345,7 +411,14 @@ static struct platform_device mtu2_2_device = { ...@@ -345,7 +411,14 @@ static struct platform_device mtu2_2_device = {
}; };
static struct platform_device *sh7201_devices[] __initdata = { static struct platform_device *sh7201_devices[] __initdata = {
&sci_device, &scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&scif4_device,
&scif5_device,
&scif6_device,
&scif7_device,
&rtc_device, &rtc_device,
&mtu2_0_device, &mtu2_0_device,
&mtu2_1_device, &mtu2_1_device,
...@@ -365,6 +438,14 @@ void __init plat_irq_setup(void) ...@@ -365,6 +438,14 @@ void __init plat_irq_setup(void)
} }
static struct platform_device *sh7201_early_devices[] __initdata = { static struct platform_device *sh7201_early_devices[] __initdata = {
&scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&scif4_device,
&scif5_device,
&scif6_device,
&scif7_device,
&mtu2_0_device, &mtu2_0_device,
&mtu2_1_device, &mtu2_1_device,
&mtu2_2_device, &mtu2_2_device,
......
...@@ -173,37 +173,63 @@ static struct intc_mask_reg mask_registers[] __initdata = { ...@@ -173,37 +173,63 @@ static struct intc_mask_reg mask_registers[] __initdata = {
static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups, static DECLARE_INTC_DESC(intc_desc, "sh7203", vectors, groups,
mask_registers, prio_registers, NULL); mask_registers, prio_registers, NULL);
static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port scif0_platform_data = {
{ .mapbase = 0xfffe8000,
.mapbase = 0xfffe8000, .flags = UPF_BOOT_AUTOCONF,
.flags = UPF_BOOT_AUTOCONF, .type = PORT_SCIF,
.type = PORT_SCIF, .irqs = { 192, 192, 192, 192 },
.irqs = { 192, 192, 192, 192 },
}, {
.mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 },
}, {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 },
}, {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 },
}, {
.flags = 0,
}
}; };
static struct platform_device sci_device = { static struct platform_device scif0_device = {
.name = "sh-sci", .name = "sh-sci",
.id = -1, .id = 0,
.dev = {
.platform_data = &scif0_platform_data,
},
};
static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 196, 196, 196, 196 },
};
static struct platform_device scif1_device = {
.name = "sh-sci",
.id = 1,
.dev = {
.platform_data = &scif1_platform_data,
},
};
static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 200, 200, 200, 200 },
};
static struct platform_device scif2_device = {
.name = "sh-sci",
.id = 2,
.dev = {
.platform_data = &scif2_platform_data,
},
};
static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 204, 204, 204, 204 },
};
static struct platform_device scif3_device = {
.name = "sh-sci",
.id = 3,
.dev = { .dev = {
.platform_data = sci_platform_data, .platform_data = &scif3_platform_data,
}, },
}; };
...@@ -354,7 +380,10 @@ static struct platform_device rtc_device = { ...@@ -354,7 +380,10 @@ static struct platform_device rtc_device = {
}; };
static struct platform_device *sh7203_devices[] __initdata = { static struct platform_device *sh7203_devices[] __initdata = {
&sci_device, &scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&cmt0_device, &cmt0_device,
&cmt1_device, &cmt1_device,
&mtu2_0_device, &mtu2_0_device,
...@@ -375,6 +404,10 @@ void __init plat_irq_setup(void) ...@@ -375,6 +404,10 @@ void __init plat_irq_setup(void)
} }
static struct platform_device *sh7203_early_devices[] __initdata = { static struct platform_device *sh7203_early_devices[] __initdata = {
&scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&cmt0_device, &cmt0_device,
&cmt1_device, &cmt1_device,
&mtu2_0_device, &mtu2_0_device,
......
...@@ -133,37 +133,63 @@ static struct intc_mask_reg mask_registers[] __initdata = { ...@@ -133,37 +133,63 @@ static struct intc_mask_reg mask_registers[] __initdata = {
static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups, static DECLARE_INTC_DESC(intc_desc, "sh7206", vectors, groups,
mask_registers, prio_registers, NULL); mask_registers, prio_registers, NULL);
static struct plat_sci_port sci_platform_data[] = { static struct plat_sci_port scif0_platform_data = {
{ .mapbase = 0xfffe8000,
.mapbase = 0xfffe8000, .flags = UPF_BOOT_AUTOCONF,
.flags = UPF_BOOT_AUTOCONF, .type = PORT_SCIF,
.type = PORT_SCIF, .irqs = { 240, 240, 240, 240 },
.irqs = { 240, 240, 240, 240 },
}, {
.mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 244, 244, 244, 244 },
}, {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 248, 248, 248, 248 },
}, {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 252, 252, 252, 252 },
}, {
.flags = 0,
}
}; };
static struct platform_device sci_device = { static struct platform_device scif0_device = {
.name = "sh-sci", .name = "sh-sci",
.id = -1, .id = 0,
.dev = {
.platform_data = &scif0_platform_data,
},
};
static struct plat_sci_port scif1_platform_data = {
.mapbase = 0xfffe8800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 244, 244, 244, 244 },
};
static struct platform_device scif1_device = {
.name = "sh-sci",
.id = 1,
.dev = {
.platform_data = &scif1_platform_data,
},
};
static struct plat_sci_port scif2_platform_data = {
.mapbase = 0xfffe9000,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 248, 248, 248, 248 },
};
static struct platform_device scif2_device = {
.name = "sh-sci",
.id = 2,
.dev = {
.platform_data = &scif2_platform_data,
},
};
static struct plat_sci_port scif3_platform_data = {
.mapbase = 0xfffe9800,
.flags = UPF_BOOT_AUTOCONF,
.type = PORT_SCIF,
.irqs = { 252, 252, 252, 252 },
};
static struct platform_device scif3_device = {
.name = "sh-sci",
.id = 3,
.dev = { .dev = {
.platform_data = sci_platform_data, .platform_data = &scif3_platform_data,
}, },
}; };
...@@ -325,7 +351,10 @@ static struct platform_device mtu2_2_device = { ...@@ -325,7 +351,10 @@ static struct platform_device mtu2_2_device = {
}; };
static struct platform_device *sh7206_devices[] __initdata = { static struct platform_device *sh7206_devices[] __initdata = {
&sci_device, &scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&cmt0_device, &cmt0_device,
&cmt1_device, &cmt1_device,
&mtu2_0_device, &mtu2_0_device,
...@@ -346,6 +375,10 @@ void __init plat_irq_setup(void) ...@@ -346,6 +375,10 @@ void __init plat_irq_setup(void)
} }
static struct platform_device *sh7206_early_devices[] __initdata = { static struct platform_device *sh7206_early_devices[] __initdata = {
&scif0_device,
&scif1_device,
&scif2_device,
&scif3_device,
&cmt0_device, &cmt0_device,
&cmt1_device, &cmt1_device,
&mtu2_0_device, &mtu2_0_device,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment