Lines Matching refs:pw
378 out_be32(&pw->pw_regs->pwsr, IPWSR_CLEAR); in msg_unit_error_handler()
393 struct fsl_rio_pw *pw = (struct fsl_rio_pw *)dev_instance; in fsl_rio_port_write_handler() local
400 ipwmr = in_be32(&pw->pw_regs->pwmr); in fsl_rio_port_write_handler()
401 ipwsr = in_be32(&pw->pw_regs->pwsr); in fsl_rio_port_write_handler()
422 if (kfifo_avail(&pw->pw_fifo) >= RIO_PW_MSG_SIZE) { in fsl_rio_port_write_handler()
423 pw->port_write_msg.msg_count++; in fsl_rio_port_write_handler()
424 kfifo_in(&pw->pw_fifo, pw->port_write_msg.virt, in fsl_rio_port_write_handler()
427 pw->port_write_msg.discard_count++; in fsl_rio_port_write_handler()
429 pw->port_write_msg.discard_count); in fsl_rio_port_write_handler()
434 out_be32(&pw->pw_regs->pwsr, RIO_IPWSR_QFI); in fsl_rio_port_write_handler()
435 out_be32(&pw->pw_regs->pwmr, ipwmr | RIO_IPWMR_CQ); in fsl_rio_port_write_handler()
437 schedule_work(&pw->pw_work); in fsl_rio_port_write_handler()
441 pw->port_write_msg.err_count++; in fsl_rio_port_write_handler()
443 pw->port_write_msg.err_count); in fsl_rio_port_write_handler()
447 out_be32(&pw->pw_regs->pwmr, ipwmr & ~RIO_IPWMR_PWE); in fsl_rio_port_write_handler()
448 out_be32(&pw->pw_regs->pwsr, RIO_IPWSR_TE); in fsl_rio_port_write_handler()
449 out_be32(&pw->pw_regs->pwmr, ipwmr); in fsl_rio_port_write_handler()
453 pw->port_write_msg.discard_count++; in fsl_rio_port_write_handler()
455 pw->port_write_msg.discard_count); in fsl_rio_port_write_handler()
456 out_be32(&pw->pw_regs->pwsr, RIO_IPWSR_PWD); in fsl_rio_port_write_handler()
483 struct fsl_rio_pw *pw = container_of(work, struct fsl_rio_pw, pw_work); in fsl_pw_dpc() local
489 while (kfifo_out_spinlocked(&pw->pw_fifo, (unsigned char *)msg_buffer, in fsl_pw_dpc()
490 RIO_PW_MSG_SIZE, &pw->pw_fifo_lock)) { in fsl_pw_dpc()
520 rval = in_be32(&pw->pw_regs->pwmr); in fsl_rio_pw_enable()
527 out_be32(&pw->pw_regs->pwmr, rval); in fsl_rio_pw_enable()
541 int fsl_rio_port_write_init(struct fsl_rio_pw *pw) in fsl_rio_port_write_init() argument
546 out_be32(&pw->pw_regs->pwmr, in fsl_rio_port_write_init()
547 in_be32(&pw->pw_regs->pwmr) & ~RIO_IPWMR_PWE); in fsl_rio_port_write_init()
550 pw->port_write_msg.virt = dma_alloc_coherent(pw->dev, in fsl_rio_port_write_init()
552 &pw->port_write_msg.phys, GFP_KERNEL); in fsl_rio_port_write_init()
553 if (!pw->port_write_msg.virt) { in fsl_rio_port_write_init()
558 pw->port_write_msg.err_count = 0; in fsl_rio_port_write_init()
559 pw->port_write_msg.discard_count = 0; in fsl_rio_port_write_init()
562 out_be32(&pw->pw_regs->epwqbar, 0); in fsl_rio_port_write_init()
563 out_be32(&pw->pw_regs->pwqbar, (u32) pw->port_write_msg.phys); in fsl_rio_port_write_init()
566 in_be32(&pw->pw_regs->epwqbar), in fsl_rio_port_write_init()
567 in_be32(&pw->pw_regs->pwqbar)); in fsl_rio_port_write_init()
570 out_be32(&pw->pw_regs->pwsr, in fsl_rio_port_write_init()
575 out_be32(&pw->pw_regs->pwmr, in fsl_rio_port_write_init()
580 rc = request_irq(IRQ_RIO_PW(pw), fsl_rio_port_write_handler, in fsl_rio_port_write_init()
581 IRQF_SHARED, "port-write", (void *)pw); in fsl_rio_port_write_init()
589 INIT_WORK(&pw->pw_work, fsl_pw_dpc); in fsl_rio_port_write_init()
590 spin_lock_init(&pw->pw_fifo_lock); in fsl_rio_port_write_init()
591 if (kfifo_alloc(&pw->pw_fifo, RIO_PW_MSG_SIZE * 32, GFP_KERNEL)) { in fsl_rio_port_write_init()
598 in_be32(&pw->pw_regs->pwmr), in fsl_rio_port_write_init()
599 in_be32(&pw->pw_regs->pwsr)); in fsl_rio_port_write_init()
604 free_irq(IRQ_RIO_PW(pw), (void *)pw); in fsl_rio_port_write_init()
606 dma_free_coherent(pw->dev, RIO_PW_MSG_SIZE, in fsl_rio_port_write_init()
607 pw->port_write_msg.virt, in fsl_rio_port_write_init()
608 pw->port_write_msg.phys); in fsl_rio_port_write_init()