Lines Matching full:ch
90 struct dcss_scaler_ch ch[3]; member
287 static void dcss_scaler_write(struct dcss_scaler_ch *ch, u32 val, u32 ofs) in dcss_scaler_write() argument
289 struct dcss_scaler *scl = ch->scl; in dcss_scaler_write()
291 dcss_ctxld_write(scl->ctxld, scl->ctx_id, val, ch->base_ofs + ofs); in dcss_scaler_write()
297 struct dcss_scaler_ch *ch; in dcss_scaler_ch_init_all() local
301 ch = &scl->ch[i]; in dcss_scaler_ch_init_all()
303 ch->base_ofs = scaler_base + i * 0x400; in dcss_scaler_ch_init_all()
305 ch->base_reg = devm_ioremap(scl->dev, ch->base_ofs, SZ_4K); in dcss_scaler_ch_init_all()
306 if (!ch->base_reg) { in dcss_scaler_ch_init_all()
307 dev_err(scl->dev, "scaler: unable to remap ch base\n"); in dcss_scaler_ch_init_all()
311 ch->scl = scl; in dcss_scaler_ch_init_all()
341 struct dcss_scaler_ch *ch = &scl->ch[ch_no]; in dcss_scaler_exit() local
343 dcss_writel(0, ch->base_reg + DCSS_SCALER_CTRL); in dcss_scaler_exit()
349 struct dcss_scaler_ch *ch = &scl->ch[ch_num]; in dcss_scaler_ch_enable() local
355 dcss_scaler_write(ch, ch->sdata_ctrl, DCSS_SCALER_SDATA_CTRL); in dcss_scaler_ch_enable()
357 if (ch->scaler_ctrl != scaler_ctrl) in dcss_scaler_ch_enable()
358 ch->scaler_ctrl_chgd = true; in dcss_scaler_ch_enable()
360 ch->scaler_ctrl = scaler_ctrl; in dcss_scaler_ch_enable()
363 static void dcss_scaler_yuv_enable(struct dcss_scaler_ch *ch, bool en) in dcss_scaler_yuv_enable() argument
365 ch->sdata_ctrl &= ~YUV_EN; in dcss_scaler_yuv_enable()
366 ch->sdata_ctrl |= en ? YUV_EN : 0; in dcss_scaler_yuv_enable()
369 static void dcss_scaler_rtr_8lines_enable(struct dcss_scaler_ch *ch, bool en) in dcss_scaler_rtr_8lines_enable() argument
371 ch->sdata_ctrl &= ~RTRAM_8LINES; in dcss_scaler_rtr_8lines_enable()
372 ch->sdata_ctrl |= en ? RTRAM_8LINES : 0; in dcss_scaler_rtr_8lines_enable()
375 static void dcss_scaler_bit_depth_set(struct dcss_scaler_ch *ch, int depth) in dcss_scaler_bit_depth_set() argument
381 dcss_scaler_write(ch, in dcss_scaler_bit_depth_set()
402 static void dcss_scaler_format_set(struct dcss_scaler_ch *ch, in dcss_scaler_format_set() argument
406 dcss_scaler_write(ch, src_fmt, DCSS_SCALER_SRC_FORMAT); in dcss_scaler_format_set()
407 dcss_scaler_write(ch, dst_fmt, DCSS_SCALER_DST_FORMAT); in dcss_scaler_format_set()
410 static void dcss_scaler_res_set(struct dcss_scaler_ch *ch, in dcss_scaler_res_set() argument
448 dcss_scaler_write(ch, (((lsrc_yres - 1) << HEIGHT_POS) & HEIGHT_MASK) | in dcss_scaler_res_set()
451 dcss_scaler_write(ch, (((csrc_yres - 1) << HEIGHT_POS) & HEIGHT_MASK) | in dcss_scaler_res_set()
454 dcss_scaler_write(ch, (((ldst_yres - 1) << HEIGHT_POS) & HEIGHT_MASK) | in dcss_scaler_res_set()
457 dcss_scaler_write(ch, (((cdst_yres - 1) << HEIGHT_POS) & HEIGHT_MASK) | in dcss_scaler_res_set()
474 static void dcss_scaler_fractions_set(struct dcss_scaler_ch *ch, in dcss_scaler_fractions_set() argument
545 ch->c_vstart = c_vstart; in dcss_scaler_fractions_set()
546 ch->c_hstart = c_hstart; in dcss_scaler_fractions_set()
548 dcss_scaler_write(ch, 0, DCSS_SCALER_V_LUM_START); in dcss_scaler_fractions_set()
549 dcss_scaler_write(ch, l_vinc, DCSS_SCALER_V_LUM_INC); in dcss_scaler_fractions_set()
551 dcss_scaler_write(ch, 0, DCSS_SCALER_H_LUM_START); in dcss_scaler_fractions_set()
552 dcss_scaler_write(ch, l_hinc, DCSS_SCALER_H_LUM_INC); in dcss_scaler_fractions_set()
554 dcss_scaler_write(ch, c_vstart, DCSS_SCALER_V_CHR_START); in dcss_scaler_fractions_set()
555 dcss_scaler_write(ch, c_vinc, DCSS_SCALER_V_CHR_INC); in dcss_scaler_fractions_set()
557 dcss_scaler_write(ch, c_hstart, DCSS_SCALER_H_CHR_START); in dcss_scaler_fractions_set()
558 dcss_scaler_write(ch, c_hinc, DCSS_SCALER_H_CHR_INC); in dcss_scaler_fractions_set()
570 static void dcss_scaler_program_5_coef_set(struct dcss_scaler_ch *ch, in dcss_scaler_program_5_coef_set() argument
577 dcss_scaler_write(ch, ((coef[i][1] & 0xfff) << 16 | in dcss_scaler_program_5_coef_set()
581 dcss_scaler_write(ch, ((coef[i][3] & 0x0ff) << 20 | in dcss_scaler_program_5_coef_set()
585 dcss_scaler_write(ch, ((coef[i][5] & 0x00f) << 24), in dcss_scaler_program_5_coef_set()
592 dcss_scaler_write(ch, ((coef[phase][5] & 0xfff) << 16 | in dcss_scaler_program_5_coef_set()
596 dcss_scaler_write(ch, ((coef[phase][3] & 0x0ff) << 20 | in dcss_scaler_program_5_coef_set()
600 dcss_scaler_write(ch, ((coef[phase][1] & 0x00f) << 24), in dcss_scaler_program_5_coef_set()
605 static void dcss_scaler_program_7_coef_set(struct dcss_scaler_ch *ch, in dcss_scaler_program_7_coef_set() argument
612 dcss_scaler_write(ch, ((coef[i][0] & 0xfff) << 16 | in dcss_scaler_program_7_coef_set()
616 dcss_scaler_write(ch, ((coef[i][2] & 0x0ff) << 20 | in dcss_scaler_program_7_coef_set()
620 dcss_scaler_write(ch, ((coef[i][4] & 0x00f) << 24 | in dcss_scaler_program_7_coef_set()
629 dcss_scaler_write(ch, ((coef[phase][6] & 0xfff) << 16 | in dcss_scaler_program_7_coef_set()
633 dcss_scaler_write(ch, ((coef[phase][4] & 0x0ff) << 20 | in dcss_scaler_program_7_coef_set()
637 dcss_scaler_write(ch, ((coef[phase][2] & 0x00f) << 24 | in dcss_scaler_program_7_coef_set()
644 static void dcss_scaler_yuv_coef_set(struct dcss_scaler_ch *ch, in dcss_scaler_yuv_coef_set() argument
659 ch->use_nn_interpolation); in dcss_scaler_yuv_coef_set()
660 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_HLUM, coef); in dcss_scaler_yuv_coef_set()
665 ch->use_nn_interpolation); in dcss_scaler_yuv_coef_set()
668 dcss_scaler_program_5_coef_set(ch, DCSS_SCALER_COEF_VLUM, coef); in dcss_scaler_yuv_coef_set()
670 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_VLUM, coef); in dcss_scaler_yuv_coef_set()
684 (src_xres == dst_xres) && (ch->c_hstart == 0), in dcss_scaler_yuv_coef_set()
685 coef, ch->use_nn_interpolation); in dcss_scaler_yuv_coef_set()
687 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_HCHR, coef); in dcss_scaler_yuv_coef_set()
691 (src_yres == dst_yres) && (ch->c_vstart == 0), in dcss_scaler_yuv_coef_set()
692 coef, ch->use_nn_interpolation); in dcss_scaler_yuv_coef_set()
694 dcss_scaler_program_5_coef_set(ch, DCSS_SCALER_COEF_VCHR, coef); in dcss_scaler_yuv_coef_set()
696 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_VCHR, coef); in dcss_scaler_yuv_coef_set()
699 static void dcss_scaler_rgb_coef_set(struct dcss_scaler_ch *ch, in dcss_scaler_rgb_coef_set() argument
708 ch->use_nn_interpolation); in dcss_scaler_rgb_coef_set()
709 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_HLUM, coef); in dcss_scaler_rgb_coef_set()
714 ch->use_nn_interpolation); in dcss_scaler_rgb_coef_set()
715 dcss_scaler_program_7_coef_set(ch, DCSS_SCALER_COEF_VLUM, coef); in dcss_scaler_rgb_coef_set()
718 static void dcss_scaler_set_rgb10_order(struct dcss_scaler_ch *ch, in dcss_scaler_set_rgb10_order() argument
726 ch->sdata_ctrl &= ~A2R10G10B10_FORMAT_MASK; in dcss_scaler_set_rgb10_order()
757 ch->sdata_ctrl |= a2r10g10b10_format << A2R10G10B10_FORMAT_POS; in dcss_scaler_set_rgb10_order()
763 struct dcss_scaler_ch *ch = &scl->ch[ch_num]; in dcss_scaler_set_filter() local
765 ch->use_nn_interpolation = scaling_filter == DRM_SCALING_FILTER_NEAREST_NEIGHBOR; in dcss_scaler_set_filter()
773 struct dcss_scaler_ch *ch = &scl->ch[ch_num]; in dcss_scaler_setup() local
782 dcss_scaler_yuv_enable(ch, true); in dcss_scaler_setup()
797 dcss_scaler_yuv_enable(ch, false); in dcss_scaler_setup()
802 dcss_scaler_fractions_set(ch, src_xres, src_yres, dst_xres, in dcss_scaler_setup()
807 dcss_scaler_yuv_coef_set(ch, src_format, dst_format, in dcss_scaler_setup()
811 dcss_scaler_rgb_coef_set(ch, src_xres, src_yres, in dcss_scaler_setup()
814 dcss_scaler_rtr_8lines_enable(ch, rtr_8line_en); in dcss_scaler_setup()
815 dcss_scaler_bit_depth_set(ch, pixel_depth); in dcss_scaler_setup()
816 dcss_scaler_set_rgb10_order(ch, format); in dcss_scaler_setup()
817 dcss_scaler_format_set(ch, src_format, dst_format); in dcss_scaler_setup()
818 dcss_scaler_res_set(ch, src_xres, src_yres, dst_xres, dst_yres, in dcss_scaler_setup()
830 struct dcss_scaler_ch *ch = &scl->ch[chnum]; in dcss_scaler_write_sclctrl() local
832 if (ch->scaler_ctrl_chgd) { in dcss_scaler_write_sclctrl()
834 ch->scaler_ctrl, in dcss_scaler_write_sclctrl()
835 ch->base_ofs + in dcss_scaler_write_sclctrl()
837 ch->scaler_ctrl_chgd = false; in dcss_scaler_write_sclctrl()