aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid S. Miller <davem@kernel.bkbits.net>2005-04-03 14:30:18 -0700
committerDavid S. Miller <davem@kernel.bkbits.net>2005-04-03 14:30:18 -0700
commit10752217624970d25d2244bf9141c240be19ebd9 (patch)
tree35101f734da71dcf57dc30bb442c7537bc799b38
parentc51dcabe87930984735de212ccd606f091a7ab51 (diff)
parent27d7e621b91f3417e1c628337774dfdd9121320c (diff)
downloadhistory-10752217624970d25d2244bf9141c240be19ebd9.tar.gz
Merge davem@sunset.davemloft.net:/home/davem/src/BK/sparc-2.6
into kernel.bkbits.net:/home/davem/sparc-2.6
-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;