diff options
Diffstat (limited to 'drivers/usb/atm/ueagle-atm.c')
| -rw-r--r-- | drivers/usb/atm/ueagle-atm.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/drivers/usb/atm/ueagle-atm.c b/drivers/usb/atm/ueagle-atm.c index 956cd9e82dee..4362cfd801b5 100644 --- a/drivers/usb/atm/ueagle-atm.c +++ b/drivers/usb/atm/ueagle-atm.c | |||
| @@ -63,6 +63,7 @@ | |||
| 63 | #include <linux/ctype.h> | 63 | #include <linux/ctype.h> |
| 64 | #include <linux/kthread.h> | 64 | #include <linux/kthread.h> |
| 65 | #include <linux/version.h> | 65 | #include <linux/version.h> |
| 66 | #include <linux/mutex.h> | ||
| 66 | #include <asm/unaligned.h> | 67 | #include <asm/unaligned.h> |
| 67 | 68 | ||
| 68 | #include "usbatm.h" | 69 | #include "usbatm.h" |
| @@ -358,7 +359,7 @@ struct intr_pkt { | |||
| 358 | #define INTR_PKT_SIZE 28 | 359 | #define INTR_PKT_SIZE 28 |
| 359 | 360 | ||
| 360 | static struct usb_driver uea_driver; | 361 | static struct usb_driver uea_driver; |
| 361 | static DECLARE_MUTEX(uea_semaphore); | 362 | static DEFINE_MUTEX(uea_mutex); |
| 362 | static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III"}; | 363 | static const char *chip_name[] = {"ADI930", "Eagle I", "Eagle II", "Eagle III"}; |
| 363 | 364 | ||
| 364 | static int modem_index; | 365 | static int modem_index; |
| @@ -1418,13 +1419,13 @@ static ssize_t read_status(struct device *dev, struct device_attribute *attr, | |||
| 1418 | int ret = -ENODEV; | 1419 | int ret = -ENODEV; |
| 1419 | struct uea_softc *sc; | 1420 | struct uea_softc *sc; |
| 1420 | 1421 | ||
| 1421 | down(&uea_semaphore); | 1422 | mutex_lock(&uea_mutex); |
| 1422 | sc = dev_to_uea(dev); | 1423 | sc = dev_to_uea(dev); |
| 1423 | if (!sc) | 1424 | if (!sc) |
| 1424 | goto out; | 1425 | goto out; |
| 1425 | ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state); | 1426 | ret = snprintf(buf, 10, "%08x\n", sc->stats.phy.state); |
| 1426 | out: | 1427 | out: |
| 1427 | up(&uea_semaphore); | 1428 | mutex_unlock(&uea_mutex); |
| 1428 | return ret; | 1429 | return ret; |
| 1429 | } | 1430 | } |
| 1430 | 1431 | ||
| @@ -1434,14 +1435,14 @@ static ssize_t reboot(struct device *dev, struct device_attribute *attr, | |||
| 1434 | int ret = -ENODEV; | 1435 | int ret = -ENODEV; |
| 1435 | struct uea_softc *sc; | 1436 | struct uea_softc *sc; |
| 1436 | 1437 | ||
| 1437 | down(&uea_semaphore); | 1438 | mutex_lock(&uea_mutex); |
| 1438 | sc = dev_to_uea(dev); | 1439 | sc = dev_to_uea(dev); |
| 1439 | if (!sc) | 1440 | if (!sc) |
| 1440 | goto out; | 1441 | goto out; |
| 1441 | sc->reset = 1; | 1442 | sc->reset = 1; |
| 1442 | ret = count; | 1443 | ret = count; |
| 1443 | out: | 1444 | out: |
| 1444 | up(&uea_semaphore); | 1445 | mutex_unlock(&uea_mutex); |
| 1445 | return ret; | 1446 | return ret; |
| 1446 | } | 1447 | } |
| 1447 | 1448 | ||
| @@ -1453,7 +1454,7 @@ static ssize_t read_human_status(struct device *dev, struct device_attribute *at | |||
| 1453 | int ret = -ENODEV; | 1454 | int ret = -ENODEV; |
| 1454 | struct uea_softc *sc; | 1455 | struct uea_softc *sc; |
| 1455 | 1456 | ||
| 1456 | down(&uea_semaphore); | 1457 | mutex_lock(&uea_mutex); |
| 1457 | sc = dev_to_uea(dev); | 1458 | sc = dev_to_uea(dev); |
| 1458 | if (!sc) | 1459 | if (!sc) |
| 1459 | goto out; | 1460 | goto out; |
| @@ -1473,7 +1474,7 @@ static ssize_t read_human_status(struct device *dev, struct device_attribute *at | |||
| 1473 | break; | 1474 | break; |
| 1474 | } | 1475 | } |
| 1475 | out: | 1476 | out: |
| 1476 | up(&uea_semaphore); | 1477 | mutex_unlock(&uea_mutex); |
| 1477 | return ret; | 1478 | return ret; |
| 1478 | } | 1479 | } |
| 1479 | 1480 | ||
| @@ -1485,7 +1486,7 @@ static ssize_t read_delin(struct device *dev, struct device_attribute *attr, | |||
| 1485 | int ret = -ENODEV; | 1486 | int ret = -ENODEV; |
| 1486 | struct uea_softc *sc; | 1487 | struct uea_softc *sc; |
| 1487 | 1488 | ||
| 1488 | down(&uea_semaphore); | 1489 | mutex_lock(&uea_mutex); |
| 1489 | sc = dev_to_uea(dev); | 1490 | sc = dev_to_uea(dev); |
| 1490 | if (!sc) | 1491 | if (!sc) |
| 1491 | goto out; | 1492 | goto out; |
| @@ -1497,7 +1498,7 @@ static ssize_t read_delin(struct device *dev, struct device_attribute *attr, | |||
| 1497 | else | 1498 | else |
| 1498 | ret = sprintf(buf, "GOOD\n"); | 1499 | ret = sprintf(buf, "GOOD\n"); |
| 1499 | out: | 1500 | out: |
| 1500 | up(&uea_semaphore); | 1501 | mutex_unlock(&uea_mutex); |
| 1501 | return ret; | 1502 | return ret; |
| 1502 | } | 1503 | } |
| 1503 | 1504 | ||
| @@ -1511,7 +1512,7 @@ static ssize_t read_##name(struct device *dev, \ | |||
| 1511 | int ret = -ENODEV; \ | 1512 | int ret = -ENODEV; \ |
| 1512 | struct uea_softc *sc; \ | 1513 | struct uea_softc *sc; \ |
| 1513 | \ | 1514 | \ |
| 1514 | down(&uea_semaphore); \ | 1515 | mutex_lock(&uea_mutex); \ |
| 1515 | sc = dev_to_uea(dev); \ | 1516 | sc = dev_to_uea(dev); \ |
| 1516 | if (!sc) \ | 1517 | if (!sc) \ |
| 1517 | goto out; \ | 1518 | goto out; \ |
| @@ -1519,7 +1520,7 @@ static ssize_t read_##name(struct device *dev, \ | |||
| 1519 | if (reset) \ | 1520 | if (reset) \ |
| 1520 | sc->stats.phy.name = 0; \ | 1521 | sc->stats.phy.name = 0; \ |
| 1521 | out: \ | 1522 | out: \ |
| 1522 | up(&uea_semaphore); \ | 1523 | mutex_unlock(&uea_mutex); \ |
| 1523 | return ret; \ | 1524 | return ret; \ |
| 1524 | } \ | 1525 | } \ |
| 1525 | \ | 1526 | \ |
| @@ -1737,9 +1738,9 @@ static void uea_disconnect(struct usb_interface *intf) | |||
| 1737 | * Pre-firmware device has one interface | 1738 | * Pre-firmware device has one interface |
| 1738 | */ | 1739 | */ |
| 1739 | if (usb->config->desc.bNumInterfaces != 1 && ifnum == 0) { | 1740 | if (usb->config->desc.bNumInterfaces != 1 && ifnum == 0) { |
| 1740 | down(&uea_semaphore); | 1741 | mutex_lock(&uea_mutex); |
| 1741 | usbatm_usb_disconnect(intf); | 1742 | usbatm_usb_disconnect(intf); |
| 1742 | up(&uea_semaphore); | 1743 | mutex_unlock(&uea_mutex); |
| 1743 | uea_info(usb, "ADSL device removed\n"); | 1744 | uea_info(usb, "ADSL device removed\n"); |
| 1744 | } | 1745 | } |
| 1745 | 1746 | ||
