static int __devexit sw_serial_remove(struct platform_device *dev)
{
    struct sw_serial_port *sport = platform_get_drvdata(dev);
	
	UART_MSG("serial remove\n");
	serial8250_unregister_port(sw_serial[sport->port_no]);
	sw_serial[sport->port_no] = 0;
	sw_serial_put_resource(sport);
	
	kfree(sport);
	sport = NULL;
	return 0;
}
static int __devexit sw_serial_remove(struct platform_device *dev)
{
    struct sw_serial_port *sport = platform_get_drvdata(dev);
    struct sw_serial_data *sdata = sport->port.private_data;

    serial8250_unregister_port(sdata->line);
    sdata->line = -1;
    sw_serial_put_resource(sport);

    kfree(sport);
    sport = NULL;
    return 0;
}