* have been allocated as we can't use pdev->id in
  * devicetree
  */
-static unsigned long vt8500_ports_in_use;
+static DECLARE_BITMAP(vt8500_ports_in_use, VT8500_MAX_PORTS);
 
 static inline void vt8500_write(struct uart_port *port, unsigned int val,
                             unsigned int off)
 
        if (port < 0) {
                /* calculate the port id */
-               port = find_first_zero_bit(&vt8500_ports_in_use,
-                                       sizeof(vt8500_ports_in_use));
+               port = find_first_zero_bit(vt8500_ports_in_use,
+                                          VT8500_MAX_PORTS);
        }
 
        if (port >= VT8500_MAX_PORTS)
                return -ENODEV;
 
        /* reserve the port id */
-       if (test_and_set_bit(port, &vt8500_ports_in_use)) {
+       if (test_and_set_bit(port, vt8500_ports_in_use)) {
                /* port already in use - shouldn't really happen */
                return -EBUSY;
        }