From: Georgios Tsotsos <tsotsos@gmail.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Georgios Tsotsos <tsotsos@gmail.com>,
Aaro Koskinen <aaro.koskinen@iki.fi>,
James Hogan <jhogan@kernel.org>,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: [PATCH v3 2/2] Staging: octeon-usb: Changes macro CVMX_WAIT_FOR_FIELD32 to function call.
Date: Sun, 29 Jul 2018 14:40:35 +0300 [thread overview]
Message-ID: <0e52fbfefc34fe064201da9ad93e12e50e1e816c.1532864087.git.tsotsos@gmail.com> (raw)
In-Reply-To: <cover.1532864087.git.tsotsos@gmail.com>
In-Reply-To: <cover.1532864087.git.tsotsos@gmail.com>
Replacing CVMX_WAIT_FOR_FIELD32 macro with equivalent function.
Signed-off-by: Georgios Tsotsos <tsotsos@gmail.com>
---
drivers/staging/octeon-usb/octeon-hcd.c | 65 +++++++++++++++++++--------------
1 file changed, 38 insertions(+), 27 deletions(-)
diff --git a/drivers/staging/octeon-usb/octeon-hcd.c b/drivers/staging/octeon-usb/octeon-hcd.c
index 4615133292b5..8a7bdf1a9fe6 100644
--- a/drivers/staging/octeon-usb/octeon-hcd.c
+++ b/drivers/staging/octeon-usb/octeon-hcd.c
@@ -377,29 +377,6 @@ struct octeon_hcd {
struct cvmx_usb_tx_fifo nonperiodic;
};
-/* This macro spins on a register waiting for it to reach a condition. */
-#define CVMX_WAIT_FOR_FIELD32(address, _union, cond, timeout_usec) \
- ({int result; \
- do { \
- u64 done = cvmx_get_cycle() + (u64)timeout_usec * \
- octeon_get_clock_rate() / 1000000; \
- union _union c; \
- \
- while (1) { \
- c.u32 = cvmx_usb_read_csr32(usb, address); \
- \
- if (cond) { \
- result = 0; \
- break; \
- } else if (cvmx_get_cycle() > done) { \
- result = -1; \
- break; \
- } else \
- __delay(100); \
- } \
- } while (0); \
- result; })
-
/*
* This macro logically sets a single field in a CSR. It does the sequence
* read, modify, and write
@@ -593,6 +570,42 @@ static inline int cvmx_usb_get_data_pid(struct cvmx_usb_pipe *pipe)
return 0; /* Data0 */
}
+/**
+ * Loop through register until txfflsh or rxfflsh become zero.
+ *
+ * @usb: USB block
+ * @address: 64bit address to read
+ * @timeout_usec: Timeout
+ * @fflsh_type: Indicates fflsh type, 0 for txfflsh, 1 for rxfflsh
+ *
+ */
+static int cvmx_wait_for_field32(struct octeon_hcd *usb, u64 address,
+ u64 timeout_usec, int fflsh_type)
+{
+ int result;
+ u64 done = cvmx_get_cycle() + timeout_usec *
+ (u64)octeon_get_clock_rate / 1000000;
+
+ union cvmx_usbcx_grstctl c;
+
+ while (1) {
+ c.u32 = cvmx_usb_read_csr32(usb, address);
+ if (fflsh_type == 0 && c.s.txfflsh == 0) {
+ result = 0;
+ break;
+ } else if (fflsh_type == 1 && c.s.rxfflsh == 0) {
+ result = 0;
+ break;
+ } else if (cvmx_get_cycle() > done) {
+ result = -1;
+ break;
+ }
+
+ __delay(100);
+ }
+ return result;
+}
+
static void cvmx_fifo_setup(struct octeon_hcd *usb)
{
union cvmx_usbcx_ghwcfg3 usbcx_ghwcfg3;
@@ -635,11 +648,9 @@ static void cvmx_fifo_setup(struct octeon_hcd *usb)
/* Flush all FIFOs */
USB_SET_FIELD32(address, cvmx_usbcx_grstctl, txfnum, 0x10);
USB_SET_FIELD32(address, cvmx_usbcx_grstctl, txfflsh, 1);
- CVMX_WAIT_FOR_FIELD32(address, cvmx_usbcx_grstctl,
- c.s.txfflsh == 0, 100);
+ cvmx_wait_for_field32(usb, address, 0, 100);
USB_SET_FIELD32(address, cvmx_usbcx_grstctl, rxfflsh, 1);
- CVMX_WAIT_FOR_FIELD32(address, cvmx_usbcx_grstctl,
- c.s.rxfflsh == 0, 100);
+ cvmx_wait_for_field32(usb, address, 1, 100);
}
/**
--
2.16.4
next prev parent reply other threads:[~2018-07-29 11:40 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-26 15:41 [PATCH v2 0/3] Staging: octeon-usb fixes for coding style, SPDX and readability Georgios Tsotsos
2018-07-26 13:30 ` [PATCH 1/3] Staging: octeon-usb: Adding SPDX license identifier Georgios Tsotsos
2018-07-26 15:41 ` [PATCH v2 " Georgios Tsotsos
2018-07-26 13:30 ` [PATCH 2/3] Staging: octeon-usb: Change coding style of CVMX_WAIT_FOR_FIELD32 marco Georgios Tsotsos
2018-07-26 15:41 ` [PATCH v2 " Georgios Tsotsos
2018-07-27 15:15 ` Greg Kroah-Hartman
2018-07-28 15:48 ` Georgios Tsotsos
2018-07-29 11:40 ` [PATCH v3 0/2] Staging: octeon-usb: Changed CVMX_WAIT_FOR_FIELD32 macro Georgios Tsotsos
2018-07-29 11:40 ` [PATCH v3 1/2] Staging: octeon-usb: Change multiple calling of CVMX_USBCX_GRSTCTL Georgios Tsotsos
2018-07-29 12:44 ` Greg Kroah-Hartman
2018-07-29 14:13 ` [PATCH v4 " Georgios Tsotsos
2018-07-29 11:40 ` Georgios Tsotsos [this message]
2018-07-29 19:27 ` [PATCH v3 2/2] Staging: octeon-usb: Changes macro CVMX_WAIT_FOR_FIELD32 to function call Aaro Koskinen
2018-07-29 14:13 ` [PATCH v4 " Georgios Tsotsos
2018-07-26 13:30 ` [PATCH 3/3] Staging: octeon-usb: Breaks down cvmx_usb_poll_channel() Georgios Tsotsos
2018-07-26 15:41 ` [PATCH v2 " Georgios Tsotsos
2018-07-26 16:31 ` Joe Perches
2018-07-26 22:08 ` Georgios Tsotsos
2018-07-29 11:41 ` [PATCH v3 0/1] " Georgios Tsotsos
2018-07-29 11:41 ` [PATCH v3 1/1] " Georgios Tsotsos
2018-07-29 12:43 ` Greg Kroah-Hartman
2018-07-29 14:33 ` [PATCH v4 1/1] Staging: octeon-usb: Using defined error codes and applying coding style Georgios Tsotsos
2018-07-29 20:21 ` Aaro Koskinen
2018-07-29 21:17 ` Georgios Tsotsos
2018-07-29 22:29 ` [PATCH v5] " Georgios Tsotsos
2018-07-30 8:51 ` Greg Kroah-Hartman
2018-07-30 20:18 ` Georgios Tsotsos
2018-07-29 14:52 ` [PATCH v3 1/1] Staging: octeon-usb: Breaks down cvmx_usb_poll_channel() Georgios Tsotsos
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=0e52fbfefc34fe064201da9ad93e12e50e1e816c.1532864087.git.tsotsos@gmail.com \
--to=tsotsos@gmail.com \
--cc=aaro.koskinen@iki.fi \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=jhogan@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).