diff options
author | Arnd Bergmann <arnd@arndb.de> | 2015-11-25 17:48:12 -0500 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2015-11-25 17:48:12 -0500 |
commit | e6b66dfb37ccbc4c649325e693bcc119ed141b51 (patch) | |
tree | a3256b3082e4dc63c456f69f83f475cd780b698e | |
parent | d3de94ba4e58e8043d500f7335797d6a2ac93248 (diff) | |
parent | 17e846aa390d89adae053d9d2ba8acb286b64af7 (diff) |
Merge tag 'keystone-fixes-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone into fixes
Merge "Few Keystone fixes for 4.4-rcx" from Santosh Shilimkar:
- Fix the optional PDSP firmware loading
- Fix linking RAM setup for QMs
- Fix crash with clk_ignore_unused
* tag 'keystone-fixes-for-4.4' of git://git.kernel.org/pub/scm/linux/kernel/git/ssantosh/linux-keystone:
ARM: dts: keystone: k2l: fix kernel crash when clk_ignore_unused is not in bootargs
soc: ti: knav_qmss_queue: Fix linking RAM setup for queue managers
soc: ti: use request_firmware_direct() as acc firmware is optional
-rw-r--r-- | Documentation/arm/keystone/Overview.txt | 18 | ||||
-rw-r--r-- | arch/arm/boot/dts/k2l-netcp.dtsi | 2 | ||||
-rw-r--r-- | drivers/soc/ti/knav_qmss_queue.c | 8 |
3 files changed, 5 insertions, 23 deletions
diff --git a/Documentation/arm/keystone/Overview.txt b/Documentation/arm/keystone/Overview.txt index f17bc4c9dff9..400c0c270d2e 100644 --- a/Documentation/arm/keystone/Overview.txt +++ b/Documentation/arm/keystone/Overview.txt | |||
@@ -49,24 +49,6 @@ specified through DTS. Following are the DTS used:- | |||
49 | The device tree documentation for the keystone machines are located at | 49 | The device tree documentation for the keystone machines are located at |
50 | Documentation/devicetree/bindings/arm/keystone/keystone.txt | 50 | Documentation/devicetree/bindings/arm/keystone/keystone.txt |
51 | 51 | ||
52 | Known issues & workaround | ||
53 | ------------------------- | ||
54 | |||
55 | Some of the device drivers used on keystone are re-used from that from | ||
56 | DaVinci and other TI SoCs. These device drivers may use clock APIs directly. | ||
57 | Some of the keystone specific drivers such as netcp uses run time power | ||
58 | management API instead to enable clock. As this API has limitations on | ||
59 | keystone, following workaround is needed to boot Linux. | ||
60 | |||
61 | Add 'clk_ignore_unused' to the bootargs env variable in u-boot. Otherwise | ||
62 | clock frameworks will try to disable clocks that are unused and disable | ||
63 | the hardware. This is because netcp related power domain and clock | ||
64 | domains are enabled in u-boot as run time power management API currently | ||
65 | doesn't enable clocks for netcp due to a limitation. This workaround is | ||
66 | expected to be removed in the future when proper API support becomes | ||
67 | available. Until then, this work around is needed. | ||
68 | |||
69 | |||
70 | Document Author | 52 | Document Author |
71 | --------------- | 53 | --------------- |
72 | Murali Karicheri <m-karicheri2@ti.com> | 54 | Murali Karicheri <m-karicheri2@ti.com> |
diff --git a/arch/arm/boot/dts/k2l-netcp.dtsi b/arch/arm/boot/dts/k2l-netcp.dtsi index 01aef230773d..5acbd0dcc2ab 100644 --- a/arch/arm/boot/dts/k2l-netcp.dtsi +++ b/arch/arm/boot/dts/k2l-netcp.dtsi | |||
@@ -137,7 +137,7 @@ netcp: netcp@26000000 { | |||
137 | /* NetCP address range */ | 137 | /* NetCP address range */ |
138 | ranges = <0 0x26000000 0x1000000>; | 138 | ranges = <0 0x26000000 0x1000000>; |
139 | 139 | ||
140 | clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>; | 140 | clocks = <&clkosr>, <&papllclk>, <&clkcpgmac>, <&chipclk12>; |
141 | dma-coherent; | 141 | dma-coherent; |
142 | 142 | ||
143 | ti,navigator-dmas = <&dma_gbe 0>, | 143 | ti,navigator-dmas = <&dma_gbe 0>, |
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c index f3a0b6a4b54e..8c03a80b482d 100644 --- a/drivers/soc/ti/knav_qmss_queue.c +++ b/drivers/soc/ti/knav_qmss_queue.c | |||
@@ -1179,7 +1179,7 @@ static int knav_queue_setup_link_ram(struct knav_device *kdev) | |||
1179 | 1179 | ||
1180 | block++; | 1180 | block++; |
1181 | if (!block->size) | 1181 | if (!block->size) |
1182 | return 0; | 1182 | continue; |
1183 | 1183 | ||
1184 | dev_dbg(kdev->dev, "linkram1: phys:%x, virt:%p, size:%x\n", | 1184 | dev_dbg(kdev->dev, "linkram1: phys:%x, virt:%p, size:%x\n", |
1185 | block->phys, block->virt, block->size); | 1185 | block->phys, block->virt, block->size); |
@@ -1519,9 +1519,9 @@ static int knav_queue_load_pdsp(struct knav_device *kdev, | |||
1519 | 1519 | ||
1520 | for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) { | 1520 | for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) { |
1521 | if (knav_acc_firmwares[i]) { | 1521 | if (knav_acc_firmwares[i]) { |
1522 | ret = request_firmware(&fw, | 1522 | ret = request_firmware_direct(&fw, |
1523 | knav_acc_firmwares[i], | 1523 | knav_acc_firmwares[i], |
1524 | kdev->dev); | 1524 | kdev->dev); |
1525 | if (!ret) { | 1525 | if (!ret) { |
1526 | found = true; | 1526 | found = true; |
1527 | break; | 1527 | break; |