Lines Matching refs:intel_dsi
41 struct drm_panel * (*init)(struct intel_dsi *intel_dsi, u16 panel_id);
49 static void wait_for_dsi_fifo_empty(struct intel_dsi *intel_dsi, enum port port) in wait_for_dsi_fifo_empty() argument
51 struct drm_encoder *encoder = &intel_dsi->base.base; in wait_for_dsi_fifo_empty()
95 struct drm_device *dev = intel_dsi_host->intel_dsi->base.base.dev; in intel_dsi_host_transfer()
173 static struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi, in intel_dsi_host_init() argument
184 host->intel_dsi = intel_dsi; in intel_dsi_host_init()
211 static int dpi_send_cmd(struct intel_dsi *intel_dsi, u32 cmd, bool hs, in dpi_send_cmd() argument
214 struct drm_encoder *encoder = &intel_dsi->base.base; in dpi_send_cmd()
255 static inline bool is_vid_mode(struct intel_dsi *intel_dsi) in is_vid_mode() argument
257 return intel_dsi->operation_mode == INTEL_DSI_VIDEO_MODE; in is_vid_mode()
260 static inline bool is_cmd_mode(struct intel_dsi *intel_dsi) in is_cmd_mode() argument
262 return intel_dsi->operation_mode == INTEL_DSI_COMMAND_MODE; in is_cmd_mode()
268 struct intel_dsi *intel_dsi = container_of(encoder, struct intel_dsi, in intel_dsi_compute_config() local
270 struct intel_connector *intel_connector = intel_dsi->attached_connector; in intel_dsi_compute_config()
288 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in bxt_dsi_device_ready() local
295 for_each_dsi_port(port, intel_dsi->ports) { in bxt_dsi_device_ready()
327 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in vlv_dsi_device_ready() local
342 for_each_dsi_port(port, intel_dsi->ports) { in vlv_dsi_device_ready()
378 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_port_enable() local
383 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) { in intel_dsi_port_enable()
386 intel_dsi->pixel_overlap << in intel_dsi_port_enable()
391 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_port_enable()
400 if (intel_dsi->ports == ((1 << PORT_A) | (1 << PORT_C))) { in intel_dsi_port_enable()
401 temp |= (intel_dsi->dual_link - 1) in intel_dsi_port_enable()
417 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_port_disable() local
422 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_port_disable()
436 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_enable() local
441 if (is_cmd_mode(intel_dsi)) { in intel_dsi_enable()
442 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
446 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
447 dpi_send_cmd(intel_dsi, TURN_ON, false, port); in intel_dsi_enable()
450 drm_panel_enable(intel_dsi->panel); in intel_dsi_enable()
452 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_enable()
453 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_enable()
458 intel_panel_enable_backlight(intel_dsi->attached_connector); in intel_dsi_enable()
465 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_pre_enable() local
474 if (intel_dsi->gpio_panel) in intel_dsi_pre_enable()
475 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1); in intel_dsi_pre_enable()
477 msleep(intel_dsi->panel_on_delay); in intel_dsi_pre_enable()
501 drm_panel_prepare(intel_dsi->panel); in intel_dsi_pre_enable()
503 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_pre_enable()
504 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_pre_enable()
523 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_pre_disable() local
528 intel_panel_disable_backlight(intel_dsi->attached_connector); in intel_dsi_pre_disable()
530 if (is_vid_mode(intel_dsi)) { in intel_dsi_pre_disable()
532 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_pre_disable()
533 dpi_send_cmd(intel_dsi, SHUTDOWN, false, port); in intel_dsi_pre_disable()
542 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_disable() local
548 if (is_vid_mode(intel_dsi)) { in intel_dsi_disable()
549 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_disable()
550 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_disable()
556 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_disable()
571 drm_panel_disable(intel_dsi->panel); in intel_dsi_disable()
573 for_each_dsi_port(port, intel_dsi->ports) in intel_dsi_disable()
574 wait_for_dsi_fifo_empty(intel_dsi, port); in intel_dsi_disable()
581 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_clear_device_ready() local
587 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_clear_device_ready()
629 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_post_disable() local
642 drm_panel_unprepare(intel_dsi->panel); in intel_dsi_post_disable()
644 msleep(intel_dsi->panel_off_delay); in intel_dsi_post_disable()
645 msleep(intel_dsi->panel_pwr_cycle_delay); in intel_dsi_post_disable()
648 if (intel_dsi->gpio_panel) in intel_dsi_post_disable()
649 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0); in intel_dsi_post_disable()
656 struct intel_dsi *intel_dsi = enc_to_intel_dsi(&encoder->base); in intel_dsi_get_hw_state() local
669 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_get_hw_state()
774 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in set_dsi_timings() local
777 unsigned int lane_count = intel_dsi->lane_count; in set_dsi_timings()
786 if (intel_dsi->dual_link) { in set_dsi_timings()
788 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) in set_dsi_timings()
789 hactive += intel_dsi->pixel_overlap; in set_dsi_timings()
801 intel_dsi->burst_mode_ratio); in set_dsi_timings()
802 hfp = txbyteclkhs(hfp, bpp, lane_count, intel_dsi->burst_mode_ratio); in set_dsi_timings()
804 intel_dsi->burst_mode_ratio); in set_dsi_timings()
805 hbp = txbyteclkhs(hbp, bpp, lane_count, intel_dsi->burst_mode_ratio); in set_dsi_timings()
807 for_each_dsi_port(port, intel_dsi->ports) { in set_dsi_timings()
844 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in intel_dsi_prepare() local
855 if (intel_dsi->dual_link) { in intel_dsi_prepare()
857 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) in intel_dsi_prepare()
858 mode_hdisplay += intel_dsi->pixel_overlap; in intel_dsi_prepare()
861 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_prepare()
900 I915_WRITE(MIPI_DPHY_PARAM(port), intel_dsi->dphy_reg); in intel_dsi_prepare()
909 val = intel_dsi->lane_count << DATA_LANES_PRG_REG_SHIFT; in intel_dsi_prepare()
910 if (is_cmd_mode(intel_dsi)) { in intel_dsi_prepare()
911 val |= intel_dsi->channel << CMD_MODE_CHANNEL_NUMBER_SHIFT; in intel_dsi_prepare()
914 val |= intel_dsi->channel << VID_MODE_CHANNEL_NUMBER_SHIFT; in intel_dsi_prepare()
917 val |= intel_dsi->pixel_format; in intel_dsi_prepare()
921 if (intel_dsi->eotp_pkt == 0) in intel_dsi_prepare()
923 if (intel_dsi->clock_stop) in intel_dsi_prepare()
926 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_prepare()
946 if (is_vid_mode(intel_dsi) && in intel_dsi_prepare()
947 intel_dsi->video_mode_format == VIDEO_MODE_BURST) { in intel_dsi_prepare()
950 intel_dsi->lane_count, in intel_dsi_prepare()
951 intel_dsi->burst_mode_ratio) + 1); in intel_dsi_prepare()
956 bpp, intel_dsi->lane_count, in intel_dsi_prepare()
957 intel_dsi->burst_mode_ratio) + 1); in intel_dsi_prepare()
959 I915_WRITE(MIPI_LP_RX_TIMEOUT(port), intel_dsi->lp_rx_timeout); in intel_dsi_prepare()
961 intel_dsi->turn_arnd_val); in intel_dsi_prepare()
963 intel_dsi->rst_timer_val); in intel_dsi_prepare()
969 txclkesc(intel_dsi->escape_clk_div, 100)); in intel_dsi_prepare()
971 if (IS_BROXTON(dev) && (!intel_dsi->dual_link)) { in intel_dsi_prepare()
980 intel_dsi->init_count); in intel_dsi_prepare()
987 I915_WRITE(MIPI_INIT_COUNT(port), intel_dsi->init_count); in intel_dsi_prepare()
995 intel_dsi->hs_to_lp_count); in intel_dsi_prepare()
1003 I915_WRITE(MIPI_LP_BYTECLK(port), intel_dsi->lp_byte_clk); in intel_dsi_prepare()
1010 I915_WRITE(MIPI_DBI_BW_CTRL(port), intel_dsi->bw_timer); in intel_dsi_prepare()
1013 intel_dsi->clk_lp_to_hs_count << LP_HS_SSW_CNT_SHIFT | in intel_dsi_prepare()
1014 intel_dsi->clk_hs_to_lp_count << HS_LP_PWR_SW_CNT_SHIFT); in intel_dsi_prepare()
1016 if (is_vid_mode(intel_dsi)) in intel_dsi_prepare()
1021 intel_dsi->video_frmt_cfg_bits | in intel_dsi_prepare()
1022 intel_dsi->video_mode_format | in intel_dsi_prepare()
1078 struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder); in intel_dsi_encoder_destroy() local
1080 if (intel_dsi->panel) { in intel_dsi_encoder_destroy()
1081 drm_panel_detach(intel_dsi->panel); in intel_dsi_encoder_destroy()
1083 drm_panel_remove(intel_dsi->panel); in intel_dsi_encoder_destroy()
1087 if (intel_dsi->gpio_panel) in intel_dsi_encoder_destroy()
1088 gpiod_put(intel_dsi->gpio_panel); in intel_dsi_encoder_destroy()
1115 struct intel_dsi *intel_dsi; in intel_dsi_init() local
1138 intel_dsi = kzalloc(sizeof(*intel_dsi), GFP_KERNEL); in intel_dsi_init()
1139 if (!intel_dsi) in intel_dsi_init()
1144 kfree(intel_dsi); in intel_dsi_init()
1148 intel_encoder = &intel_dsi->base; in intel_dsi_init()
1150 intel_dsi->attached_connector = intel_connector; in intel_dsi_init()
1172 intel_dsi->ports = (1 << PORT_A); in intel_dsi_init()
1175 intel_dsi->ports = (1 << PORT_C); in intel_dsi_init()
1179 intel_dsi->ports = ((1 << PORT_A) | (1 << PORT_C)); in intel_dsi_init()
1182 for_each_dsi_port(port, intel_dsi->ports) { in intel_dsi_init()
1185 host = intel_dsi_host_init(intel_dsi, port); in intel_dsi_init()
1189 intel_dsi->dsi_hosts[port] = host; in intel_dsi_init()
1193 intel_dsi->panel = intel_dsi_drivers[i].init(intel_dsi, in intel_dsi_init()
1195 if (intel_dsi->panel) in intel_dsi_init()
1199 if (!intel_dsi->panel) { in intel_dsi_init()
1209 intel_dsi->gpio_panel = in intel_dsi_init()
1212 if (IS_ERR(intel_dsi->gpio_panel)) { in intel_dsi_init()
1214 intel_dsi->gpio_panel = NULL; in intel_dsi_init()
1233 drm_panel_attach(intel_dsi->panel, connector); in intel_dsi_init()
1236 drm_panel_get_modes(intel_dsi->panel); in intel_dsi_init()
1257 kfree(intel_dsi); in intel_dsi_init()