#! /bin/sh # A little script I whipped up to make it easy to # patch source trees and have sane error handling # -Erik # # (c) 2002 Erik Andersen # Set directories from arguments, or use defaults. targetdir=${1-.} patchdir=${2-../kernel-patches} patchpattern=${3-*} if [ ! -d "${targetdir}" ] ; then echo "Aborting. '${targetdir}' is not a directory." exit 1 fi if [ ! -d "${patchdir}" ] ; then echo "Aborting. '${patchdir}' is not a directory." exit 1 fi for i in ${patchdir}/${patchpattern} ; do case "$i" in *.gz) type="gzip"; uncomp="gunzip -dc"; ;; *.bz) type="bzip"; uncomp="bunzip -dc"; ;; *.bz2) type="bzip2"; uncomp="bunzip2 -dc"; ;; *.zip) type="zip"; uncomp="unzip -d"; ;; *.Z) type="compress"; uncomp="uncompress -c"; ;; *) type="plaintext"; uncomp="cat"; ;; esac [ -d "${i}" ] && echo "Ignoring subdirectory ${i}" && continue echo "" echo "Applying ${i} using ${type}: " ${uncomp} ${i} | ${PATCH:-patch} -f -p1 -E -d ${targetdir} if [ $? != 0 ] ; then echo "Patch failed! Please fix $i!" exit 1 fi done # Check for rejects... if [ "`find $targetdir/ '(' -name '*.rej' -o -name '.*.rej' ')' -print`" ] ; then echo "Aborting. Reject files found." exit 1 fi # Remove backup files find $targetdir/ '(' -name '*.orig' -o -name '.*.orig' ')' -exec rm -f {} \; ue='lede-17.01'>lede-17.01 upstream openwrtJames
aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ramips/patches-3.18/0023-MIPS-ralink-mt7620-fix-usb-issue-during-frequency-sc.patch
blob: f3dead38592251810effbb0051078e3e422fb153 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
From 1f1c12e85defba9459b41ec95b86f23b4791f1ab Mon Sep 17 00:00:00 2001
From: John Crispin <blogic@openwrt.org>
Date: Mon, 4 Aug 2014 20:43:25 +0200
Subject: [PATCH 23/57] MIPS: ralink: mt7620: fix usb issue during frequency
 scaling

 If the USB HCD is running and the cpu is scaled too low, then the USB stops
 working. Increase the idle speed of the core to fix this if the kernel is
 built with USB support.

 The values are taken from the Ralink SDK Kernel.

 Signed-off-by: John Crispin <blogic@openwrt.org>
---
 arch/mips/ralink/mt7620.c |   19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
@@ -36,6 +36,12 @@
 #define PMU1_CFG		0x8C
 #define DIG_SW_SEL		BIT(25)
 
+/* clock scaling */
+#define CLKCFG_FDIV_MASK	0x1f00
+#define CLKCFG_FDIV_USB_VAL	0x0300
+#define CLKCFG_FFRAC_MASK	0x001f
+#define CLKCFG_FFRAC_USB_VAL	0x0003
+
 /* does the board have sdram or ddram */
 static int dram_type;
 
@@ -337,6 +343,19 @@ void __init ralink_clk_init(void)
 	ralink_clk_add("10000b00.spi", sys_rate);
 	ralink_clk_add("10000c00.uartlite", periph_rate);
 	ralink_clk_add("10180000.wmac", xtal_rate);
+
+	if (IS_ENABLED(CONFIG_USB)) {
+		/*
+		 * When the CPU goes into sleep mode, the BUS clock will be too low for
+		 * USB to function properly
+		 */
+		u32 val = rt_sysc_r32(SYSC_REG_CPU_SYS_CLKCFG);
+
+		val &= ~(CLKCFG_FDIV_MASK | CLKCFG_FFRAC_MASK);
+		val |= CLKCFG_FDIV_USB_VAL | CLKCFG_FFRAC_USB_VAL;
+
+		rt_sysc_w32(val, SYSC_REG_CPU_SYS_CLKCFG);
+	}
 }
 
 void __init ralink_of_remap(void)