summaryrefslogtreecommitdiffstats
path: root/drivers/soc/ti/knav_qmss_queue.c
diff options
context:
space:
mode:
authorMichal Morawiec <michal.morawiec@tieto.com>2015-11-23 19:35:21 +0100
committerSantosh Shilimkar <ssantosh@kernel.org>2015-11-23 19:36:27 +0100
commitf7f2bccd1fe635eecb1739af1018eb0d4072282f (patch)
tree0531a1ae76af5e2f68d0919061fbced49b3ba79a /drivers/soc/ti/knav_qmss_queue.c
parentsoc: ti: use request_firmware_direct() as acc firmware is optional (diff)
downloadlinux-f7f2bccd1fe635eecb1739af1018eb0d4072282f.tar.xz
linux-f7f2bccd1fe635eecb1739af1018eb0d4072282f.zip
soc: ti: knav_qmss_queue: Fix linking RAM setup for queue managers
Configure linking RAM for both queue managers also in case when only linking RAM 0 is specified in device tree. Currently hwqueue driver configures linking RAM(s) to be used cooperatively by the QMs (shared mode). Therefore if both queue managers are used then both must be configured with exactly the same linking RAM info (base address and size) independent of the number of linking RAM(s) specified in the device tree. For proper operation only one linking RAM is required and in most cases this can be internal one as long as it is able to handle the number of descriptors used in the system. Current driver code however skips configuration of second queue manager if second linking RAM is not specified. If the configuration for the QM2 is missing there will be a crash when it tries to push/pop descriptors from its queues. Signed-off-by: Michal Morawiec <michal.1.morawiec.ext@nokia.com> Signed-off-by: Santosh Shilimkar <ssantosh@kernel.org>
Diffstat (limited to 'drivers/soc/ti/knav_qmss_queue.c')
-rw-r--r--drivers/soc/ti/knav_qmss_queue.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_queue.c
index 89789e22e423..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)
block++;
if (!block->size)
- return 0;
+ continue;
dev_dbg(kdev->dev, "linkram1: phys:%x, virt:%p, size:%x\n",
block->phys, block->virt, block->size);