Greg,
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.
Please apply,
Olav
Remove support for platform-specific hardware reset and
external clock stopping functions.
Signed-off-by: Olav Kongas <[EMAIL PROTECTED]>
--- linux-2.6.13-rc4-tmp3/drivers/usb/host/isp116x-hcd.c.4 2005-08-03
13:48:03.000000000 +0300
+++ linux-2.6.13-rc4-tmp3/drivers/usb/host/isp116x-hcd.c 2005-08-04
16:15:49.777631833 +0300
@@ -1463,10 +1463,6 @@ static int isp116x_sw_reset(struct isp11
return ret;
}
-/*
- Reset. Tries to perform platform-specific hardware
- reset first; falls back to software reset.
-*/
static int isp116x_reset(struct usb_hcd *hcd)
{
struct isp116x *isp116x = hcd_to_isp116x(hcd);
@@ -1474,17 +1470,7 @@ static int isp116x_reset(struct usb_hcd
u16 clkrdy = 0;
int ret = 0, timeout = 15 /* ms */ ;
- if (isp116x->board && isp116x->board->reset) {
- /* Hardware reset */
- isp116x->board->reset(hcd->self.controller, 1);
- msleep(10);
- if (isp116x->board->clock)
- isp116x->board->clock(hcd->self.controller, 1);
- msleep(1);
- isp116x->board->reset(hcd->self.controller, 0);
- } else
- ret = isp116x_sw_reset(isp116x);
-
+ ret = isp116x_sw_reset(isp116x);
if (ret)
return ret;
@@ -1501,10 +1487,7 @@ static int isp116x_reset(struct usb_hcd
ERR("Clock not ready after 20ms\n");
/* After sw_reset the clock won't report to be ready, if
H_WAKEUP pin is high. */
- if (!isp116x->board || !isp116x->board->reset)
- ERR("The driver does not support hardware wakeup.\n");
- ERR("Please make sure that the H_WAKEUP pin "
- "is pulled low!\n");
+ ERR("Please make sure that the H_WAKEUP pin is pulled low!\n");
ret = -ENODEV;
}
return ret;
@@ -1527,15 +1510,7 @@ static void isp116x_stop(struct usb_hcd
isp116x_write_reg32(isp116x, HCRHSTATUS, RH_HS_LPS);
spin_unlock_irqrestore(&isp116x->lock, flags);
- /* Put the chip into reset state */
- if (isp116x->board && isp116x->board->reset)
- isp116x->board->reset(hcd->self.controller, 0);
- else
- isp116x_sw_reset(isp116x);
-
- /* Stop the clock */
- if (isp116x->board && isp116x->board->clock)
- isp116x->board->clock(hcd->self.controller, 0);
+ isp116x_sw_reset(isp116x);
}
/*
--- linux-2.6.13-rc4-tmp3/include/linux/usb_isp116x.h.4 2005-08-03
13:48:10.000000000 +0300
+++ linux-2.6.13-rc4-tmp3/include/linux/usb_isp116x.h 2005-08-04
15:52:20.441177905 +0300
@@ -19,15 +19,6 @@ struct isp116x_platform_data {
prevents stopping internal clock, increasing
thereby power consumption in suspended state. */
unsigned remote_wakeup_enable:1;
- /* Hardware reset set/clear. If implemented, this function must:
- if set == 0, deassert chip's HW reset pin
- otherwise, assert chip's HW reset pin */
- void (*reset) (struct device * dev, int set);
- /* Hardware clock start/stop. If implemented, this function must:
- if start == 0, stop the external clock
- otherwise, start the external clock
- */
- void (*clock) (struct device * dev, int start);
/* Inter-io delay (ns). The chip is picky about access timings; it
expects at least:
150ns delay between consecutive accesses to DATA_REG,