• Home
  • Raw
  • Download

Lines Matching full:soft

202 static inline int mbcs_getdma_start(struct mbcs_soft *soft)  in mbcs_getdma_start()  argument
209 mmr_base = soft->mmr_base; in mbcs_getdma_start()
210 gdma = &soft->getdma; in mbcs_getdma_start()
242 static inline int mbcs_putdma_start(struct mbcs_soft *soft) in mbcs_putdma_start() argument
249 mmr_base = soft->mmr_base; in mbcs_putdma_start()
250 pdma = &soft->putdma; in mbcs_putdma_start()
282 static inline int mbcs_algo_start(struct mbcs_soft *soft) in mbcs_algo_start() argument
284 struct algoblock *algo_soft = &soft->algo; in mbcs_algo_start()
285 void *mmr_base = soft->mmr_base; in mbcs_algo_start()
288 if (mutex_lock_interruptible(&soft->algolock)) in mbcs_algo_start()
291 atomic_set(&soft->algo_done, 0); in mbcs_algo_start()
305 mutex_unlock(&soft->algolock); in mbcs_algo_start()
311 do_mbcs_sram_dmawrite(struct mbcs_soft *soft, uint64_t hostAddr, in do_mbcs_sram_dmawrite() argument
316 if (mutex_lock_interruptible(&soft->dmawritelock)) in do_mbcs_sram_dmawrite()
319 atomic_set(&soft->dmawrite_done, 0); in do_mbcs_sram_dmawrite()
321 soft->putdma.hostAddr = hostAddr; in do_mbcs_sram_dmawrite()
322 soft->putdma.localAddr = *off; in do_mbcs_sram_dmawrite()
323 soft->putdma.bytes = len; in do_mbcs_sram_dmawrite()
325 if (mbcs_putdma_start(soft) < 0) { in do_mbcs_sram_dmawrite()
332 if (wait_event_interruptible(soft->dmawrite_queue, in do_mbcs_sram_dmawrite()
333 atomic_read(&soft->dmawrite_done))) { in do_mbcs_sram_dmawrite()
342 mutex_unlock(&soft->dmawritelock); in do_mbcs_sram_dmawrite()
348 do_mbcs_sram_dmaread(struct mbcs_soft *soft, uint64_t hostAddr, in do_mbcs_sram_dmaread() argument
353 if (mutex_lock_interruptible(&soft->dmareadlock)) in do_mbcs_sram_dmaread()
356 atomic_set(&soft->dmawrite_done, 0); in do_mbcs_sram_dmaread()
358 soft->getdma.hostAddr = hostAddr; in do_mbcs_sram_dmaread()
359 soft->getdma.localAddr = *off; in do_mbcs_sram_dmaread()
360 soft->getdma.bytes = len; in do_mbcs_sram_dmaread()
362 if (mbcs_getdma_start(soft) < 0) { in do_mbcs_sram_dmaread()
368 if (wait_event_interruptible(soft->dmaread_queue, in do_mbcs_sram_dmaread()
369 atomic_read(&soft->dmaread_done))) { in do_mbcs_sram_dmaread()
378 mutex_unlock(&soft->dmareadlock); in do_mbcs_sram_dmaread()
385 struct mbcs_soft *soft; in mbcs_open() local
392 list_for_each_entry(soft, &soft_list, list) { in mbcs_open()
393 if (soft->nasid == minor) { in mbcs_open()
394 fp->private_data = soft->cxdev; in mbcs_open()
407 struct mbcs_soft *soft = cx_dev->soft; in mbcs_sram_read() local
415 rv = do_mbcs_sram_dmawrite(soft, hostAddr, len, off); in mbcs_sram_read()
432 struct mbcs_soft *soft = cx_dev->soft; in mbcs_sram_write() local
445 rv = do_mbcs_sram_dmaread(soft, hostAddr, len, off); in mbcs_sram_write()
459 static uint64_t mbcs_pioaddr(struct mbcs_soft *soft, uint64_t offset) in mbcs_pioaddr() argument
463 mmr_base = (uint64_t) (soft->mmr_base + offset); in mbcs_pioaddr()
468 static void mbcs_debug_pioaddr_set(struct mbcs_soft *soft) in mbcs_debug_pioaddr_set() argument
470 soft->debug_addr = mbcs_pioaddr(soft, MBCS_DEBUG_START); in mbcs_debug_pioaddr_set()
473 static void mbcs_gscr_pioaddr_set(struct mbcs_soft *soft) in mbcs_gscr_pioaddr_set() argument
475 soft->gscr_addr = mbcs_pioaddr(soft, MBCS_GSCR_START); in mbcs_gscr_pioaddr_set()
481 struct mbcs_soft *soft = cx_dev->soft; in mbcs_gscr_mmap() local
491 __pa(soft->gscr_addr) >> PAGE_SHIFT, in mbcs_gscr_mmap()
502 * @arg: soft struct for device
508 struct mbcs_soft *soft = (struct mbcs_soft *)arg; in mbcs_completion_intr_handler() local
513 mmr_base = soft->mmr_base; in mbcs_completion_intr_handler()
523 atomic_set(&soft->dmaread_done, 1); in mbcs_completion_intr_handler()
524 wake_up(&soft->dmaread_queue); in mbcs_completion_intr_handler()
533 atomic_set(&soft->dmawrite_done, 1); in mbcs_completion_intr_handler()
534 wake_up(&soft->dmawrite_queue); in mbcs_completion_intr_handler()
543 atomic_set(&soft->algo_done, 1); in mbcs_completion_intr_handler()
544 wake_up(&soft->algo_queue); in mbcs_completion_intr_handler()
558 struct mbcs_soft *soft; in mbcs_intr_alloc() local
563 soft = dev->soft; in mbcs_intr_alloc()
564 getdma = &soft->getdma; in mbcs_intr_alloc()
565 putdma = &soft->putdma; in mbcs_intr_alloc()
566 algo = &soft->algo; in mbcs_intr_alloc()
568 soft->get_sn_irq = NULL; in mbcs_intr_alloc()
569 soft->put_sn_irq = NULL; in mbcs_intr_alloc()
570 soft->algo_sn_irq = NULL; in mbcs_intr_alloc()
575 soft->get_sn_irq = sn_irq; in mbcs_intr_alloc()
580 "MBCS get intr", (void *)soft)) { in mbcs_intr_alloc()
581 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_alloc()
587 free_irq(soft->get_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
588 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_alloc()
591 soft->put_sn_irq = sn_irq; in mbcs_intr_alloc()
596 "MBCS put intr", (void *)soft)) { in mbcs_intr_alloc()
597 tiocx_irq_free(soft->put_sn_irq); in mbcs_intr_alloc()
598 free_irq(soft->get_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
599 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_alloc()
605 free_irq(soft->put_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
606 tiocx_irq_free(soft->put_sn_irq); in mbcs_intr_alloc()
607 free_irq(soft->get_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
608 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_alloc()
611 soft->algo_sn_irq = sn_irq; in mbcs_intr_alloc()
616 "MBCS algo intr", (void *)soft)) { in mbcs_intr_alloc()
617 tiocx_irq_free(soft->algo_sn_irq); in mbcs_intr_alloc()
618 free_irq(soft->put_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
619 tiocx_irq_free(soft->put_sn_irq); in mbcs_intr_alloc()
620 free_irq(soft->get_sn_irq->irq_irq, soft); in mbcs_intr_alloc()
621 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_alloc()
635 struct mbcs_soft *soft; in mbcs_intr_dealloc() local
637 soft = dev->soft; in mbcs_intr_dealloc()
639 free_irq(soft->get_sn_irq->irq_irq, soft); in mbcs_intr_dealloc()
640 tiocx_irq_free(soft->get_sn_irq); in mbcs_intr_dealloc()
641 free_irq(soft->put_sn_irq->irq_irq, soft); in mbcs_intr_dealloc()
642 tiocx_irq_free(soft->put_sn_irq); in mbcs_intr_dealloc()
643 free_irq(soft->algo_sn_irq->irq_irq, soft); in mbcs_intr_dealloc()
644 tiocx_irq_free(soft->algo_sn_irq); in mbcs_intr_dealloc()
647 static inline int mbcs_hw_init(struct mbcs_soft *soft) in mbcs_hw_init() argument
649 void *mmr_base = soft->mmr_base; in mbcs_hw_init()
661 mbcs_gscr_pioaddr_set(soft); in mbcs_hw_init()
662 mbcs_debug_pioaddr_set(soft); in mbcs_hw_init()
688 struct mbcs_soft *soft = cx_dev->soft; in show_algo() local
695 debug0 = *(uint64_t *) soft->debug_addr; in show_algo()
705 struct mbcs_soft *soft = cx_dev->soft; in store_algo() local
713 mbcs_algo_start(soft); in store_algo()
714 if (wait_event_interruptible(soft->algo_queue, in store_algo()
715 atomic_read(&soft->algo_done))) in store_algo()
732 struct mbcs_soft *soft; in mbcs_probe() local
734 dev->soft = NULL; in mbcs_probe()
736 soft = kzalloc(sizeof(struct mbcs_soft), GFP_KERNEL); in mbcs_probe()
737 if (soft == NULL) in mbcs_probe()
740 soft->nasid = dev->cx_id.nasid; in mbcs_probe()
741 list_add(&soft->list, &soft_list); in mbcs_probe()
742 soft->mmr_base = (void *)tiocx_swin_base(dev->cx_id.nasid); in mbcs_probe()
743 dev->soft = soft; in mbcs_probe()
744 soft->cxdev = dev; in mbcs_probe()
746 init_waitqueue_head(&soft->dmawrite_queue); in mbcs_probe()
747 init_waitqueue_head(&soft->dmaread_queue); in mbcs_probe()
748 init_waitqueue_head(&soft->algo_queue); in mbcs_probe()
750 mutex_init(&soft->dmawritelock); in mbcs_probe()
751 mutex_init(&soft->dmareadlock); in mbcs_probe()
752 mutex_init(&soft->algolock); in mbcs_probe()
754 mbcs_getdma_init(&soft->getdma); in mbcs_probe()
755 mbcs_putdma_init(&soft->putdma); in mbcs_probe()
756 mbcs_algo_init(&soft->algo); in mbcs_probe()
758 mbcs_hw_init(soft); in mbcs_probe()
770 if (dev->soft) { in mbcs_remove()
772 kfree(dev->soft); in mbcs_remove()