#include <linux/slab.h>
#include <linux/string.h>
#include <linux/init.h>
-#include <asm/bitops.h>
+#include <linux/bitops.h>
#include <asm/io.h>
#include <asm/dma.h>
#include <linux/errno.h>
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;
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]);
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;
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);
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;
}
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;
int size, i;
int irq;
- s = kmalloc (sizeof (struct soc), GFP_KERNEL);
+ s = kzalloc (sizeof (struct soc), GFP_KERNEL);
if (s == NULL)
return;
- memset (s, 0, sizeof(struct soc));
spin_lock_init(&s->lock);
s->soc_no = no;
cq[0].address = s->req_dvma;
s->req[1].pool = s->req[0].pool + SOC_CQ_REQ0_SIZE;
- s->req[0].hw_cq = (soc_hw_cq *)(s->xram + SOC_CQ_REQ_OFFSET);
- s->req[1].hw_cq = (soc_hw_cq *)(s->xram + SOC_CQ_REQ_OFFSET + sizeof(soc_hw_cq));
- s->rsp[0].hw_cq = (soc_hw_cq *)(s->xram + SOC_CQ_RSP_OFFSET);
- s->rsp[1].hw_cq = (soc_hw_cq *)(s->xram + SOC_CQ_RSP_OFFSET + sizeof(soc_hw_cq));
+ s->req[0].hw_cq = (soc_hw_cq __iomem *)(s->xram + SOC_CQ_REQ_OFFSET);
+ s->req[1].hw_cq = (soc_hw_cq __iomem *)(s->xram + SOC_CQ_REQ_OFFSET + sizeof(soc_hw_cq));
+ s->rsp[0].hw_cq = (soc_hw_cq __iomem *)(s->xram + SOC_CQ_RSP_OFFSET);
+ s->rsp[1].hw_cq = (soc_hw_cq __iomem *)(s->xram + SOC_CQ_RSP_OFFSET + sizeof(soc_hw_cq));
cq[1].address = cq[0].address + (SOC_CQ_REQ0_SIZE * sizeof(soc_req));
cq[4].address = 1;