diff options
Diffstat (limited to 'drivers/char/pcmcia/cm4000_cs.c')
-rw-r--r-- | drivers/char/pcmcia/cm4000_cs.c | 71 |
1 files changed, 27 insertions, 44 deletions
diff --git a/drivers/char/pcmcia/cm4000_cs.c b/drivers/char/pcmcia/cm4000_cs.c index c250a31efa53..1611c4fe97fc 100644 --- a/drivers/char/pcmcia/cm4000_cs.c +++ b/drivers/char/pcmcia/cm4000_cs.c | |||
@@ -23,8 +23,6 @@ | |||
23 | * All rights reserved. Licensed under dual BSD/GPL license. | 23 | * All rights reserved. Licensed under dual BSD/GPL license. |
24 | */ | 24 | */ |
25 | 25 | ||
26 | /* #define PCMCIA_DEBUG 6 */ | ||
27 | |||
28 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
29 | #include <linux/module.h> | 27 | #include <linux/module.h> |
30 | #include <linux/slab.h> | 28 | #include <linux/slab.h> |
@@ -47,18 +45,17 @@ | |||
47 | 45 | ||
48 | /* #define ATR_CSUM */ | 46 | /* #define ATR_CSUM */ |
49 | 47 | ||
50 | #ifdef PCMCIA_DEBUG | ||
51 | #define reader_to_dev(x) (&handle_to_dev(x->p_dev)) | 48 | #define reader_to_dev(x) (&handle_to_dev(x->p_dev)) |
52 | static int pc_debug = PCMCIA_DEBUG; | 49 | |
53 | module_param(pc_debug, int, 0600); | 50 | /* n (debug level) is ignored */ |
54 | #define DEBUGP(n, rdr, x, args...) do { \ | 51 | /* additional debug output may be enabled by re-compiling with |
55 | if (pc_debug >= (n)) \ | 52 | * CM4000_DEBUG set */ |
56 | dev_printk(KERN_DEBUG, reader_to_dev(rdr), "%s:" x, \ | 53 | /* #define CM4000_DEBUG */ |
57 | __func__ , ## args); \ | 54 | #define DEBUGP(n, rdr, x, args...) do { \ |
55 | dev_dbg(reader_to_dev(rdr), "%s:" x, \ | ||
56 | __func__ , ## args); \ | ||
58 | } while (0) | 57 | } while (0) |
59 | #else | 58 | |
60 | #define DEBUGP(n, rdr, x, args...) | ||
61 | #endif | ||
62 | static char *version = "cm4000_cs.c v2.4.0gm6 - All bugs added by Harald Welte"; | 59 | static char *version = "cm4000_cs.c v2.4.0gm6 - All bugs added by Harald Welte"; |
63 | 60 | ||
64 | #define T_1SEC (HZ) | 61 | #define T_1SEC (HZ) |
@@ -174,14 +171,13 @@ static unsigned char fi_di_table[10][14] = { | |||
174 | /* 9 */ {0x09,0x19,0x29,0x39,0x49,0x59,0x69,0x11,0x11,0x99,0xA9,0xB9,0xC9,0xD9} | 171 | /* 9 */ {0x09,0x19,0x29,0x39,0x49,0x59,0x69,0x11,0x11,0x99,0xA9,0xB9,0xC9,0xD9} |
175 | }; | 172 | }; |
176 | 173 | ||
177 | #ifndef PCMCIA_DEBUG | 174 | #ifndef CM4000_DEBUG |
178 | #define xoutb outb | 175 | #define xoutb outb |
179 | #define xinb inb | 176 | #define xinb inb |
180 | #else | 177 | #else |
181 | static inline void xoutb(unsigned char val, unsigned short port) | 178 | static inline void xoutb(unsigned char val, unsigned short port) |
182 | { | 179 | { |
183 | if (pc_debug >= 7) | 180 | pr_debug("outb(val=%.2x,port=%.4x)\n", val, port); |
184 | printk(KERN_DEBUG "outb(val=%.2x,port=%.4x)\n", val, port); | ||
185 | outb(val, port); | 181 | outb(val, port); |
186 | } | 182 | } |
187 | static inline unsigned char xinb(unsigned short port) | 183 | static inline unsigned char xinb(unsigned short port) |
@@ -189,8 +185,7 @@ static inline unsigned char xinb(unsigned short port) | |||
189 | unsigned char val; | 185 | unsigned char val; |
190 | 186 | ||
191 | val = inb(port); | 187 | val = inb(port); |
192 | if (pc_debug >= 7) | 188 | pr_debug("%.2x=inb(%.4x)\n", val, port); |
193 | printk(KERN_DEBUG "%.2x=inb(%.4x)\n", val, port); | ||
194 | 189 | ||
195 | return val; | 190 | return val; |
196 | } | 191 | } |
@@ -514,12 +509,10 @@ static int set_protocol(struct cm4000_dev *dev, struct ptsreq *ptsreq) | |||
514 | for (i = 0; i < 4; i++) { | 509 | for (i = 0; i < 4; i++) { |
515 | xoutb(i, REG_BUF_ADDR(iobase)); | 510 | xoutb(i, REG_BUF_ADDR(iobase)); |
516 | xoutb(dev->pts[i], REG_BUF_DATA(iobase)); /* buf data */ | 511 | xoutb(dev->pts[i], REG_BUF_DATA(iobase)); /* buf data */ |
517 | #ifdef PCMCIA_DEBUG | 512 | #ifdef CM4000_DEBUG |
518 | if (pc_debug >= 5) | 513 | pr_debug("0x%.2x ", dev->pts[i]); |
519 | printk("0x%.2x ", dev->pts[i]); | ||
520 | } | 514 | } |
521 | if (pc_debug >= 5) | 515 | pr_debug("\n"); |
522 | printk("\n"); | ||
523 | #else | 516 | #else |
524 | } | 517 | } |
525 | #endif | 518 | #endif |
@@ -579,14 +572,13 @@ static int set_protocol(struct cm4000_dev *dev, struct ptsreq *ptsreq) | |||
579 | pts_reply[i] = inb(REG_BUF_DATA(iobase)); | 572 | pts_reply[i] = inb(REG_BUF_DATA(iobase)); |
580 | } | 573 | } |
581 | 574 | ||
582 | #ifdef PCMCIA_DEBUG | 575 | #ifdef CM4000_DEBUG |
583 | DEBUGP(2, dev, "PTSreply: "); | 576 | DEBUGP(2, dev, "PTSreply: "); |
584 | for (i = 0; i < num_bytes_read; i++) { | 577 | for (i = 0; i < num_bytes_read; i++) { |
585 | if (pc_debug >= 5) | 578 | pr_debug("0x%.2x ", pts_reply[i]); |
586 | printk("0x%.2x ", pts_reply[i]); | ||
587 | } | 579 | } |
588 | printk("\n"); | 580 | pr_debug("\n"); |
589 | #endif /* PCMCIA_DEBUG */ | 581 | #endif /* CM4000_DEBUG */ |
590 | 582 | ||
591 | DEBUGP(5, dev, "Clear Tactive in Flags1\n"); | 583 | DEBUGP(5, dev, "Clear Tactive in Flags1\n"); |
592 | xoutb(0x20, REG_FLAGS1(iobase)); | 584 | xoutb(0x20, REG_FLAGS1(iobase)); |
@@ -655,7 +647,7 @@ static void terminate_monitor(struct cm4000_dev *dev) | |||
655 | 647 | ||
656 | DEBUGP(5, dev, "Delete timer\n"); | 648 | DEBUGP(5, dev, "Delete timer\n"); |
657 | del_timer_sync(&dev->timer); | 649 | del_timer_sync(&dev->timer); |
658 | #ifdef PCMCIA_DEBUG | 650 | #ifdef CM4000_DEBUG |
659 | dev->monitor_running = 0; | 651 | dev->monitor_running = 0; |
660 | #endif | 652 | #endif |
661 | 653 | ||
@@ -898,7 +890,7 @@ static void monitor_card(unsigned long p) | |||
898 | DEBUGP(4, dev, "ATR checksum (0x%.2x, should " | 890 | DEBUGP(4, dev, "ATR checksum (0x%.2x, should " |
899 | "be zero) failed\n", dev->atr_csum); | 891 | "be zero) failed\n", dev->atr_csum); |
900 | } | 892 | } |
901 | #ifdef PCMCIA_DEBUG | 893 | #ifdef CM4000_DEBUG |
902 | else if (test_bit(IS_BAD_LENGTH, &dev->flags)) { | 894 | else if (test_bit(IS_BAD_LENGTH, &dev->flags)) { |
903 | DEBUGP(4, dev, "ATR length error\n"); | 895 | DEBUGP(4, dev, "ATR length error\n"); |
904 | } else { | 896 | } else { |
@@ -1415,7 +1407,7 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1415 | int size; | 1407 | int size; |
1416 | int rc; | 1408 | int rc; |
1417 | void __user *argp = (void __user *)arg; | 1409 | void __user *argp = (void __user *)arg; |
1418 | #ifdef PCMCIA_DEBUG | 1410 | #ifdef CM4000_DEBUG |
1419 | char *ioctl_names[CM_IOC_MAXNR + 1] = { | 1411 | char *ioctl_names[CM_IOC_MAXNR + 1] = { |
1420 | [_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS", | 1412 | [_IOC_NR(CM_IOCGSTATUS)] "CM_IOCGSTATUS", |
1421 | [_IOC_NR(CM_IOCGATR)] "CM_IOCGATR", | 1413 | [_IOC_NR(CM_IOCGATR)] "CM_IOCGATR", |
@@ -1423,9 +1415,9 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1423 | [_IOC_NR(CM_IOCSPTS)] "CM_IOCSPTS", | 1415 | [_IOC_NR(CM_IOCSPTS)] "CM_IOCSPTS", |
1424 | [_IOC_NR(CM_IOSDBGLVL)] "CM4000_DBGLVL", | 1416 | [_IOC_NR(CM_IOSDBGLVL)] "CM4000_DBGLVL", |
1425 | }; | 1417 | }; |
1426 | #endif | ||
1427 | DEBUGP(3, dev, "cmm_ioctl(device=%d.%d) %s\n", imajor(inode), | 1418 | DEBUGP(3, dev, "cmm_ioctl(device=%d.%d) %s\n", imajor(inode), |
1428 | iminor(inode), ioctl_names[_IOC_NR(cmd)]); | 1419 | iminor(inode), ioctl_names[_IOC_NR(cmd)]); |
1420 | #endif | ||
1429 | 1421 | ||
1430 | lock_kernel(); | 1422 | lock_kernel(); |
1431 | rc = -ENODEV; | 1423 | rc = -ENODEV; |
@@ -1523,7 +1515,7 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1523 | } | 1515 | } |
1524 | case CM_IOCARDOFF: | 1516 | case CM_IOCARDOFF: |
1525 | 1517 | ||
1526 | #ifdef PCMCIA_DEBUG | 1518 | #ifdef CM4000_DEBUG |
1527 | DEBUGP(4, dev, "... in CM_IOCARDOFF\n"); | 1519 | DEBUGP(4, dev, "... in CM_IOCARDOFF\n"); |
1528 | if (dev->flags0 & 0x01) { | 1520 | if (dev->flags0 & 0x01) { |
1529 | DEBUGP(4, dev, " Card inserted\n"); | 1521 | DEBUGP(4, dev, " Card inserted\n"); |
@@ -1625,18 +1617,9 @@ static long cmm_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) | |||
1625 | 1617 | ||
1626 | } | 1618 | } |
1627 | break; | 1619 | break; |
1628 | #ifdef PCMCIA_DEBUG | 1620 | #ifdef CM4000_DEBUG |
1629 | case CM_IOSDBGLVL: /* set debug log level */ | 1621 | case CM_IOSDBGLVL: |
1630 | { | 1622 | rc = -ENOTTY; |
1631 | int old_pc_debug = 0; | ||
1632 | |||
1633 | old_pc_debug = pc_debug; | ||
1634 | if (copy_from_user(&pc_debug, argp, sizeof(int))) | ||
1635 | rc = -EFAULT; | ||
1636 | else if (old_pc_debug != pc_debug) | ||
1637 | DEBUGP(0, dev, "Changed debug log level " | ||
1638 | "to %i\n", pc_debug); | ||
1639 | } | ||
1640 | break; | 1623 | break; |
1641 | #endif | 1624 | #endif |
1642 | default: | 1625 | default: |