diff options
author | Alexander Viro <viro@parcelfarce.linux.theplanet.co.uk> | 2005-04-03 00:23:36 -0700 |
---|---|---|
committer | David S. Miller <davem@cheetah.davemloft.net> | 2005-04-03 00:23:36 -0700 |
commit | 27d7e621b91f3417e1c628337774dfdd9121320c (patch) | |
tree | 35101f734da71dcf57dc30bb442c7537bc799b38 | |
parent | 5f78b4f36998a026f7a563c9bbce47c66f7af080 (diff) | |
download | history-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.c | 20 | ||||
-rw-r--r-- | drivers/fc4/soc.h | 15 |
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; |