summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKatsunaga Kinoshita <katsu@katsu-ubuntu.(none)>2012-06-06 16:12:17 +0900
committerJustin Waters <justin.waters@timesys.com>2012-07-03 17:15:07 -0400
commit233b48907dd52d62282770c691201b3b4cc78d47 (patch)
tree9ddf94eee07c280c87234d4a3afe6518cdd21655
parent1e123c5d6c82065501b9417524af4ab56ebc0019 (diff)
update: update serial and gpio inlitalize.
-rw-r--r--arch/arm/mach-mvf/devices.c2
-rw-r--r--arch/arm/plat-mxc/mvf_gpio.c1
-rw-r--r--drivers/tty/serial/serial_mvf.c31
3 files changed, 30 insertions, 4 deletions
diff --git a/arch/arm/mach-mvf/devices.c b/arch/arm/mach-mvf/devices.c
index 0984259b10bc..731b6a8e120c 100644
--- a/arch/arm/mach-mvf/devices.c
+++ b/arch/arm/mach-mvf/devices.c
@@ -81,5 +81,5 @@ static struct mvf_gpio_port mvf_gpio_ports[] = {
int mvf_register_gpios(void)
{
/* 5 ports for MVF */
- return mvf_gpio_init(mvf_gpio_ports, 7);
+ return mvf_gpio_init(mvf_gpio_ports, 5);
}
diff --git a/arch/arm/plat-mxc/mvf_gpio.c b/arch/arm/plat-mxc/mvf_gpio.c
index 161653f87e3e..8722ac38304d 100644
--- a/arch/arm/plat-mxc/mvf_gpio.c
+++ b/arch/arm/plat-mxc/mvf_gpio.c
@@ -166,6 +166,7 @@ static void gpio_mask_irq(struct irq_data *d)
static void gpio_unmask_irq(struct irq_data *d)
{
u32 gpio = irq_to_gpio(d->irq);
+ printk("gpio = %d\n",gpio);
_set_gpio_irqenable(&mvf_gpio_ports[gpio / 32], gpio & 0x1f, 1);
}
diff --git a/drivers/tty/serial/serial_mvf.c b/drivers/tty/serial/serial_mvf.c
index fa2719a5f662..581c7f74cafb 100644
--- a/drivers/tty/serial/serial_mvf.c
+++ b/drivers/tty/serial/serial_mvf.c
@@ -541,29 +541,36 @@ static int serial_mvf_probe(struct platform_device *pdev)
int ret = 0;
struct resource *res;
+ /* Allocate mvf port struct */
sport = kzalloc(sizeof(*sport),GFP_KERNEL);
if ( !sport )
return -ENOMEM;
+ /* Get memory resources */
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
if ( !res ){
ret = ENODEV;
goto free;
}
-
+
base = ioremap(res->start, PAGE_SIZE);
sport->port.dev = &pdev->dev;
sport->port.mapbase = res->start;
sport->port.membase = base;
- sport->port.type = PORT_IMX,
+ sport->port.type = PORT_IMX;
sport->port.iotype = UPIO_MEM;
+ /* Get IRQ 1 */
sport->port.irq = platform_get_irq(pdev, 0);
+ /* Is this Machine usr irqs?*/
+#if 0
sport->rxirq = platform_get_irq(pdev, 0);
sport->txirq = platform_get_irq(pdev, 1);
sport->rtsirq = platform_get_irq(pdev, 2);
+#endif
+
sport->port.fifosize = 32;
sport->port.ops = &mvf_pops;
sport->port.flags = UPF_BOOT_AUTOCONF;
@@ -623,9 +630,27 @@ free:
}
-static int serial_mvf_remove(struct platform_device *dev)
+static int serial_mvf_remove(struct platform_device *pdev)
{
+ struct mvfuart_platform_data *pdata;
+ struct mvf_port *sport = platform_get_drvdata(pdev);
+
+ pdata = pdev->dev.platform_data;
+
+ platform_set_drvdata(pdev, NULL);
+
+ if (sport){
+ uart_remove_one_port(&mvf_reg, &sport->port);
+ }
+
+ clk_disable(sport->clk);
+ if (pdata && pdata->exit)
+ pdata->exit(pdev);
+
+ iounmap(sport->port.membase);
+ kfree(sport);
+
return 0;
}