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

Commit e6b66dfb authored by Arnd Bergmann's avatar Arnd Bergmann
Browse files

Merge tag 'keystone-fixes-for-4.4' of...

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
parents d3de94ba 17e846aa
Loading
Loading
Loading
Loading
+0 −18
Original line number Original line Diff line number Diff line
@@ -49,24 +49,6 @@ specified through DTS. Following are the DTS used:-
The device tree documentation for the keystone machines are located at
The device tree documentation for the keystone machines are located at
        Documentation/devicetree/bindings/arm/keystone/keystone.txt
        Documentation/devicetree/bindings/arm/keystone/keystone.txt


Known issues & workaround
-------------------------

Some of the device drivers used on keystone are re-used from that from
DaVinci and other TI SoCs. These device drivers may use clock APIs directly.
Some of the keystone specific drivers such as netcp uses run time power
management API instead to enable clock. As this API has limitations on
keystone, following workaround is needed to boot Linux.

   Add 'clk_ignore_unused' to the bootargs env variable in u-boot. Otherwise
   clock frameworks will try to disable clocks that are unused and disable
   the hardware. This is because netcp related power domain and clock
   domains are enabled in u-boot as run time power management API currently
   doesn't enable clocks for netcp due to a limitation. This workaround is
   expected to be removed in the future when proper API support becomes
   available. Until then, this work around is needed.


Document Author
Document Author
---------------
---------------
Murali Karicheri <m-karicheri2@ti.com>
Murali Karicheri <m-karicheri2@ti.com>
+1 −1
Original line number Original line Diff line number Diff line
@@ -137,7 +137,7 @@ netcp: netcp@26000000 {
	/* NetCP address range */
	/* NetCP address range */
	ranges = <0 0x26000000 0x1000000>;
	ranges = <0 0x26000000 0x1000000>;


	clocks = <&papllclk>, <&clkcpgmac>, <&chipclk12>;
	clocks = <&clkosr>, <&papllclk>, <&clkcpgmac>, <&chipclk12>;
	dma-coherent;
	dma-coherent;


	ti,navigator-dmas = <&dma_gbe 0>,
	ti,navigator-dmas = <&dma_gbe 0>,
+4 −4
Original line number Original line Diff line number Diff line
@@ -1179,7 +1179,7 @@ static int knav_queue_setup_link_ram(struct knav_device *kdev)


		block++;
		block++;
		if (!block->size)
		if (!block->size)
			return 0;
			continue;


		dev_dbg(kdev->dev, "linkram1: phys:%x, virt:%p, size:%x\n",
		dev_dbg(kdev->dev, "linkram1: phys:%x, virt:%p, size:%x\n",
			block->phys, block->virt, block->size);
			block->phys, block->virt, block->size);
@@ -1519,7 +1519,7 @@ static int knav_queue_load_pdsp(struct knav_device *kdev,


	for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
	for (i = 0; i < ARRAY_SIZE(knav_acc_firmwares); i++) {
		if (knav_acc_firmwares[i]) {
		if (knav_acc_firmwares[i]) {
			ret = request_firmware(&fw,
			ret = request_firmware_direct(&fw,
						      knav_acc_firmwares[i],
						      knav_acc_firmwares[i],
						      kdev->dev);
						      kdev->dev);
			if (!ret) {
			if (!ret) {