All of lore.kernel.org
 help / color / mirror / Atom feed
From: David Brown <davidb@codeaurora.org>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: David Brown <davidb@codeaurora.org>,
	Daniel Walker <dwalker@fifo99.com>,
	Bryan Huntsman <bryanh@codeaurora.org>,
	linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 06/11] ssbi: Comment the use of udelay()
Date: Tue, 12 Mar 2013 11:41:51 -0700	[thread overview]
Message-ID: <1363113716-25897-7-git-send-email-davidb@codeaurora.org> (raw)
In-Reply-To: <1363113716-25897-1-git-send-email-davidb@codeaurora.org>

The ssbi driver uses a busywait loop to read its status register.  Add
a comment explaining the timing of the device itself so that future
developers can better understand this delay, and possibly diagnose any
problems.

Signed-off-by: David Brown <davidb@codeaurora.org>
---
 drivers/ssbi/ssbi.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/ssbi/ssbi.c b/drivers/ssbi/ssbi.c
index 6fbcb25..7ae8925 100644
--- a/drivers/ssbi/ssbi.c
+++ b/drivers/ssbi/ssbi.c
@@ -87,6 +87,15 @@ static inline void ssbi_writel(struct msm_ssbi *ssbi, u32 val, u32 reg)
 	writel(val, ssbi->base + reg);
 }
 
+/*
+ * Via private exchange with one of the original authors, the hardware
+ * should generally finish a transaction in about 5us.  The worst
+ * case, is when using the arbiter and both other CPUs have just
+ * started trying to use the SSBI bus will result in a time of about
+ * 20us.  It should never take longer than this.
+ *
+ * As such, this wait merely spins, with a udelay.
+ */
 static int ssbi_wait_mask(struct msm_ssbi *ssbi, u32 set_mask, u32 clr_mask)
 {
 	u32 timeout = SSBI_TIMEOUT_US;
@@ -161,6 +170,10 @@ err:
 	return ret;
 }
 
+/*
+ * See ssbi_wait_mask for an explanation of the time and the
+ * busywait.
+ */
 static inline int
 msm_ssbi_pa_transfer(struct msm_ssbi *ssbi, u32 cmd, u8 *data)
 {
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

WARNING: multiple messages have this Message-ID (diff)
From: davidb@codeaurora.org (David Brown)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v2 06/11] ssbi: Comment the use of udelay()
Date: Tue, 12 Mar 2013 11:41:51 -0700	[thread overview]
Message-ID: <1363113716-25897-7-git-send-email-davidb@codeaurora.org> (raw)
In-Reply-To: <1363113716-25897-1-git-send-email-davidb@codeaurora.org>

The ssbi driver uses a busywait loop to read its status register.  Add
a comment explaining the timing of the device itself so that future
developers can better understand this delay, and possibly diagnose any
problems.

Signed-off-by: David Brown <davidb@codeaurora.org>
---
 drivers/ssbi/ssbi.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/drivers/ssbi/ssbi.c b/drivers/ssbi/ssbi.c
index 6fbcb25..7ae8925 100644
--- a/drivers/ssbi/ssbi.c
+++ b/drivers/ssbi/ssbi.c
@@ -87,6 +87,15 @@ static inline void ssbi_writel(struct msm_ssbi *ssbi, u32 val, u32 reg)
 	writel(val, ssbi->base + reg);
 }
 
+/*
+ * Via private exchange with one of the original authors, the hardware
+ * should generally finish a transaction in about 5us.  The worst
+ * case, is when using the arbiter and both other CPUs have just
+ * started trying to use the SSBI bus will result in a time of about
+ * 20us.  It should never take longer than this.
+ *
+ * As such, this wait merely spins, with a udelay.
+ */
 static int ssbi_wait_mask(struct msm_ssbi *ssbi, u32 set_mask, u32 clr_mask)
 {
 	u32 timeout = SSBI_TIMEOUT_US;
@@ -161,6 +170,10 @@ err:
 	return ret;
 }
 
