aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOlav Kongas <ok@artecdesign.ee>2005-08-04 10:02:54 -0400
committerGreg Kroah-Hartman <gregkh@suse.de>2005-09-08 19:22:48 -0400
commitf8d23d309809ae69c763520dababb7e845938272 (patch)
tree0c07570e6de7e6978bd336be9fabfe1ecfee802b
parent9d233d9faedfd8a4ee22288c1fdc698a6f75db21 (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.c31
-rw-r--r--include/linux/usb_isp116x.h9
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*/
1470static int isp116x_reset(struct usb_hcd *hcd) 1466static 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,