Lines Matching refs:intel_dsi

40 	struct drm_panel * (*init)(struct intel_dsi *intel_dsi, u16 panel_id);
48 static void wait_for_dsi_fifo_empty(struct intel_dsi *intel_dsi, enum port port) in wait_for_dsi_fifo_empty() argument
50 struct drm_encoder *encoder = &intel_dsi->base.base; in wait_for_dsi_fifo_empty()
94 struct drm_device *dev = intel_dsi_host->intel_dsi->base.base.dev; in intel_dsi_host_transfer()
172 static struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi, in intel_dsi_host_init() argument
183 host->intel_dsi = intel_dsi; in intel_dsi_host_init()
210 static int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs, in dpi_send_cmd() argument
213 struct drm_encoder *encoder = &intel_dsi->base.base; in dpi_send_cmd()
254 static inline bool is_vid_mode(struct intel_dsi *intel_dsi) in is_vid_mode() argument
256 return intel_dsi->operation_mode == INTEL_DSI_VIDEO_MODE; in is_vid_mode()
259 static inline bool is_cmd_mode(struct intel_dsi *intel_dsi) in is_cmd_mode() argument
261 return intel_dsi->operation_mode == INTEL_DSI_COMMAND_MODE; in is_cmd_mode()
272 struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi, in intel_dsi_compute_config() local
274 struct intel_connector *intel_connector = intel_dsi->attached_connector; in intel_dsi_compute_config()
294 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_port_enable() local
298 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) { in intel_dsi_port_enable()
301 intel_dsi->pixel_overlap << in intel_dsi_port_enable()
306 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_port_enable()
311 if (intel_dsi->ports == ((1 << PORT_A) | (1 << PORT_C))) { in intel_dsi_port_enable()
312 temp |= (intel_dsi->dual_link - 1) in intel_dsi_port_enable()
328 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_port_disable() local
332 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_port_disable()
343 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_device_ready() local
358 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_device_ready()
383 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_enable() local
388 if (is_cmd_mode(intel_dsi)) { in intel_dsi_enable()
389 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
393 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
394 dpi_send_cmd(intel_dsi, TURN_ON, false, port); in intel_dsi_enable()
397 drm_panel_enable(intel_dsi->panel); in intel_dsi_enable()
399 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
400 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_enable()
410 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_pre_enable() local
435 msleep(intel_dsi->panel_on_delay); in intel_dsi_pre_enable()
437 drm_panel_prepare(intel_dsi->panel); in intel_dsi_pre_enable()
439 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_pre_enable()
440 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_pre_enable()
459 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_pre_disable() local
464 if (is_vid_mode(intel_dsi)) { in intel_dsi_pre_disable()
466 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_pre_disable()
467 dpi_send_cmd(intel_dsi, SHUTDOWN, false, port); in intel_dsi_pre_disable()
476 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_disable() local
482 if (is_vid_mode(intel_dsi)) { in intel_dsi_disable()
483 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_disable()
484 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_disable()
490 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_disable()
497 intel_dsi->escape_clk_div << in intel_dsi_disable()
510 drm_panel_disable(intel_dsi->panel); in intel_dsi_disable()
512 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_disable()
513 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_disable()
519 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_clear_device_ready() local
524 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_clear_device_ready()
562 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_post_disable() local
575 drm_panel_unprepare(intel_dsi->panel); in intel_dsi_post_disable()
577 msleep(intel_dsi->panel_off_delay); in intel_dsi_post_disable()
578 msleep(intel_dsi->panel_pwr_cycle_delay); in intel_dsi_post_disable()
585 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_get_hw_state() local
598 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_get_hw_state()
695 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in set_dsi_timings() local
698 unsigned int lane_count = intel_dsi->lane_count; in set_dsi_timings()
707 if (intel_dsi->dual_link) { in set_dsi_timings()
709 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) in set_dsi_timings()
710 hactive += intel_dsi->pixel_overlap; in set_dsi_timings()
722 intel_dsi->burst_mode_ratio); in set_dsi_timings()
723 hfp = txbyteclkhs(hfp, bpp, lane_count, intel_dsi->burst_mode_ratio); in set_dsi_timings()
725 intel_dsi->burst_mode_ratio); in set_dsi_timings()
726 hbp = txbyteclkhs(hbp, bpp, lane_count, intel_dsi->burst_mode_ratio); in set_dsi_timings()
728 for_each_dsi_port(port, intel_dsi->ports) { in set_dsi_timings()
750 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in intel_dsi_prepare() local
762 if (intel_dsi->dual_link) { in intel_dsi_prepare()
764 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) in intel_dsi_prepare()
765 mode_hdisplay += intel_dsi->pixel_overlap; in intel_dsi_prepare()
768 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_prepare()
784 I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg); in intel_dsi_prepare()
793 val = intel_dsi->lane_count << DATA_LANES_PRG_REG_SHIFT; in intel_dsi_prepare()
794 if (is_cmd_mode(intel_dsi)) { in intel_dsi_prepare()
795 val |= intel_dsi->channel << CMD_MODE_CHANNEL_NUMBER_SHIFT; in intel_dsi_prepare()
798 val |= intel_dsi->channel << VID_MODE_CHANNEL_NUMBER_SHIFT; in intel_dsi_prepare()
801 val |= intel_dsi->pixel_format; in intel_dsi_prepare()
805 if (intel_dsi->eotp_pkt == 0) in intel_dsi_prepare()
807 if (intel_dsi->clock_stop) in intel_dsi_prepare()
810 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_prepare()
830 if (is_vid_mode(intel_dsi) && in intel_dsi_prepare()
831 intel_dsi->video_mode_format == VIDEO_MODE_BURST) { in intel_dsi_prepare()
834 intel_dsi->lane_count, in intel_dsi_prepare()
835 intel_dsi->burst_mode_ratio) + 1); in intel_dsi_prepare()
840 bpp, intel_dsi->lane_count, in intel_dsi_prepare()
841 intel_dsi->burst_mode_ratio) + 1); in intel_dsi_prepare()
843 I915_WRITE(MIPI_LP_RX_TIMEOUT(port), intel_dsi->lp_rx_timeout); in intel_dsi_prepare()
845 intel_dsi->turn_arnd_val); in intel_dsi_prepare()
847 intel_dsi->rst_timer_val); in intel_dsi_prepare()
853 txclkesc(intel_dsi->escape_clk_div, 100)); in intel_dsi_prepare()
860 I915_WRITE(MIPI_INIT_COUNT(port), intel_dsi->init_count); in intel_dsi_prepare()
868 intel_dsi->hs_to_lp_count); in intel_dsi_prepare()
876 I915_WRITE(MIPI_LP_BYTECLK(port), intel_dsi->lp_byte_clk); in intel_dsi_prepare()
883 I915_WRITE(MIPI_DBI_BW_CTRL(port), intel_dsi->bw_timer); in intel_dsi_prepare()
886 intel_dsi->clk_lp_to_hs_count << LP_HS_SSW_CNT_SHIFT | in intel_dsi_prepare()
887 intel_dsi->clk_hs_to_lp_count << HS_LP_PWR_SW_CNT_SHIFT); in intel_dsi_prepare()
889 if (is_vid_mode(intel_dsi)) in intel_dsi_prepare()
894 intel_dsi->video_frmt_cfg_bits | in intel_dsi_prepare()
895 intel_dsi->video_mode_format | in intel_dsi_prepare()
951 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in intel_dsi_encoder_destroy() local
953 if (intel_dsi->panel) { in intel_dsi_encoder_destroy()
954 drm_panel_detach(intel_dsi->panel); in intel_dsi_encoder_destroy()
956 drm_panel_remove(intel_dsi->panel); in intel_dsi_encoder_destroy()
983 struct intel_dsi *intel_dsi; in intel_dsi_init() local
1006 intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL); in intel_dsi_init()
1007 if (!intel_dsi) in intel_dsi_init()
1012 kfree(intel_dsi); in intel_dsi_init()
1016 intel_encoder = &intel_dsi->base; in intel_dsi_init()
1018 intel_dsi->attached_connector = intel_connector; in intel_dsi_init()
1041 intel_dsi->ports = (1 << PORT_A); in intel_dsi_init()
1044 intel_dsi->ports = (1 << PORT_C); in intel_dsi_init()
1048 intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); in intel_dsi_init()
1051 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_init()
1054 host = intel_dsi_host_init(intel_dsi, port); in intel_dsi_init()
1058 intel_dsi->dsi_hosts[port] = host; in intel_dsi_init()
1062 intel_dsi->panel = intel_dsi_drivers[i].init(intel_dsi, in intel_dsi_init()
1064 if (intel_dsi->panel) in intel_dsi_init()
1068 if (!intel_dsi->panel) { in intel_dsi_init()
1088 drm_panel_attach(intel_dsi->panel, connector); in intel_dsi_init()
1091 drm_panel_get_modes(intel_dsi->panel); in intel_dsi_init()
1111 kfree(intel_dsi); in intel_dsi_init()