mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-11-01 09:13:37 +00:00
drm/i915/dsi: move connector mode functions to common file
Move DSI connector functions to intel_dsi.c and make them available to both legacy and ICL DSI. v2 by Jani: - Move the functions to intel_dsi.c - Don't reuse intel_dsi_connector_destroy() Signed-off-by: Madhav Chauhan <madhav.chauhan@intel.com> Signed-off-by: Jani Nikula <jani.nikula@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/99244c6edf4a26ef2e279c7160d22dbbb5cd95f2.1540900289.git.jani.nikula@intel.com
This commit is contained in:
parent
8e54d4fe79
commit
0d90c61ab9
3 changed files with 50 additions and 48 deletions
|
|
@ -29,6 +29,53 @@ int intel_dsi_tlpx_ns(const struct intel_dsi *intel_dsi)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int intel_dsi_get_modes(struct drm_connector *connector)
|
||||||
|
{
|
||||||
|
struct intel_connector *intel_connector = to_intel_connector(connector);
|
||||||
|
struct drm_display_mode *mode;
|
||||||
|
|
||||||
|
DRM_DEBUG_KMS("\n");
|
||||||
|
|
||||||
|
if (!intel_connector->panel.fixed_mode) {
|
||||||
|
DRM_DEBUG_KMS("no fixed mode\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
mode = drm_mode_duplicate(connector->dev,
|
||||||
|
intel_connector->panel.fixed_mode);
|
||||||
|
if (!mode) {
|
||||||
|
DRM_DEBUG_KMS("drm_mode_duplicate failed\n");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
drm_mode_probed_add(connector, mode);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
|
||||||
|
struct drm_display_mode *mode)
|
||||||
|
{
|
||||||
|
struct intel_connector *intel_connector = to_intel_connector(connector);
|
||||||
|
const struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode;
|
||||||
|
int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
|
||||||
|
|
||||||
|
DRM_DEBUG_KMS("\n");
|
||||||
|
|
||||||
|
if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
|
||||||
|
return MODE_NO_DBLESCAN;
|
||||||
|
|
||||||
|
if (fixed_mode) {
|
||||||
|
if (mode->hdisplay > fixed_mode->hdisplay)
|
||||||
|
return MODE_PANEL;
|
||||||
|
if (mode->vdisplay > fixed_mode->vdisplay)
|
||||||
|
return MODE_PANEL;
|
||||||
|
if (fixed_mode->clock > max_dotclk)
|
||||||
|
return MODE_CLOCK_HIGH;
|
||||||
|
}
|
||||||
|
|
||||||
|
return MODE_OK;
|
||||||
|
}
|
||||||
|
|
||||||
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
|
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
|
||||||
const struct mipi_dsi_host_ops *funcs,
|
const struct mipi_dsi_host_ops *funcs,
|
||||||
enum port port)
|
enum port port)
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,9 @@ int intel_dsi_tlpx_ns(const struct intel_dsi *intel_dsi);
|
||||||
/* vlv_dsi.c */
|
/* vlv_dsi.c */
|
||||||
void vlv_dsi_wait_for_fifo_empty(struct intel_dsi *intel_dsi, enum port port);
|
void vlv_dsi_wait_for_fifo_empty(struct intel_dsi *intel_dsi, enum port port);
|
||||||
enum mipi_dsi_pixel_format pixel_format_from_register_bits(u32 fmt);
|
enum mipi_dsi_pixel_format pixel_format_from_register_bits(u32 fmt);
|
||||||
|
int intel_dsi_get_modes(struct drm_connector *connector);
|
||||||
|
enum drm_mode_status intel_dsi_mode_valid(struct drm_connector *connector,
|
||||||
|
struct drm_display_mode *mode);
|
||||||
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
|
struct intel_dsi_host *intel_dsi_host_init(struct intel_dsi *intel_dsi,
|
||||||
const struct mipi_dsi_host_ops *funcs,
|
const struct mipi_dsi_host_ops *funcs,
|
||||||
enum port port);
|
enum port port);
|
||||||
|
|
|
||||||
|
|
@ -1212,31 +1212,6 @@ static void intel_dsi_get_config(struct intel_encoder *encoder,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static enum drm_mode_status
|
|
||||||
intel_dsi_mode_valid(struct drm_connector *connector,
|
|
||||||
struct drm_display_mode *mode)
|
|
||||||
{
|
|
||||||
struct intel_connector *intel_connector = to_intel_connector(connector);
|
|
||||||
const struct drm_display_mode *fixed_mode = intel_connector->panel.fixed_mode;
|
|
||||||
int max_dotclk = to_i915(connector->dev)->max_dotclk_freq;
|
|
||||||
|
|
||||||
DRM_DEBUG_KMS("\n");
|
|
||||||
|
|
||||||
if (mode->flags & DRM_MODE_FLAG_DBLSCAN)
|
|
||||||
return MODE_NO_DBLESCAN;
|
|
||||||
|
|
||||||
if (fixed_mode) {
|
|
||||||
if (mode->hdisplay > fixed_mode->hdisplay)
|
|
||||||
return MODE_PANEL;
|
|
||||||
if (mode->vdisplay > fixed_mode->vdisplay)
|
|
||||||
return MODE_PANEL;
|
|
||||||
if (fixed_mode->clock > max_dotclk)
|
|
||||||
return MODE_CLOCK_HIGH;
|
|
||||||
}
|
|
||||||
|
|
||||||
return MODE_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* return txclkesc cycles in terms of divider and duration in us */
|
/* return txclkesc cycles in terms of divider and duration in us */
|
||||||
static u16 txclkesc(u32 divider, unsigned int us)
|
static u16 txclkesc(u32 divider, unsigned int us)
|
||||||
{
|
{
|
||||||
|
|
@ -1559,29 +1534,6 @@ static void intel_dsi_unprepare(struct intel_encoder *encoder)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int intel_dsi_get_modes(struct drm_connector *connector)
|
|
||||||
{
|
|
||||||
struct intel_connector *intel_connector = to_intel_connector(connector);
|
|
||||||
struct drm_display_mode *mode;
|
|
||||||
|
|
||||||
DRM_DEBUG_KMS("\n");
|
|
||||||
|
|
||||||
if (!intel_connector->panel.fixed_mode) {
|
|
||||||
DRM_DEBUG_KMS("no fixed mode\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
mode = drm_mode_duplicate(connector->dev,
|
|
||||||
intel_connector->panel.fixed_mode);
|
|
||||||
if (!mode) {
|
|
||||||
DRM_DEBUG_KMS("drm_mode_duplicate failed\n");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
drm_mode_probed_add(connector, mode);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
|
static void intel_dsi_encoder_destroy(struct drm_encoder *encoder)
|
||||||
{
|
{
|
||||||
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
|
struct intel_dsi *intel_dsi = enc_to_intel_dsi(encoder);
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue