Lines Matching refs:hdata
610 static inline u32 hdmi_reg_read(struct hdmi_context *hdata, u32 reg_id) in hdmi_reg_read() argument
612 return readl(hdata->regs + reg_id); in hdmi_reg_read()
615 static inline void hdmi_reg_writeb(struct hdmi_context *hdata, in hdmi_reg_writeb() argument
618 writeb(value, hdata->regs + reg_id); in hdmi_reg_writeb()
621 static inline void hdmi_reg_writemask(struct hdmi_context *hdata, in hdmi_reg_writemask() argument
624 u32 old = readl(hdata->regs + reg_id); in hdmi_reg_writemask()
626 writel(value, hdata->regs + reg_id); in hdmi_reg_writemask()
629 static int hdmiphy_reg_writeb(struct hdmi_context *hdata, in hdmiphy_reg_writeb() argument
632 if (hdata->hdmiphy_port) { in hdmiphy_reg_writeb()
639 ret = i2c_master_send(hdata->hdmiphy_port, buffer, 2); in hdmiphy_reg_writeb()
644 writeb(value, hdata->regs_hdmiphy + (reg_offset<<2)); in hdmiphy_reg_writeb()
649 static int hdmiphy_reg_write_buf(struct hdmi_context *hdata, in hdmiphy_reg_write_buf() argument
655 if (hdata->hdmiphy_port) { in hdmiphy_reg_write_buf()
658 ret = i2c_master_send(hdata->hdmiphy_port, buf, len); in hdmiphy_reg_write_buf()
665 writeb(buf[i], hdata->regs_hdmiphy + in hdmiphy_reg_write_buf()
671 static void hdmi_v13_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v13_regs_dump() argument
675 readl(hdata->regs + reg_id)) in hdmi_v13_regs_dump()
758 static void hdmi_v14_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v14_regs_dump() argument
764 readl(hdata->regs + reg_id)) in hdmi_v14_regs_dump()
925 static void hdmi_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_regs_dump() argument
927 if (hdata->type == HDMI_TYPE13) in hdmi_regs_dump()
928 hdmi_v13_regs_dump(hdata, prefix); in hdmi_regs_dump()
930 hdmi_v14_regs_dump(hdata, prefix); in hdmi_regs_dump()
933 static u8 hdmi_chksum(struct hdmi_context *hdata, in hdmi_chksum() argument
942 hdr_sum += 0xff & hdmi_reg_read(hdata, start + i * 4); in hdmi_chksum()
948 static void hdmi_reg_infoframe(struct hdmi_context *hdata, in hdmi_reg_infoframe() argument
956 mod = hdmi_reg_read(hdata, HDMI_MODE_SEL); in hdmi_reg_infoframe()
957 if (hdata->dvi_mode) { in hdmi_reg_infoframe()
958 hdmi_reg_writeb(hdata, HDMI_VSI_CON, in hdmi_reg_infoframe()
960 hdmi_reg_writeb(hdata, HDMI_AVI_CON, in hdmi_reg_infoframe()
962 hdmi_reg_writeb(hdata, HDMI_AUI_CON, HDMI_AUI_CON_NO_TRAN); in hdmi_reg_infoframe()
968 hdmi_reg_writeb(hdata, HDMI_AVI_CON, HDMI_AVI_CON_EVERY_VSYNC); in hdmi_reg_infoframe()
969 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
970 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER1, in hdmi_reg_infoframe()
972 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
977 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(1), 0 << 5 | in hdmi_reg_infoframe()
985 switch (hdata->mode_conf.aspect_ratio) { in hdmi_reg_infoframe()
987 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), in hdmi_reg_infoframe()
988 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()
998 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), in hdmi_reg_infoframe()
999 hdata->mode_conf.aspect_ratio | in hdmi_reg_infoframe()
1004 vic = hdata->mode_conf.cea_video_id; in hdmi_reg_infoframe()
1005 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(4), vic); in hdmi_reg_infoframe()
1007 chksum = hdmi_chksum(hdata, HDMI_AVI_BYTE(1), in hdmi_reg_infoframe()
1010 hdmi_reg_writeb(hdata, HDMI_AVI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
1013 hdmi_reg_writeb(hdata, HDMI_AUI_CON, 0x02); in hdmi_reg_infoframe()
1014 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
1015 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER1, in hdmi_reg_infoframe()
1017 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
1020 chksum = hdmi_chksum(hdata, HDMI_AUI_BYTE(1), in hdmi_reg_infoframe()
1023 hdmi_reg_writeb(hdata, HDMI_AUI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
1033 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_detect() local
1035 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_detect()
1037 return hdata->hpd ? connector_status_connected : in hdmi_detect()
1056 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_get_modes() local
1059 if (!hdata->ddc_adpt) in hdmi_get_modes()
1062 edid = drm_get_edid(connector, hdata->ddc_adpt); in hdmi_get_modes()
1066 hdata->dvi_mode = !drm_detect_hdmi_monitor(edid); in hdmi_get_modes()
1068 (hdata->dvi_mode ? "dvi monitor" : "hdmi monitor"), in hdmi_get_modes()
1076 static int hdmi_find_phy_conf(struct hdmi_context *hdata, u32 pixel_clock) in hdmi_find_phy_conf() argument
1080 for (i = 0; i < hdata->phy_conf_count; i++) in hdmi_find_phy_conf()
1081 if (hdata->phy_confs[i].pixel_clock == pixel_clock) in hdmi_find_phy_conf()
1091 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_mode_valid() local
1103 ret = hdmi_find_phy_conf(hdata, mode->clock * 1000); in hdmi_mode_valid()
1112 struct hdmi_context *hdata = ctx_from_connector(connector); in hdmi_best_encoder() local
1114 return hdata->encoder; in hdmi_best_encoder()
1126 struct hdmi_context *hdata = display->ctx; in hdmi_create_connector() local
1127 struct drm_connector *connector = &hdata->connector; in hdmi_create_connector()
1130 hdata->encoder = encoder; in hdmi_create_connector()
1134 ret = drm_connector_init(hdata->drm_dev, connector, in hdmi_create_connector()
1234 static void hdmi_reg_acr(struct hdmi_context *hdata, u8 *acr) in hdmi_reg_acr() argument
1236 hdmi_reg_writeb(hdata, HDMI_ACR_N0, acr[6]); in hdmi_reg_acr()
1237 hdmi_reg_writeb(hdata, HDMI_ACR_N1, acr[5]); in hdmi_reg_acr()
1238 hdmi_reg_writeb(hdata, HDMI_ACR_N2, acr[4]); in hdmi_reg_acr()
1239 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS0, acr[3]); in hdmi_reg_acr()
1240 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS1, acr[2]); in hdmi_reg_acr()
1241 hdmi_reg_writeb(hdata, HDMI_ACR_MCTS2, acr[1]); in hdmi_reg_acr()
1242 hdmi_reg_writeb(hdata, HDMI_ACR_CTS0, acr[3]); in hdmi_reg_acr()
1243 hdmi_reg_writeb(hdata, HDMI_ACR_CTS1, acr[2]); in hdmi_reg_acr()
1244 hdmi_reg_writeb(hdata, HDMI_ACR_CTS2, acr[1]); in hdmi_reg_acr()
1246 if (hdata->type == HDMI_TYPE13) in hdmi_reg_acr()
1247 hdmi_reg_writeb(hdata, HDMI_V13_ACR_CON, 4); in hdmi_reg_acr()
1249 hdmi_reg_writeb(hdata, HDMI_ACR_CON, 4); in hdmi_reg_acr()
1252 static void hdmi_audio_init(struct hdmi_context *hdata) in hdmi_audio_init() argument
1278 hdmi_reg_acr(hdata, acr); in hdmi_audio_init()
1280 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CON, HDMI_I2S_IN_DISABLE in hdmi_audio_init()
1284 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CH, HDMI_I2S_CH0_EN in hdmi_audio_init()
1287 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CUV, HDMI_I2S_CUV_RL_EN); in hdmi_audio_init()
1294 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_DIS); in hdmi_audio_init()
1295 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_EN); in hdmi_audio_init()
1297 val = hdmi_reg_read(hdata, HDMI_I2S_DSD_CON) | 0x01; in hdmi_audio_init()
1298 hdmi_reg_writeb(hdata, HDMI_I2S_DSD_CON, val); in hdmi_audio_init()
1301 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_0, HDMI_I2S_SEL_SCLK(5) in hdmi_audio_init()
1303 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_1, HDMI_I2S_SEL_SDATA1(1) in hdmi_audio_init()
1305 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_2, HDMI_I2S_SEL_SDATA3(1) in hdmi_audio_init()
1307 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_3, HDMI_I2S_SEL_DSD(0)); in hdmi_audio_init()
1310 hdmi_reg_writeb(hdata, HDMI_I2S_CON_1, HDMI_I2S_SCLK_FALLING_EDGE in hdmi_audio_init()
1312 hdmi_reg_writeb(hdata, HDMI_I2S_CON_2, HDMI_I2S_MSB_FIRST_MODE in hdmi_audio_init()
1318 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_0, HDMI_I2S_CH_STATUS_MODE_0 in hdmi_audio_init()
1323 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_1, HDMI_I2S_CD_PLAYER); in hdmi_audio_init()
1324 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_2, HDMI_I2S_SET_SOURCE_NUM(0)); in hdmi_audio_init()
1325 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_3, HDMI_I2S_CLK_ACCUR_LEVEL_2 in hdmi_audio_init()
1327 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_4, in hdmi_audio_init()
1332 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_CON, HDMI_I2S_CH_STATUS_RELOAD); in hdmi_audio_init()
1335 static void hdmi_audio_control(struct hdmi_context *hdata, bool onoff) in hdmi_audio_control() argument
1337 if (hdata->dvi_mode) in hdmi_audio_control()
1340 hdmi_reg_writeb(hdata, HDMI_AUI_CON, onoff ? 2 : 0); in hdmi_audio_control()
1341 hdmi_reg_writemask(hdata, HDMI_CON_0, onoff ? in hdmi_audio_control()
1345 static void hdmi_start(struct hdmi_context *hdata, bool start) in hdmi_start() argument
1349 if (hdata->current_mode.flags & DRM_MODE_FLAG_INTERLACE) in hdmi_start()
1352 hdmi_reg_writemask(hdata, HDMI_CON_0, val, HDMI_EN); in hdmi_start()
1353 hdmi_reg_writemask(hdata, HDMI_TG_CMD, val, HDMI_TG_EN | HDMI_FIELD_EN); in hdmi_start()
1356 static void hdmi_conf_init(struct hdmi_context *hdata) in hdmi_conf_init() argument
1361 hdmi_reg_writemask(hdata, HDMI_INTC_CON, 0, HDMI_INTC_EN_GLOBAL | in hdmi_conf_init()
1365 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1368 hdmi_reg_writeb(hdata, HDMI_CON_2, 0); in hdmi_conf_init()
1370 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_BLUE_SCR_EN); in hdmi_conf_init()
1372 if (hdata->dvi_mode) { in hdmi_conf_init()
1374 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1376 hdmi_reg_writeb(hdata, HDMI_CON_2, in hdmi_conf_init()
1380 if (hdata->type == HDMI_TYPE13) { in hdmi_conf_init()
1382 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_0, 0x12); in hdmi_conf_init()
1383 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_1, 0x34); in hdmi_conf_init()
1384 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_2, 0x56); in hdmi_conf_init()
1387 hdmi_reg_writeb(hdata, HDMI_V13_AVI_CON, 0x02); in hdmi_conf_init()
1389 hdmi_reg_writeb(hdata, HDMI_V13_AVI_BYTE(0), 0 << 5); in hdmi_conf_init()
1390 hdmi_reg_writemask(hdata, HDMI_CON_1, 0x10 << 5, 0x11 << 5); in hdmi_conf_init()
1392 hdmi_reg_writeb(hdata, HDMI_V13_SPD_CON, 0x02); in hdmi_conf_init()
1393 hdmi_reg_writeb(hdata, HDMI_V13_AUI_CON, 0x02); in hdmi_conf_init()
1394 hdmi_reg_writeb(hdata, HDMI_V13_ACR_CON, 0x04); in hdmi_conf_init()
1399 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1404 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1407 hdmi_reg_writemask(hdata, HDMI_CON_1, 2, 3 << 5); in hdmi_conf_init()
1411 static void hdmi_v13_mode_apply(struct hdmi_context *hdata) in hdmi_v13_mode_apply() argument
1413 const struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v13_conf.tg; in hdmi_v13_mode_apply()
1415 &hdata->mode_conf.conf.v13_conf.core; in hdmi_v13_mode_apply()
1419 hdmi_reg_writeb(hdata, HDMI_H_BLANK_0, core->h_blank[0]); in hdmi_v13_mode_apply()
1420 hdmi_reg_writeb(hdata, HDMI_H_BLANK_1, core->h_blank[1]); in hdmi_v13_mode_apply()
1421 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_0, core->v_blank[0]); in hdmi_v13_mode_apply()
1422 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_1, core->v_blank[1]); in hdmi_v13_mode_apply()
1423 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_2, core->v_blank[2]); in hdmi_v13_mode_apply()
1424 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_0, core->h_v_line[0]); in hdmi_v13_mode_apply()
1425 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_1, core->h_v_line[1]); in hdmi_v13_mode_apply()
1426 hdmi_reg_writeb(hdata, HDMI_V13_H_V_LINE_2, core->h_v_line[2]); in hdmi_v13_mode_apply()
1427 hdmi_reg_writeb(hdata, HDMI_VSYNC_POL, core->vsync_pol[0]); in hdmi_v13_mode_apply()
1428 hdmi_reg_writeb(hdata, HDMI_INT_PRO_MODE, core->int_pro_mode[0]); in hdmi_v13_mode_apply()
1429 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_0, core->v_blank_f[0]); in hdmi_v13_mode_apply()
1430 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_1, core->v_blank_f[1]); in hdmi_v13_mode_apply()
1431 hdmi_reg_writeb(hdata, HDMI_V13_V_BLANK_F_2, core->v_blank_f[2]); in hdmi_v13_mode_apply()
1432 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_0, core->h_sync_gen[0]); in hdmi_v13_mode_apply()
1433 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_1, core->h_sync_gen[1]); in hdmi_v13_mode_apply()
1434 hdmi_reg_writeb(hdata, HDMI_V13_H_SYNC_GEN_2, core->h_sync_gen[2]); in hdmi_v13_mode_apply()
1435 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_0, core->v_sync_gen1[0]); in hdmi_v13_mode_apply()
1436 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_1, core->v_sync_gen1[1]); in hdmi_v13_mode_apply()
1437 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_1_2, core->v_sync_gen1[2]); in hdmi_v13_mode_apply()
1438 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_0, core->v_sync_gen2[0]); in hdmi_v13_mode_apply()
1439 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_1, core->v_sync_gen2[1]); in hdmi_v13_mode_apply()
1440 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_2_2, core->v_sync_gen2[2]); in hdmi_v13_mode_apply()
1441 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_0, core->v_sync_gen3[0]); in hdmi_v13_mode_apply()
1442 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_1, core->v_sync_gen3[1]); in hdmi_v13_mode_apply()
1443 hdmi_reg_writeb(hdata, HDMI_V13_V_SYNC_GEN_3_2, core->v_sync_gen3[2]); in hdmi_v13_mode_apply()
1445 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_L, tg->h_fsz[0]); in hdmi_v13_mode_apply()
1446 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_H, tg->h_fsz[1]); in hdmi_v13_mode_apply()
1447 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_L, tg->hact_st[0]); in hdmi_v13_mode_apply()
1448 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_H, tg->hact_st[1]); in hdmi_v13_mode_apply()
1449 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_L, tg->hact_sz[0]); in hdmi_v13_mode_apply()
1450 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_H, tg->hact_sz[1]); in hdmi_v13_mode_apply()
1451 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_L, tg->v_fsz[0]); in hdmi_v13_mode_apply()
1452 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_H, tg->v_fsz[1]); in hdmi_v13_mode_apply()
1453 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_L, tg->vsync[0]); in hdmi_v13_mode_apply()
1454 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_H, tg->vsync[1]); in hdmi_v13_mode_apply()
1455 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_L, tg->vsync2[0]); in hdmi_v13_mode_apply()
1456 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_H, tg->vsync2[1]); in hdmi_v13_mode_apply()
1457 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_L, tg->vact_st[0]); in hdmi_v13_mode_apply()
1458 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_H, tg->vact_st[1]); in hdmi_v13_mode_apply()
1459 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_L, tg->vact_sz[0]); in hdmi_v13_mode_apply()
1460 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_H, tg->vact_sz[1]); in hdmi_v13_mode_apply()
1461 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_L, tg->field_chg[0]); in hdmi_v13_mode_apply()
1462 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_H, tg->field_chg[1]); in hdmi_v13_mode_apply()
1463 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_L, tg->vact_st2[0]); in hdmi_v13_mode_apply()
1464 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_H, tg->vact_st2[1]); in hdmi_v13_mode_apply()
1465 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, tg->vsync_top_hdmi[0]); in hdmi_v13_mode_apply()
1466 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_H, tg->vsync_top_hdmi[1]); in hdmi_v13_mode_apply()
1467 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, tg->vsync_bot_hdmi[0]); in hdmi_v13_mode_apply()
1468 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_H, tg->vsync_bot_hdmi[1]); in hdmi_v13_mode_apply()
1469 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_L, tg->field_top_hdmi[0]); in hdmi_v13_mode_apply()
1470 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_H, tg->field_top_hdmi[1]); in hdmi_v13_mode_apply()
1471 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_L, tg->field_bot_hdmi[0]); in hdmi_v13_mode_apply()
1472 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_H, tg->field_bot_hdmi[1]); in hdmi_v13_mode_apply()
1476 u32 val = hdmi_reg_read(hdata, HDMI_V13_PHY_STATUS); in hdmi_v13_mode_apply()
1484 hdmi_regs_dump(hdata, "timing apply"); in hdmi_v13_mode_apply()
1487 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmi_v13_mode_apply()
1488 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_hdmiphy); in hdmi_v13_mode_apply()
1489 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmi_v13_mode_apply()
1492 hdmi_start(hdata, true); in hdmi_v13_mode_apply()
1495 static void hdmi_v14_mode_apply(struct hdmi_context *hdata) in hdmi_v14_mode_apply() argument
1497 const struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v14_conf.tg; in hdmi_v14_mode_apply()
1499 &hdata->mode_conf.conf.v14_conf.core; in hdmi_v14_mode_apply()
1503 hdmi_reg_writeb(hdata, HDMI_H_BLANK_0, core->h_blank[0]); in hdmi_v14_mode_apply()
1504 hdmi_reg_writeb(hdata, HDMI_H_BLANK_1, core->h_blank[1]); in hdmi_v14_mode_apply()
1505 hdmi_reg_writeb(hdata, HDMI_V2_BLANK_0, core->v2_blank[0]); in hdmi_v14_mode_apply()
1506 hdmi_reg_writeb(hdata, HDMI_V2_BLANK_1, core->v2_blank[1]); in hdmi_v14_mode_apply()
1507 hdmi_reg_writeb(hdata, HDMI_V1_BLANK_0, core->v1_blank[0]); in hdmi_v14_mode_apply()
1508 hdmi_reg_writeb(hdata, HDMI_V1_BLANK_1, core->v1_blank[1]); in hdmi_v14_mode_apply()
1509 hdmi_reg_writeb(hdata, HDMI_V_LINE_0, core->v_line[0]); in hdmi_v14_mode_apply()
1510 hdmi_reg_writeb(hdata, HDMI_V_LINE_1, core->v_line[1]); in hdmi_v14_mode_apply()
1511 hdmi_reg_writeb(hdata, HDMI_H_LINE_0, core->h_line[0]); in hdmi_v14_mode_apply()
1512 hdmi_reg_writeb(hdata, HDMI_H_LINE_1, core->h_line[1]); in hdmi_v14_mode_apply()
1513 hdmi_reg_writeb(hdata, HDMI_HSYNC_POL, core->hsync_pol[0]); in hdmi_v14_mode_apply()
1514 hdmi_reg_writeb(hdata, HDMI_VSYNC_POL, core->vsync_pol[0]); in hdmi_v14_mode_apply()
1515 hdmi_reg_writeb(hdata, HDMI_INT_PRO_MODE, core->int_pro_mode[0]); in hdmi_v14_mode_apply()
1516 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F0_0, core->v_blank_f0[0]); in hdmi_v14_mode_apply()
1517 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F0_1, core->v_blank_f0[1]); in hdmi_v14_mode_apply()
1518 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F1_0, core->v_blank_f1[0]); in hdmi_v14_mode_apply()
1519 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F1_1, core->v_blank_f1[1]); in hdmi_v14_mode_apply()
1520 hdmi_reg_writeb(hdata, HDMI_H_SYNC_START_0, core->h_sync_start[0]); in hdmi_v14_mode_apply()
1521 hdmi_reg_writeb(hdata, HDMI_H_SYNC_START_1, core->h_sync_start[1]); in hdmi_v14_mode_apply()
1522 hdmi_reg_writeb(hdata, HDMI_H_SYNC_END_0, core->h_sync_end[0]); in hdmi_v14_mode_apply()
1523 hdmi_reg_writeb(hdata, HDMI_H_SYNC_END_1, core->h_sync_end[1]); in hdmi_v14_mode_apply()
1524 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_2_0, in hdmi_v14_mode_apply()
1526 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_2_1, in hdmi_v14_mode_apply()
1528 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_1_0, in hdmi_v14_mode_apply()
1530 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_BEF_1_1, in hdmi_v14_mode_apply()
1532 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_2_0, in hdmi_v14_mode_apply()
1534 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_2_1, in hdmi_v14_mode_apply()
1536 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_1_0, in hdmi_v14_mode_apply()
1538 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_1_1, in hdmi_v14_mode_apply()
1540 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_0, in hdmi_v14_mode_apply()
1542 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_1, in hdmi_v14_mode_apply()
1544 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_0, in hdmi_v14_mode_apply()
1546 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_1, in hdmi_v14_mode_apply()
1548 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F2_0, core->v_blank_f2[0]); in hdmi_v14_mode_apply()
1549 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F2_1, core->v_blank_f2[1]); in hdmi_v14_mode_apply()
1550 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F3_0, core->v_blank_f3[0]); in hdmi_v14_mode_apply()
1551 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F3_1, core->v_blank_f3[1]); in hdmi_v14_mode_apply()
1552 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F4_0, core->v_blank_f4[0]); in hdmi_v14_mode_apply()
1553 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F4_1, core->v_blank_f4[1]); in hdmi_v14_mode_apply()
1554 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F5_0, core->v_blank_f5[0]); in hdmi_v14_mode_apply()
1555 hdmi_reg_writeb(hdata, HDMI_V_BLANK_F5_1, core->v_blank_f5[1]); in hdmi_v14_mode_apply()
1556 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_3_0, in hdmi_v14_mode_apply()
1558 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_3_1, in hdmi_v14_mode_apply()
1560 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_4_0, in hdmi_v14_mode_apply()
1562 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_4_1, in hdmi_v14_mode_apply()
1564 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_5_0, in hdmi_v14_mode_apply()
1566 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_5_1, in hdmi_v14_mode_apply()
1568 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_6_0, in hdmi_v14_mode_apply()
1570 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_6_1, in hdmi_v14_mode_apply()
1572 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_3_0, in hdmi_v14_mode_apply()
1574 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_3_1, in hdmi_v14_mode_apply()
1576 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_4_0, in hdmi_v14_mode_apply()
1578 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_4_1, in hdmi_v14_mode_apply()
1580 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_5_0, in hdmi_v14_mode_apply()
1582 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_5_1, in hdmi_v14_mode_apply()
1584 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_6_0, in hdmi_v14_mode_apply()
1586 hdmi_reg_writeb(hdata, HDMI_V_SYNC_LINE_AFT_PXL_6_1, in hdmi_v14_mode_apply()
1588 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_1_0, core->vact_space_1[0]); in hdmi_v14_mode_apply()
1589 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_1_1, core->vact_space_1[1]); in hdmi_v14_mode_apply()
1590 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_2_0, core->vact_space_2[0]); in hdmi_v14_mode_apply()
1591 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_2_1, core->vact_space_2[1]); in hdmi_v14_mode_apply()
1592 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_3_0, core->vact_space_3[0]); in hdmi_v14_mode_apply()
1593 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_3_1, core->vact_space_3[1]); in hdmi_v14_mode_apply()
1594 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_4_0, core->vact_space_4[0]); in hdmi_v14_mode_apply()
1595 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_4_1, core->vact_space_4[1]); in hdmi_v14_mode_apply()
1596 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_5_0, core->vact_space_5[0]); in hdmi_v14_mode_apply()
1597 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_5_1, core->vact_space_5[1]); in hdmi_v14_mode_apply()
1598 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_6_0, core->vact_space_6[0]); in hdmi_v14_mode_apply()
1599 hdmi_reg_writeb(hdata, HDMI_VACT_SPACE_6_1, core->vact_space_6[1]); in hdmi_v14_mode_apply()
1602 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_L, tg->h_fsz[0]); in hdmi_v14_mode_apply()
1603 hdmi_reg_writeb(hdata, HDMI_TG_H_FSZ_H, tg->h_fsz[1]); in hdmi_v14_mode_apply()
1604 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_L, tg->hact_st[0]); in hdmi_v14_mode_apply()
1605 hdmi_reg_writeb(hdata, HDMI_TG_HACT_ST_H, tg->hact_st[1]); in hdmi_v14_mode_apply()
1606 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_L, tg->hact_sz[0]); in hdmi_v14_mode_apply()
1607 hdmi_reg_writeb(hdata, HDMI_TG_HACT_SZ_H, tg->hact_sz[1]); in hdmi_v14_mode_apply()
1608 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_L, tg->v_fsz[0]); in hdmi_v14_mode_apply()
1609 hdmi_reg_writeb(hdata, HDMI_TG_V_FSZ_H, tg->v_fsz[1]); in hdmi_v14_mode_apply()
1610 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_L, tg->vsync[0]); in hdmi_v14_mode_apply()
1611 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_H, tg->vsync[1]); in hdmi_v14_mode_apply()
1612 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_L, tg->vsync2[0]); in hdmi_v14_mode_apply()
1613 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC2_H, tg->vsync2[1]); in hdmi_v14_mode_apply()
1614 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_L, tg->vact_st[0]); in hdmi_v14_mode_apply()
1615 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST_H, tg->vact_st[1]); in hdmi_v14_mode_apply()
1616 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_L, tg->vact_sz[0]); in hdmi_v14_mode_apply()
1617 hdmi_reg_writeb(hdata, HDMI_TG_VACT_SZ_H, tg->vact_sz[1]); in hdmi_v14_mode_apply()
1618 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_L, tg->field_chg[0]); in hdmi_v14_mode_apply()
1619 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_CHG_H, tg->field_chg[1]); in hdmi_v14_mode_apply()
1620 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_L, tg->vact_st2[0]); in hdmi_v14_mode_apply()
1621 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST2_H, tg->vact_st2[1]); in hdmi_v14_mode_apply()
1622 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST3_L, tg->vact_st3[0]); in hdmi_v14_mode_apply()
1623 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST3_H, tg->vact_st3[1]); in hdmi_v14_mode_apply()
1624 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST4_L, tg->vact_st4[0]); in hdmi_v14_mode_apply()
1625 hdmi_reg_writeb(hdata, HDMI_TG_VACT_ST4_H, tg->vact_st4[1]); in hdmi_v14_mode_apply()
1626 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, tg->vsync_top_hdmi[0]); in hdmi_v14_mode_apply()
1627 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_TOP_HDMI_H, tg->vsync_top_hdmi[1]); in hdmi_v14_mode_apply()
1628 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, tg->vsync_bot_hdmi[0]); in hdmi_v14_mode_apply()
1629 hdmi_reg_writeb(hdata, HDMI_TG_VSYNC_BOT_HDMI_H, tg->vsync_bot_hdmi[1]); in hdmi_v14_mode_apply()
1630 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_L, tg->field_top_hdmi[0]); in hdmi_v14_mode_apply()
1631 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_TOP_HDMI_H, tg->field_top_hdmi[1]); in hdmi_v14_mode_apply()
1632 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_L, tg->field_bot_hdmi[0]); in hdmi_v14_mode_apply()
1633 hdmi_reg_writeb(hdata, HDMI_TG_FIELD_BOT_HDMI_H, tg->field_bot_hdmi[1]); in hdmi_v14_mode_apply()
1634 hdmi_reg_writeb(hdata, HDMI_TG_3D, tg->tg_3d[0]); in hdmi_v14_mode_apply()
1638 u32 val = hdmi_reg_read(hdata, HDMI_PHY_STATUS_0); in hdmi_v14_mode_apply()
1646 hdmi_regs_dump(hdata, "timing apply"); in hdmi_v14_mode_apply()
1649 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmi_v14_mode_apply()
1650 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_hdmiphy); in hdmi_v14_mode_apply()
1651 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmi_v14_mode_apply()
1654 hdmi_start(hdata, true); in hdmi_v14_mode_apply()
1657 static void hdmi_mode_apply(struct hdmi_context *hdata) in hdmi_mode_apply() argument
1659 if (hdata->type == HDMI_TYPE13) in hdmi_mode_apply()
1660 hdmi_v13_mode_apply(hdata); in hdmi_mode_apply()
1662 hdmi_v14_mode_apply(hdata); in hdmi_mode_apply()
1665 static void hdmiphy_conf_reset(struct hdmi_context *hdata) in hdmiphy_conf_reset() argument
1670 clk_disable_unprepare(hdata->res.sclk_hdmi); in hdmiphy_conf_reset()
1671 clk_set_parent(hdata->res.mout_hdmi, hdata->res.sclk_pixel); in hdmiphy_conf_reset()
1672 clk_prepare_enable(hdata->res.sclk_hdmi); in hdmiphy_conf_reset()
1678 if (hdata->hdmiphy_port) in hdmiphy_conf_reset()
1679 i2c_master_send(hdata->hdmiphy_port, buffer, 2); in hdmiphy_conf_reset()
1681 if (hdata->type == HDMI_TYPE13) in hdmiphy_conf_reset()
1687 hdmi_reg_writemask(hdata, reg, ~0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1689 hdmi_reg_writemask(hdata, reg, 0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1693 static void hdmiphy_poweron(struct hdmi_context *hdata) in hdmiphy_poweron() argument
1695 if (hdata->type != HDMI_TYPE14) in hdmiphy_poweron()
1701 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweron()
1704 hdmiphy_reg_writeb(hdata, HDMIPHY_POWER, in hdmiphy_poweron()
1707 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweron()
1710 hdmiphy_conf_reset(hdata); in hdmiphy_poweron()
1713 static void hdmiphy_poweroff(struct hdmi_context *hdata) in hdmiphy_poweroff() argument
1715 if (hdata->type != HDMI_TYPE14) in hdmiphy_poweroff()
1721 hdmiphy_conf_reset(hdata); in hdmiphy_poweroff()
1723 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweroff()
1727 hdmiphy_reg_writeb(hdata, HDMIPHY_POWER, in hdmiphy_poweroff()
1731 hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_poweroff()
1735 static void hdmiphy_conf_apply(struct hdmi_context *hdata) in hdmiphy_conf_apply() argument
1741 i = hdmi_find_phy_conf(hdata, hdata->mode_conf.pixel_clock); in hdmiphy_conf_apply()
1747 ret = hdmiphy_reg_write_buf(hdata, 0, hdata->phy_confs[i].conf, 32); in hdmiphy_conf_apply()
1755 ret = hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, in hdmiphy_conf_apply()
1764 static void hdmi_conf_apply(struct hdmi_context *hdata) in hdmi_conf_apply() argument
1766 hdmiphy_conf_reset(hdata); in hdmi_conf_apply()
1767 hdmiphy_conf_apply(hdata); in hdmi_conf_apply()
1769 mutex_lock(&hdata->hdmi_mutex); in hdmi_conf_apply()
1770 hdmi_start(hdata, false); in hdmi_conf_apply()
1771 hdmi_conf_init(hdata); in hdmi_conf_apply()
1772 mutex_unlock(&hdata->hdmi_mutex); in hdmi_conf_apply()
1774 hdmi_audio_init(hdata); in hdmi_conf_apply()
1777 hdmi_mode_apply(hdata); in hdmi_conf_apply()
1778 hdmi_audio_control(hdata, true); in hdmi_conf_apply()
1780 hdmi_regs_dump(hdata, "start"); in hdmi_conf_apply()
1791 static void hdmi_v13_mode_set(struct hdmi_context *hdata, in hdmi_v13_mode_set() argument
1794 struct hdmi_v13_core_regs *core = &hdata->mode_conf.conf.v13_conf.core; in hdmi_v13_mode_set()
1795 struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v13_conf.tg; in hdmi_v13_mode_set()
1798 hdata->mode_conf.cea_video_id = in hdmi_v13_mode_set()
1800 hdata->mode_conf.pixel_clock = m->clock * 1000; in hdmi_v13_mode_set()
1801 hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; in hdmi_v13_mode_set()
1888 static void hdmi_v14_mode_set(struct hdmi_context *hdata, in hdmi_v14_mode_set() argument
1891 struct hdmi_tg_regs *tg = &hdata->mode_conf.conf.v14_conf.tg; in hdmi_v14_mode_set()
1893 &hdata->mode_conf.conf.v14_conf.core; in hdmi_v14_mode_set()
1895 hdata->mode_conf.cea_video_id = in hdmi_v14_mode_set()
1897 hdata->mode_conf.pixel_clock = m->clock * 1000; in hdmi_v14_mode_set()
1898 hdata->mode_conf.aspect_ratio = m->picture_aspect_ratio; in hdmi_v14_mode_set()
2003 struct hdmi_context *hdata = display->ctx; in hdmi_mode_set() local
2012 drm_mode_copy(&hdata->current_mode, mode); in hdmi_mode_set()
2014 if (hdata->type == HDMI_TYPE13) in hdmi_mode_set()
2015 hdmi_v13_mode_set(hdata, mode); in hdmi_mode_set()
2017 hdmi_v14_mode_set(hdata, mode); in hdmi_mode_set()
2022 struct hdmi_context *hdata = display->ctx; in hdmi_commit() local
2024 mutex_lock(&hdata->hdmi_mutex); in hdmi_commit()
2025 if (!hdata->powered) { in hdmi_commit()
2026 mutex_unlock(&hdata->hdmi_mutex); in hdmi_commit()
2029 mutex_unlock(&hdata->hdmi_mutex); in hdmi_commit()
2031 hdmi_conf_apply(hdata); in hdmi_commit()
2036 struct hdmi_context *hdata = display->ctx; in hdmi_poweron() local
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()
2067 struct hdmi_context *hdata = display->ctx; in hdmi_poweroff() local
2068 struct hdmi_resources *res = &hdata->res; in hdmi_poweroff()
2070 mutex_lock(&hdata->hdmi_mutex); in hdmi_poweroff()
2071 if (!hdata->powered) in hdmi_poweroff()
2073 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweroff()
2076 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_EN); in hdmi_poweroff()
2078 hdmiphy_poweroff(hdata); in hdmi_poweroff()
2080 cancel_delayed_work(&hdata->hotplug_work); in hdmi_poweroff()
2086 regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL, in hdmi_poweroff()
2091 pm_runtime_put_sync(hdata->dev); in hdmi_poweroff()
2093 mutex_lock(&hdata->hdmi_mutex); in hdmi_poweroff()
2094 hdata->powered = false; in hdmi_poweroff()
2097 mutex_unlock(&hdata->hdmi_mutex); in hdmi_poweroff()
2102 struct hdmi_context *hdata = display->ctx; in hdmi_dpms() local
2103 struct drm_encoder *encoder = hdata->encoder; in hdmi_dpms()
2153 struct hdmi_context *hdata; in hdmi_hotplug_work_func() local
2155 hdata = container_of(work, struct hdmi_context, hotplug_work.work); in hdmi_hotplug_work_func()
2157 mutex_lock(&hdata->hdmi_mutex); in hdmi_hotplug_work_func()
2158 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_hotplug_work_func()
2159 mutex_unlock(&hdata->hdmi_mutex); in hdmi_hotplug_work_func()
2161 if (hdata->drm_dev) in hdmi_hotplug_work_func()
2162 drm_helper_hpd_irq_event(hdata->drm_dev); in hdmi_hotplug_work_func()
2167 struct hdmi_context *hdata = arg; in hdmi_irq_thread() local
2169 mod_delayed_work(system_wq, &hdata->hotplug_work, in hdmi_irq_thread()
2175 static int hdmi_resources_init(struct hdmi_context *hdata) in hdmi_resources_init() argument
2177 struct device *dev = hdata->dev; in hdmi_resources_init()
2178 struct hdmi_resources *res = &hdata->res; in hdmi_resources_init()
2305 struct hdmi_context *hdata; in hdmi_bind() local
2307 hdata = hdmi_display.ctx; in hdmi_bind()
2308 hdata->drm_dev = drm_dev; in hdmi_bind()
2348 struct hdmi_context *hdata; in hdmi_probe() local
2368 hdata = devm_kzalloc(dev, sizeof(struct hdmi_context), GFP_KERNEL); in hdmi_probe()
2369 if (!hdata) { in hdmi_probe()
2374 mutex_init(&hdata->hdmi_mutex); in hdmi_probe()
2385 hdata->type = drv_data->type; in hdmi_probe()
2386 hdata->phy_confs = drv_data->phy_confs; in hdmi_probe()
2387 hdata->phy_conf_count = drv_data->phy_conf_count; in hdmi_probe()
2389 hdata->hpd_gpio = pdata->hpd_gpio; in hdmi_probe()
2390 hdata->dev = dev; in hdmi_probe()
2392 ret = hdmi_resources_init(hdata); in hdmi_probe()
2399 hdata->regs = devm_ioremap_resource(dev, res); in hdmi_probe()
2400 if (IS_ERR(hdata->regs)) { in hdmi_probe()
2401 ret = PTR_ERR(hdata->regs); in hdmi_probe()
2405 ret = devm_gpio_request(dev, hdata->hpd_gpio, "HPD"); in hdmi_probe()
2424 hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node); in hdmi_probe()
2425 if (!hdata->ddc_adpt) { in hdmi_probe()
2444 hdata->regs_hdmiphy = of_iomap(phy_node, 0); in hdmi_probe()
2445 if (!hdata->regs_hdmiphy) { in hdmi_probe()
2451 hdata->hdmiphy_port = of_find_i2c_device_by_node(phy_node); in hdmi_probe()
2452 if (!hdata->hdmiphy_port) { in hdmi_probe()
2459 hdata->irq = gpio_to_irq(hdata->hpd_gpio); in hdmi_probe()
2460 if (hdata->irq < 0) { in hdmi_probe()
2462 ret = hdata->irq; in hdmi_probe()
2466 hdata->hpd = gpio_get_value(hdata->hpd_gpio); in hdmi_probe()
2468 INIT_DELAYED_WORK(&hdata->hotplug_work, hdmi_hotplug_work_func); in hdmi_probe()
2470 ret = devm_request_threaded_irq(dev, hdata->irq, NULL, in hdmi_probe()
2473 "hdmi", hdata); in hdmi_probe()
2479 hdata->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node, in hdmi_probe()
2481 if (IS_ERR(hdata->pmureg)) { in hdmi_probe()
2488 hdmi_display.ctx = hdata; in hdmi_probe()
2500 if (hdata->hdmiphy_port) in hdmi_probe()
2501 put_device(&hdata->hdmiphy_port->dev); in hdmi_probe()
2503 put_device(&hdata->ddc_adpt->dev); in hdmi_probe()
2513 struct hdmi_context *hdata = hdmi_display.ctx; in hdmi_remove() local
2515 cancel_delayed_work_sync(&hdata->hotplug_work); in hdmi_remove()
2517 if (hdata->res.reg_hdmi_en) in hdmi_remove()
2518 regulator_disable(hdata->res.reg_hdmi_en); in hdmi_remove()
2520 if (hdata->hdmiphy_port) in hdmi_remove()
2521 put_device(&hdata->hdmiphy_port->dev); in hdmi_remove()
2522 put_device(&hdata->ddc_adpt->dev); in hdmi_remove()