Lines Matching refs:dev

49 	struct aac_dev *dev = dev_id;  in aac_sa_intr()  local
52 intstat = sa_readw(dev, DoorbellReg_p); in aac_sa_intr()
57 mask = ~(sa_readw(dev, SaDbCSR.PRISETIRQMASK)); in aac_sa_intr()
63 aac_printf(dev, sa_readl(dev, Mailbox5)); in aac_sa_intr()
64 sa_writew(dev, DoorbellClrReg_p, PrintfReady); /* clear PrintfReady */ in aac_sa_intr()
65 sa_writew(dev, DoorbellReg_s, PrintfDone); in aac_sa_intr()
67 sa_writew(dev, DoorbellClrReg_p, DOORBELL_1); in aac_sa_intr()
68 aac_command_normal(&dev->queues->queue[HostNormCmdQueue]); in aac_sa_intr()
70 sa_writew(dev, DoorbellClrReg_p, DOORBELL_2); in aac_sa_intr()
71 aac_response_normal(&dev->queues->queue[HostNormRespQueue]); in aac_sa_intr()
73 sa_writew(dev, DoorbellClrReg_p, DOORBELL_3); in aac_sa_intr()
75 sa_writew(dev, DoorbellClrReg_p, DOORBELL_4); in aac_sa_intr()
87 static void aac_sa_disable_interrupt (struct aac_dev *dev) in aac_sa_disable_interrupt() argument
89 sa_writew(dev, SaDbCSR.PRISETIRQMASK, 0xffff); in aac_sa_disable_interrupt()
97 static void aac_sa_enable_interrupt (struct aac_dev *dev) in aac_sa_enable_interrupt() argument
99 sa_writew(dev, SaDbCSR.PRICLEARIRQMASK, (PrintfReady | DOORBELL_1 | in aac_sa_enable_interrupt()
111 static void aac_sa_notify_adapter(struct aac_dev *dev, u32 event) in aac_sa_notify_adapter() argument
116 sa_writew(dev, DoorbellReg_s,DOORBELL_1); in aac_sa_notify_adapter()
119 sa_writew(dev, DoorbellReg_s,DOORBELL_4); in aac_sa_notify_adapter()
122 sa_writew(dev, DoorbellReg_s,DOORBELL_2); in aac_sa_notify_adapter()
125 sa_writew(dev, DoorbellReg_s,DOORBELL_3); in aac_sa_notify_adapter()
134 sa_writew(dev, DoorbellReg_s,DOORBELL_6); in aac_sa_notify_adapter()
137 sa_writew(dev, DoorbellReg_s,DOORBELL_5); in aac_sa_notify_adapter()
157 static int sa_sync_cmd(struct aac_dev *dev, u32 command, in sa_sync_cmd() argument
166 sa_writel(dev, Mailbox0, command); in sa_sync_cmd()
170 sa_writel(dev, Mailbox1, p1); in sa_sync_cmd()
171 sa_writel(dev, Mailbox2, p2); in sa_sync_cmd()
172 sa_writel(dev, Mailbox3, p3); in sa_sync_cmd()
173 sa_writel(dev, Mailbox4, p4); in sa_sync_cmd()
178 sa_writew(dev, DoorbellClrReg_p, DOORBELL_0); in sa_sync_cmd()
182 sa_writew(dev, DoorbellReg_s, DOORBELL_0); in sa_sync_cmd()
197 if(sa_readw(dev, DoorbellReg_p) & DOORBELL_0) { in sa_sync_cmd()
209 sa_writew(dev, DoorbellClrReg_p, DOORBELL_0); in sa_sync_cmd()
214 *ret = sa_readl(dev, Mailbox0); in sa_sync_cmd()
216 *r1 = sa_readl(dev, Mailbox1); in sa_sync_cmd()
218 *r2 = sa_readl(dev, Mailbox2); in sa_sync_cmd()
220 *r3 = sa_readl(dev, Mailbox3); in sa_sync_cmd()
222 *r4 = sa_readl(dev, Mailbox4); in sa_sync_cmd()
233 static void aac_sa_interrupt_adapter (struct aac_dev *dev) in aac_sa_interrupt_adapter() argument
235 sa_sync_cmd(dev, BREAKPOINT_REQUEST, 0, 0, 0, 0, 0, 0, in aac_sa_interrupt_adapter()
246 static void aac_sa_start_adapter(struct aac_dev *dev) in aac_sa_start_adapter() argument
252 init = dev->init; in aac_sa_start_adapter()
255 sa_sync_cmd(dev, INIT_STRUCT_BASE_ADDRESS, in aac_sa_start_adapter()
256 (u32)(ulong)dev->init_pa, 0, 0, 0, 0, 0, in aac_sa_start_adapter()
260 static int aac_sa_restart_adapter(struct aac_dev *dev, int bled) in aac_sa_restart_adapter() argument
272 static int aac_sa_check_health(struct aac_dev *dev) in aac_sa_check_health() argument
274 long status = sa_readl(dev, Mailbox7); in aac_sa_check_health()
302 static int aac_sa_ioremap(struct aac_dev * dev, u32 size) in aac_sa_ioremap() argument
305 iounmap(dev->regs.sa); in aac_sa_ioremap()
308 dev->base = dev->regs.sa = ioremap(dev->base_start, size); in aac_sa_ioremap()
309 return (dev->base == NULL) ? -1 : 0; in aac_sa_ioremap()
321 int aac_sa_init(struct aac_dev *dev) in aac_sa_init() argument
328 instance = dev->id; in aac_sa_init()
329 name = dev->name; in aac_sa_init()
331 if (aac_sa_ioremap(dev, dev->base_size)) { in aac_sa_init()
339 if (sa_readl(dev, Mailbox7) & SELF_TEST_FAILED) { in aac_sa_init()
346 if (sa_readl(dev, Mailbox7) & KERNEL_PANIC) { in aac_sa_init()
354 while (!(sa_readl(dev, Mailbox7) & KERNEL_UP_AND_RUNNING)) { in aac_sa_init()
356 status = sa_readl(dev, Mailbox7); in aac_sa_init()
368 dev->a_ops.adapter_interrupt = aac_sa_interrupt_adapter; in aac_sa_init()
369 dev->a_ops.adapter_disable_int = aac_sa_disable_interrupt; in aac_sa_init()
370 dev->a_ops.adapter_enable_int = aac_sa_enable_interrupt; in aac_sa_init()
371 dev->a_ops.adapter_notify = aac_sa_notify_adapter; in aac_sa_init()
372 dev->a_ops.adapter_sync_cmd = sa_sync_cmd; in aac_sa_init()
373 dev->a_ops.adapter_check_health = aac_sa_check_health; in aac_sa_init()
374 dev->a_ops.adapter_restart = aac_sa_restart_adapter; in aac_sa_init()
375 dev->a_ops.adapter_start = aac_sa_start_adapter; in aac_sa_init()
376 dev->a_ops.adapter_intr = aac_sa_intr; in aac_sa_init()
377 dev->a_ops.adapter_deliver = aac_rx_deliver_producer; in aac_sa_init()
378 dev->a_ops.adapter_ioremap = aac_sa_ioremap; in aac_sa_init()
384 aac_adapter_disable_int(dev); in aac_sa_init()
385 aac_adapter_enable_int(dev); in aac_sa_init()
387 if(aac_init_adapter(dev) == NULL) in aac_sa_init()
389 dev->sync_mode = 0; /* sync. mode not supported */ in aac_sa_init()
390 if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr, in aac_sa_init()
391 IRQF_SHARED, "aacraid", (void *)dev) < 0) { in aac_sa_init()
396 dev->dbg_base = dev->base_start; in aac_sa_init()
397 dev->dbg_base_mapped = dev->base; in aac_sa_init()
398 dev->dbg_size = dev->base_size; in aac_sa_init()
400 aac_adapter_enable_int(dev); in aac_sa_init()
406 aac_sa_start_adapter(dev); in aac_sa_init()
410 aac_sa_disable_interrupt(dev); in aac_sa_init()
411 free_irq(dev->pdev->irq, (void *)dev); in aac_sa_init()