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

Commit a8bcf410 authored by eric miao's avatar eric miao Committed by Russell King
Browse files

[ARM] USB: update pxa27x ohci driver to use clk support

parent 88d45638
Loading
Loading
Loading
Loading
+11 −2
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@
#include <linux/device.h>
#include <linux/signal.h>
#include <linux/platform_device.h>
#include <linux/clk.h>

#include <asm/mach-types.h>
#include <asm/hardware.h>
@@ -32,6 +33,8 @@

#define UHCRHPS(x)              __REG2( 0x4C000050, (x)<<2 )

static struct clk *usb_clk;

/*
  PMM_NPS_MODE -- PMM Non-power switching mode
      Ports are powered continuously.
@@ -80,7 +83,7 @@ static int pxa27x_start_hc(struct device *dev)

	inf = dev->platform_data;

	pxa_set_cken(CKEN_USBHOST, 1);
	clk_enable(usb_clk);

	UHCHR |= UHCHR_FHR;
	udelay(11);
@@ -123,7 +126,7 @@ static void pxa27x_stop_hc(struct device *dev)
	UHCCOMS |= 1;
	udelay(10);

	pxa_set_cken(CKEN_USBHOST, 0);
	clk_disable(usb_clk);
}


@@ -158,6 +161,10 @@ int usb_hcd_pxa27x_probe (const struct hc_driver *driver, struct platform_device
		return -ENOMEM;
	}

	usb_clk = clk_get(&pdev->dev, "USBCLK");
	if (IS_ERR(usb_clk))
		return PTR_ERR(usb_clk);

	hcd = usb_create_hcd (driver, &pdev->dev, "pxa27x");
	if (!hcd)
		return -ENOMEM;
@@ -201,6 +208,7 @@ int usb_hcd_pxa27x_probe (const struct hc_driver *driver, struct platform_device
	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
 err1:
	usb_put_hcd(hcd);
	clk_put(usb_clk);
	return retval;
}

@@ -225,6 +233,7 @@ void usb_hcd_pxa27x_remove (struct usb_hcd *hcd, struct platform_device *pdev)
	iounmap(hcd->regs);
	release_mem_region(hcd->rsrc_start, hcd->rsrc_len);
	usb_put_hcd(hcd);
	clk_put(usb_clk);
}

/*-------------------------------------------------------------------------*/