Merge branches 'master' and 'devel' into for-linus
[firefly-linux-kernel-4.4.55.git] / drivers / char / pcmcia / cm4000_cs.c
index e7956acf2ad618d6878c5df423827d26aeb06814..ec73d9f6d9ed92c9fa527718ff44871bd7d64669 100644 (file)
@@ -34,7 +34,6 @@
 #include <linux/uaccess.h>
 #include <linux/io.h>
 
-#include <pcmcia/cs_types.h>
 #include <pcmcia/cs.h>
 #include <pcmcia/cistpl.h>
 #include <pcmcia/cisreg.h>
@@ -422,7 +421,7 @@ static struct card_fixup card_fixups[] = {
 static void set_cardparameter(struct cm4000_dev *dev)
 {
        int i;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
        u_int8_t stopbits = 0x02; /* ISO default */
 
        DEBUGP(3, dev, "-> set_cardparameter\n");
@@ -455,7 +454,7 @@ static int set_protocol(struct cm4000_dev *dev, struct ptsreq *ptsreq)
        unsigned short num_bytes_read;
        unsigned char pts_reply[4];
        ssize_t rc;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
 
        rc = 0;
 
@@ -664,7 +663,7 @@ static void terminate_monitor(struct cm4000_dev *dev)
 static void monitor_card(unsigned long p)
 {
        struct cm4000_dev *dev = (struct cm4000_dev *) p;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
        unsigned short s;
        struct ptsreq ptsreq;
        int i, atrc;
@@ -925,7 +924,7 @@ static ssize_t cmm_read(struct file *filp, __user char *buf, size_t count,
                        loff_t *ppos)
 {
        struct cm4000_dev *dev = filp->private_data;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
        ssize_t rc;
        int i, j, k;
 
@@ -1048,7 +1047,7 @@ static ssize_t cmm_write(struct file *filp, const char __user *buf,
                         size_t count, loff_t *ppos)
 {
        struct cm4000_dev *dev = filp->private_data;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
        unsigned short s;
        unsigned char tmp;
        unsigned char infolen;
@@ -1401,7 +1400,7 @@ static void stop_monitor(struct cm4000_dev *dev)
 static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 {
        struct cm4000_dev *dev = filp->private_data;
-       unsigned int iobase = dev->p_dev->io.BasePort1;
+       unsigned int iobase = dev->p_dev->resource[0]->start;
        struct inode *inode = filp->f_path.dentry->d_inode;
        struct pcmcia_device *link;
        int size;
@@ -1752,17 +1751,12 @@ static int cm4000_config_check(struct pcmcia_device *p_dev,
        if (!cfg->io.nwin)
                return -ENODEV;
 
-       /* Get the IOaddr */
-       p_dev->io.BasePort1 = cfg->io.win[0].base;
-       p_dev->io.NumPorts1 = cfg->io.win[0].len;
-       p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;
-       if (!(cfg->io.flags & CISTPL_IO_8BIT))
-               p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_16;
-       if (!(cfg->io.flags & CISTPL_IO_16BIT))
-               p_dev->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
-       p_dev->io.IOAddrLines = cfg->io.flags & CISTPL_IO_LINES_MASK;
-
-       return pcmcia_request_io(p_dev, &p_dev->io);
+       p_dev->resource[0]->start = cfg->io.win[0].base;
+       p_dev->resource[0]->end = cfg->io.win[0].len;
+       p_dev->resource[0]->flags |= pcmcia_io_cfg_data_width(cfg->io.flags);
+       p_dev->io_lines = cfg->io.flags & CISTPL_IO_LINES_MASK;
+
+       return pcmcia_request_io(p_dev);
 }
 
 static int cm4000_config(struct pcmcia_device * link, int devno)