Lines Matching refs:hdata

615 static inline u32 hdmi_reg_read(struct hdmi_context *hdata, u32 reg_id)  in hdmi_reg_read()  argument
617 return readl(hdata->regs + reg_id); in hdmi_reg_read()
620 static inline void hdmi_reg_writeb(struct hdmi_context *hdata, in hdmi_reg_writeb() argument
623 writeb(value, hdata->regs + reg_id); in hdmi_reg_writeb()
626 static inline void hdmi_reg_writemask(struct hdmi_context *hdata, in hdmi_reg_writemask() argument
629 u32 old = readl(hdata->regs + reg_id); in hdmi_reg_writemask()
631 writel(value, hdata->regs + reg_id); in hdmi_reg_writemask()
634 static int hdmiphy_reg_writeb(struct hdmi_context *hdata, in hdmiphy_reg_writeb() argument
637 if (hdata->hdmiphy_port) { in hdmiphy_reg_writeb()
644 ret = i2c_master_send(hdata->hdmiphy_port, buffer, 2); in hdmiphy_reg_writeb()
649 writeb(value, hdata->regs_hdmiphy + (reg_offset<<2)); in hdmiphy_reg_writeb()
654 static int hdmiphy_reg_write_buf(struct hdmi_context *hdata, in hdmiphy_reg_write_buf() argument
660 if (hdata->hdmiphy_port) { in hdmiphy_reg_write_buf()
663 ret = i2c_master_send(hdata->hdmiphy_port, buf, len); in hdmiphy_reg_write_buf()
670 writeb(buf[i], hdata->regs_hdmiphy + in hdmiphy_reg_write_buf()
676 static void hdmi_v13_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v13_regs_dump() argument
680 readl(hdata->regs + reg_id)) in hdmi_v13_regs_dump()
763 static void hdmi_v14_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v14_regs_dump() argument
769 readl(hdata->regs + reg_id)) in hdmi_v14_regs_dump()
930 static void hdmi_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_regs_dump() argument
932 if (hdata->type == HDMI_TYPE13) in hdmi_regs_dump()
933 hdmi_v13_regs_dump(hdata, prefix); in hdmi_regs_dump()
935 hdmi_v14_regs_dump(hdata, prefix); in hdmi_regs_dump()
938 static u8 hdmi_chksum(struct hdmi_context *hdata, in hdmi_chksum() argument
947 hdr_sum += 0xff & hdmi_reg_read(hdata, start + i * 4); in hdmi_chksum()
953 static void hdmi_reg_infoframe(struct hdmi_context *hdata, in hdmi_reg_infoframe() argument
961 mod = hdmi_reg_read(hdata, HDMI_MODE_SEL); in hdmi_reg_infoframe()
962 if (hdata->dvi_mode) { in hdmi_reg_infoframe()
963 hdmi_reg_writeb(hdata, HDMI_VSI_CON, in hdmi_reg_infoframe()
965 hdmi_reg_writeb(hdata, HDMI_AVI_CON, in hdmi_reg_infoframe()
967 hdmi_reg_writeb(hdata, HDMI_AUI_CON, HDMI_AUI_CON_NO_TRAN); in hdmi_reg_infoframe()
973 hdmi_reg_writeb(hdata, HDMI_AVI_CON, HDMI_AVI_CON_EVERY_VSYNC); in hdmi_reg_infoframe()
974 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
975 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER1, in hdmi_reg_infoframe()
977 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
982 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(1), 0 << 5 | in hdmi_reg_infoframe()
990 switch (hdata->mode_conf.aspect_ratio) { in hdmi_reg_infoframe()
992 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), in hdmi_reg_infoframe()
993 hdata->mode_conf.aspect_ratio | in hdmi_reg_infoframe()
997 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), in hdmi_reg_infoframe()
998 hdata->mode_conf.aspect_ratio | in hdmi_reg_infoframe()
1003 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), in hdmi_reg_infoframe()
1004 hdata->mode_conf.aspect_ratio | in hdmi_reg_infoframe()
1009 vic = hdata->mode_conf.cea_video_id; in hdmi_reg_infoframe()
1010 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(4), vic); in hdmi_reg_infoframe()
1012 chksum = hdmi_chksum(hdata, HDMI_AVI_BYTE(1), in hdmi_reg_infoframe()
1015 hdmi_reg_writeb(hdata, HDMI_AVI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
1018 hdmi_reg_writeb(hdata, HDMI_AUI_CON, 0x02); in hdmi_reg_infoframe()
1019 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
1020 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER1, in hdmi_reg_infoframe()
1022 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
1025 chksum = hdmi_chksum(hdata, HDMI_AUI_BYTE(1), in hdmi_reg_infoframe()
1028 hdmi_reg_writeb(hdata, HDMI_AUI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
1038 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_detect() local
1040 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_detect()
1042 return hdata->hpd ? connector_status_connected : in hdmi_detect()
1061 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_get_modes() local
1064 if (!hdata->ddc_adpt) in hdmi_get_modes()
1067 edid = drm_get_edid(connector, hdata->ddc_adpt); in hdmi_get_modes()
1071 hdata->dvi_mode = !drm_detect_hdmi_monitor(edid); in hdmi_get_modes()
1073 (hdata->dvi_mode ? "dvi monitor" : "hdmi monitor"), in hdmi_get_modes()
1081 static int hdmi_find_phy_conf(struct hdmi_context *hdata, u32 pixel_clock) in hdmi_find_phy_conf() argument
1085 for (i = 0; i < hdata->phy_conf_count; i++) in hdmi_find_phy_conf()
1086 if (hdata->phy_confs[i].pixel_clock == pixel_clock) in hdmi_find_phy_conf()
1096 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_mode_valid() local
1108 ret = hdmi_find_phy_conf(hdata, mode->clock * 1000); in hdmi_mode_valid()
1117 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_best_encoder() local
1119 return hdata->encoder; in hdmi_best_encoder()
1131 struct hdmi_context *hdata = display_to_hdmi(display); in hdmi_create_connector() local
1132 struct drm_connector *connector = &hdata->connector; in hdmi_create_connector()
1135 hdata->encoder = encoder; in hdmi_create_connector()
1139 ret = drm_connector_init(hdata->drm_dev, connector, in hdmi_create_connector()
1239 static void hdmi_reg_acr(struct hdmi_context *hdata, u8 *acr) in hdmi_reg_acr() argument
1241 hdmi_reg_writeb(hdata, HDMI_ACR_N0, acr[6]); in hdmi_reg_acr()
1242 hdmi_reg_writeb(hdata, HDMI_ACR_N1, acr[5]); in hdmi_reg_acr()
1243 hdmi_reg_writeb(hdata, HDMI_ACR_N2, acr[4]); in hdmi_reg_acr()
1244 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS0, acr[3]); in hdmi_reg_acr()
1245 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS1, acr[2]); in hdmi_reg_acr()
1246 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS2, acr[1]); in hdmi_reg_acr()
1247 hdmi_reg_writeb(hdata, HDMI_ACR_CTS0, acr[3]); in hdmi_reg_acr()
1248 hdmi_reg_writeb(hdata, HDMI_ACR_CTS1, acr[2]); in hdmi_reg_acr()
1249 hdmi_reg_writeb(hdata, HDMI_ACR_CTS2, acr[1]); in hdmi_reg_acr()
1251 if (hdata->type == HDMI_TYPE13) in hdmi_reg_acr()
1252 hdmi_reg_writeb(hdata, HDMI_V13_ACR_CON, 4); in hdmi_reg_acr()
1254 hdmi_reg_writeb(hdata, HDMI_ACR_CON, 4); in hdmi_reg_acr()
1257 static void hdmi_audio_init(struct hdmi_context *hdata) in hdmi_audio_init() argument
1283 hdmi_reg_acr(hdata, acr); in hdmi_audio_init()
1285 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CON, HDMI_I2S_IN_DISABLE in hdmi_audio_init()
1289 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CH, HDMI_I2S_CH0_EN in hdmi_audio_init()
1292 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CUV, HDMI_I2S_CUV_RL_EN); in hdmi_audio_init()
1299 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_DIS); in hdmi_audio_init()
1300 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_EN); in hdmi_audio_init()
1302 val = hdmi_reg_read(hdata, HDMI_I2S_DSD_CON) | 0x01; in hdmi_audio_init()
1303 hdmi_reg_writeb(hdata, HDMI_I2S_DSD_CON, val); in hdmi_audio_init()
1306 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_0, HDMI_I2S_SEL_SCLK(5) in hdmi_audio_init()
1308 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_1, HDMI_I2S_SEL_SDATA1(1) in hdmi_audio_init()
1310 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_2, HDMI_I2S_SEL_SDATA3(1) in hdmi_audio_init()
1312 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_3, HDMI_I2S_SEL_DSD(0)); in hdmi_audio_init()
1315 hdmi_reg_writeb(hdata, HDMI_I2S_CON_1, HDMI_I2S_SCLK_FALLING_EDGE in hdmi_audio_init()
1317 hdmi_reg_writeb(hdata, HDMI_I2S_CON_2, HDMI_I2S_MSB_FIRST_MODE in hdmi_audio_init()
1323 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_0, HDMI_I2S_CH_STATUS_MODE_0 in hdmi_audio_init()
1328 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_1, HDMI_I2S_CD_PLAYER); in hdmi_audio_init()
1329 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_2, HDMI_I2S_SET_SOURCE_NUM(0)); in hdmi_audio_init()
1330 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_3, HDMI_I2S_CLK_ACCUR_LEVEL_2 in hdmi_audio_init()
1332 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_4, in hdmi_audio_init()
1337 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_CON, HDMI_I2S_CH_STATUS_RELOAD); in hdmi_audio_init()
1340 static void hdmi_audio_control(struct hdmi_context *hdata, bool onoff) in hdmi_audio_control() argument
1342 if (hdata->dvi_mode) in hdmi_audio_control()
1345 hdmi_reg_writeb(hdata, HDMI_AUI_CON, onoff ? 2 : 0); in hdmi_audio_control()
1346 hdmi_reg_writemask(hdata, HDMI_CON_0, onoff ? in hdmi_audio_control()
1350 static void hdmi_start(struct hdmi_context *hdata, bool start) in hdmi_start() argument
1354 if (hdata->current_mode.flags & DRM_MODE_FLAG_INTERLACE) in hdmi_start()
1357 hdmi_reg_writemask(hdata, HDMI_CON_0, val, HDMI_EN); in hdmi_start()
1358 hdmi_reg_writemask(hdata, HDMI_TG_CMD, val, HDMI_TG_EN | HDMI_FIELD_EN); in hdmi_start()
1361 static void hdmi_conf_init(struct hdmi_context *hdata) in hdmi_conf_init() argument
1366 hdmi_reg_writemask(hdata, HDMI_INTC_CON, 0, HDMI_INTC_EN_GLOBAL | in hdmi_conf_init()
1370 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1373 hdmi_reg_writeb(hdata, HDMI_CON_2, 0); in hdmi_conf_init()
1375 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_BLUE_SCR_EN); in hdmi_conf_init()
1377 if (hdata->dvi_mode) { in hdmi_conf_init()
1379 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1381 hdmi_reg_writeb(hdata, HDMI_CON_2, in hdmi_conf_init()
1385 if (hdata->type == HDMI_TYPE13) { in hdmi_conf_init()
1387 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_0, 0x12); in hdmi_conf_init()
1388 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_1, 0x34); in hdmi_conf_init()
1389 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_2, 0x56); in hdmi_conf_init()
1392 hdmi_reg_writeb(hdata, HDMI_V13_AVI_CON, 0x02); in hdmi_conf_init()
1394 hdmi_reg_writeb(hdata, HDMI_V13_AVI_BYTE(0), 0 << 5); in hdmi_conf_init()
1395 hdmi_reg_writemask(hdata, HDMI_CON_1, 0x10 << 5, 0x11 << 5); in hdmi_conf_init()
1397 hdmi_reg_writeb(hdata, HDMI_V13_SPD_CON, 0x02); in hdmi_conf_init()
1398 hdmi_reg_writeb(hdata, HDMI_V13_AUI_CON, 0x02); in hdmi_conf_init()
1399 hdmi_reg_writeb(hdata, HDMI_V13_ACR_CON, 0x04); in hdmi_conf_init()
1404 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1409 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1412 hdmi_reg_writemask(hdata, HDMI_CON_1, 2, 3 << 5); in hdmi_conf_init()
1416 static void hdmi_v13_mode_apply(struct hdmi_context *hdata) in hdmi_v13_mode_apply() argument
1418 const struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v13_conf.tg; in hdmi_v13_mode_apply()
1420 &hdata->mode_conf.conf.v13_conf.core; in hdmi_v13_mode_apply()
1424 hdmi_reg_writeb(hdata, HDMI_H_BLANK_0, core->h_blank[0]); in hdmi_v13_mode_apply()
1425 hdmi_reg_writeb(hdata, HDMI_H_BLANK_1, core->h_blank[1]); in hdmi_v13_mode_apply()
1426 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_0, core->v_blank[0]); in hdmi_v13_mode_apply()
1427 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_1, core->v_blank[1]); in hdmi_v13_mode_apply()
1428 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_2, core->v_blank[2]); in hdmi_v13_mode_apply()
1429 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_0, core->h_v_line[0]); in hdmi_v13_mode_apply()
1430 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_1, core->h_v_line[1]); in hdmi_v13_mode_apply()
1431 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_2, core->h_v_line[2]); in hdmi_v13_mode_apply()
1432 hdmi_reg_writeb(hdata, HDMI_VSYNC_POL, core->vsync_pol[0]); in hdmi_v13_mode_apply()
1433 hdmi_reg_writeb(hdata, HDMI_INT_PRO_MODE, core->int_pro_mode[0]); in hdmi_v13_mode_apply()
1434 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_0, core->v_blank_f[0]); in hdmi_v13_mode_apply()
1435 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_1, core->v_blank_f[1]); in hdmi_v13_mode_apply()
1436 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_2, core->v_blank_f[2]); in hdmi_v13_mode_apply()
1437 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_0, core->h_sync_gen[0]); in hdmi_v13_mode_apply()
1438 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_1, core->h_sync_gen[1]); in hdmi_v13_mode_apply()
1439 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_2, core->h_sync_gen[2]); in hdmi_v13_mode_apply()
1440 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_0, core->v_sync_gen1[0]); in hdmi_v13_mode_apply()
1441 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_1, core->v_sync_gen1[1]); in hdmi_v13_mode_apply()
1442 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_2, core->v_sync_gen1[2]); in hdmi_v13_mode_apply()
1443 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_0, core->v_sync_gen2[0]); in hdmi_v13_mode_apply()
1444 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_1, core->v_sync_gen2[1]); in hdmi_v13_mode_apply()
1445 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_2, core->v_sync_gen2[2]); in hdmi_v13_mode_apply()
1446 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_0, core->v_sync_gen3[0]); in hdmi_v13_mode_apply()
1447 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_1, core->v_sync_gen3[1]); in hdmi_v13_mode_apply()
1448 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_2, core->v_sync_gen3[2]); in hdmi_v13_mode_apply()
1450 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_L, tg->h_fsz[0]); in hdmi_v13_mode_apply()
1451 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_H, tg->h_fsz[1]); in hdmi_v13_mode_apply()
1452 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_L, tg->hact_st[0]); in hdmi_v13_mode_apply()
1453 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_H, tg->hact_st[1]); in hdmi_v13_mode_apply()
1454 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_L, tg->hact_sz[0]); in hdmi_v13_mode_apply()
1455 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_H, tg->hact_sz[1]); in hdmi_v13_mode_apply()
1456 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_L, tg->v_fsz[0]); in hdmi_v13_mode_apply()
1457 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_H, tg->v_fsz[1]); in hdmi_v13_mode_apply()
1458 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_L, tg->vsync[0]); in hdmi_v13_mode_apply()
1459 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_H, tg->vsync[1]); in hdmi_v13_mode_apply()
1460 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_L, tg->vsync2[0]); in hdmi_v13_mode_apply()
1461 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_H, tg->vsync2[1]); in hdmi_v13_mode_apply()
1462 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_L, tg->vact_st[0]); in hdmi_v13_mode_apply()
1463 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_H, tg->vact_st[1]); in hdmi_v13_mode_apply()
1464 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_L, tg->vact_sz[0]); in hdmi_v13_mode_apply()
1465 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_H, tg->vact_sz[1]); in hdmi_v13_mode_apply()
1466 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_L, tg->field_chg[0]); in hdmi_v13_mode_apply()
1467 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_H, tg->field_chg[1]); in hdmi_v13_mode_apply()
1468 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_L, tg->vact_st2[0]); in hdmi_v13_mode_apply()
1469 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_H, tg->vact_st2[1]); in hdmi_v13_mode_apply()
1470 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, tg->vsync_top_hdmi[0]); in hdmi_v13_mode_apply()
1471 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_H, tg->vsync_top_hdmi[1]); in hdmi_v13_mode_apply()
1472 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, tg->vsync_bot_hdmi[0]); in hdmi_v13_mode_apply()
1473 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_H, tg->vsync_bot_hdmi[1]); in hdmi_v13_mode_apply()
1474 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_L, tg->field_top_hdmi[0]); in hdmi_v13_mode_apply()
1475 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_H, tg->field_top_hdmi[1]); in hdmi_v13_mode_apply()
1476 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_L, tg->field_bot_hdmi[0]); in hdmi_v13_mode_apply()
1477 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_H, tg->field_bot_hdmi[1]); in hdmi_v13_mode_apply()
1481 u32 val = hdmi_reg_read(hdata, HDMI_V13_PHY_STATUS); in hdmi_v13_mode_apply()
1489 hdmi_regs_dump(hdata, "timing apply"); in hdmi_v13_mode_apply()
1492 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmi_v13_mode_apply()
1493 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_hdmiphy); in hdmi_v13_mode_apply()
1494 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmi_v13_mode_apply()
1497 hdmi_start(hdata, true); in hdmi_v13_mode_apply()
1500 static void hdmi_v14_mode_apply(struct hdmi_context *hdata) in hdmi_v14_mode_apply() argument
1502 const struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v14_conf.tg; in hdmi_v14_mode_apply()
1504 &hdata->mode_conf.conf.v14_conf.core; in hdmi_v14_mode_apply()
1508 hdmi_reg_writeb(hdata, HDMI_H_BLANK_0, core->h_blank[0]); in hdmi_v14_mode_apply()
1509 hdmi_reg_writeb(hdata, HDMI_H_BLANK_1, core->h_blank[1]); in hdmi_v14_mode_apply()
1510 hdmi_reg_writeb(hdata, HDMI_V2_BLANK_0, core->v2_blank[0]); in hdmi_v14_mode_apply()
1511 hdmi_reg_writeb(hdata, HDMI_V2_BLANK_1, core->v2_blank[1]); in hdmi_v14_mode_apply()
1512 hdmi_reg_writeb(hdata, HDMI_V1_BLANK_0, core->v1_blank[0]); in hdmi_v14_mode_apply()
1513 hdmi_reg_writeb(hdata, HDMI_V1_BLANK_1, core->v1_blank[1]); in hdmi_v14_mode_apply()
1514 hdmi_reg_writeb(hdata, HDMI_V_LINE_0, core->v_line[0]); in hdmi_v14_mode_apply()
1515 hdmi_reg_writeb(hdata, HDMI_V_LINE_1, core->v_line[1]); in hdmi_v14_mode_apply()
1516 hdmi_reg_writeb(hdata, HDMI_H_LINE_0, core->h_line[0]); in hdmi_v14_mode_apply()
1517 hdmi_reg_writeb(hdata, HDMI_H_LINE_1, core->h_line[1]); in hdmi_v14_mode_apply()
1518 hdmi_reg_writeb(hdata, HDMI_HSYNC_POL, core->hsync_pol[0]); in hdmi_v14_mode_apply()
1519 hdmi_reg_writeb(hdata, HDMI_VSYNC_POL, core->vsync_pol[0]); in hdmi_v14_mode_apply()
1520 hdmi_reg_writeb(hdata, HDMI_INT_PRO_MODE, core->int_pro_mode[0]); in hdmi_v14_mode_apply()
1521 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F0_0, core->v_blank_f0[0]); in hdmi_v14_mode_apply()
1522 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F0_1, core->v_blank_f0[1]); in hdmi_v14_mode_apply()
1523 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F1_0, core->v_blank_f1[0]); in hdmi_v14_mode_apply()
1524 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F1_1, core->v_blank_f1[1]); in hdmi_v14_mode_apply()
1525 hdmi_reg_writeb(hdata, HDMI_H_SYNC_START_0, core->h_sync_start[0]); in hdmi_v14_mode_apply()
1526 hdmi_reg_writeb(hdata, HDMI_H_SYNC_START_1, core->h_sync_start[1]); in hdmi_v14_mode_apply()
1527 hdmi_reg_writeb(hdata, HDMI_H_SYNC_END_0, core->h_sync_end[0]); in hdmi_v14_mode_apply()
1528 hdmi_reg_writeb(hdata, HDMI_H_SYNC_END_1, core->h_sync_end[1]); in hdmi_v14_mode_apply()
1529 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_2_0, in hdmi_v14_mode_apply()
1531 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_2_1, in hdmi_v14_mode_apply()
1533 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_1_0, in hdmi_v14_mode_apply()
1535 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_1_1, in hdmi_v14_mode_apply()
1537 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_2_0, in hdmi_v14_mode_apply()
1539 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_2_1, in hdmi_v14_mode_apply()
1541 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_1_0, in hdmi_v14_mode_apply()
1543 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_1_1, in hdmi_v14_mode_apply()
1545 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_0, in hdmi_v14_mode_apply()
1547 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_1, in hdmi_v14_mode_apply()
1549 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_0, in hdmi_v14_mode_apply()
1551 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_1, in hdmi_v14_mode_apply()
1553 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F2_0, core->v_blank_f2[0]); in hdmi_v14_mode_apply()
1554 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F2_1, core->v_blank_f2[1]); in hdmi_v14_mode_apply()
1555 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F3_0, core->v_blank_f3[0]); in hdmi_v14_mode_apply()
1556 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F3_1, core->v_blank_f3[1]); in hdmi_v14_mode_apply()
1557 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F4_0, core->v_blank_f4[0]); in hdmi_v14_mode_apply()
1558 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F4_1, core->v_blank_f4[1]); in hdmi_v14_mode_apply()
1559 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F5_0, core->v_blank_f5[0]); in hdmi_v14_mode_apply()
1560 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F5_1, core->v_blank_f5[1]); in hdmi_v14_mode_apply()
1561 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_3_0, in hdmi_v14_mode_apply()
1563 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_3_1, in hdmi_v14_mode_apply()
1565 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_4_0, in hdmi_v14_mode_apply()
1567 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_4_1, in hdmi_v14_mode_apply()
1569 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_5_0, in hdmi_v14_mode_apply()
1571 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_5_1, in hdmi_v14_mode_apply()
1573 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_6_0, in hdmi_v14_mode_apply()
1575 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_6_1, in hdmi_v14_mode_apply()
1577 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_3_0, in hdmi_v14_mode_apply()
1579 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_3_1, in hdmi_v14_mode_apply()
1581 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_4_0, in hdmi_v14_mode_apply()
1583 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_4_1, in hdmi_v14_mode_apply()
1585 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_5_0, in hdmi_v14_mode_apply()
1587 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_5_1, in hdmi_v14_mode_apply()
1589 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_6_0, in hdmi_v14_mode_apply()
1591 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_6_1, in hdmi_v14_mode_apply()
1593 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_1_0, core->vact_space_1[0]); in hdmi_v14_mode_apply()
1594 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_1_1, core->vact_space_1[1]); in hdmi_v14_mode_apply()
1595 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_2_0, core->vact_space_2[0]); in hdmi_v14_mode_apply()
1596 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_2_1, core->vact_space_2[1]); in hdmi_v14_mode_apply()
1597 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_3_0, core->vact_space_3[0]); in hdmi_v14_mode_apply()
1598 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_3_1, core->vact_space_3[1]); in hdmi_v14_mode_apply()
1599 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_4_0, core->vact_space_4[0]); in hdmi_v14_mode_apply()
1600 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_4_1, core->vact_space_4[1]); in hdmi_v14_mode_apply()
1601 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_5_0, core->vact_space_5[0]); in hdmi_v14_mode_apply()
1602 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_5_1, core->vact_space_5[1]); in hdmi_v14_mode_apply()
1603 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_6_0, core->vact_space_6[0]); in hdmi_v14_mode_apply()
1604 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_6_1, core->vact_space_6[1]); in hdmi_v14_mode_apply()
1607 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_L, tg->h_fsz[0]); in hdmi_v14_mode_apply()
1608 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_H, tg->h_fsz[1]); in hdmi_v14_mode_apply()
1609 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_L, tg->hact_st[0]); in hdmi_v14_mode_apply()
1610 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_H, tg->hact_st[1]); in hdmi_v14_mode_apply()
1611 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_L, tg->hact_sz[0]); in hdmi_v14_mode_apply()
1612 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_H, tg->hact_sz[1]); in hdmi_v14_mode_apply()
1613 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_L, tg->v_fsz[0]); in hdmi_v14_mode_apply()
1614 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_H, tg->v_fsz[1]); in hdmi_v14_mode_apply()
1615 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_L, tg->vsync[0]); in hdmi_v14_mode_apply()
1616 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_H, tg->vsync[1]); in hdmi_v14_mode_apply()
1617 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_L, tg->vsync2[0]); in hdmi_v14_mode_apply()
1618 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_H, tg->vsync2[1]); in hdmi_v14_mode_apply()
1619 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_L, tg->vact_st[0]); in hdmi_v14_mode_apply()
1620 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_H, tg->vact_st[1]); in hdmi_v14_mode_apply()
1621 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_L, tg->vact_sz[0]); in hdmi_v14_mode_apply()
1622 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_H, tg->vact_sz[1]); in hdmi_v14_mode_apply()
1623 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_L, tg->field_chg[0]); in hdmi_v14_mode_apply()
1624 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_H, tg->field_chg[1]); in hdmi_v14_mode_apply()
1625 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_L, tg->vact_st2[0]); in hdmi_v14_mode_apply()
1626 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_H, tg->vact_st2[1]); in hdmi_v14_mode_apply()
1627 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST3_L, tg->vact_st3[0]); in hdmi_v14_mode_apply()
1628 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST3_H, tg->vact_st3[1]); in hdmi_v14_mode_apply()
1629 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST4_L, tg->vact_st4[0]); in hdmi_v14_mode_apply()
1630 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST4_H, tg->vact_st4[1]); in hdmi_v14_mode_apply()
1631 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, tg->vsync_top_hdmi[0]); in hdmi_v14_mode_apply()
1632 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_H, tg->vsync_top_hdmi[1]); in hdmi_v14_mode_apply()
1633 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, tg->vsync_bot_hdmi[0]); in hdmi_v14_mode_apply()
1634 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_H, tg->vsync_bot_hdmi[1]); in hdmi_v14_mode_apply()
1635 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_L, tg->field_top_hdmi[0]); in hdmi_v14_mode_apply()
1636 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_H, tg->field_top_hdmi[1]); in hdmi_v14_mode_apply()
1637 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_L, tg->field_bot_hdmi[0]); in hdmi_v14_mode_apply()
1638 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_H, tg->field_bot_hdmi[1]); in hdmi_v14_mode_apply()
1639 hdmi_reg_writeb(hdata, HDMI_TG_3D, tg->tg_3d[0]); in hdmi_v14_mode_apply()
1643 u32 val = hdmi_reg_read(hdata, HDMI_PHY_STATUS_0); in hdmi_v14_mode_apply()
1651 hdmi_regs_dump(hdata, "timing apply"); in hdmi_v14_mode_apply()
1654 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmi_v14_mode_apply()
1655 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_hdmiphy); in hdmi_v14_mode_apply()
1656 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmi_v14_mode_apply()
1659 hdmi_start(hdata, true); in hdmi_v14_mode_apply()
1662 static void hdmi_mode_apply(struct hdmi_context *hdata) in hdmi_mode_apply() argument
1664 if (hdata->type == HDMI_TYPE13) in hdmi_mode_apply()
1665 hdmi_v13_mode_apply(hdata); in hdmi_mode_apply()
1667 hdmi_v14_mode_apply(hdata); in hdmi_mode_apply()
1670 static void hdmiphy_conf_reset(struct hdmi_context *hdata) in hdmiphy_conf_reset() argument
1674 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmiphy_conf_reset()
1675 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_pixel); in hdmiphy_conf_reset()
1676 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmiphy_conf_reset()
1679 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_conf_reset()
1682 if (hdata->type == HDMI_TYPE13) in hdmiphy_conf_reset()
1688 hdmi_reg_writemask(hdata, reg, ~0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1690 hdmi_reg_writemask(hdata, reg, 0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1694 static void hdmiphy_poweron(struct hdmi_context *hdata) in hdmiphy_poweron() argument
1696 if (hdata->type != HDMI_TYPE14) in hdmiphy_poweron()
1702 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweron()
1705 hdmiphy_reg_writeb(hdata, HDMIPHY_POWER, in hdmiphy_poweron()
1708 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweron()
1711 hdmiphy_conf_reset(hdata); in hdmiphy_poweron()
1714 static void hdmiphy_poweroff(struct hdmi_context *hdata) in hdmiphy_poweroff() argument
1716 if (hdata->type != HDMI_TYPE14) in hdmiphy_poweroff()
1722 hdmiphy_conf_reset(hdata); in hdmiphy_poweroff()
1724 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweroff()
1728 hdmiphy_reg_writeb(hdata, HDMIPHY_POWER, in hdmiphy_poweroff()
1732 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweroff()
1736 static void hdmiphy_conf_apply(struct hdmi_context *hdata) in hdmiphy_conf_apply() argument
1742 i = hdmi_find_phy_conf(hdata, hdata->mode_conf.pixel_clock); in hdmiphy_conf_apply()
1748 ret = hdmiphy_reg_write_buf(hdata, 0, hdata->phy_confs[i].conf, 32); in hdmiphy_conf_apply()
1756 ret = hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_conf_apply()
1765 static void hdmi_conf_apply(struct hdmi_context *hdata) in hdmi_conf_apply() argument
1767 hdmiphy_conf_reset(hdata); in hdmi_conf_apply()
1768 hdmiphy_conf_apply(hdata); in hdmi_conf_apply()
1770 mutex_lock(&hdata->hdmi_mutex); in hdmi_conf_apply()
1771 hdmi_start(hdata, false); in hdmi_conf_apply()
1772 hdmi_conf_init(hdata); in hdmi_conf_apply()
1773 mutex_unlock(&hdata->hdmi_mutex); in hdmi_conf_apply()
1775 hdmi_audio_init(hdata); in hdmi_conf_apply()
1778 hdmi_mode_apply(hdata); in hdmi_conf_apply()
1779 hdmi_audio_control(hdata, true); in hdmi_conf_apply()
1781 hdmi_regs_dump(hdata, "start"); in hdmi_conf_apply()
1792 static void hdmi_v13_mode_set(struct hdmi_context *hdata, in hdmi_v13_mode_set() argument
1795 struct hdmi_v13_core_regs *core = &hdata->mode_conf.conf.v13_conf.core; in hdmi_v13_mode_set()
1796 struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v13_conf.tg; in hdmi_v13_mode_set()
1799 hdata->mode_conf.cea_video_id = in hdmi_v13_mode_set()
1801 hdata->mode_conf.pixel_clock = m->clock * 1000; in hdmi_v13_mode_set()
1802 hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; in hdmi_v13_mode_set()
1889 static void hdmi_v14_mode_set(struct hdmi_context *hdata, in hdmi_v14_mode_set() argument
1892 struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v14_conf.tg; in hdmi_v14_mode_set()
1894 &hdata->mode_conf.conf.v14_conf.core; in hdmi_v14_mode_set()
1896 hdata->mode_conf.cea_video_id = in hdmi_v14_mode_set()
1898 hdata->mode_conf.pixel_clock = m->clock * 1000; in hdmi_v14_mode_set()
1899 hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; in hdmi_v14_mode_set()
2004 struct hdmi_context *hdata = display_to_hdmi(display); in hdmi_mode_set() local
2013 drm_mode_copy(&hdata->current_mode, mode); in hdmi_mode_set()
2015 if (hdata->type == HDMI_TYPE13) in hdmi_mode_set()
2016 hdmi_v13_mode_set(hdata, mode); in hdmi_mode_set()
2018 hdmi_v14_mode_set(hdata, mode); in hdmi_mode_set()
2023 struct hdmi_context *hdata = display_to_hdmi(display); in hdmi_commit() local
2025 mutex_lock(&hdata->hdmi_mutex); in hdmi_commit()
2026 if (!hdata->powered) { in hdmi_commit()
2027 mutex_unlock(&hdata->hdmi_mutex); in hdmi_commit()
2030 mutex_unlock(&hdata->hdmi_mutex); in hdmi_commit()
2032 hdmi_conf_apply(hdata); in hdmi_commit()
2035 static void hdmi_poweron(struct hdmi_context *hdata) in hdmi_poweron() argument
2037 struct hdmi_resources *res = &hdata->res; in hdmi_poweron()
2039 mutex_lock(&hdata->hdmi_mutex); in hdmi_poweron()
2040 if (hdata->powered) { in hdmi_poweron()
2041 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweron()
2045 hdata->powered = true; in hdmi_poweron()
2047 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweron()
2049 pm_runtime_get_sync(hdata->dev); in hdmi_poweron()
2055 regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL, in hdmi_poweron()
2061 hdmiphy_poweron(hdata); in hdmi_poweron()
2062 hdmi_commit(&hdata->display); in hdmi_poweron()
2065 static void hdmi_poweroff(struct hdmi_context *hdata) in hdmi_poweroff() argument
2067 struct hdmi_resources *res = &hdata->res; in hdmi_poweroff()
2069 mutex_lock(&hdata->hdmi_mutex); in hdmi_poweroff()
2070 if (!hdata->powered) in hdmi_poweroff()
2072 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweroff()
2075 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_EN); in hdmi_poweroff()
2077 hdmiphy_poweroff(hdata); in hdmi_poweroff()
2079 cancel_delayed_work(&hdata->hotplug_work); in hdmi_poweroff()
2085 regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL, in hdmi_poweroff()
2090 pm_runtime_put_sync(hdata->dev); in hdmi_poweroff()
2092 mutex_lock(&hdata->hdmi_mutex); in hdmi_poweroff()
2093 hdata->powered = false; in hdmi_poweroff()
2096 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweroff()
2101 struct hdmi_context *hdata = display_to_hdmi(display); in hdmi_dpms() local
2102 struct drm_encoder *encoder = hdata->encoder; in hdmi_dpms()
2110 hdmi_poweron(hdata); in hdmi_dpms()
2129 hdmi_poweroff(hdata); in hdmi_dpms()
2147 struct hdmi_context *hdata; in hdmi_hotplug_work_func() local
2149 hdata = container_of(work, struct hdmi_context, hotplug_work.work); in hdmi_hotplug_work_func()
2151 mutex_lock(&hdata->hdmi_mutex); in hdmi_hotplug_work_func()
2152 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_hotplug_work_func()
2153 mutex_unlock(&hdata->hdmi_mutex); in hdmi_hotplug_work_func()
2155 if (hdata->drm_dev) in hdmi_hotplug_work_func()
2156 drm_helper_hpd_irq_event(hdata->drm_dev); in hdmi_hotplug_work_func()
2161 struct hdmi_context *hdata = arg; in hdmi_irq_thread() local
2163 mod_delayed_work(system_wq, &hdata->hotplug_work, in hdmi_irq_thread()
2169 static int hdmi_resources_init(struct hdmi_context *hdata) in hdmi_resources_init() argument
2171 struct device *dev = hdata->dev; in hdmi_resources_init()
2172 struct hdmi_resources *res = &hdata->res; in hdmi_resources_init()
2299 struct hdmi_context *hdata = dev_get_drvdata(dev); in hdmi_bind() local
2301 hdata->drm_dev = drm_dev; in hdmi_bind()
2303 return exynos_drm_create_enc_conn(drm_dev, &hdata->display); in hdmi_bind()
2341 struct hdmi_context *hdata; in hdmi_probe() local
2352 hdata = devm_kzalloc(dev, sizeof(struct hdmi_context), GFP_KERNEL); in hdmi_probe()
2353 if (!hdata) in hdmi_probe()
2356 hdata->display.type = EXYNOS_DISPLAY_TYPE_HDMI; in hdmi_probe()
2357 hdata->display.ops = &hdmi_display_ops; in hdmi_probe()
2360 hdata->display.type); in hdmi_probe()
2364 mutex_init(&hdata->hdmi_mutex); in hdmi_probe()
2366 platform_set_drvdata(pdev, hdata); in hdmi_probe()
2375 hdata->type = drv_data->type; in hdmi_probe()
2376 hdata->phy_confs = drv_data->phy_confs; in hdmi_probe()
2377 hdata->phy_conf_count = drv_data->phy_conf_count; in hdmi_probe()
2379 hdata->hpd_gpio = pdata->hpd_gpio; in hdmi_probe()
2380 hdata->dev = dev; in hdmi_probe()
2382 ret = hdmi_resources_init(hdata); in hdmi_probe()
2389 hdata->regs = devm_ioremap_resource(dev, res); in hdmi_probe()
2390 if (IS_ERR(hdata->regs)) { in hdmi_probe()
2391 ret = PTR_ERR(hdata->regs); in hdmi_probe()
2395 ret = devm_gpio_request(dev, hdata->hpd_gpio, "HPD"); in hdmi_probe()
2414 hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node); in hdmi_probe()
2415 if (!hdata->ddc_adpt) { in hdmi_probe()
2434 hdata->regs_hdmiphy = of_iomap(phy_node, 0); in hdmi_probe()
2435 if (!hdata->regs_hdmiphy) { in hdmi_probe()
2441 hdata->hdmiphy_port = of_find_i2c_device_by_node(phy_node); in hdmi_probe()
2442 if (!hdata->hdmiphy_port) { in hdmi_probe()
2449 hdata->irq = gpio_to_irq(hdata->hpd_gpio); in hdmi_probe()
2450 if (hdata->irq < 0) { in hdmi_probe()
2452 ret = hdata->irq; in hdmi_probe()
2456 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_probe()
2458 INIT_DELAYED_WORK(&hdata->hotplug_work, hdmi_hotplug_work_func); in hdmi_probe()
2460 ret = devm_request_threaded_irq(dev, hdata->irq, NULL, in hdmi_probe()
2463 "hdmi", hdata); in hdmi_probe()
2469 hdata->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node, in hdmi_probe()
2471 if (IS_ERR(hdata->pmureg)) { in hdmi_probe()
2489 if (hdata->hdmiphy_port) in hdmi_probe()
2490 put_device(&hdata->hdmiphy_port->dev); in hdmi_probe()
2492 put_device(&hdata->ddc_adpt->dev); in hdmi_probe()
2502 struct hdmi_context *hdata = platform_get_drvdata(pdev); in hdmi_remove() local
2504 cancel_delayed_work_sync(&hdata->hotplug_work); in hdmi_remove()
2506 if (hdata->res.reg_hdmi_en) in hdmi_remove()
2507 regulator_disable(hdata->res.reg_hdmi_en); in hdmi_remove()
2509 if (hdata->hdmiphy_port) in hdmi_remove()
2510 put_device(&hdata->hdmiphy_port->dev); in hdmi_remove()
2511 put_device(&hdata->ddc_adpt->dev); in hdmi_remove()