return DIV_ROUND_CLOSEST(port->uartclk, 16 * baud + 2) - 2;
 }
 
-static unsigned int serial8250_get_divisor(struct uart_8250_port *up,
+static unsigned int serial8250_get_divisor(struct uart_port *port,
                                           unsigned int baud,
                                           unsigned int *frac)
 {
-       struct uart_port *port = &up->port;
+       struct uart_8250_port *up = up_to_u8250p(port);
        unsigned int quot;
 
        /*
        cval = serial8250_compute_lcr(up, termios->c_cflag);
 
        baud = serial8250_get_baud_rate(port, termios, old);
-       quot = serial8250_get_divisor(up, baud, &frac);
+       quot = serial8250_get_divisor(port, baud, &frac);
 
        /*
         * Ok, we're now changing the port state.  Do it with
                termios.c_cflag = port->state->port.tty->termios.c_cflag;
 
        baud = serial8250_get_baud_rate(port, &termios, NULL);
-       quot = serial8250_get_divisor(up, baud, &frac);
+       quot = serial8250_get_divisor(port, baud, &frac);
 
        serial8250_set_divisor(port, baud, quot, frac);
        serial_port_out(port, UART_LCR, up->lcr);