+/*
+ * See ssbi_wait_mask for an explanation of the time and the
+ * busywait.
+ */
 static inline int
 msm_ssbi_pa_transfer(struct msm_ssbi *ssbi, u32 cmd, u8 *data)
 {
-- 
The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
hosted by The Linux Foundation

  parent reply	other threads:[~2013-03-12 18:41 UTC|newest]

Thread overview: 74+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-07  0:29 [PATCH 0/6] Qualcomm SSBI bus driver David Brown
2013-03-07  0:29 ` David Brown
2013-03-07  0:29 ` [PATCH 1/6] platform-drivers: msm: add single-wire serial bus interface (SSBI) driver David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  1:30   ` Greg Kroah-Hartman
2013-03-07  1:30     ` Greg Kroah-Hartman
2013-03-07  5:20     ` David Brown
2013-03-07  5:20       ` David Brown
2013-03-07  6:01       ` Greg Kroah-Hartman
2013-03-07  6:01         ` Greg Kroah-Hartman
2013-03-07 10:05         ` Sekhar Nori
2013-03-07 10:05           ` Sekhar Nori
2013-03-07 10:05           ` Sekhar Nori
2013-03-07 18:45           ` David Brown
2013-03-07 18:45             ` David Brown
2013-03-07 18:45             ` David Brown
2013-03-07 18:50         ` David Brown
2013-03-07 18:50           ` David Brown
2013-03-07 23:29           ` Greg Kroah-Hartman
2013-03-07 23:29             ` Greg Kroah-Hartman
2013-03-12  6:51     ` David Brown
2013-03-12  6:51       ` David Brown
2013-03-12 13:27       ` Greg Kroah-Hartman
2013-03-12 13:27         ` Greg Kroah-Hartman
2013-03-07  0:29 ` [PATCH 2/6] SSBI: Convert SSBI to device tree David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  0:29 ` [PATCH 3/6] ssbi: Fix exit mismatch in remove function David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  1:30   ` Greg Kroah-Hartman
2013-03-07  1:30     ` Greg Kroah-Hartman
2013-03-07  5:21     ` David Brown
2013-03-07  5:21       ` David Brown
2013-03-07  0:29 ` [PATCH 4/6] ssbi: Use regular init level David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  0:29 ` [PATCH 5/6] ARM: msm: enable SSBI driver in defconfig David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  0:29   ` David Brown
2013-03-07  0:29 ` [PATCH 6/6] RFC: SSBI: Simple pm8058 test driver David Brown
2013-03-07  0:29   ` David Brown
2013-03-12 18:41 ` [PATCH v2 0/11] Qualcomm SSBI bus driver David Brown
2013-03-12 18:41   ` David Brown
2013-03-12 18:41   ` [PATCH v2 01/11] platform-drivers: msm: add single-wire serial bus interface (SSBI) driver David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 02/11] fix: Use EXPORT_SYMBOL_GPL David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 03/11] ssbi: Fix exit mismatch in remove function David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 04/11] ssbi: Allow compilation as a module David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 05/11] SSBI: Convert SSBI to device tree David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 20:46     ` Stephen Boyd
2013-03-12 20:46       ` Stephen Boyd
2013-03-12 18:41   ` David Brown [this message]
2013-03-12 18:41     ` [PATCH v2 06/11] ssbi: Comment the use of udelay() David Brown
2013-03-12 18:41   ` [PATCH v2 07/11] ssbi: Use regular init level David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 20:26     ` Stephen Boyd
2013-03-12 20:26       ` Stephen Boyd
2013-03-12 18:41   ` [PATCH v2 08/11] ssbi: Remove extraneous logging David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 09/11] SSBI: Remove MSM_ prefix from SSBI drivers David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41   ` [PATCH v2 10/11] MAINTAINERS: add ssbi David Brown
2013-03-12 18:41     ` David Brown
2013-03-12 18:41     ` David Brown
2013-03-25 17:40   ` [PATCH v2 0/11] Qualcomm SSBI bus driver Greg Kroah-Hartman
2013-03-25 17:40     ` Greg Kroah-Hartman
2013-03-12 20:12 ` [PATCH v2 11/11] RFC: SSBI: Simple pm8058 test driver David Brown
2013-03-12 20:12   ` David Brown

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1363113716-25897-7-git-send-email-davidb@codeaurora.org \
    --to=davidb@codeaurora.org \
    --cc=bryanh@codeaurora.org \
    --cc=dwalker@fifo99.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-arm-msm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.