diff options
author | Olav Kongas <ok@artecdesign.ee> | 2005-08-04 10:02:54 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2005-09-08 19:22:48 -0400 |
commit | f8d23d309809ae69c763520dababb7e845938272 (patch) | |
tree | 0c07570e6de7e6978bd336be9fabfe1ecfee802b | |
parent | 9d233d9faedfd8a4ee22288c1fdc698a6f75db21 (diff) |
[PATCH] USB: isp116x-hcd: remove clock() and reset()
This patch removes support for user-provided platform-specific hardware reset
and clock starting/stopping functions. Hardware reset was needed earlier as
getting the software reset working was tricky due to the lack of documentation.
Recently, a number of people using isp116x have said the software reset is
working for them.
I haven't heard of anybody using the clock starting/stopping.
Signed-off-by: Olav Kongas <ok@artecdesign.ee>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r-- | drivers/usb/host/isp116x-hcd.c | 31 | ||||
-rw-r--r-- | include/linux/usb_isp116x.h | 9 |
2 files changed, 3 insertions, 37 deletions
diff --git a/drivers/usb/host/isp116x-hcd.c b/drivers/usb/host/isp116x-hcd.c index aeddef7a12af..1ed2abac8d17 100644 --- a/drivers/usb/host/isp116x-hcd.c +++ b/drivers/usb/host/isp116x-hcd.c | |||
@@ -1463,10 +1463,6 @@ static int isp116x_sw_reset(struct isp116x *isp116x) | |||
1463 | return ret; | 1463 | return ret; |
1464 | } | 1464 | } |
1465 | 1465 | ||
1466 | /* | ||
1467 | Reset. Tries to perform platform-specific hardware | ||
1468 | reset first; falls back to software reset. | ||
1469 | */ | ||
1470 | static int isp116x_reset(struct usb_hcd *hcd) | 1466 | static int isp116x_reset(struct usb_hcd *hcd) |
1471 | { | 1467 | { |
1472 | struct isp116x *isp116x = hcd_to_isp116x(hcd); | 1468 | struct isp116x *isp116x = hcd_to_isp116x(hcd); |
@@ -1474,17 +1470,7 @@ static int isp116x_reset(struct usb_hcd *hcd) | |||
1474 | u16 clkrdy = 0; | 1470 | u16 clkrdy = 0; |
1475 | int ret = 0, timeout = 15 /* ms */ ; | 1471 | int ret = 0, timeout = 15 /* ms */ ; |
1476 | 1472 | ||
1477 | if (isp116x->board && isp116x->board->reset) { | 1473 | ret = isp116x_sw_reset(isp116x); |
1478 | /* Hardware reset */ | ||
1479 | isp116x->board->reset(hcd->self.controller, 1); | ||
1480 | msleep(10); | ||
1481 | if (isp116x->board->clock) | ||
1482 | isp116x->board->clock(hcd->self.controller, 1); | ||
1483 | msleep(1); | ||
1484 | isp116x->board->reset(hcd->self.controller, 0); | ||
1485 | } else | ||
1486 | ret = isp116x_sw_reset(isp116x); | ||
1487 | |||
1488 | if (ret) | 1474 | if (ret) |
1489 | return ret; | 1475 | return ret; |
1490 | 1476 | ||
@@ -1501,10 +1487,7 @@ static int isp116x_reset(struct usb_hcd *hcd) | |||
1501 | ERR("Clock not ready after 20ms\n"); | 1487 | ERR("Clock not ready after 20ms\n"); |
1502 | /* After sw_reset the clock won't report to be ready, if | 1488 | /* After sw_reset the clock won't report to be ready, if |
1503 | H_WAKEUP pin is high. */ | 1489 | H_WAKEUP pin is high. */ |
1504 | if (!isp116x->board || !isp116x->board->reset) | 1490 | ERR("Please make sure that the H_WAKEUP pin is pulled low!\n"); |
1505 | ERR("The driver does not support hardware wakeup.\n"); | ||
1506 | ERR("Please make sure that the H_WAKEUP pin " | ||
1507 | "is pulled low!\n"); | ||
1508 | ret = -ENODEV; | 1491 | ret = -ENODEV; |
1509 | } | 1492 | } |
1510 | return ret; | 1493 | return ret; |
@@ -1527,15 +1510,7 @@ static void isp116x_stop(struct usb_hcd *hcd) | |||
1527 | isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPS); | 1510 | isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPS); |
1528 | spin_unlock_irqrestore(&isp116x->lock, flags); | 1511 | spin_unlock_irqrestore(&isp116x->lock, flags); |
1529 | 1512 | ||
1530 | /* Put the chip into reset state */ | 1513 | isp116x_sw_reset(isp116x); |
1531 | if (isp116x->board && isp116x->board->reset) | ||
1532 | isp116x->board->reset(hcd->self.controller, 0); | ||
1533 | else | ||
1534 | isp116x_sw_reset(isp116x); | ||
1535 | |||
1536 | /* Stop the clock */ | ||
1537 | if (isp116x->board && isp116x->board->clock) | ||
1538 | isp116x->board->clock(hcd->self.controller, 0); | ||
1539 | } | 1514 | } |
1540 | 1515 | ||
1541 | /* | 1516 | /* |
diff --git a/include/linux/usb_isp116x.h b/include/linux/usb_isp116x.h index 8f0b3c226968..436dd8a2b64a 100644 --- a/include/linux/usb_isp116x.h +++ b/include/linux/usb_isp116x.h | |||
@@ -19,15 +19,6 @@ struct isp116x_platform_data { | |||
19 | prevents stopping internal clock, increasing | 19 | prevents stopping internal clock, increasing |
20 | thereby power consumption in suspended state. */ | 20 | thereby power consumption in suspended state. */ |
21 | unsigned remote_wakeup_enable:1; | 21 | unsigned remote_wakeup_enable:1; |
22 | /* Hardware reset set/clear. If implemented, this function must: | ||
23 | if set == 0, deassert chip's HW reset pin | ||
24 | otherwise, assert chip's HW reset pin */ | ||
25 | void (*reset) (struct device * dev, int set); | ||
26 | /* Hardware clock start/stop. If implemented, this function must: | ||
27 | if start == 0, stop the external clock | ||
28 | otherwise, start the external clock | ||
29 | */ | ||
30 | void (*clock) (struct device * dev, int start); | ||
31 | /* Inter-io delay (ns). The chip is picky about access timings; it | 22 | /* Inter-io delay (ns). The chip is picky about access timings; it |
32 | expects at least: | 23 | expects at least: |
33 | 150ns delay between consecutive accesses to DATA_REG, | 24 | 150ns delay between consecutive accesses to DATA_REG, |