* Copyright (C) 2010 Thomas Langer, <thomas.langer@lantiq.com>
  */
 
+#include <linux/bitfield.h>
 #include <linux/clk.h>
 #include <linux/console.h>
 #include <linux/device.h>
 #define ASCFSTAT_RXFFLMASK     0x003F
 #define ASCFSTAT_TXFFLMASK     0x3F00
 #define ASCFSTAT_TXFREEMASK    0x3F000000
-#define ASCFSTAT_TXFREEOFF     24
 
 static void lqasc_tx_chars(struct uart_port *port);
 static struct ltq_uart_port *lqasc_port[MAXPORTS];
 {
        u32 fstat = __raw_readl(port->membase + LTQ_ASC_FSTAT);
 
-       return (fstat & ASCFSTAT_TXFREEMASK) >> ASCFSTAT_TXFREEOFF;
+       return FIELD_GET(ASCFSTAT_TXFREEMASK, fstat);
 }
 
 static void