|
@@ -158,7 +158,7 @@ struct atmel_uart_port {
|
|
|
};
|
|
|
|
|
|
static struct atmel_uart_port atmel_ports[ATMEL_MAX_UART];
|
|
|
-static unsigned long atmel_ports_in_use;
|
|
|
+static DECLARE_BITMAP(atmel_ports_in_use, ATMEL_MAX_UART);
|
|
|
|
|
|
#ifdef SUPPORT_SYSRQ
|
|
|
static struct console atmel_console;
|
|
@@ -1769,15 +1769,14 @@ static int atmel_serial_probe(struct platform_device *pdev)
|
|
|
if (ret < 0)
|
|
|
/* port id not found in platform data nor device-tree aliases:
|
|
|
* auto-enumerate it */
|
|
|
- ret = find_first_zero_bit(&atmel_ports_in_use,
|
|
|
- sizeof(atmel_ports_in_use));
|
|
|
+ ret = find_first_zero_bit(atmel_ports_in_use, ATMEL_MAX_UART);
|
|
|
|
|
|
- if (ret > ATMEL_MAX_UART) {
|
|
|
+ if (ret >= ATMEL_MAX_UART) {
|
|
|
ret = -ENODEV;
|
|
|
goto err;
|
|
|
}
|
|
|
|
|
|
- if (test_and_set_bit(ret, &atmel_ports_in_use)) {
|
|
|
+ if (test_and_set_bit(ret, atmel_ports_in_use)) {
|
|
|
/* port already in use */
|
|
|
ret = -EBUSY;
|
|
|
goto err;
|
|
@@ -1857,7 +1856,7 @@ static int atmel_serial_remove(struct platform_device *pdev)
|
|
|
|
|
|
/* "port" is allocated statically, so we shouldn't free it */
|
|
|
|
|
|
- clear_bit(port->line, &atmel_ports_in_use);
|
|
|
+ clear_bit(port->line, atmel_ports_in_use);
|
|
|
|
|
|
clk_put(atmel_port->clk);
|
|
|
|