• Home
  • Raw
  • Download

Lines Matching +full:aac +full:- +full:mode

2  *	Adaptec AAC series RAID controller driver
8 * Copyright (c) 2000-2010 Adaptec, Inc.
9 * 2010-2015 PMC-Sierra, Inc. (aacraid@pmc-sierra.com)
10 * 2016-2017 Microsemi Corp. (aacraid@microsemi.com)
60 if (likely(intstat & ~(dev->OIMR))) { in aac_rx_intr_producer()
63 aac_printf(dev, readl (&dev->IndexRegs->Mailbox[5])); in aac_rx_intr_producer()
69 aac_command_normal(&dev->queues->queue[HostNormCmdQueue]); in aac_rx_intr_producer()
73 aac_response_normal(&dev->queues->queue[HostNormRespQueue]); in aac_rx_intr_producer()
127 * aac_rx_disable_interrupt - Disable interrupts
133 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xff); in aac_rx_disable_interrupt()
137 * aac_rx_enable_interrupt_producer - Enable interrupts
143 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xfb); in aac_rx_enable_interrupt_producer()
147 * aac_rx_enable_interrupt_message - Enable interrupts
153 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xf7); in aac_rx_enable_interrupt_message()
157 * rx_sync_cmd - send a command and wait
176 writel(command, &dev->IndexRegs->Mailbox[0]); in rx_sync_cmd()
178 * Write the parameters into Mailboxes 1 - 6 in rx_sync_cmd()
180 writel(p1, &dev->IndexRegs->Mailbox[1]); in rx_sync_cmd()
181 writel(p2, &dev->IndexRegs->Mailbox[2]); in rx_sync_cmd()
182 writel(p3, &dev->IndexRegs->Mailbox[3]); in rx_sync_cmd()
183 writel(p4, &dev->IndexRegs->Mailbox[4]); in rx_sync_cmd()
191 rx_writeb(dev, MUnit.OIMR, dev->OIMR = 0xff); in rx_sync_cmd()
232 return -ETIMEDOUT; in rx_sync_cmd()
238 *status = readl(&dev->IndexRegs->Mailbox[0]); in rx_sync_cmd()
240 *r1 = readl(&dev->IndexRegs->Mailbox[1]); in rx_sync_cmd()
242 *r2 = readl(&dev->IndexRegs->Mailbox[2]); in rx_sync_cmd()
244 *r3 = readl(&dev->IndexRegs->Mailbox[3]); in rx_sync_cmd()
246 *r4 = readl(&dev->IndexRegs->Mailbox[4]); in rx_sync_cmd()
260 * aac_rx_interrupt_adapter - interrupt adapter
272 * aac_rx_notify_adapter - send an event to the adapter
311 * aac_rx_start_adapter - activate adapter
314 * Start up processing on an i960 based AAC adapter
321 init = dev->init; in aac_rx_start_adapter()
322 init->r7.host_elapsed_seconds = cpu_to_le32(ktime_get_real_seconds()); in aac_rx_start_adapter()
324 rx_sync_cmd(dev, INIT_STRUCT_BASE_ADDRESS, (u32)(ulong)dev->init_pa, in aac_rx_start_adapter()
343 return -1; in aac_rx_check_health()
358 buffer = dma_alloc_coherent(&dev->pdev->dev, 512, &baddr, in aac_rx_check_health()
360 ret = -2; in aac_rx_check_health()
363 post = dma_alloc_coherent(&dev->pdev->dev, in aac_rx_check_health()
367 dma_free_coherent(&dev->pdev->dev, 512, buffer, baddr); in aac_rx_check_health()
371 post->Post_Command = cpu_to_le32(COMMAND_POST_RESULTS); in aac_rx_check_health()
372 post->Post_Address = cpu_to_le32(baddr); in aac_rx_check_health()
376 dma_free_coherent(&dev->pdev->dev, sizeof(struct POSTSTATUS), in aac_rx_check_health()
382 dma_free_coherent(&dev->pdev->dev, 512, buffer, baddr); in aac_rx_check_health()
389 return -3; in aac_rx_check_health()
404 struct aac_dev *dev = fib->dev; in aac_rx_deliver_producer()
405 struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue]; in aac_rx_deliver_producer()
409 aac_queue_get( dev, &Index, AdapNormCmdQueue, fib->hw_fib_va, 1, fib, &nointr); in aac_rx_deliver_producer()
411 atomic_inc(&q->numpending); in aac_rx_deliver_producer()
412 *(q->headers.producer) = cpu_to_le32(Index + 1); in aac_rx_deliver_producer()
427 struct aac_dev *dev = fib->dev; in aac_rx_deliver_message()
428 struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue]; in aac_rx_deliver_message()
434 atomic_inc(&q->numpending); in aac_rx_deliver_message()
441 if (--count == 0) { in aac_rx_deliver_message()
442 atomic_dec(&q->numpending); in aac_rx_deliver_message()
443 return -ETIMEDOUT; in aac_rx_deliver_message()
447 device = dev->base + Index; in aac_rx_deliver_message()
448 addr = fib->hw_fib_pa; in aac_rx_deliver_message()
453 writel(le16_to_cpu(fib->hw_fib_va->header.Size), device); in aac_rx_deliver_message()
466 iounmap(dev->regs.rx); in aac_rx_ioremap()
469 dev->base = dev->regs.rx = ioremap(dev->base_start, size); in aac_rx_ioremap()
470 if (dev->base == NULL) in aac_rx_ioremap()
471 return -1; in aac_rx_ioremap()
472 dev->IndexRegs = &dev->regs.rx->IndexRegs; in aac_rx_ioremap()
480 if (!(dev->supplement_adapter_info.supported_options2 & in aac_rx_restart_adapter()
481 AAC_OPTION_MU_RESET) || (bled >= 0) || (bled == -2)) { in aac_rx_restart_adapter()
484 dev->name, dev->id, bled); in aac_rx_restart_adapter()
489 bled = -EINVAL; in aac_rx_restart_adapter()
491 if (bled && (bled != -ETIMEDOUT)) in aac_rx_restart_adapter()
495 if (bled && (bled != -ETIMEDOUT)) in aac_rx_restart_adapter()
496 return -EINVAL; in aac_rx_restart_adapter()
504 return -EINVAL; in aac_rx_restart_adapter()
507 return -ENODEV; in aac_rx_restart_adapter()
514 * aac_rx_select_comm - Select communications method
523 dev->a_ops.adapter_enable_int = aac_rx_enable_interrupt_producer; in aac_rx_select_comm()
524 dev->a_ops.adapter_intr = aac_rx_intr_producer; in aac_rx_select_comm()
525 dev->a_ops.adapter_deliver = aac_rx_deliver_producer; in aac_rx_select_comm()
528 dev->a_ops.adapter_enable_int = aac_rx_enable_interrupt_message; in aac_rx_select_comm()
529 dev->a_ops.adapter_intr = aac_rx_intr_message; in aac_rx_select_comm()
530 dev->a_ops.adapter_deliver = aac_rx_deliver_message; in aac_rx_select_comm()
539 * aac_rx_init - initialize an i960 based AAC card
542 * Allocate and set up resources for the i960 based AAC variants. The
552 int instance = dev->id; in _aac_rx_init()
553 const char * name = dev->name; in _aac_rx_init()
555 if (aac_adapter_ioremap(dev, dev->base_size)) { in _aac_rx_init()
561 dev->a_ops.adapter_sync_cmd = rx_sync_cmd; in _aac_rx_init()
562 dev->a_ops.adapter_enable_int = aac_rx_disable_interrupt; in _aac_rx_init()
563 dev->OIMR = status = rx_readb (dev, MUnit.OIMR); in _aac_rx_init()
565 if (((status & 0x0c) != 0x0c) || dev->init_reset) { in _aac_rx_init()
566 dev->init_reset = false; in _aac_rx_init()
589 printk(KERN_ERR "%s%d: adapter self-test failed.\n", dev->name, instance); in _aac_rx_init()
596 printk(KERN_ERR "%s%d: adapter monitor panic.\n", dev->name, instance); in _aac_rx_init()
609 dev->name, instance, status); in _aac_rx_init()
616 ? (startup_timeout - 60) in _aac_rx_init()
630 dev->a_ops.adapter_interrupt = aac_rx_interrupt_adapter; in _aac_rx_init()
631 dev->a_ops.adapter_disable_int = aac_rx_disable_interrupt; in _aac_rx_init()
632 dev->a_ops.adapter_notify = aac_rx_notify_adapter; in _aac_rx_init()
633 dev->a_ops.adapter_sync_cmd = rx_sync_cmd; in _aac_rx_init()
634 dev->a_ops.adapter_check_health = aac_rx_check_health; in _aac_rx_init()
635 dev->a_ops.adapter_restart = aac_rx_restart_adapter; in _aac_rx_init()
636 dev->a_ops.adapter_start = aac_rx_start_adapter; in _aac_rx_init()
649 aac_adapter_comm(dev, dev->comm_interface); in _aac_rx_init()
650 dev->sync_mode = 0; /* sync. mode not supported */ in _aac_rx_init()
651 dev->msi = aac_msi && !pci_enable_msi(dev->pdev); in _aac_rx_init()
652 if (request_irq(dev->pdev->irq, dev->a_ops.adapter_intr, in _aac_rx_init()
654 if (dev->msi) in _aac_rx_init()
655 pci_disable_msi(dev->pdev); in _aac_rx_init()
660 dev->dbg_base = dev->base_start; in _aac_rx_init()
661 dev->dbg_base_mapped = dev->base; in _aac_rx_init()
662 dev->dbg_size = dev->base_size; in _aac_rx_init()
675 return -1; in _aac_rx_init()
683 dev->a_ops.adapter_ioremap = aac_rx_ioremap; in aac_rx_init()
684 dev->a_ops.adapter_comm = aac_rx_select_comm; in aac_rx_init()