Lines Matching refs:tve
115 #define tve_writel(offset, v) writel(v, tve->reg_base + offset)
116 #define tve_readl(offset) readl(tve->reg_base + offset)
118 #define tve_dac_writel(offset, v) writel(v, tve->vdac_base + offset)
119 #define tve_dac_readl(offset) readl(tve->vdac_base + offset)
121 #define tve_grf_writel(offset, v) writel(v, tve->grf + offset)
122 #define tve_grf_readl(offset, v) readl(tve->grf + offset)
156 static void tve_write_block(struct rockchip_tve *tve, struct env_config *config, int len) in tve_write_block() argument
164 static void tve_set_mode(struct rockchip_tve *tve) in tve_set_mode() argument
167 int mode = tve->tv_format; in tve_set_mode()
169 if (tve->soc_type == SOC_RK3528) { in tve_set_mode()
170 tve_writel(TVE_LUMA_FILTER1, tve->lumafilter0); in tve_set_mode()
171 tve_writel(TVE_LUMA_FILTER2, tve->lumafilter1); in tve_set_mode()
172 tve_writel(TVE_LUMA_FILTER3, tve->lumafilter2); in tve_set_mode()
173 tve_writel(TVE_LUMA_FILTER4, tve->lumafilter3); in tve_set_mode()
174 tve_writel(TVE_LUMA_FILTER5, tve->lumafilter4); in tve_set_mode()
175 tve_writel(TVE_LUMA_FILTER6, tve->lumafilter5); in tve_set_mode()
176 tve_writel(TVE_LUMA_FILTER7, tve->lumafilter6); in tve_set_mode()
177 tve_writel(TVE_LUMA_FILTER8, tve->lumafilter7); in tve_set_mode()
179 if (tve->input_format == INPUT_FORMAT_RGB) in tve_set_mode()
188 tve_writel(TV_LUMA_FILTER0, tve->lumafilter0); in tve_set_mode()
189 tve_writel(TV_LUMA_FILTER1, tve->lumafilter1); in tve_set_mode()
190 tve_writel(TV_LUMA_FILTER2, tve->lumafilter2); in tve_set_mode()
196 if (tve->soc_type == SOC_RK3528) { in tve_set_mode()
200 tve_write_block(tve, bt656_cfg, BT656_ENV_CONFIG_SIZE); in tve_set_mode()
201 tve_write_block(tve, tve_cfg, TVE_ENV_CONFIG_SIZE); in tve_set_mode()
209 if (tve->test_mode) in tve_set_mode()
223 if (tve->soc_type == SOC_RK3528) { in tve_set_mode()
227 tve_write_block(tve, bt656_cfg, BT656_ENV_CONFIG_SIZE); in tve_set_mode()
228 tve_write_block(tve, tve_cfg, TVE_ENV_CONFIG_SIZE); in tve_set_mode()
236 tve_writel(TV_SATURATION, tve->saturation); in tve_set_mode()
237 tve_writel(TV_BRIGHTNESS_CONTRAST, tve->brightcontrast); in tve_set_mode()
245 tve_writel(TV_ADJ_TIMING, tve->adjtiming); in tve_set_mode()
250 if (tve->soc_type == SOC_RK3528) { in tve_set_mode()
256 upsample_en = tve->upsample_mode ? 1 : 0; in tve_set_mode()
258 upsample_mode = tve->upsample_mode - 1; in tve_set_mode()
262 v_DCLK_UPSAMPLE_EN(upsample_en) | v_TVE_MODE(tve->tv_format) | v_TVE_EN(1); in tve_set_mode()
268 static void dac_init(struct rockchip_tve *tve) in dac_init() argument
270 tve_dac_writel(VDAC_VDAC1, v_CUR_REG(tve->dac1level) | in dac_init()
272 tve_dac_writel(VDAC_VDAC2, v_CUR_CTR(tve->daclevel)); in dac_init()
276 static void dac_enable(struct rockchip_tve *tve, bool enable) in dac_enable() argument
286 if (tve->soc_type == SOC_RK3036) { in dac_enable()
288 val = m_VBG_EN | m_DAC_EN | v_DAC_GAIN(tve->daclevel); in dac_enable()
290 } else if (tve->soc_type == SOC_RK312X) { in dac_enable()
292 val = m_VBG_EN | m_DAC_EN | v_DAC_GAIN(tve->daclevel); in dac_enable()
294 } else if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328) { in dac_enable()
295 val = v_CUR_REG(tve->dac1level) | v_DR_PWR_DOWN(0) | v_BG_PWR_DOWN(0); in dac_enable()
296 } else if (tve->soc_type == SOC_RK3528) { in dac_enable()
312 if (tve->soc_type == SOC_RK312X) { in dac_enable()
315 } else if (tve->soc_type == SOC_RK3036) { in dac_enable()
318 } else if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328) { in dac_enable()
319 val = v_CUR_REG(tve->dac1level) | m_DR_PWR_DOWN | m_BG_PWR_DOWN; in dac_enable()
321 } else if (tve->soc_type == SOC_RK3528) { in dac_enable()
329 else if (tve->vdac_base) in dac_enable()
377 static int tve_parse_dt(struct rockchip_tve *tve) in tve_parse_dt() argument
379 tve->preferred_mode = dev_read_u32_default(tve->dev, "rockchip,tvemode", -1); in tve_parse_dt()
380 if (tve->preferred_mode < 0) { in tve_parse_dt()
381 tve->preferred_mode = 0; in tve_parse_dt()
382 } else if (tve->preferred_mode > 1) { in tve_parse_dt()
387 tve->lumafilter0 = dev_read_u32_default(tve->dev, "rockchip,lumafilter0", 0); in tve_parse_dt()
388 if (tve->lumafilter0 == 0) { in tve_parse_dt()
393 tve->lumafilter1 = dev_read_u32_default(tve->dev, "rockchip,lumafilter1", 0); in tve_parse_dt()
394 if (tve->lumafilter1 == 0) { in tve_parse_dt()
399 tve->lumafilter2 = dev_read_u32_default(tve->dev, "rockchip,lumafilter2", 0); in tve_parse_dt()
400 if (tve->lumafilter2 == 0) { in tve_parse_dt()
405 tve->lumafilter3 = dev_read_u32_default(tve->dev, "rockchip,lumafilter3", 0); in tve_parse_dt()
406 if (tve->lumafilter3 == 0) { in tve_parse_dt()
411 tve->lumafilter4 = dev_read_u32_default(tve->dev, "rockchip,lumafilter4", 0); in tve_parse_dt()
412 if (tve->lumafilter4 == 0) { in tve_parse_dt()
417 tve->lumafilter5 = dev_read_u32_default(tve->dev, "rockchip,lumafilter5", 0); in tve_parse_dt()
418 if (tve->lumafilter5 == 0) { in tve_parse_dt()
423 tve->lumafilter6 = dev_read_u32_default(tve->dev, "rockchip,lumafilter6", 0); in tve_parse_dt()
424 if (tve->lumafilter6 == 0) { in tve_parse_dt()
429 tve->lumafilter7 = dev_read_u32_default(tve->dev, "rockchip,lumafilter7", 0); in tve_parse_dt()
430 if (tve->lumafilter7 == 0) { in tve_parse_dt()
435 tve->upsample_mode = dev_read_u32_default(tve->dev, "rockchip,tve-upsample", -1); in tve_parse_dt()
436 if (tve->upsample_mode < 0 || tve->upsample_mode > DCLK_UPSAMPLEx4) { in tve_parse_dt()
441 TVEDBG("tve->preferred_mode = 0x%x\n", tve->preferred_mode); in tve_parse_dt()
442 TVEDBG("tve->lumafilter0 = 0x%x\n", tve->lumafilter0); in tve_parse_dt()
443 TVEDBG("tve->lumafilter1 = 0x%x\n", tve->lumafilter1); in tve_parse_dt()
444 TVEDBG("tve->lumafilter2 = 0x%x\n", tve->lumafilter2); in tve_parse_dt()
445 TVEDBG("tve->lumafilter3 = 0x%x\n", tve->lumafilter3); in tve_parse_dt()
446 TVEDBG("tve->lumafilter4 = 0x%x\n", tve->lumafilter4); in tve_parse_dt()
447 TVEDBG("tve->lumafilter5 = 0x%x\n", tve->lumafilter5); in tve_parse_dt()
448 TVEDBG("tve->lumafilter6 = 0x%x\n", tve->lumafilter6); in tve_parse_dt()
449 TVEDBG("tve->lumafilter7 = 0x%x\n", tve->lumafilter7); in tve_parse_dt()
450 TVEDBG("tve->upsample_mode = 0x%x\n", tve->upsample_mode); in tve_parse_dt()
455 static int tve_parse_dt_legacy(struct rockchip_tve *tve) in tve_parse_dt_legacy() argument
459 if (tve->soc_type == SOC_RK312X) in tve_parse_dt_legacy()
460 tve->test_mode = dev_read_u32_default(tve->dev, "test_mode", 0); in tve_parse_dt_legacy()
462 tve->preferred_mode = dev_read_u32_default(tve->dev, "rockchip,tvemode", -1); in tve_parse_dt_legacy()
463 if (tve->preferred_mode < 0) { in tve_parse_dt_legacy()
464 tve->preferred_mode = 0; in tve_parse_dt_legacy()
465 } else if (tve->preferred_mode > 1) { in tve_parse_dt_legacy()
470 tve->saturation = dev_read_u32_default(tve->dev, "rockchip,saturation", 0); in tve_parse_dt_legacy()
471 if (tve->saturation == 0) { in tve_parse_dt_legacy()
476 tve->brightcontrast = dev_read_u32_default(tve->dev, "rockchip,brightcontrast", 0); in tve_parse_dt_legacy()
477 if (tve->brightcontrast == 0) { in tve_parse_dt_legacy()
482 tve->adjtiming = dev_read_u32_default(tve->dev, "rockchip,adjtiming", 0); in tve_parse_dt_legacy()
483 if (tve->adjtiming == 0) { in tve_parse_dt_legacy()
488 tve->lumafilter0 = dev_read_u32_default(tve->dev, "rockchip,lumafilter0", 0); in tve_parse_dt_legacy()
489 if (tve->lumafilter0 == 0) { in tve_parse_dt_legacy()
494 tve->lumafilter1 = dev_read_u32_default(tve->dev, "rockchip,lumafilter1", 0); in tve_parse_dt_legacy()
495 if (tve->lumafilter1 == 0) { in tve_parse_dt_legacy()
500 tve->lumafilter2 = dev_read_u32_default(tve->dev, "rockchip,lumafilter2", 0); in tve_parse_dt_legacy()
501 if (tve->lumafilter2 == 0) { in tve_parse_dt_legacy()
506 dac_value = dev_read_u32_default(tve->dev, "rockchip,daclevel", 0); in tve_parse_dt_legacy()
512 tve->daclevel = dac_value; in tve_parse_dt_legacy()
513 if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328) { in tve_parse_dt_legacy()
516 tve->daclevel = dac_value + getvdac - RK322X_VDAC_STANDARD; in tve_parse_dt_legacy()
517 if (tve->daclevel > 0x3f || tve->daclevel < 0) { in tve_parse_dt_legacy()
519 tve->daclevel = dac_value; in tve_parse_dt_legacy()
527 if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328) { in tve_parse_dt_legacy()
528 tve->dac1level = dev_read_u32_default(tve->dev, "rockchip,dac1level", 0); in tve_parse_dt_legacy()
529 if (tve->dac1level == 0) { in tve_parse_dt_legacy()
535 TVEDBG("tve->test_mode = 0x%x\n", tve->test_mode); in tve_parse_dt_legacy()
536 TVEDBG("tve->saturation = 0x%x\n", tve->saturation); in tve_parse_dt_legacy()
537 TVEDBG("tve->brightcontrast = 0x%x\n", tve->brightcontrast); in tve_parse_dt_legacy()
538 TVEDBG("tve->adjtiming = 0x%x\n", tve->adjtiming); in tve_parse_dt_legacy()
539 TVEDBG("tve->lumafilter0 = 0x%x\n", tve->lumafilter0); in tve_parse_dt_legacy()
540 TVEDBG("tve->lumafilter1 = 0x%x\n", tve->lumafilter1); in tve_parse_dt_legacy()
541 TVEDBG("tve->lumafilter2 = 0x%x\n", tve->lumafilter2); in tve_parse_dt_legacy()
542 TVEDBG("tve->daclevel = 0x%x\n", tve->daclevel); in tve_parse_dt_legacy()
549 struct rockchip_tve *tve = dev_get_priv(conn->dev); in rockchip_drm_tve_init() local
556 if (tve->soc_type == SOC_RK3528) in rockchip_drm_tve_init()
562 if (tve->soc_type == SOC_RK3528) in rockchip_drm_tve_init()
563 ret = tve_parse_dt(tve); in rockchip_drm_tve_init()
565 ret = tve_parse_dt_legacy(tve); in rockchip_drm_tve_init()
576 tve->reg_base = (void *)addr; in rockchip_drm_tve_init()
578 if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328 || in rockchip_drm_tve_init()
579 tve->soc_type == SOC_RK3528) { in rockchip_drm_tve_init()
585 tve->vdac_base = (void *)addr; in rockchip_drm_tve_init()
588 tve->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF); in rockchip_drm_tve_init()
590 if (tve->soc_type == SOC_RK322X || tve->soc_type == SOC_RK3328) in rockchip_drm_tve_init()
591 dac_init(tve); in rockchip_drm_tve_init()
598 struct rockchip_tve *tve = dev_get_priv(conn->dev); in rockchip_drm_tve_enable() local
604 if (tve->soc_type != SOC_RK3528) in rockchip_drm_tve_enable()
608 tve->tv_format = TVOUT_CVBS_PAL; in rockchip_drm_tve_enable()
610 tve->tv_format = TVOUT_CVBS_NTSC; in rockchip_drm_tve_enable()
612 tve_set_mode(tve); in rockchip_drm_tve_enable()
614 dac_enable(tve, true); in rockchip_drm_tve_enable()
621 struct rockchip_tve *tve = dev_get_priv(conn->dev); in rockchip_drm_tve_deinit() local
623 dac_enable(tve, false); in rockchip_drm_tve_deinit()
633 struct rockchip_tve *tve = dev_get_priv(conn->dev); in rockchip_drm_tve_disable() local
635 dac_enable(tve, false); in rockchip_drm_tve_disable()
645 static void tve_select_output(struct rockchip_tve *tve, struct connector_state *conn_state, in tve_select_output() argument
666 if (i == tve->preferred_mode) in tve_select_output()
669 *mode = modes[tve->preferred_mode]; in tve_select_output()
775 struct rockchip_tve *tve = dev_get_priv(conn->dev); in rockchip_drm_tve_get_timing() local
779 tve_select_output(tve, conn_state, mode); in rockchip_drm_tve_get_timing()
796 struct rockchip_tve *tve = dev_get_priv(dev); in rockchip_drm_tve_probe() local
799 tve->dev = dev; in rockchip_drm_tve_probe()
801 tve->soc_type = data->soc_type; in rockchip_drm_tve_probe()
802 tve->input_format = data->input_format; in rockchip_drm_tve_probe()
804 …rockchip_connector_bind(&tve->connector, dev, 0, &rockchip_drm_tve_funcs, NULL, DRM_MODE_CONNECTOR… in rockchip_drm_tve_probe()