• Home
  • Raw
  • Download

Lines Matching refs:hdata

525 static inline u32 hdmi_map_reg(struct hdmi_context *hdata, u32 reg_id)  in hdmi_map_reg()  argument
528 return hdmi_reg_map[reg_id & 0xffff][hdata->drv_data->type]; in hdmi_map_reg()
532 static inline u32 hdmi_reg_read(struct hdmi_context *hdata, u32 reg_id) in hdmi_reg_read() argument
534 return readl(hdata->regs + hdmi_map_reg(hdata, reg_id)); in hdmi_reg_read()
537 static inline void hdmi_reg_writeb(struct hdmi_context *hdata, in hdmi_reg_writeb() argument
540 writel(value, hdata->regs + hdmi_map_reg(hdata, reg_id)); in hdmi_reg_writeb()
543 static inline void hdmi_reg_writev(struct hdmi_context *hdata, u32 reg_id, in hdmi_reg_writev() argument
546 reg_id = hdmi_map_reg(hdata, reg_id); in hdmi_reg_writev()
549 writel(val & 0xff, hdata->regs + reg_id); in hdmi_reg_writev()
555 static inline void hdmi_reg_writemask(struct hdmi_context *hdata, in hdmi_reg_writemask() argument
560 reg_id = hdmi_map_reg(hdata, reg_id); in hdmi_reg_writemask()
561 old = readl(hdata->regs + reg_id); in hdmi_reg_writemask()
563 writel(value, hdata->regs + reg_id); in hdmi_reg_writemask()
566 static int hdmiphy_reg_write_buf(struct hdmi_context *hdata, in hdmiphy_reg_write_buf() argument
572 if (hdata->hdmiphy_port) { in hdmiphy_reg_write_buf()
575 ret = i2c_master_send(hdata->hdmiphy_port, buf, len); in hdmiphy_reg_write_buf()
582 writel(buf[i], hdata->regs_hdmiphy + in hdmiphy_reg_write_buf()
588 static void hdmi_v13_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v13_regs_dump() argument
592 readl(hdata->regs + reg_id)) in hdmi_v13_regs_dump()
675 static void hdmi_v14_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_v14_regs_dump() argument
681 readl(hdata->regs + reg_id)) in hdmi_v14_regs_dump()
842 static void hdmi_regs_dump(struct hdmi_context *hdata, char *prefix) in hdmi_regs_dump() argument
844 if (hdata->drv_data->type == HDMI_TYPE13) in hdmi_regs_dump()
845 hdmi_v13_regs_dump(hdata, prefix); in hdmi_regs_dump()
847 hdmi_v14_regs_dump(hdata, prefix); in hdmi_regs_dump()
850 static u8 hdmi_chksum(struct hdmi_context *hdata, in hdmi_chksum() argument
859 hdr_sum += 0xff & hdmi_reg_read(hdata, start + i * 4); in hdmi_chksum()
865 static void hdmi_reg_infoframe(struct hdmi_context *hdata, in hdmi_reg_infoframe() argument
873 mod = hdmi_reg_read(hdata, HDMI_MODE_SEL); in hdmi_reg_infoframe()
874 if (hdata->dvi_mode) { in hdmi_reg_infoframe()
875 hdmi_reg_writeb(hdata, HDMI_VSI_CON, in hdmi_reg_infoframe()
877 hdmi_reg_writeb(hdata, HDMI_AVI_CON, in hdmi_reg_infoframe()
879 hdmi_reg_writeb(hdata, HDMI_AUI_CON, HDMI_AUI_CON_NO_TRAN); in hdmi_reg_infoframe()
885 hdmi_reg_writeb(hdata, HDMI_AVI_CON, HDMI_AVI_CON_EVERY_VSYNC); in hdmi_reg_infoframe()
886 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
887 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER1, in hdmi_reg_infoframe()
889 hdmi_reg_writeb(hdata, HDMI_AVI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
894 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(1), 0 << 5 | in hdmi_reg_infoframe()
902 ar = hdata->current_mode.picture_aspect_ratio; in hdmi_reg_infoframe()
915 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(2), ar); in hdmi_reg_infoframe()
917 hdmi_reg_writeb(hdata, HDMI_AVI_BYTE(4), hdata->cea_video_id); in hdmi_reg_infoframe()
919 chksum = hdmi_chksum(hdata, HDMI_AVI_BYTE(1), in hdmi_reg_infoframe()
922 hdmi_reg_writeb(hdata, HDMI_AVI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
925 hdmi_reg_writeb(hdata, HDMI_AUI_CON, 0x02); in hdmi_reg_infoframe()
926 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER0, infoframe->any.type); in hdmi_reg_infoframe()
927 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER1, in hdmi_reg_infoframe()
929 hdmi_reg_writeb(hdata, HDMI_AUI_HEADER2, infoframe->any.length); in hdmi_reg_infoframe()
932 chksum = hdmi_chksum(hdata, HDMI_AUI_BYTE(1), in hdmi_reg_infoframe()
935 hdmi_reg_writeb(hdata, HDMI_AUI_CHECK_SUM, chksum); in hdmi_reg_infoframe()
945 struct hdmi_context *hdata = connector_to_hdmi(connector); in hdmi_detect() local
947 if (gpiod_get_value(hdata->hpd_gpio)) in hdmi_detect()
971 struct hdmi_context *hdata = connector_to_hdmi(connector); in hdmi_get_modes() local
975 if (!hdata->ddc_adpt) in hdmi_get_modes()
978 edid = drm_get_edid(connector, hdata->ddc_adpt); in hdmi_get_modes()
982 hdata->dvi_mode = !drm_detect_hdmi_monitor(edid); in hdmi_get_modes()
984 (hdata->dvi_mode ? "dvi monitor" : "hdmi monitor"), in hdmi_get_modes()
996 static int hdmi_find_phy_conf(struct hdmi_context *hdata, u32 pixel_clock) in hdmi_find_phy_conf() argument
1000 for (i = 0; i < hdata->drv_data->phy_conf_count; i++) in hdmi_find_phy_conf()
1001 if (hdata->drv_data->phy_confs[i].pixel_clock == pixel_clock) in hdmi_find_phy_conf()
1011 struct hdmi_context *hdata = connector_to_hdmi(connector); in hdmi_mode_valid() local
1019 ret = hdmi_find_phy_conf(hdata, mode->clock * 1000); in hdmi_mode_valid()
1028 struct hdmi_context *hdata = connector_to_hdmi(connector); in hdmi_best_encoder() local
1030 return &hdata->encoder; in hdmi_best_encoder()
1041 struct hdmi_context *hdata = encoder_to_hdmi(encoder); in hdmi_create_connector() local
1042 struct drm_connector *connector = &hdata->connector; in hdmi_create_connector()
1048 ret = drm_connector_init(hdata->drm_dev, connector, in hdmi_create_connector()
1109 static void hdmi_reg_acr(struct hdmi_context *hdata, u32 freq) in hdmi_reg_acr() argument
1116 hdmi_reg_writev(hdata, HDMI_ACR_N0, 3, n); in hdmi_reg_acr()
1117 hdmi_reg_writev(hdata, HDMI_ACR_MCTS0, 3, cts); in hdmi_reg_acr()
1118 hdmi_reg_writev(hdata, HDMI_ACR_CTS0, 3, cts); in hdmi_reg_acr()
1119 hdmi_reg_writeb(hdata, HDMI_ACR_CON, 4); in hdmi_reg_acr()
1122 static void hdmi_audio_init(struct hdmi_context *hdata) in hdmi_audio_init() argument
1146 hdmi_reg_acr(hdata, sample_rate); in hdmi_audio_init()
1148 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CON, HDMI_I2S_IN_DISABLE in hdmi_audio_init()
1152 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CH, HDMI_I2S_CH0_EN in hdmi_audio_init()
1155 hdmi_reg_writeb(hdata, HDMI_I2S_MUX_CUV, HDMI_I2S_CUV_RL_EN); in hdmi_audio_init()
1162 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_DIS); in hdmi_audio_init()
1163 hdmi_reg_writeb(hdata, HDMI_I2S_CLK_CON, HDMI_I2S_CLK_EN); in hdmi_audio_init()
1165 val = hdmi_reg_read(hdata, HDMI_I2S_DSD_CON) | 0x01; in hdmi_audio_init()
1166 hdmi_reg_writeb(hdata, HDMI_I2S_DSD_CON, val); in hdmi_audio_init()
1169 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_0, HDMI_I2S_SEL_SCLK(5) in hdmi_audio_init()
1171 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_1, HDMI_I2S_SEL_SDATA1(1) in hdmi_audio_init()
1173 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_2, HDMI_I2S_SEL_SDATA3(1) in hdmi_audio_init()
1175 hdmi_reg_writeb(hdata, HDMI_I2S_PIN_SEL_3, HDMI_I2S_SEL_DSD(0)); in hdmi_audio_init()
1178 hdmi_reg_writeb(hdata, HDMI_I2S_CON_1, HDMI_I2S_SCLK_FALLING_EDGE in hdmi_audio_init()
1180 hdmi_reg_writeb(hdata, HDMI_I2S_CON_2, HDMI_I2S_MSB_FIRST_MODE in hdmi_audio_init()
1186 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_0, HDMI_I2S_CH_STATUS_MODE_0 in hdmi_audio_init()
1191 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_1, HDMI_I2S_CD_PLAYER); in hdmi_audio_init()
1192 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_2, HDMI_I2S_SET_SOURCE_NUM(0)); in hdmi_audio_init()
1193 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_3, HDMI_I2S_CLK_ACCUR_LEVEL_2 in hdmi_audio_init()
1195 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_4, in hdmi_audio_init()
1200 hdmi_reg_writeb(hdata, HDMI_I2S_CH_ST_CON, HDMI_I2S_CH_STATUS_RELOAD); in hdmi_audio_init()
1203 static void hdmi_audio_control(struct hdmi_context *hdata, bool onoff) in hdmi_audio_control() argument
1205 if (hdata->dvi_mode) in hdmi_audio_control()
1208 hdmi_reg_writeb(hdata, HDMI_AUI_CON, onoff ? 2 : 0); in hdmi_audio_control()
1209 hdmi_reg_writemask(hdata, HDMI_CON_0, onoff ? in hdmi_audio_control()
1213 static void hdmi_start(struct hdmi_context *hdata, bool start) in hdmi_start() argument
1217 if (hdata->current_mode.flags & DRM_MODE_FLAG_INTERLACE) in hdmi_start()
1220 hdmi_reg_writemask(hdata, HDMI_CON_0, val, HDMI_EN); in hdmi_start()
1221 hdmi_reg_writemask(hdata, HDMI_TG_CMD, val, HDMI_TG_EN | HDMI_FIELD_EN); in hdmi_start()
1224 static void hdmi_conf_init(struct hdmi_context *hdata) in hdmi_conf_init() argument
1229 hdmi_reg_writemask(hdata, HDMI_INTC_CON, 0, HDMI_INTC_EN_GLOBAL | in hdmi_conf_init()
1233 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1236 hdmi_reg_writeb(hdata, HDMI_CON_2, 0); in hdmi_conf_init()
1238 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_BLUE_SCR_EN); in hdmi_conf_init()
1240 if (hdata->dvi_mode) { in hdmi_conf_init()
1242 hdmi_reg_writemask(hdata, HDMI_MODE_SEL, in hdmi_conf_init()
1244 hdmi_reg_writeb(hdata, HDMI_CON_2, in hdmi_conf_init()
1248 if (hdata->drv_data->type == HDMI_TYPE13) { in hdmi_conf_init()
1250 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_0, 0x12); in hdmi_conf_init()
1251 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_1, 0x34); in hdmi_conf_init()
1252 hdmi_reg_writeb(hdata, HDMI_V13_BLUE_SCREEN_2, 0x56); in hdmi_conf_init()
1255 hdmi_reg_writeb(hdata, HDMI_V13_AVI_CON, 0x02); in hdmi_conf_init()
1257 hdmi_reg_writeb(hdata, HDMI_V13_AVI_BYTE(0), 0 << 5); in hdmi_conf_init()
1258 hdmi_reg_writemask(hdata, HDMI_CON_1, 0x10 << 5, 0x11 << 5); in hdmi_conf_init()
1260 hdmi_reg_writeb(hdata, HDMI_V13_SPD_CON, 0x02); in hdmi_conf_init()
1261 hdmi_reg_writeb(hdata, HDMI_V13_AUI_CON, 0x02); in hdmi_conf_init()
1262 hdmi_reg_writeb(hdata, HDMI_V13_ACR_CON, 0x04); in hdmi_conf_init()
1267 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1272 hdmi_reg_infoframe(hdata, &infoframe); in hdmi_conf_init()
1275 hdmi_reg_writemask(hdata, HDMI_CON_1, 2, 3 << 5); in hdmi_conf_init()
1279 static void hdmiphy_wait_for_pll(struct hdmi_context *hdata) in hdmiphy_wait_for_pll() argument
1284 u32 val = hdmi_reg_read(hdata, HDMI_PHY_STATUS); in hdmiphy_wait_for_pll()
1296 static void hdmi_v13_mode_apply(struct hdmi_context *hdata) in hdmi_v13_mode_apply() argument
1298 struct drm_display_mode *m = &hdata->current_mode; in hdmi_v13_mode_apply()
1301 hdmi_reg_writev(hdata, HDMI_H_BLANK_0, 2, m->htotal - m->hdisplay); in hdmi_v13_mode_apply()
1302 hdmi_reg_writev(hdata, HDMI_V13_H_V_LINE_0, 3, in hdmi_v13_mode_apply()
1306 hdmi_reg_writev(hdata, HDMI_VSYNC_POL, 1, val); in hdmi_v13_mode_apply()
1309 hdmi_reg_writev(hdata, HDMI_INT_PRO_MODE, 1, val); in hdmi_v13_mode_apply()
1314 hdmi_reg_writev(hdata, HDMI_V13_H_SYNC_GEN_0, 3, val); in hdmi_v13_mode_apply()
1327 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_1_0, 3, val); in hdmi_v13_mode_apply()
1331 hdmi_reg_writev(hdata, HDMI_V13_V_BLANK_0, 3, val); in hdmi_v13_mode_apply()
1336 hdmi_reg_writev(hdata, HDMI_V13_V_BLANK_F_0, 3, val); in hdmi_v13_mode_apply()
1340 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_2_0, 3, val); in hdmi_v13_mode_apply()
1345 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_3_0, 3, val); in hdmi_v13_mode_apply()
1347 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST_L, 2, in hdmi_v13_mode_apply()
1349 hdmi_reg_writev(hdata, HDMI_TG_VACT_SZ_L, 2, m->vdisplay / 2); in hdmi_v13_mode_apply()
1351 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST2_L, 2, 0x249); in hdmi_v13_mode_apply()
1357 hdmi_reg_writev(hdata, HDMI_V13_V_BLANK_0, 3, val); in hdmi_v13_mode_apply()
1359 hdmi_reg_writev(hdata, HDMI_V13_V_BLANK_F_0, 3, 0); in hdmi_v13_mode_apply()
1363 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_1_0, 3, val); in hdmi_v13_mode_apply()
1365 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_2_0, 3, 0x1001); in hdmi_v13_mode_apply()
1366 hdmi_reg_writev(hdata, HDMI_V13_V_SYNC_GEN_3_0, 3, 0x1001); in hdmi_v13_mode_apply()
1367 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST_L, 2, in hdmi_v13_mode_apply()
1369 hdmi_reg_writev(hdata, HDMI_TG_VACT_SZ_L, 2, m->vdisplay); in hdmi_v13_mode_apply()
1370 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST2_L, 2, 0x248); in hdmi_v13_mode_apply()
1374 hdmi_reg_writev(hdata, HDMI_TG_H_FSZ_L, 2, m->htotal); in hdmi_v13_mode_apply()
1375 hdmi_reg_writev(hdata, HDMI_TG_HACT_ST_L, 2, m->htotal - m->hdisplay); in hdmi_v13_mode_apply()
1376 hdmi_reg_writev(hdata, HDMI_TG_HACT_SZ_L, 2, m->hdisplay); in hdmi_v13_mode_apply()
1377 hdmi_reg_writev(hdata, HDMI_TG_V_FSZ_L, 2, m->vtotal); in hdmi_v13_mode_apply()
1378 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_L, 2, 0x1); in hdmi_v13_mode_apply()
1379 hdmi_reg_writev(hdata, HDMI_TG_VSYNC2_L, 2, 0x233); in hdmi_v13_mode_apply()
1380 hdmi_reg_writev(hdata, HDMI_TG_FIELD_CHG_L, 2, 0x233); in hdmi_v13_mode_apply()
1381 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, 2, 0x1); in hdmi_v13_mode_apply()
1382 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, 2, 0x233); in hdmi_v13_mode_apply()
1383 hdmi_reg_writev(hdata, HDMI_TG_FIELD_TOP_HDMI_L, 2, 0x1); in hdmi_v13_mode_apply()
1384 hdmi_reg_writev(hdata, HDMI_TG_FIELD_BOT_HDMI_L, 2, 0x233); in hdmi_v13_mode_apply()
1387 static void hdmi_v14_mode_apply(struct hdmi_context *hdata) in hdmi_v14_mode_apply() argument
1389 struct drm_display_mode *m = &hdata->current_mode; in hdmi_v14_mode_apply()
1391 hdmi_reg_writev(hdata, HDMI_H_BLANK_0, 2, m->htotal - m->hdisplay); in hdmi_v14_mode_apply()
1392 hdmi_reg_writev(hdata, HDMI_V_LINE_0, 2, m->vtotal); in hdmi_v14_mode_apply()
1393 hdmi_reg_writev(hdata, HDMI_H_LINE_0, 2, m->htotal); in hdmi_v14_mode_apply()
1394 hdmi_reg_writev(hdata, HDMI_HSYNC_POL, 1, in hdmi_v14_mode_apply()
1396 hdmi_reg_writev(hdata, HDMI_VSYNC_POL, 1, in hdmi_v14_mode_apply()
1398 hdmi_reg_writev(hdata, HDMI_INT_PRO_MODE, 1, in hdmi_v14_mode_apply()
1410 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_BEF_2_0, 2, in hdmi_v14_mode_apply()
1412 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_BEF_1_0, 2, in hdmi_v14_mode_apply()
1414 hdmi_reg_writev(hdata, HDMI_V2_BLANK_0, 2, m->vtotal / 2); in hdmi_v14_mode_apply()
1415 hdmi_reg_writev(hdata, HDMI_V1_BLANK_0, 2, in hdmi_v14_mode_apply()
1417 hdmi_reg_writev(hdata, HDMI_V_BLANK_F0_0, 2, in hdmi_v14_mode_apply()
1419 hdmi_reg_writev(hdata, HDMI_V_BLANK_F1_0, 2, m->vtotal); in hdmi_v14_mode_apply()
1420 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_2_0, 2, in hdmi_v14_mode_apply()
1422 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_1_0, 2, in hdmi_v14_mode_apply()
1424 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_0, 2, in hdmi_v14_mode_apply()
1426 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_0, 2, in hdmi_v14_mode_apply()
1428 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST_L, 2, in hdmi_v14_mode_apply()
1430 hdmi_reg_writev(hdata, HDMI_TG_VACT_SZ_L, 2, m->vdisplay / 2); in hdmi_v14_mode_apply()
1431 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST2_L, 2, in hdmi_v14_mode_apply()
1433 hdmi_reg_writev(hdata, HDMI_TG_VSYNC2_L, 2, in hdmi_v14_mode_apply()
1435 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, 2, in hdmi_v14_mode_apply()
1437 hdmi_reg_writev(hdata, HDMI_TG_FIELD_BOT_HDMI_L, 2, in hdmi_v14_mode_apply()
1439 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST3_L, 2, 0x0); in hdmi_v14_mode_apply()
1440 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST4_L, 2, 0x0); in hdmi_v14_mode_apply()
1443 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_BEF_2_0, 2, in hdmi_v14_mode_apply()
1445 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_BEF_1_0, 2, in hdmi_v14_mode_apply()
1447 hdmi_reg_writev(hdata, HDMI_V2_BLANK_0, 2, m->vtotal); in hdmi_v14_mode_apply()
1448 hdmi_reg_writev(hdata, HDMI_V1_BLANK_0, 2, in hdmi_v14_mode_apply()
1450 hdmi_reg_writev(hdata, HDMI_V_BLANK_F0_0, 2, 0xffff); in hdmi_v14_mode_apply()
1451 hdmi_reg_writev(hdata, HDMI_V_BLANK_F1_0, 2, 0xffff); in hdmi_v14_mode_apply()
1452 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_2_0, 2, 0xffff); in hdmi_v14_mode_apply()
1453 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_1_0, 2, 0xffff); in hdmi_v14_mode_apply()
1454 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_2_0, 2, 0xffff); in hdmi_v14_mode_apply()
1455 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_1_0, 2, 0xffff); in hdmi_v14_mode_apply()
1456 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST_L, 2, in hdmi_v14_mode_apply()
1458 hdmi_reg_writev(hdata, HDMI_TG_VACT_SZ_L, 2, m->vdisplay); in hdmi_v14_mode_apply()
1459 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST2_L, 2, 0x248); in hdmi_v14_mode_apply()
1460 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST3_L, 2, 0x47b); in hdmi_v14_mode_apply()
1461 hdmi_reg_writev(hdata, HDMI_TG_VACT_ST4_L, 2, 0x6ae); in hdmi_v14_mode_apply()
1462 hdmi_reg_writev(hdata, HDMI_TG_VSYNC2_L, 2, 0x233); in hdmi_v14_mode_apply()
1463 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_BOT_HDMI_L, 2, 0x233); in hdmi_v14_mode_apply()
1464 hdmi_reg_writev(hdata, HDMI_TG_FIELD_BOT_HDMI_L, 2, 0x233); in hdmi_v14_mode_apply()
1468 hdmi_reg_writev(hdata, HDMI_H_SYNC_START_0, 2, in hdmi_v14_mode_apply()
1470 hdmi_reg_writev(hdata, HDMI_H_SYNC_END_0, 2, in hdmi_v14_mode_apply()
1472 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_1_0, 2, 0xffff); in hdmi_v14_mode_apply()
1473 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_2_0, 2, 0xffff); in hdmi_v14_mode_apply()
1474 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_3_0, 2, 0xffff); in hdmi_v14_mode_apply()
1475 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_4_0, 2, 0xffff); in hdmi_v14_mode_apply()
1476 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_5_0, 2, 0xffff); in hdmi_v14_mode_apply()
1477 hdmi_reg_writev(hdata, HDMI_VACT_SPACE_6_0, 2, 0xffff); in hdmi_v14_mode_apply()
1478 hdmi_reg_writev(hdata, HDMI_V_BLANK_F2_0, 2, 0xffff); in hdmi_v14_mode_apply()
1479 hdmi_reg_writev(hdata, HDMI_V_BLANK_F3_0, 2, 0xffff); in hdmi_v14_mode_apply()
1480 hdmi_reg_writev(hdata, HDMI_V_BLANK_F4_0, 2, 0xffff); in hdmi_v14_mode_apply()
1481 hdmi_reg_writev(hdata, HDMI_V_BLANK_F5_0, 2, 0xffff); in hdmi_v14_mode_apply()
1482 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_3_0, 2, 0xffff); in hdmi_v14_mode_apply()
1483 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_4_0, 2, 0xffff); in hdmi_v14_mode_apply()
1484 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_5_0, 2, 0xffff); in hdmi_v14_mode_apply()
1485 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_6_0, 2, 0xffff); in hdmi_v14_mode_apply()
1486 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_3_0, 2, 0xffff); in hdmi_v14_mode_apply()
1487 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_4_0, 2, 0xffff); in hdmi_v14_mode_apply()
1488 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_5_0, 2, 0xffff); in hdmi_v14_mode_apply()
1489 hdmi_reg_writev(hdata, HDMI_V_SYNC_LINE_AFT_PXL_6_0, 2, 0xffff); in hdmi_v14_mode_apply()
1492 hdmi_reg_writev(hdata, HDMI_TG_H_FSZ_L, 2, m->htotal); in hdmi_v14_mode_apply()
1493 hdmi_reg_writev(hdata, HDMI_TG_HACT_ST_L, 2, m->htotal - m->hdisplay); in hdmi_v14_mode_apply()
1494 hdmi_reg_writev(hdata, HDMI_TG_HACT_SZ_L, 2, m->hdisplay); in hdmi_v14_mode_apply()
1495 hdmi_reg_writev(hdata, HDMI_TG_V_FSZ_L, 2, m->vtotal); in hdmi_v14_mode_apply()
1496 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_L, 2, 0x1); in hdmi_v14_mode_apply()
1497 hdmi_reg_writev(hdata, HDMI_TG_FIELD_CHG_L, 2, 0x233); in hdmi_v14_mode_apply()
1498 hdmi_reg_writev(hdata, HDMI_TG_VSYNC_TOP_HDMI_L, 2, 0x1); in hdmi_v14_mode_apply()
1499 hdmi_reg_writev(hdata, HDMI_TG_FIELD_TOP_HDMI_L, 2, 0x1); in hdmi_v14_mode_apply()
1500 hdmi_reg_writev(hdata, HDMI_TG_3D, 1, 0x0); in hdmi_v14_mode_apply()
1503 static void hdmi_mode_apply(struct hdmi_context *hdata) in hdmi_mode_apply() argument
1505 if (hdata->drv_data->type == HDMI_TYPE13) in hdmi_mode_apply()
1506 hdmi_v13_mode_apply(hdata); in hdmi_mode_apply()
1508 hdmi_v14_mode_apply(hdata); in hdmi_mode_apply()
1510 hdmiphy_wait_for_pll(hdata); in hdmi_mode_apply()
1512 clk_set_parent(hdata->mout_hdmi, hdata->sclk_hdmiphy); in hdmi_mode_apply()
1515 hdmi_start(hdata, true); in hdmi_mode_apply()
1518 static void hdmiphy_conf_reset(struct hdmi_context *hdata) in hdmiphy_conf_reset() argument
1520 clk_set_parent(hdata->mout_hdmi, hdata->sclk_pixel); in hdmiphy_conf_reset()
1523 hdmi_reg_writemask(hdata, HDMI_PHY_RSTOUT, ~0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1525 hdmi_reg_writemask(hdata, HDMI_PHY_RSTOUT, 0, HDMI_PHY_SW_RSTOUT); in hdmiphy_conf_reset()
1529 static void hdmiphy_conf_apply(struct hdmi_context *hdata) in hdmiphy_conf_apply() argument
1535 i = hdmi_find_phy_conf(hdata, hdata->current_mode.clock * 1000); in hdmiphy_conf_apply()
1541 ret = hdmiphy_reg_write_buf(hdata, 0, in hdmiphy_conf_apply()
1542 hdata->drv_data->phy_confs[i].conf, 32); in hdmiphy_conf_apply()
1551 static void hdmi_conf_apply(struct hdmi_context *hdata) in hdmi_conf_apply() argument
1553 hdmiphy_conf_reset(hdata); in hdmi_conf_apply()
1554 hdmiphy_conf_apply(hdata); in hdmi_conf_apply()
1556 hdmi_start(hdata, false); in hdmi_conf_apply()
1557 hdmi_conf_init(hdata); in hdmi_conf_apply()
1559 hdmi_audio_init(hdata); in hdmi_conf_apply()
1562 hdmi_mode_apply(hdata); in hdmi_conf_apply()
1563 hdmi_audio_control(hdata, true); in hdmi_conf_apply()
1565 hdmi_regs_dump(hdata, "start"); in hdmi_conf_apply()
1572 struct hdmi_context *hdata = encoder_to_hdmi(encoder); in hdmi_mode_set() local
1580 drm_mode_copy(&hdata->current_mode, m); in hdmi_mode_set()
1581 hdata->cea_video_id = drm_match_cea_mode(mode); in hdmi_mode_set()
1586 struct hdmi_context *hdata = encoder_to_hdmi(encoder); in hdmi_enable() local
1588 if (hdata->powered) in hdmi_enable()
1591 hdata->powered = true; in hdmi_enable()
1593 pm_runtime_get_sync(hdata->dev); in hdmi_enable()
1595 if (regulator_bulk_enable(ARRAY_SIZE(supply), hdata->regul_bulk)) in hdmi_enable()
1599 regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL, in hdmi_enable()
1602 clk_prepare_enable(hdata->hdmi); in hdmi_enable()
1603 clk_prepare_enable(hdata->sclk_hdmi); in hdmi_enable()
1605 hdmi_conf_apply(hdata); in hdmi_enable()
1610 struct hdmi_context *hdata = encoder_to_hdmi(encoder); in hdmi_disable() local
1614 if (!hdata->powered) in hdmi_disable()
1632 hdmi_reg_writemask(hdata, HDMI_CON_0, 0, HDMI_EN); in hdmi_disable()
1634 cancel_delayed_work(&hdata->hotplug_work); in hdmi_disable()
1636 clk_disable_unprepare(hdata->sclk_hdmi); in hdmi_disable()
1637 clk_disable_unprepare(hdata->hdmi); in hdmi_disable()
1640 regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL, in hdmi_disable()
1643 regulator_bulk_disable(ARRAY_SIZE(supply), hdata->regul_bulk); in hdmi_disable()
1645 pm_runtime_put_sync(hdata->dev); in hdmi_disable()
1647 hdata->powered = false; in hdmi_disable()
1663 struct hdmi_context *hdata; in hdmi_hotplug_work_func() local
1665 hdata = container_of(work, struct hdmi_context, hotplug_work.work); in hdmi_hotplug_work_func()
1667 if (hdata->drm_dev) in hdmi_hotplug_work_func()
1668 drm_helper_hpd_irq_event(hdata->drm_dev); in hdmi_hotplug_work_func()
1673 struct hdmi_context *hdata = arg; in hdmi_irq_thread() local
1675 mod_delayed_work(system_wq, &hdata->hotplug_work, in hdmi_irq_thread()
1681 static int hdmi_resources_init(struct hdmi_context *hdata) in hdmi_resources_init() argument
1683 struct device *dev = hdata->dev; in hdmi_resources_init()
1688 hdata->hpd_gpio = devm_gpiod_get(dev, "hpd", GPIOD_IN); in hdmi_resources_init()
1689 if (IS_ERR(hdata->hpd_gpio)) { in hdmi_resources_init()
1691 return PTR_ERR(hdata->hpd_gpio); in hdmi_resources_init()
1694 hdata->irq = gpiod_to_irq(hdata->hpd_gpio); in hdmi_resources_init()
1695 if (hdata->irq < 0) { in hdmi_resources_init()
1697 return hdata->irq; in hdmi_resources_init()
1700 hdata->hdmi = devm_clk_get(dev, "hdmi"); in hdmi_resources_init()
1701 if (IS_ERR(hdata->hdmi)) { in hdmi_resources_init()
1703 ret = PTR_ERR(hdata->hdmi); in hdmi_resources_init()
1706 hdata->sclk_hdmi = devm_clk_get(dev, "sclk_hdmi"); in hdmi_resources_init()
1707 if (IS_ERR(hdata->sclk_hdmi)) { in hdmi_resources_init()
1709 ret = PTR_ERR(hdata->sclk_hdmi); in hdmi_resources_init()
1712 hdata->sclk_pixel = devm_clk_get(dev, "sclk_pixel"); in hdmi_resources_init()
1713 if (IS_ERR(hdata->sclk_pixel)) { in hdmi_resources_init()
1715 ret = PTR_ERR(hdata->sclk_pixel); in hdmi_resources_init()
1718 hdata->sclk_hdmiphy = devm_clk_get(dev, "sclk_hdmiphy"); in hdmi_resources_init()
1719 if (IS_ERR(hdata->sclk_hdmiphy)) { in hdmi_resources_init()
1721 ret = PTR_ERR(hdata->sclk_hdmiphy); in hdmi_resources_init()
1724 hdata->mout_hdmi = devm_clk_get(dev, "mout_hdmi"); in hdmi_resources_init()
1725 if (IS_ERR(hdata->mout_hdmi)) { in hdmi_resources_init()
1727 ret = PTR_ERR(hdata->mout_hdmi); in hdmi_resources_init()
1731 clk_set_parent(hdata->mout_hdmi, hdata->sclk_pixel); in hdmi_resources_init()
1734 hdata->regul_bulk[i].supply = supply[i]; in hdmi_resources_init()
1735 hdata->regul_bulk[i].consumer = NULL; in hdmi_resources_init()
1737 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(supply), hdata->regul_bulk); in hdmi_resources_init()
1743 hdata->reg_hdmi_en = devm_regulator_get_optional(dev, "hdmi-en"); in hdmi_resources_init()
1745 if (PTR_ERR(hdata->reg_hdmi_en) == -ENODEV) in hdmi_resources_init()
1748 if (IS_ERR(hdata->reg_hdmi_en)) in hdmi_resources_init()
1749 return PTR_ERR(hdata->reg_hdmi_en); in hdmi_resources_init()
1751 ret = regulator_enable(hdata->reg_hdmi_en); in hdmi_resources_init()
1780 struct hdmi_context *hdata = dev_get_drvdata(dev); in hdmi_bind() local
1781 struct drm_encoder *encoder = &hdata->encoder; in hdmi_bind()
1784 hdata->drm_dev = drm_dev; in hdmi_bind()
1843 struct hdmi_context *hdata; in hdmi_probe() local
1847 hdata = devm_kzalloc(dev, sizeof(struct hdmi_context), GFP_KERNEL); in hdmi_probe()
1848 if (!hdata) in hdmi_probe()
1855 hdata->drv_data = match->data; in hdmi_probe()
1857 platform_set_drvdata(pdev, hdata); in hdmi_probe()
1859 hdata->dev = dev; in hdmi_probe()
1861 ret = hdmi_resources_init(hdata); in hdmi_probe()
1868 hdata->regs = devm_ioremap_resource(dev, res); in hdmi_probe()
1869 if (IS_ERR(hdata->regs)) { in hdmi_probe()
1870 ret = PTR_ERR(hdata->regs); in hdmi_probe()
1886 hdata->ddc_adpt = of_find_i2c_adapter_by_node(ddc_node); in hdmi_probe()
1887 if (!hdata->ddc_adpt) { in hdmi_probe()
1905 if (hdata->drv_data->is_apb_phy) { in hdmi_probe()
1906 hdata->regs_hdmiphy = of_iomap(phy_node, 0); in hdmi_probe()
1907 if (!hdata->regs_hdmiphy) { in hdmi_probe()
1913 hdata->hdmiphy_port = of_find_i2c_device_by_node(phy_node); in hdmi_probe()
1914 if (!hdata->hdmiphy_port) { in hdmi_probe()
1921 INIT_DELAYED_WORK(&hdata->hotplug_work, hdmi_hotplug_work_func); in hdmi_probe()
1923 ret = devm_request_threaded_irq(dev, hdata->irq, NULL, in hdmi_probe()
1926 "hdmi", hdata); in hdmi_probe()
1932 hdata->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node, in hdmi_probe()
1934 if (IS_ERR(hdata->pmureg)) { in hdmi_probe()
1952 if (hdata->hdmiphy_port) in hdmi_probe()
1953 put_device(&hdata->hdmiphy_port->dev); in hdmi_probe()
1955 put_device(&hdata->ddc_adpt->dev); in hdmi_probe()
1962 struct hdmi_context *hdata = platform_get_drvdata(pdev); in hdmi_remove() local
1964 cancel_delayed_work_sync(&hdata->hotplug_work); in hdmi_remove()
1970 if (!IS_ERR(hdata->reg_hdmi_en)) in hdmi_remove()
1971 regulator_disable(hdata->reg_hdmi_en); in hdmi_remove()
1973 if (hdata->hdmiphy_port) in hdmi_remove()
1974 put_device(&hdata->hdmiphy_port->dev); in hdmi_remove()
1976 put_device(&hdata->ddc_adpt->dev); in hdmi_remove()