From 27d7e621b91f3417e1c628337774dfdd9121320c Mon Sep 17 00:00:00 2001 From: Alexander Viro Date: Sun, 3 Apr 2005 00:23:36 -0700 Subject: [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 Signed-off-by: David S. Miller --- drivers/fc4/soc.c | 20 ++++++++++---------- 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 e7be415b2e479..247b463027774 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 c4edefd03bc99..d38cf5b28eede 100644 --- a/drivers/fc4/soc.h +++ b/drivers/fc4/soc.h @@ -259,6 +259,15 @@ typedef struct { u16 mask; } soc_port; +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; @@ -266,13 +275,13 @@ typedef struct { 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; -- cgit 1.2.3-korg