mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6: (33 commits) sh: Fix test of unsigned in se7722_irq_demux() sh: mach-ecovec24: Add FSI sound support sh: mach-ecovec24: Add mt9t112 camera support sh: mach-ecovec24: Add tw9910 support sh: MSIOF/mmc_spi platform data for the Ecovec24 board sh: ms7724se: Add ak4642 support sh: Fix up FPU build for SH5 sh: Remove old early serial console code V2 sh: sh5 scif pdata (sh5-101/sh5-103) sh: sh4a scif pdata (sh7757/sh7763/sh7770/sh7780/sh7785/sh7786/x3) sh: sh4a scif pdata (sh7343/sh7366/sh7722/sh7723/sh7724) sh: sh4 scif pdata (sh7750/sh7760/sh4-202) sh: sh3 scif pdata (sh7705/sh770x/sh7710/sh7720) sh: sh2a scif pdata (sh7201/sh7203/sh7206/mxg) sh: sh2 scif pdata (sh7616) sh-sci: Extend sh-sci driver with early console V2 sh: Stub in P3 ioremap support for nommu parts. sh: wire up vmallocinfo support in ioremap() implementations. sh: Make the unaligned trap handler always obey notification levels. sh: Couple kernel and user write page perm bits for CONFIG_X2TLB ...
This commit is contained in:
commit
9b2831704e
62 changed files with 1956 additions and 1102 deletions
|
|
@ -1043,10 +1043,14 @@ static void __devinit sci_init_single(struct platform_device *dev,
|
|||
sci_port->port.iotype = UPIO_MEM;
|
||||
sci_port->port.line = index;
|
||||
sci_port->port.fifosize = 1;
|
||||
sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL;
|
||||
sci_port->dclk = clk_get(&dev->dev, "peripheral_clk");
|
||||
sci_port->enable = sci_clk_enable;
|
||||
sci_port->disable = sci_clk_disable;
|
||||
|
||||
if (dev) {
|
||||
sci_port->iclk = p->clk ? clk_get(&dev->dev, p->clk) : NULL;
|
||||
sci_port->dclk = clk_get(&dev->dev, "peripheral_clk");
|
||||
sci_port->enable = sci_clk_enable;
|
||||
sci_port->disable = sci_clk_disable;
|
||||
sci_port->port.dev = &dev->dev;
|
||||
}
|
||||
|
||||
sci_port->break_timer.data = (unsigned long)sci_port;
|
||||
sci_port->break_timer.function = sci_break_timer;
|
||||
|
|
@ -1057,7 +1061,6 @@ static void __devinit sci_init_single(struct platform_device *dev,
|
|||
|
||||
sci_port->port.irq = p->irqs[SCIx_TXI_IRQ];
|
||||
sci_port->port.flags = p->flags;
|
||||
sci_port->port.dev = &dev->dev;
|
||||
sci_port->type = sci_port->port.type = p->type;
|
||||
|
||||
memcpy(&sci_port->irqs, &p->irqs, sizeof(p->irqs));
|
||||
|
|
@ -1101,7 +1104,7 @@ static void serial_console_write(struct console *co, const char *s,
|
|||
sci_port->disable(port);
|
||||
}
|
||||
|
||||
static int __init serial_console_setup(struct console *co, char *options)
|
||||
static int __devinit serial_console_setup(struct console *co, char *options)
|
||||
{
|
||||
struct sci_port *sci_port;
|
||||
struct uart_port *port;
|
||||
|
|
@ -1119,9 +1122,14 @@ static int __init serial_console_setup(struct console *co, char *options)
|
|||
if (co->index >= SCI_NPORTS)
|
||||
co->index = 0;
|
||||
|
||||
sci_port = &sci_ports[co->index];
|
||||
port = &sci_port->port;
|
||||
co->data = port;
|
||||
if (co->data) {
|
||||
port = co->data;
|
||||
sci_port = to_sci_port(port);
|
||||
} else {
|
||||
sci_port = &sci_ports[co->index];
|
||||
port = &sci_port->port;
|
||||
co->data = port;
|
||||
}
|
||||
|
||||
/*
|
||||
* Also need to check port->type, we don't actually have any
|
||||
|
|
@ -1165,6 +1173,15 @@ static int __init sci_console_init(void)
|
|||
return 0;
|
||||
}
|
||||
console_initcall(sci_console_init);
|
||||
|
||||
static struct sci_port early_serial_port;
|
||||
static struct console early_serial_console = {
|
||||
.name = "early_ttySC",
|
||||
.write = serial_console_write,
|
||||
.flags = CON_PRINTBUFFER,
|
||||
};
|
||||
static char early_serial_buf[32];
|
||||
|
||||
#endif /* CONFIG_SERIAL_SH_SCI_CONSOLE */
|
||||
|
||||
#if defined(CONFIG_SERIAL_SH_SCI_CONSOLE)
|
||||
|
|
@ -1250,6 +1267,21 @@ static int __devinit sci_probe(struct platform_device *dev)
|
|||
struct sh_sci_priv *priv;
|
||||
int i, ret = -EINVAL;
|
||||
|
||||
#ifdef CONFIG_SERIAL_SH_SCI_CONSOLE
|
||||
if (is_early_platform_device(dev)) {
|
||||
if (dev->id == -1)
|
||||
return -ENOTSUPP;
|
||||
early_serial_console.index = dev->id;
|
||||
early_serial_console.data = &early_serial_port.port;
|
||||
sci_init_single(NULL, &early_serial_port, dev->id, p);
|
||||
serial_console_setup(&early_serial_console, early_serial_buf);
|
||||
if (!strstr(early_serial_buf, "keep"))
|
||||
early_serial_console.flags |= CON_BOOT;
|
||||
register_console(&early_serial_console);
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
priv = kzalloc(sizeof(*priv), GFP_KERNEL);
|
||||
if (!priv)
|
||||
return -ENOMEM;
|
||||
|
|
@ -1349,6 +1381,10 @@ static void __exit sci_exit(void)
|
|||
uart_unregister_driver(&sci_uart_driver);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_SERIAL_SH_SCI_CONSOLE
|
||||
early_platform_init_buffer("earlyprintk", &sci_driver,
|
||||
early_serial_buf, ARRAY_SIZE(early_serial_buf));
|
||||
#endif
|
||||
module_init(sci_init);
|
||||
module_exit(sci_exit);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue