Changelogs: * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.12 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.13 * https://www.kernel.org/pub/linux/kernel/v3.x/ChangeLog-3.18.14 Build tested on brcm63xx and ipq806x, runtested on brcm63xx. Signed-off-by: Jonas Gorski <jogo@openwrt.org> SVN-Revision: 45711
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| --- a/drivers/usb/gadget/udc/at91_udc.c
 | |
| +++ b/drivers/usb/gadget/udc/at91_udc.c
 | |
| @@ -870,8 +870,6 @@ static void clk_on(struct at91_udc *udc)
 | |
|  		return;
 | |
|  	udc->clocked = 1;
 | |
|  
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		clk_enable(udc->uclk);
 | |
|  	clk_enable(udc->iclk);
 | |
|  	clk_enable(udc->fclk);
 | |
|  }
 | |
| @@ -884,8 +882,6 @@ static void clk_off(struct at91_udc *udc
 | |
|  	udc->gadget.speed = USB_SPEED_UNKNOWN;
 | |
|  	clk_disable(udc->fclk);
 | |
|  	clk_disable(udc->iclk);
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		clk_disable(udc->uclk);
 | |
|  }
 | |
|  
 | |
|  /*
 | |
| @@ -1766,27 +1762,18 @@ static int at91udc_probe(struct platform
 | |
|  	udc_reinit(udc);
 | |
|  
 | |
|  	/* get interface and function clocks */
 | |
| -	udc->iclk = clk_get(dev, "udc_clk");
 | |
| -	udc->fclk = clk_get(dev, "udpck");
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		udc->uclk = clk_get(dev, "usb_clk");
 | |
| -	if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk) ||
 | |
| -	    (IS_ENABLED(CONFIG_COMMON_CLK) && IS_ERR(udc->uclk))) {
 | |
| +	udc->iclk = clk_get(dev, "pclk");
 | |
| +	udc->fclk = clk_get(dev, "hclk");
 | |
| +	if (IS_ERR(udc->iclk) || IS_ERR(udc->fclk)) {
 | |
|  		DBG("clocks missing\n");
 | |
|  		retval = -ENODEV;
 | |
|  		goto fail1;
 | |
|  	}
 | |
|  
 | |
| -	/* don't do anything until we have both gadget driver and VBUS */
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK)) {
 | |
| -		clk_set_rate(udc->uclk, 48000000);
 | |
| -		retval = clk_prepare(udc->uclk);
 | |
| -		if (retval)
 | |
| -			goto fail1;
 | |
| -	}
 | |
| +	clk_set_rate(udc->fclk, 48000000);
 | |
|  	retval = clk_prepare(udc->fclk);
 | |
|  	if (retval)
 | |
| -		goto fail1a;
 | |
| +		goto fail1;
 | |
|  
 | |
|  	retval = clk_prepare_enable(udc->iclk);
 | |
|  	if (retval)
 | |
| @@ -1860,12 +1847,7 @@ fail1c:
 | |
|  	clk_unprepare(udc->iclk);
 | |
|  fail1b:
 | |
|  	clk_unprepare(udc->fclk);
 | |
| -fail1a:
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		clk_unprepare(udc->uclk);
 | |
|  fail1:
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK) && !IS_ERR(udc->uclk))
 | |
| -		clk_put(udc->uclk);
 | |
|  	if (!IS_ERR(udc->fclk))
 | |
|  		clk_put(udc->fclk);
 | |
|  	if (!IS_ERR(udc->iclk))
 | |
| @@ -1911,15 +1893,11 @@ static int __exit at91udc_remove(struct
 | |
|  	res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
 | |
|  	release_mem_region(res->start, resource_size(res));
 | |
|  
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		clk_unprepare(udc->uclk);
 | |
|  	clk_unprepare(udc->fclk);
 | |
|  	clk_unprepare(udc->iclk);
 | |
|  
 | |
|  	clk_put(udc->iclk);
 | |
|  	clk_put(udc->fclk);
 | |
| -	if (IS_ENABLED(CONFIG_COMMON_CLK))
 | |
| -		clk_put(udc->uclk);
 | |
|  
 | |
|  	return 0;
 | |
|  }
 |