Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f8d23d30 authored by Olav Kongas's avatar Olav Kongas Committed by Greg Kroah-Hartman
Browse files

[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: default avatarOlav Kongas <ok@artecdesign.ee>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 9d233d9f
Loading
Loading
Loading
Loading
+3 −28
Original line number Diff line number Diff line
@@ -1463,10 +1463,6 @@ static int isp116x_sw_reset(struct isp116x *isp116x)
	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 *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);

	if (ret)
		return ret;

@@ -1501,10 +1487,7 @@ static int isp116x_reset(struct usb_hcd *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 *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);
}

/*
+0 −9
Original line number Diff line number Diff line
@@ -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,