From 1866368a8ab8cacf73aa47f67138040d5620439d Mon Sep 17 00:00:00 2001 From: Yutang Jiang Date: Sat, 24 Dec 2016 01:11:32 +0800 Subject: layerscape: add ls1088ardb device support LS1088A is an ARMv8 implementation combining eight ARM A53 processor cores. The LS1088ARDB is an evaluatoin platform that supports the LS1088A family SoCs. Features summary: - Eight 64-bit ARM v8 Cortex-A53 CPUs - Data path acceleration architecture 2.0 (DPAA2) - Ethernet interfaces - QUADSPI flash, 3 PCIe, 2 USB, 1 SD, 2 DUARTs etc Signed-off-by: Yutang Jiang --- ...95-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch | 88 ++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100644 target/linux/layerscape/patches-4.4/7195-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch (limited to 'target/linux/layerscape/patches-4.4/7195-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch') diff --git a/target/linux/layerscape/patches-4.4/7195-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch b/target/linux/layerscape/patches-4.4/7195-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch new file mode 100644 index 0000000000..438234b148 --- /dev/null +++ b/target/linux/layerscape/patches-4.4/7195-increment-MC_CMD_COMPLETION_TIMEOUT_MS.patch @@ -0,0 +1,88 @@ +From 71d19cd1107fa435d056e08e7d7ef7d8f714cf35 Mon Sep 17 00:00:00 2001 +From: Lijun Pan +Date: Fri, 31 Jul 2015 15:07:32 -0500 +Subject: [PATCH 195/226] increment MC_CMD_COMPLETION_TIMEOUT_MS + +5000ms is barely enough for dpsw/dpdmux creation. +If MC firmware could run faster, we would decrement the value later on. + +Signed-off-by: Lijun Pan +(Stuart: resolved merge conflict) +Signed-off-by: Stuart Yoder +--- + drivers/staging/fsl-mc/bus/mc-sys.c | 38 +++++++++++++++-------------------- + 1 file changed, 16 insertions(+), 22 deletions(-) + +--- a/drivers/staging/fsl-mc/bus/mc-sys.c ++++ b/drivers/staging/fsl-mc/bus/mc-sys.c +@@ -43,8 +43,10 @@ + + /** + * Timeout in milliseconds to wait for the completion of an MC command ++ * 5000 ms is barely enough for dpsw/dpdmux creation ++ * TODO: if MC firmware could response faster, we should decrease this value + */ +-#define MC_CMD_COMPLETION_TIMEOUT_MS 500 ++#define MC_CMD_COMPLETION_TIMEOUT_MS 5000 + + /* + * usleep_range() min and max values used to throttle down polling +@@ -327,17 +329,8 @@ static int mc_polling_wait_preemptible(s + usleep_range(MC_CMD_COMPLETION_POLLING_MIN_SLEEP_USECS, + MC_CMD_COMPLETION_POLLING_MAX_SLEEP_USECS); + +- if (time_after_eq(jiffies, jiffies_until_timeout)) { +- dev_dbg(mc_io->dev, +- "MC command timed out (portal: %#llx, obj handle: %#x, command: %#x)\n", +- mc_io->portal_phys_addr, +- (unsigned int) +- MC_CMD_HDR_READ_TOKEN(cmd->header), +- (unsigned int) +- MC_CMD_HDR_READ_CMDID(cmd->header)); +- ++ if (time_after_eq(jiffies, jiffies_until_timeout)) + return -ETIMEDOUT; +- } + } + + *mc_status = status; +@@ -369,17 +362,8 @@ static int mc_polling_wait_atomic(struct + + udelay(MC_CMD_COMPLETION_POLLING_MAX_SLEEP_USECS); + timeout_usecs -= MC_CMD_COMPLETION_POLLING_MAX_SLEEP_USECS; +- if (timeout_usecs == 0) { +- dev_dbg(mc_io->dev, +- "MC command timed out (portal: %#llx, obj handle: %#x, command: %#x)\n", +- mc_io->portal_phys_addr, +- (unsigned int) +- MC_CMD_HDR_READ_TOKEN(cmd->header), +- (unsigned int) +- MC_CMD_HDR_READ_CMDID(cmd->header)); +- ++ if (timeout_usecs == 0) + return -ETIMEDOUT; +- } + } + + *mc_status = status; +@@ -422,9 +406,19 @@ int mc_send_command(struct fsl_mc_io *mc + else + error = mc_polling_wait_atomic(mc_io, cmd, &status); + +- if (error < 0) ++ if (error < 0) { ++ if (error == -ETIMEDOUT) { ++ pr_debug("MC command timed out (portal: %#llx, obj handle: %#x, command: %#x)\n", ++ mc_io->portal_phys_addr, ++ (unsigned int) ++ MC_CMD_HDR_READ_TOKEN(cmd->header), ++ (unsigned int) ++ MC_CMD_HDR_READ_CMDID(cmd->header)); ++ } + goto common_exit; + ++ } ++ + if (status != MC_CMD_STATUS_OK) { + dev_dbg(mc_io->dev, + "MC command failed: portal: %#llx, obj handle: %#x, command: %#x, status: %s (%#x)\n", -- cgit v1.2.3