Add changes from the Linux-2.6 tree.
[linux-2.6.git] / drivers / char / mwave / mwavedd.c
index a38f0fe..8d14823 100644 (file)
@@ -57,6 +57,7 @@
 #include <linux/sched.h>
 #include <linux/spinlock.h>
 #include <linux/delay.h>
+#include <linux/serial_8250.h>
 #include "smapi.h"
 #include "mwavedd.h"
 #include "3780i.h"
@@ -76,11 +77,11 @@ int mwave_3780i_irq = 0;
 int mwave_3780i_io = 0;
 int mwave_uart_irq = 0;
 int mwave_uart_io = 0;
-MODULE_PARM(mwave_debug, "i");
-MODULE_PARM(mwave_3780i_irq, "i");
-MODULE_PARM(mwave_3780i_io, "i");
-MODULE_PARM(mwave_uart_irq, "i");
-MODULE_PARM(mwave_uart_io, "i");
+module_param(mwave_debug, int, 0);
+module_param(mwave_3780i_irq, int, 0);
+module_param(mwave_3780i_io, int, 0);
+module_param(mwave_uart_irq, int, 0);
+module_param(mwave_uart_io, int, 0);
 
 static int mwave_open(struct inode *inode, struct file *file);
 static int mwave_close(struct inode *inode, struct file *file);
@@ -94,8 +95,8 @@ static int mwave_open(struct inode *inode, struct file *file)
        unsigned int retval = 0;
 
        PRINTK_3(TRACE_MWAVE,
-               "mwavedd::mwave_open, entry inode %x file %x\n",
-               (int) inode, (int) file);
+               "mwavedd::mwave_open, entry inode %p file %p\n",
+                inode, file);
        PRINTK_2(TRACE_MWAVE,
                "mwavedd::mwave_open, exit return retval %x\n", retval);
 
@@ -107,8 +108,8 @@ static int mwave_close(struct inode *inode, struct file *file)
        unsigned int retval = 0;
 
        PRINTK_3(TRACE_MWAVE,
-               "mwavedd::mwave_close, entry inode %x file %x\n",
-               (int) inode, (int) file);
+               "mwavedd::mwave_close, entry inode %p file %p\n",
+                inode,  file);
 
        PRINTK_2(TRACE_MWAVE, "mwavedd::mwave_close, exit retval %x\n",
                retval);
