Lines Matching refs:intel_dsi

48 #include "intel_dsi.h"
99 struct intel_dsi *intel_dsi;
135 static enum port intel_dsi_seq_port_to_port(struct intel_dsi *intel_dsi,
143 if (hweight8(intel_dsi->ports) == 1)
144 return ffs(intel_dsi->ports) - 1;
147 if (intel_dsi->ports & BIT(PORT_B))
149 else if (intel_dsi->ports & BIT(PORT_C))
156 static const u8 *mipi_exec_send_packet(struct intel_dsi *intel_dsi,
159 struct drm_i915_private *dev_priv = to_i915(intel_dsi->base.base.dev);
175 port = intel_dsi_seq_port_to_port(intel_dsi, seq_port);
177 if (drm_WARN_ON(&dev_priv->drm, !intel_dsi->dsi_hosts[port]))
180 dsi_device = intel_dsi->dsi_hosts[port]->device;
229 vlv_dsi_wait_for_fifo_empty(intel_dsi, port);
237 static const u8 *mipi_exec_delay(struct intel_dsi *intel_dsi, const u8 *data)
239 struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
469 static const u8 *mipi_exec_gpio(struct intel_dsi *intel_dsi, const u8 *data)
471 struct drm_device *dev = intel_dsi->base.base.dev;
473 struct intel_connector *connector = intel_dsi->attached_connector;
516 struct intel_dsi *intel_dsi = lookup->intel_dsi;
536 intel_dsi->i2c_bus_num = adapter->nr;
541 static void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
544 struct drm_device *drm_dev = intel_dsi->base.base.dev;
548 .intel_dsi = intel_dsi,
557 static inline void i2c_acpi_find_adapter(struct intel_dsi *intel_dsi,
563 static const u8 *mipi_exec_i2c(struct intel_dsi *intel_dsi, const u8 *data)
568 struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
578 if (intel_dsi->i2c_bus_num < 0) {
579 intel_dsi->i2c_bus_num = vbt_i2c_bus_num;
580 i2c_acpi_find_adapter(intel_dsi, slave_addr);
583 adapter = i2c_get_adapter(intel_dsi->i2c_bus_num);
615 static const u8 *mipi_exec_spi(struct intel_dsi *intel_dsi, const u8 *data)
617 struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
624 static const u8 *mipi_exec_pmic(struct intel_dsi *intel_dsi, const u8 *data)
626 struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
651 typedef const u8 * (*fn_mipi_elem_exec)(struct intel_dsi *intel_dsi,
690 static void intel_dsi_vbt_exec(struct intel_dsi *intel_dsi,
693 struct drm_i915_private *dev_priv = to_i915(intel_dsi->base.base.dev);
694 struct intel_connector *connector = intel_dsi->attached_connector;
737 data = mipi_elem_exec(intel_dsi, data);
761 void intel_dsi_vbt_exec_sequence(struct intel_dsi *intel_dsi,
766 if (seq_id == MIPI_SEQ_POWER_ON && intel_dsi->gpio_panel)
767 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 1);
768 if (seq_id == MIPI_SEQ_BACKLIGHT_ON && intel_dsi->gpio_backlight)
769 gpiod_set_value_cansleep(intel_dsi->gpio_backlight, 1);
771 intel_dsi_vbt_exec(intel_dsi, seq_id);
773 if (seq_id == MIPI_SEQ_POWER_OFF && intel_dsi->gpio_panel)
774 gpiod_set_value_cansleep(intel_dsi->gpio_panel, 0);
775 if (seq_id == MIPI_SEQ_BACKLIGHT_OFF && intel_dsi->gpio_backlight)
776 gpiod_set_value_cansleep(intel_dsi->gpio_backlight, 0);
780 void intel_dsi_log_params(struct intel_dsi *intel_dsi)
782 struct drm_i915_private *i915 = to_i915(intel_dsi->base.base.dev);
784 drm_dbg_kms(&i915->drm, "Pclk %d\n", intel_dsi->pclk);
786 intel_dsi->pixel_overlap);
787 drm_dbg_kms(&i915->drm, "Lane count %d\n", intel_dsi->lane_count);
788 drm_dbg_kms(&i915->drm, "DPHY param reg 0x%x\n", intel_dsi->dphy_reg);
790 intel_dsi->video_mode == NON_BURST_SYNC_PULSE ?
792 intel_dsi->video_mode == NON_BURST_SYNC_EVENTS ?
794 intel_dsi->video_mode == BURST_MODE ?
797 intel_dsi->burst_mode_ratio);
798 drm_dbg_kms(&i915->drm, "Reset timer %d\n", intel_dsi->rst_timer_val);
800 str_enabled_disabled(intel_dsi->eotp_pkt));
802 str_enabled_disabled(!intel_dsi->clock_stop));
804 intel_dsi->operation_mode ? "command" : "video");
805 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK)
808 else if (intel_dsi->dual_link == DSI_DUAL_LINK_PIXEL_ALT)
813 drm_dbg_kms(&i915->drm, "Pixel Format %d\n", intel_dsi->pixel_format);
814 drm_dbg_kms(&i915->drm, "TLPX %d\n", intel_dsi->escape_clk_div);
816 intel_dsi->lp_rx_timeout);
818 intel_dsi->turn_arnd_val);
819 drm_dbg_kms(&i915->drm, "Init Count 0x%x\n", intel_dsi->init_count);
821 intel_dsi->hs_to_lp_count);
822 drm_dbg_kms(&i915->drm, "LP Byte Clock %d\n", intel_dsi->lp_byte_clk);
823 drm_dbg_kms(&i915->drm, "DBI BW Timer 0x%x\n", intel_dsi->bw_timer);
825 intel_dsi->clk_lp_to_hs_count);
827 intel_dsi->clk_hs_to_lp_count);
829 str_enabled_disabled(!(intel_dsi->video_frmt_cfg_bits & DISABLE_VIDEO_BTA)));
832 bool intel_dsi_vbt_init(struct intel_dsi *intel_dsi, u16 panel_id)
834 struct drm_device *dev = intel_dsi->base.base.dev;
836 struct intel_connector *connector = intel_dsi->attached_connector;
845 intel_dsi->eotp_pkt = mipi_config->eot_pkt_disabled ? 0 : 1;
846 intel_dsi->clock_stop = mipi_config->enable_clk_stop ? 1 : 0;
847 intel_dsi->lane_count = mipi_config->lane_cnt + 1;
848 intel_dsi->pixel_format =
852 intel_dsi->dual_link = mipi_config->dual_link;
853 intel_dsi->pixel_overlap = mipi_config->pixel_overlap;
854 intel_dsi->operation_mode = mipi_config->is_cmd_mode;
855 intel_dsi->video_mode = mipi_config->video_transfer_mode;
856 intel_dsi->escape_clk_div = mipi_config->byte_clk_sel;
857 intel_dsi->lp_rx_timeout = mipi_config->lp_rx_timeout;
858 intel_dsi->hs_tx_timeout = mipi_config->hs_tx_timeout;
859 intel_dsi->turn_arnd_val = mipi_config->turn_around_timeout;
860 intel_dsi->rst_timer_val = mipi_config->device_reset_timer;
861 intel_dsi->init_count = mipi_config->master_init_timer;
862 intel_dsi->bw_timer = mipi_config->dbi_bw_timer;
863 intel_dsi->video_frmt_cfg_bits =
865 intel_dsi->bgr_enabled = mipi_config->rgb_flip;
868 intel_dsi->pclk = mode->clock;
871 if (intel_dsi->dual_link) {
872 intel_dsi->pclk /= 2;
877 if (intel_dsi->dual_link == DSI_DUAL_LINK_FRONT_BACK) {
878 intel_dsi->pclk += DIV_ROUND_UP(mode->vtotal * intel_dsi->pixel_overlap * 60, 1000);
886 if (intel_dsi->video_mode == BURST_MODE) {
888 u32 bitrate = intel_dsi_bitrate(intel_dsi);
911 intel_dsi->pclk = DIV_ROUND_UP(intel_dsi->pclk * burst_mode_ratio, 100);
920 intel_dsi->burst_mode_ratio = burst_mode_ratio;
925 intel_dsi->backlight_off_delay = pps->bl_disable_delay / 10;
926 intel_dsi->backlight_on_delay = pps->bl_enable_delay / 10;
927 intel_dsi->panel_on_delay = pps->panel_on_delay / 10;
928 intel_dsi->panel_off_delay = pps->panel_off_delay / 10;
929 intel_dsi->panel_pwr_cycle_delay = pps->panel_power_cycle_delay / 10;
931 intel_dsi->i2c_bus_num = -1;
934 for_each_dsi_port(port, intel_dsi->ports) {
935 mipi_dsi_attach(intel_dsi->dsi_hosts[port]->device);
975 void intel_dsi_vbt_gpio_init(struct intel_dsi *intel_dsi, bool panel_is_on)
979 struct drm_device *dev = intel_dsi->base.base.dev;
981 struct intel_connector *connector = intel_dsi->attached_connector;
1014 intel_dsi->gpio_panel = gpiod_get(dev->dev, "panel", flags);
1015 if (IS_ERR(intel_dsi->gpio_panel)) {
1018 intel_dsi->gpio_panel = NULL;
1023 intel_dsi->gpio_backlight =
1025 if (IS_ERR(intel_dsi->gpio_backlight)) {
1028 intel_dsi->gpio_backlight = NULL;
1034 void intel_dsi_vbt_gpio_cleanup(struct intel_dsi *intel_dsi)
1038 struct drm_device *dev = intel_dsi->base.base.dev;
1040 struct intel_connector *connector = intel_dsi->attached_connector;
1043 if (intel_dsi->gpio_panel) {
1044 gpiod_put(intel_dsi->gpio_panel);
1045 intel_dsi->gpio_panel = NULL;
1048 if (intel_dsi->gpio_backlight) {
1049 gpiod_put(intel_dsi->gpio_backlight);
1050 intel_dsi->gpio_backlight = NULL;