aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Viro <viro@parcelfarce.linux.theplanet.co.uk>2005-04-03 00:23:36 -0700
committerDavid S. Miller <davem@cheetah.davemloft.net>2005-04-03 00:23:36 -0700
commit27d7e621b91f3417e1c628337774dfdd9121320c (patch)
tree35101f734da71dcf57dc30bb442c7537bc799b38
parent5f78b4f36998a026f7a563c9bbce47c66f7af080 (diff)
downloadhistory-27d7e621b91f3417e1c628337774dfdd9121320c.tar.gz
[SPARC]: iomem annotations in SOC driver
* struct soc_cq split into two variants differing only in annotations - ones we use for requests have ->pool pointing to normal memory, ones for responses have it pointing to iomem. * all instances of soc_cq were either always of request or always of response variety; replaced with soc_cq_rsp and soc_cq_req resp. * the rest consists of trivial adding __iomem where needed - the only tricky bit had been soc_cq annotations. Signed-off-by: Al Viro <viro@parcelfarce.linux.theplanet.co.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/fc4/soc.c20
-rw-r--r--drivers/fc4/soc.h15
2 files changed, 22 insertions, 13 deletions
diff --git a/drivers/fc4/soc.c b/drivers/fc4/soc.c
index e7be415b2e4795..247b4630277748 100644
--- a/drivers/fc4/soc.c
+++ b/drivers/fc4/soc.c
@@ -106,8 +106,8 @@ static void soc_reset(fc_channel *fc)
static inline void soc_solicited (struct soc *s)
{
fc_hdr fchdr;
- soc_rsp *hwrsp;
- soc_cq *sw_cq;
+ soc_rsp __iomem *hwrsp;
+ soc_cq_rsp *sw_cq;
int token;
int status;
fc_channel *fc;
@@ -115,12 +115,12 @@ static inline void soc_solicited (struct soc *s)
sw_cq = &s->rsp[SOC_SOLICITED_RSP_Q];
if (sw_cq->pool == NULL)
- sw_cq->pool = (soc_req *)
+ sw_cq->pool = (soc_req __iomem *)
(s->xram + xram_get_32low ((xram_p)&sw_cq->hw_cq->address));
sw_cq->in = xram_get_8 ((xram_p)&sw_cq->hw_cq->in);
SOD (("soc_solicited, %d pkts arrived\n", (sw_cq->in-sw_cq->out) & sw_cq->last))
for (;;) {
- hwrsp = (soc_rsp *)sw_cq->pool + sw_cq->out;
+ hwrsp = (soc_rsp __iomem *)sw_cq->pool + sw_cq->out;
token = xram_get_32low ((xram_p)&hwrsp->shdr.token);
status = xram_get_32low ((xram_p)&hwrsp->status);
fc = (fc_channel *)(&s->port[(token >> 11) & 1]);
@@ -185,8 +185,8 @@ static inline void soc_request (struct soc *s, u32 cmd)
static inline void soc_unsolicited (struct soc *s)
{
- soc_rsp *hwrsp, *hwrspc;
- soc_cq *sw_cq;
+ soc_rsp __iomem *hwrsp, *hwrspc;
+ soc_cq_rsp *sw_cq;
int count;
int status;
int flags;
@@ -194,14 +194,14 @@ static inline void soc_unsolicited (struct soc *s)
sw_cq = &s->rsp[SOC_UNSOLICITED_RSP_Q];
if (sw_cq->pool == NULL)
- sw_cq->pool = (soc_req *)
+ sw_cq->pool = (soc_req __iomem *)
(s->xram + (xram_get_32low ((xram_p)&sw_cq->hw_cq->address)));
sw_cq->in = xram_get_8 ((xram_p)&sw_cq->hw_cq->in);
SOD (("soc_unsolicited, %d packets arrived\n", (sw_cq->in - sw_cq->out) & sw_cq->last))
while (sw_cq->in != sw_cq->out) {
/* ...real work per entry here... */
- hwrsp = (soc_rsp *)sw_cq->pool + sw_cq->out;
+ hwrsp = (soc_rsp __iomem *)sw_cq->pool + sw_cq->out;
hwrspc = NULL;
flags = xram_get_16 ((xram_p)&hwrsp->shdr.flags);
@@ -239,7 +239,7 @@ static inline void soc_unsolicited (struct soc *s)
return;
}
if (sw_cq->out == sw_cq->last)
- hwrspc = (soc_rsp *)sw_cq->pool;
+ hwrspc = (soc_rsp __iomem *)sw_cq->pool;
else
hwrspc = hwrsp + 1;
}
@@ -359,7 +359,7 @@ static int soc_hw_enque (fc_channel *fc, fcp_cmnd *fcmd)
soc_port *port = (soc_port *)fc;
struct soc *s = port->s;
int qno;
- soc_cq *sw_cq;
+ soc_cq_req *sw_cq;
int cq_next_in;
soc_req *request;
fc_hdr *fch;
diff --git a/drivers/fc4/soc.h b/drivers/fc4/soc.h
index c4edefd03bc993..d38cf5b28eede3 100644
--- a/drivers/fc4/soc.h
+++ b/drivers/fc4/soc.h
@@ -261,18 +261,27 @@ typedef struct {
typedef struct {
soc_hw_cq __iomem *hw_cq; /* Related XRAM cq */
+ soc_req __iomem *pool;
+ u8 in;
+ u8 out;
+ u8 last;
+ u8 seqno;
+} soc_cq_rsp;
+
+typedef struct {
+ soc_hw_cq __iomem *hw_cq; /* Related XRAM cq */
soc_req *pool;
u8 in;
u8 out;
u8 last;
u8 seqno;
-} soc_cq;
+} soc_cq_req;
struct soc {
spinlock_t lock;
soc_port port[2]; /* Every SOC has one or two FC ports */
- soc_cq req[2]; /* Request CQs */
- soc_cq rsp[2]; /* Response CQs */
+ soc_cq_req req[2]; /* Request CQs */
+ soc_cq_rsp rsp[2]; /* Response CQs */
int soc_no;
void __iomem *regs;
xram_p xram;