@@ -124,8 +125,8 @@ static int mwave_ioctl(struct inode *inode, struct file *file,
        void __user *arg = (void __user *)ioarg;
 
        PRINTK_5(TRACE_MWAVE,
-               "mwavedd::mwave_ioctl, entry inode %x file %x cmd %x arg %x\n",
-               (int) inode, (int) file, iocmd, (int) ioarg);
+               "mwavedd::mwave_ioctl, entry inode %p file %p cmd %x arg %x\n",
+                inode,  file, iocmd, (int) ioarg);
 
        switch (iocmd) {
 
@@ -270,7 +271,7 @@ static int mwave_ioctl(struct inode *inode, struct file *file,
                                ipcnum,
                                pDrvData->IPCs[ipcnum].usIntCount);
        
-                       if (ipcnum > ARRAY_SIZE(pDrvData->IPCs)) {
+                       if (ipcnum >= ARRAY_SIZE(pDrvData->IPCs)) {
                                PRINTK_ERROR(KERN_ERR_MWAVE
                                                "mwavedd::mwave_ioctl:"
                                                " IOCTL_MW_REGISTER_IPC:"
@@ -296,7 +297,7 @@ static int mwave_ioctl(struct inode *inode, struct file *file,
                                " ipcnum %x, usIntCount %x\n",
                                ipcnum,
                                pDrvData->IPCs[ipcnum].usIntCount);
-                       if (ipcnum > ARRAY_SIZE(pDrvData->IPCs)) {
+                       if (ipcnum >= ARRAY_SIZE(pDrvData->IPCs)) {
                                PRINTK_ERROR(KERN_ERR_MWAVE
                                                "mwavedd::mwave_ioctl:"
                                                " IOCTL_MW_GET_IPC: Error:"
@@ -354,7 +355,7 @@ static int mwave_ioctl(struct inode *inode, struct file *file,
                                "mwavedd::mwave_ioctl IOCTL_MW_UNREGISTER_IPC"
                                " ipcnum %x\n",
                                ipcnum);
-                       if (ipcnum > ARRAY_SIZE(pDrvData->IPCs)) {
+                       if (ipcnum >= ARRAY_SIZE(pDrvData->IPCs)) {
                                PRINTK_ERROR(KERN_ERR_MWAVE
                                                "mwavedd::mwave_ioctl:"
                                                " IOCTL_MW_UNREGISTER_IPC:"
@@ -389,7 +390,7 @@ static ssize_t mwave_read(struct file *file, char __user *buf, size_t count,
                           loff_t * ppos)
 {
        PRINTK_5(TRACE_MWAVE,
-               "mwavedd::mwave_read entry file %p, buf %p, count %x ppos %p\n",
+               "mwavedd::mwave_read entry file %p, buf %p, count %zx ppos %p\n",
                file, buf, count, ppos);
 
        return -EINVAL;
@@ -401,7 +402,7 @@ static ssize_t mwave_write(struct file *file, const char __user *buf,
 {
        PRINTK_5(TRACE_MWAVE,
                "mwavedd::mwave_write entry file %p, buf %p,"
-               " count %x ppos %p\n",
+               " count %zx ppos %p\n",
                file, buf, count, ppos);
 
        return -EINVAL;
@@ -410,8 +411,8 @@ static ssize_t mwave_write(struct file *file, const char __user *buf,
 
 static int register_serial_portandirq(unsigned int port, int irq)
 {
-       struct serial_struct serial;
-
+       struct uart_port uart;
+       
        switch ( port ) {
                case 0x3f8:
                case 0x2f8:
@@ -442,16 +443,18 @@ static int register_serial_portandirq(unsigned int port, int irq)
        } /* switch */
        /* irq is okay */
 
-       memset(&serial, 0, sizeof(serial));
-       serial.port = port;
-       serial.irq = irq;
-       serial.flags = ASYNC_SHARE_IRQ;
-
-       return register_serial(&serial);
+       memset(&uart, 0, sizeof(struct uart_port));
+       
+       uart.uartclk =  1843200;
+       uart.iobase = port;
+       uart.irq = irq;
+       uart.iotype = UPIO_PORT;
+       uart.flags =  UPF_SHARE_IRQ;
+       return serial8250_register_port(&uart);
 }
 
 
-static struct file_operations mwave_fops = {
+static const struct file_operations mwave_fops = {
        .owner          = THIS_MODULE,
        .read           = mwave_read,
        .write          = mwave_write,
@@ -472,7 +475,7 @@ struct device mwave_device;
 
 /* Prevent code redundancy, create a macro for mwave_show_* functions. */
 #define mwave_show_function(attr_name, format_string, field)           \
-static ssize_t mwave_show_##attr_name(struct device *dev, char *buf)   \
+static ssize_t mwave_show_##attr_name(struct device *dev, struct device_attribute *attr, char *buf)    \
 {                                                                      \
        DSP_3780I_CONFIG_SETTINGS *pSettings =                          \
                &mwave_s_mdd.rBDData.rDspSettings;                      \
@@ -523,7 +526,7 @@ static void mwave_exit(void)
 #endif
 
        if ( pDrvData->sLine >= 0 ) {
-               unregister_serial(pDrvData->sLine);
+               serial8250_unregister_port(pDrvData->sLine);
        }
        if (pDrvData->bMwaveDevRegistered) {
                misc_deregister(&mwave_misc_dev);