Lines Matching refs:dev
49 struct aac_dev *dev = dev_id; in aac_rx_intr_producer() local
51 u8 intstat = rx_readb(dev, MUnit.OISR); in aac_rx_intr_producer()
59 if (likely(intstat & ~(dev->OIMR))) { in aac_rx_intr_producer()
60 bellbits = rx_readl(dev, OutboundDoorbellReg); in aac_rx_intr_producer()
62 aac_printf(dev, readl (&dev->IndexRegs->Mailbox[5])); in aac_rx_intr_producer()
63 rx_writel(dev, MUnit.ODR,DoorBellPrintfReady); in aac_rx_intr_producer()
64 rx_writel(dev, InboundDoorbellReg,DoorBellPrintfDone); in aac_rx_intr_producer()
67 rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdReady); in aac_rx_intr_producer()
68 aac_command_normal(&dev->queues->queue[HostNormCmdQueue]); in aac_rx_intr_producer()
71 rx_writel(dev, MUnit.ODR,DoorBellAdapterNormRespReady); in aac_rx_intr_producer()
72 aac_response_normal(&dev->queues->queue[HostNormRespQueue]); in aac_rx_intr_producer()
75 rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); in aac_rx_intr_producer()
78 rx_writel(dev, MUnit.ODR, DoorBellAdapterNormCmdNotFull); in aac_rx_intr_producer()
79 rx_writel(dev, MUnit.ODR, DoorBellAdapterNormRespNotFull); in aac_rx_intr_producer()
89 struct aac_dev *dev = dev_id; in aac_rx_intr_message() local
90 u32 Index = rx_readl(dev, MUnit.OutboundQueue); in aac_rx_intr_message()
92 Index = rx_readl(dev, MUnit.OutboundQueue); in aac_rx_intr_message()
107 if (unlikely(aac_intr_normal(dev, in aac_rx_intr_message()
110 rx_writel(dev, in aac_rx_intr_message()
113 rx_writel(dev, in aac_rx_intr_message()
118 Index = rx_readl(dev, MUnit.OutboundQueue); in aac_rx_intr_message()
130 static void aac_rx_disable_interrupt(struct aac_dev *dev) in aac_rx_disable_interrupt() argument
132 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xff); in aac_rx_disable_interrupt()
140 static void aac_rx_enable_interrupt_producer(struct aac_dev *dev) in aac_rx_enable_interrupt_producer() argument
142 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xfb); in aac_rx_enable_interrupt_producer()
150 static void aac_rx_enable_interrupt_message(struct aac_dev *dev) in aac_rx_enable_interrupt_message() argument
152 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xf7); in aac_rx_enable_interrupt_message()
166 static int rx_sync_cmd(struct aac_dev *dev, u32 command, in rx_sync_cmd() argument
175 writel(command, &dev->IndexRegs->Mailbox[0]); in rx_sync_cmd()
179 writel(p1, &dev->IndexRegs->Mailbox[1]); in rx_sync_cmd()
180 writel(p2, &dev->IndexRegs->Mailbox[2]); in rx_sync_cmd()
181 writel(p3, &dev->IndexRegs->Mailbox[3]); in rx_sync_cmd()
182 writel(p4, &dev->IndexRegs->Mailbox[4]); in rx_sync_cmd()
186 rx_writel(dev, OutboundDoorbellReg, OUTBOUNDDOORBELL_0); in rx_sync_cmd()
190 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xff); in rx_sync_cmd()
195 rx_readb (dev, MUnit.OIMR); in rx_sync_cmd()
199 rx_writel(dev, InboundDoorbellReg, INBOUNDDOORBELL_0); in rx_sync_cmd()
213 if (rx_readl(dev, OutboundDoorbellReg) & OUTBOUNDDOORBELL_0) { in rx_sync_cmd()
217 rx_writel(dev, OutboundDoorbellReg, OUTBOUNDDOORBELL_0); in rx_sync_cmd()
230 aac_adapter_enable_int(dev); in rx_sync_cmd()
237 *status = readl(&dev->IndexRegs->Mailbox[0]); in rx_sync_cmd()
239 *r1 = readl(&dev->IndexRegs->Mailbox[1]); in rx_sync_cmd()
241 *r2 = readl(&dev->IndexRegs->Mailbox[2]); in rx_sync_cmd()
243 *r3 = readl(&dev->IndexRegs->Mailbox[3]); in rx_sync_cmd()
245 *r4 = readl(&dev->IndexRegs->Mailbox[4]); in rx_sync_cmd()
249 rx_writel(dev, OutboundDoorbellReg, OUTBOUNDDOORBELL_0); in rx_sync_cmd()
253 aac_adapter_enable_int(dev); in rx_sync_cmd()
265 static void aac_rx_interrupt_adapter(struct aac_dev *dev) in aac_rx_interrupt_adapter() argument
267 rx_sync_cmd(dev, BREAKPOINT_REQUEST, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL, NULL); in aac_rx_interrupt_adapter()
279 static void aac_rx_notify_adapter(struct aac_dev *dev, u32 event) in aac_rx_notify_adapter() argument
284 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_1); in aac_rx_notify_adapter()
287 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_4); in aac_rx_notify_adapter()
290 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_2); in aac_rx_notify_adapter()
293 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_3); in aac_rx_notify_adapter()
298 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_6); in aac_rx_notify_adapter()
301 rx_writel(dev, MUnit.IDR,INBOUNDDOORBELL_5); in aac_rx_notify_adapter()
316 static void aac_rx_start_adapter(struct aac_dev *dev) in aac_rx_start_adapter() argument
320 init = dev->init; in aac_rx_start_adapter()
323 rx_sync_cmd(dev, INIT_STRUCT_BASE_ADDRESS, (u32)(ulong)dev->init_pa, in aac_rx_start_adapter()
334 static int aac_rx_check_health(struct aac_dev *dev) in aac_rx_check_health() argument
336 u32 status = rx_readl(dev, MUnit.OMRx[0]); in aac_rx_check_health()
357 buffer = pci_alloc_consistent(dev->pdev, 512, &baddr); in aac_rx_check_health()
361 post = pci_alloc_consistent(dev->pdev, in aac_rx_check_health()
364 pci_free_consistent(dev->pdev, 512, buffer, baddr); in aac_rx_check_health()
370 rx_writel(dev, MUnit.IMRx[0], paddr); in aac_rx_check_health()
371 rx_sync_cmd(dev, COMMAND_POST_RESULTS, baddr, 0, 0, 0, 0, 0, in aac_rx_check_health()
373 pci_free_consistent(dev->pdev, sizeof(struct POSTSTATUS), in aac_rx_check_health()
379 pci_free_consistent(dev->pdev, 512, buffer, baddr); in aac_rx_check_health()
401 struct aac_dev *dev = fib->dev; in aac_rx_deliver_producer() local
402 struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue]; in aac_rx_deliver_producer()
406 aac_queue_get( dev, &Index, AdapNormCmdQueue, fib->hw_fib_va, 1, fib, &nointr); in aac_rx_deliver_producer()
411 aac_adapter_notify(dev, AdapNormCmdQueue); in aac_rx_deliver_producer()
424 struct aac_dev *dev = fib->dev; in aac_rx_deliver_message() local
425 struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue]; in aac_rx_deliver_message()
433 Index = rx_readl(dev, MUnit.InboundQueue); in aac_rx_deliver_message()
435 Index = rx_readl(dev, MUnit.InboundQueue); in aac_rx_deliver_message()
444 device = dev->base + Index; in aac_rx_deliver_message()
451 rx_writel(dev, MUnit.InboundQueue, Index); in aac_rx_deliver_message()
460 static int aac_rx_ioremap(struct aac_dev * dev, u32 size) in aac_rx_ioremap() argument
463 iounmap(dev->regs.rx); in aac_rx_ioremap()
466 dev->base = dev->regs.rx = ioremap(dev->base_start, size); in aac_rx_ioremap()
467 if (dev->base == NULL) in aac_rx_ioremap()
469 dev->IndexRegs = &dev->regs.rx->IndexRegs; in aac_rx_ioremap()
473 static int aac_rx_restart_adapter(struct aac_dev *dev, int bled) in aac_rx_restart_adapter() argument
477 if (!(dev->supplement_adapter_info.SupportedOptions2 & in aac_rx_restart_adapter()
481 dev->name, dev->id, bled); in aac_rx_restart_adapter()
483 bled = aac_adapter_sync_cmd(dev, IOP_RESET_ALWAYS, in aac_rx_restart_adapter()
489 bled = aac_adapter_sync_cmd(dev, IOP_RESET, in aac_rx_restart_adapter()
496 rx_writel(dev, MUnit.reserved2, 3); in aac_rx_restart_adapter()
503 if (rx_readl(dev, MUnit.OMRx[0]) & KERNEL_PANIC) in aac_rx_restart_adapter()
516 int aac_rx_select_comm(struct aac_dev *dev, int comm) in aac_rx_select_comm() argument
520 dev->a_ops.adapter_enable_int = aac_rx_enable_interrupt_producer; in aac_rx_select_comm()
521 dev->a_ops.adapter_intr = aac_rx_intr_producer; in aac_rx_select_comm()
522 dev->a_ops.adapter_deliver = aac_rx_deliver_producer; in aac_rx_select_comm()
525 dev->a_ops.adapter_enable_int = aac_rx_enable_interrupt_message; in aac_rx_select_comm()
526 dev->a_ops.adapter_intr = aac_rx_intr_message; in aac_rx_select_comm()
527 dev->a_ops.adapter_deliver = aac_rx_deliver_message; in aac_rx_select_comm()
544 int _aac_rx_init(struct aac_dev *dev) in _aac_rx_init() argument
549 int instance = dev->id; in _aac_rx_init()
550 const char * name = dev->name; in _aac_rx_init()
552 if (aac_adapter_ioremap(dev, dev->base_size)) { in _aac_rx_init()
558 dev->a_ops.adapter_sync_cmd = rx_sync_cmd; in _aac_rx_init()
559 dev->a_ops.adapter_enable_int = aac_rx_disable_interrupt; in _aac_rx_init()
560 dev->OIMR = status = rx_readb (dev, MUnit.OIMR); in _aac_rx_init()
562 !aac_rx_restart_adapter(dev, 0)) in _aac_rx_init()
565 (rx_readl(dev, MUnit.OutboundQueue) != 0xFFFFFFFFL)); in _aac_rx_init()
569 status = rx_readl(dev, MUnit.OMRx[0]); in _aac_rx_init()
571 if (aac_rx_restart_adapter(dev, aac_rx_check_health(dev))) in _aac_rx_init()
578 status = rx_readl(dev, MUnit.OMRx[0]); in _aac_rx_init()
580 printk(KERN_ERR "%s%d: adapter self-test failed.\n", dev->name, instance); in _aac_rx_init()
587 printk(KERN_ERR "%s%d: adapter monitor panic.\n", dev->name, instance); in _aac_rx_init()
594 while (!((status = rx_readl(dev, MUnit.OMRx[0])) & KERNEL_UP_AND_RUNNING)) in _aac_rx_init()
600 dev->name, instance, status); in _aac_rx_init()
609 if (likely(!aac_rx_restart_adapter(dev, aac_rx_check_health(dev)))) in _aac_rx_init()
620 dev->a_ops.adapter_interrupt = aac_rx_interrupt_adapter; in _aac_rx_init()
621 dev->a_ops.adapter_disable_int = aac_rx_disable_interrupt; in _aac_rx_init()
622 dev->a_ops.adapter_notify = aac_rx_notify_adapter; in _aac_rx_init()
623 dev->a_ops.adapter_sync_cmd = rx_sync_cmd; in _aac_rx_init()
624 dev->a_ops.adapter_check_health = aac_rx_check_health; in _aac_rx_init()
625 dev->a_ops.adapter_restart = aac_rx_restart_adapter; in _aac_rx_init()
626 dev->a_ops.adapter_start = aac_rx_start_adapter; in _aac_rx_init()
632 aac_adapter_comm(dev, AAC_COMM_PRODUCER); in _aac_rx_init()
633 aac_adapter_disable_int(dev); in _aac_rx_init()
634 rx_writel(dev, MUnit.ODR, 0xffffffff); in _aac_rx_init()
635 aac_adapter_enable_int(dev); in _aac_rx_init()
637 if (aac_init_adapter(dev) == NULL) in _aac_rx_init()
639 aac_adapter_comm(dev, dev->comm_interface); in _aac_rx_init()
640 dev->sync_mode = 0; /* sync. mode not supported */ in _aac_rx_init()
641 dev->msi = aac_msi && !pci_enable_msi(dev->pdev); in _aac_rx_init()
642 if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr, in _aac_rx_init()
643 IRQF_SHARED, "aacraid", dev) < 0) { in _aac_rx_init()
644 if (dev->msi) in _aac_rx_init()
645 pci_disable_msi(dev->pdev); in _aac_rx_init()
650 dev->dbg_base = dev->base_start; in _aac_rx_init()
651 dev->dbg_base_mapped = dev->base; in _aac_rx_init()
652 dev->dbg_size = dev->base_size; in _aac_rx_init()
654 aac_adapter_enable_int(dev); in _aac_rx_init()
659 aac_rx_start_adapter(dev); in _aac_rx_init()
668 int aac_rx_init(struct aac_dev *dev) in aac_rx_init() argument
673 dev->a_ops.adapter_ioremap = aac_rx_ioremap; in aac_rx_init()
674 dev->a_ops.adapter_comm = aac_rx_select_comm; in aac_rx_init()
676 return _aac_rx_init(dev); in aac_rx_init()