diff options
-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; |