diff options
Diffstat (limited to 'drivers/tty/serial/max3100.c')
| -rw-r--r-- | drivers/tty/serial/max3100.c | 26 | 
1 files changed, 9 insertions, 17 deletions
diff --git a/drivers/tty/serial/max3100.c b/drivers/tty/serial/max3100.c index b4902b99cfd..0f24486be53 100644 --- a/drivers/tty/serial/max3100.c +++ b/drivers/tty/serial/max3100.c @@ -827,14 +827,16 @@ static int __devexit max3100_remove(struct spi_device *spi)  	/* find out the index for the chip we are removing */  	for (i = 0; i < MAX_MAX3100; i++) -		if (max3100s[i] == s) +		if (max3100s[i] == s) { +			dev_dbg(&spi->dev, "%s: removing port %d\n", __func__, i); +			uart_remove_one_port(&max3100_uart_driver, &max3100s[i]->port); +			kfree(max3100s[i]); +			max3100s[i] = NULL;  			break; +		} -	dev_dbg(&spi->dev, "%s: removing port %d\n", __func__, i); -	uart_remove_one_port(&max3100_uart_driver, &max3100s[i]->port); -	kfree(max3100s[i]); -	max3100s[i] = NULL; - +	WARN_ON(i == MAX_MAX3100); +	  	/* check if this is the last chip we have */  	for (i = 0; i < MAX_MAX3100; i++)  		if (max3100s[i]) { @@ -910,17 +912,7 @@ static struct spi_driver max3100_driver = {  	.resume		= max3100_resume,  }; -static int __init max3100_init(void) -{ -	return spi_register_driver(&max3100_driver); -} -module_init(max3100_init); - -static void __exit max3100_exit(void) -{ -	spi_unregister_driver(&max3100_driver); -} -module_exit(max3100_exit); +module_spi_driver(max3100_driver);  MODULE_DESCRIPTION("MAX3100 driver");  MODULE_AUTHOR("Christian Pellegrin <chripell@evolware.org>");  |