serial: mfd: add a module parameter for setting each port's working mode
authorFeng Tang <feng.tang@intel.com>
Tue, 22 Feb 2011 07:28:12 +0000 (15:28 +0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 22 Feb 2011 23:49:00 +0000 (15:49 -0800)
The three identical uart ports can work either in DMA or PIO mode. Adding such
a module parameter "hsu_dma_enable" will enable user to chose working modes for
each port. If the mfd driver is built in kernel, adding a "mfd.hsu_dma_enable=x"
in kernel command line has the same effect.

Signed-off-by: Feng Tang <feng.tang@intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/tty/serial/mfd.c

index 53ff6af..c111f36 100644 (file)
 #define mfd_readl(obj, offset)         readl(obj->reg + offset)
 #define mfd_writel(obj, offset, val)   writel(val, obj->reg + offset)
 
+static int hsu_dma_enable;
+module_param(hsu_dma_enable, int, 0);
+MODULE_PARM_DESC(hsu_dma_enable, "It is a bitmap to set working mode, if \
+bit[x] is 1, then port[x] will work in DMA mode, otherwise in PIO mode.");
+
 struct hsu_dma_buffer {
        u8              *buf;
        dma_addr_t      dma_addr;
@@ -1367,6 +1372,12 @@ static void hsu_global_init(void)
 
                serial_hsu_ports[i] = uport;
                uport->index = i;
+
+               if (hsu_dma_enable & (1<<i))
+                       uport->use_dma = 1;
+               else
+                       uport->use_dma = 0;
+
                uport++;
        }