Lines Matching refs:tsin

427 static void free_input_block(struct c8sectpfei *fei, struct channel_info *tsin)  in free_input_block()  argument
429 if (!fei || !tsin) in free_input_block()
432 if (tsin->back_buffer_busaddr) in free_input_block()
433 if (!dma_mapping_error(fei->dev, tsin->back_buffer_busaddr)) in free_input_block()
434 dma_unmap_single(fei->dev, tsin->back_buffer_busaddr, in free_input_block()
437 kfree(tsin->back_buffer_start); in free_input_block()
439 if (tsin->pid_buffer_busaddr) in free_input_block()
440 if (!dma_mapping_error(fei->dev, tsin->pid_buffer_busaddr)) in free_input_block()
441 dma_unmap_single(fei->dev, tsin->pid_buffer_busaddr, in free_input_block()
444 kfree(tsin->pid_buffer_start); in free_input_block()
450 struct channel_info *tsin) in configure_memdma_and_inputblock() argument
456 if (!fei || !tsin) in configure_memdma_and_inputblock()
460 , __func__, __LINE__, tsin, tsin->tsin_id); in configure_memdma_and_inputblock()
462 init_completion(&tsin->idle_completion); in configure_memdma_and_inputblock()
464 tsin->back_buffer_start = kzalloc(FEI_BUFFER_SIZE + FEI_ALIGNMENT, GFP_KERNEL); in configure_memdma_and_inputblock()
465 if (!tsin->back_buffer_start) { in configure_memdma_and_inputblock()
471 tsin->back_buffer_aligned = tsin->back_buffer_start + FEI_ALIGNMENT; in configure_memdma_and_inputblock()
473 tsin->back_buffer_aligned = PTR_ALIGN(tsin->back_buffer_aligned, FEI_ALIGNMENT); in configure_memdma_and_inputblock()
475 tsin->back_buffer_busaddr = dma_map_single(fei->dev, in configure_memdma_and_inputblock()
476 tsin->back_buffer_aligned, in configure_memdma_and_inputblock()
480 if (dma_mapping_error(fei->dev, tsin->back_buffer_busaddr)) { in configure_memdma_and_inputblock()
491 tsin->pid_buffer_start = kzalloc(PID_TABLE_SIZE + PID_TABLE_SIZE, GFP_KERNEL); in configure_memdma_and_inputblock()
492 if (!tsin->pid_buffer_start) { in configure_memdma_and_inputblock()
504 tsin->pid_buffer_aligned = tsin->pid_buffer_start + PID_TABLE_SIZE; in configure_memdma_and_inputblock()
506 tsin->pid_buffer_aligned = PTR_ALIGN(tsin->pid_buffer_aligned, PID_TABLE_SIZE); in configure_memdma_and_inputblock()
508 tsin->pid_buffer_busaddr = dma_map_single(fei->dev, in configure_memdma_and_inputblock()
509 tsin->pid_buffer_aligned, in configure_memdma_and_inputblock()
513 if (dma_mapping_error(fei->dev, tsin->pid_buffer_busaddr)) { in configure_memdma_and_inputblock()
521 tsin->pid_buffer_busaddr, in configure_memdma_and_inputblock()
525 snprintf(tsin_pin_name, MAX_NAME, "tsin%d-%s", tsin->tsin_id, in configure_memdma_and_inputblock()
526 (tsin->serial_not_parallel ? "serial" : "parallel")); in configure_memdma_and_inputblock()
528 tsin->pstate = pinctrl_lookup_state(fei->pinctrl, tsin_pin_name); in configure_memdma_and_inputblock()
529 if (IS_ERR(tsin->pstate)) { in configure_memdma_and_inputblock()
532 ret = PTR_ERR(tsin->pstate); in configure_memdma_and_inputblock()
536 ret = pinctrl_select_state(fei->pinctrl, tsin->pstate); in configure_memdma_and_inputblock()
546 tmp |= BIT(tsin->tsin_id); in configure_memdma_and_inputblock()
549 if (tsin->serial_not_parallel) in configure_memdma_and_inputblock()
552 if (tsin->invert_ts_clk) in configure_memdma_and_inputblock()
555 if (tsin->async_not_sync) in configure_memdma_and_inputblock()
560 writel(tmp, fei->io + C8SECTPFE_IB_IP_FMT_CFG(tsin->tsin_id)); in configure_memdma_and_inputblock()
565 fei->io + C8SECTPFE_IB_SYNCLCKDRP_CFG(tsin->tsin_id)); in configure_memdma_and_inputblock()
567 writel(TS_PKT_SIZE, fei->io + C8SECTPFE_IB_PKT_LEN(tsin->tsin_id)); in configure_memdma_and_inputblock()
571 tsin->fifo = (tsin->tsin_id * FIFO_LEN); in configure_memdma_and_inputblock()
573 writel(tsin->fifo, fei->io + C8SECTPFE_IB_BUFF_STRT(tsin->tsin_id)); in configure_memdma_and_inputblock()
574 writel(tsin->fifo + FIFO_LEN - 1, in configure_memdma_and_inputblock()
575 fei->io + C8SECTPFE_IB_BUFF_END(tsin->tsin_id)); in configure_memdma_and_inputblock()
577 writel(tsin->fifo, fei->io + C8SECTPFE_IB_READ_PNT(tsin->tsin_id)); in configure_memdma_and_inputblock()
578 writel(tsin->fifo, fei->io + C8SECTPFE_IB_WRT_PNT(tsin->tsin_id)); in configure_memdma_and_inputblock()
580 writel(tsin->pid_buffer_busaddr, in configure_memdma_and_inputblock()
581 fei->io + PIDF_BASE(tsin->tsin_id)); in configure_memdma_and_inputblock()
584 tsin->tsin_id, readl(fei->io + PIDF_BASE(tsin->tsin_id)), in configure_memdma_and_inputblock()
585 &tsin->pid_buffer_busaddr); in configure_memdma_and_inputblock()
598 writel(tmp, fei->io + C8SECTPFE_IB_PID_SET(tsin->tsin_id)); in configure_memdma_and_inputblock()
601 tsin->tsin_id, in configure_memdma_and_inputblock()
602 readl(fei->io + C8SECTPFE_IB_WRT_PNT(tsin->tsin_id)), in configure_memdma_and_inputblock()
603 readl(fei->io + C8SECTPFE_IB_READ_PNT(tsin->tsin_id)), in configure_memdma_and_inputblock()
604 readl(fei->io + C8SECTPFE_IB_BUFF_STRT(tsin->tsin_id)), in configure_memdma_and_inputblock()
605 readl(fei->io + C8SECTPFE_IB_BUFF_END(tsin->tsin_id))); in configure_memdma_and_inputblock()
608 tsin->irec = fei->io + DMA_MEMDMA_OFFSET + DMA_DMEM_OFFSET + in configure_memdma_and_inputblock()
614 tsin->irec += (tsin->tsin_id * DMA_PRDS_SIZE); in configure_memdma_and_inputblock()
616 writel(tsin->fifo, tsin->irec + DMA_PRDS_MEMBASE); in configure_memdma_and_inputblock()
618 writel(tsin->fifo + FIFO_LEN - 1, tsin->irec + DMA_PRDS_MEMTOP); in configure_memdma_and_inputblock()
620 writel((188 + 7)&~7, tsin->irec + DMA_PRDS_PKTSIZE); in configure_memdma_and_inputblock()
622 writel(0x1, tsin->irec + DMA_PRDS_TPENABLE); in configure_memdma_and_inputblock()
626 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSBASE_TP(0)); in configure_memdma_and_inputblock()
628 tmp = tsin->back_buffer_busaddr + FEI_BUFFER_SIZE - 1; in configure_memdma_and_inputblock()
629 writel(tmp, tsin->irec + DMA_PRDS_BUSTOP_TP(0)); in configure_memdma_and_inputblock()
631 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSWP_TP(0)); in configure_memdma_and_inputblock()
632 writel(tsin->back_buffer_busaddr, tsin->irec + DMA_PRDS_BUSRP_TP(0)); in configure_memdma_and_inputblock()
635 tasklet_setup(&tsin->tsklet, channel_swdemux_tsklet); in configure_memdma_and_inputblock()
640 free_input_block(fei, tsin); in configure_memdma_and_inputblock()
666 struct channel_info *tsin; in c8sectpfe_probe() local
766 tsin = fei->channel_data[index]; in c8sectpfe_probe()
768 tsin->fei = fei; in c8sectpfe_probe()
770 ret = of_property_read_u32(child, "tsin-num", &tsin->tsin_id); in c8sectpfe_probe()
777 if (tsin->tsin_id > fei->hw_stats.num_ib) { in c8sectpfe_probe()
780 tsin->tsin_id, fei->hw_stats.num_ib); in c8sectpfe_probe()
785 tsin->invert_ts_clk = of_property_read_bool(child, in c8sectpfe_probe()
788 tsin->serial_not_parallel = of_property_read_bool(child, in c8sectpfe_probe()
791 tsin->async_not_sync = of_property_read_bool(child, in c8sectpfe_probe()
795 &tsin->dvb_card); in c8sectpfe_probe()
807 tsin->i2c_adapter = in c8sectpfe_probe()
809 if (!tsin->i2c_adapter) { in c8sectpfe_probe()
818 tsin->rst_gpio = devm_fwnode_gpiod_get(dev, in c8sectpfe_probe()
822 ret = PTR_ERR_OR_ZERO(tsin->rst_gpio); in c8sectpfe_probe()
833 gpiod_set_value_cansleep(tsin->rst_gpio, 0); in c8sectpfe_probe()
837 tsin->demux_mapping = index; in c8sectpfe_probe()
842 tsin->tsin_id, tsin->invert_ts_clk, in c8sectpfe_probe()
843 tsin->serial_not_parallel, tsin->async_not_sync, in c8sectpfe_probe()
844 tsin->dvb_card); in c8sectpfe_probe()