* [PATCH] of_serial: add port type checking
@ 2007-05-31 9:33 Ishizaki Kou
2007-05-31 10:46 ` Arnd Bergmann
0 siblings, 1 reply; 2+ messages in thread
From: Ishizaki Kou @ 2007-05-31 9:33 UTC (permalink / raw)
To: paulus; +Cc: linuxppc-dev, arnd
Currently, of_serial driver supports only 8250 compatible ports, but
prepares that others can easily be added. Yet unregister routine
assumes port is 8250. This patch corrects unregister routine to check
port type.
Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba•co.jp>
Cc: Arnd Bergmann <arnd@arndb•de>
---
Index: linux-powerpc-git/drivers/serial/of_serial.c
===================================================================
--- linux-powerpc-git.orig/drivers/serial/of_serial.c
+++ linux-powerpc-git/drivers/serial/of_serial.c
@@ -17,6 +17,11 @@
#include <asm/of_platform.h>
#include <asm/prom.h>
+struct of_serial_info {
+ int type;
+ int line;
+};
+
/*
* Fill a struct uart_port for a given device node
*/
@@ -62,6 +67,7 @@ static int __devinit of_platform_serial_
static int __devinit of_platform_serial_probe(struct of_device *ofdev,
const struct of_device_id *id)
{
+ struct of_serial_info *info;
struct uart_port port;
int port_type;
int ret;
@@ -69,6 +75,10 @@ static int __devinit of_platform_serial_
if (of_find_property(ofdev->node, "used-by-rtas", NULL))
return -EBUSY;
+ info = kmalloc(sizeof(*info), GFP_KERNEL);
+ if (info == NULL)
+ return -ENOMEM;
+
port_type = (unsigned long)id->data;
ret = of_platform_serial_setup(ofdev, port_type, &port);
if (ret)
@@ -88,9 +98,12 @@ static int __devinit of_platform_serial_
if (ret < 0)
goto out;
- ofdev->dev.driver_data = (void *)(unsigned long)ret;
+ info->type = port_type;
+ info->line = ret;
+ ofdev->dev.driver_data = info;
return 0;
out:
+ kfree(info);
irq_dispose_mapping(port.irq);
return ret;
}
@@ -100,8 +113,16 @@ out:
*/
static int of_platform_serial_remove(struct of_device *ofdev)
{
- int line = (unsigned long)ofdev->dev.driver_data;
- serial8250_unregister_port(line);
+ struct of_serial_info *info = ofdev->dev.driver_data;
+ switch (info->type) {
+ case PORT_8250 ... PORT_MAX_8250:
+ serial8250_unregister_port(info->line);
+ break;
+ default:
+ /* need to add code for these */
+ break;
+ }
+ kfree(info);
return 0;
}
^ permalink raw reply [flat|nested] 2+ messages in thread* Re: [PATCH] of_serial: add port type checking
2007-05-31 9:33 [PATCH] of_serial: add port type checking Ishizaki Kou
@ 2007-05-31 10:46 ` Arnd Bergmann
0 siblings, 0 replies; 2+ messages in thread
From: Arnd Bergmann @ 2007-05-31 10:46 UTC (permalink / raw)
To: Ishizaki Kou; +Cc: linuxppc-dev, paulus
On Thursday 31 May 2007, Ishizaki Kou wrote:
>
> Currently, of_serial driver supports only 8250 compatible ports, but
> prepares that others can easily be added. Yet unregister routine
> assumes port is 8250. This patch corrects unregister routine to check
> port type.
>
> Signed-off-by: Kou Ishizaki <kou.ishizaki@toshiba•co.jp>
> Cc: Arnd Bergmann <arnd@arndb•de>
Acked-by: Arnd Bergmann <arnd@arndb•de>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-05-31 10:46 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-05-31 9:33 [PATCH] of_serial: add port type checking Ishizaki Kou
2007-05-31 10:46 ` Arnd Bergmann
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox