Commit 30add22d authored by Paulo Zanoni's avatar Paulo Zanoni Committed by Daniel Vetter

drm/i915: add intel_dp_to_dev and intel_hdmi_to_dev

When we add struct intel_digital_port, there will be no direct way of
going from intel_{dp,hdmi} to drm_device: we will need to call
container_of().

This patch adds functions to go from intel_{dp,hdmi} to drm_device.
The main goal here is to greatly reduce the size of the next patch,
where we will change the implementation of the functions we just
added here (among other things).
Signed-off-by: default avatarPaulo Zanoni <paulo.r.zanoni@intel.com>
Reviewed-by: default avatarDamien Lespiau <damien.lespiau@gmail.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent fa90ecef
...@@ -74,6 +74,11 @@ static bool is_cpu_edp(struct intel_dp *intel_dp) ...@@ -74,6 +74,11 @@ static bool is_cpu_edp(struct intel_dp *intel_dp)
return is_edp(intel_dp) && !is_pch_edp(intel_dp); return is_edp(intel_dp) && !is_pch_edp(intel_dp);
} }
static struct drm_device *intel_dp_to_dev(struct intel_dp *intel_dp)
{
return intel_dp->base.base.dev;
}
static struct intel_dp *intel_attached_dp(struct drm_connector *connector) static struct intel_dp *intel_attached_dp(struct drm_connector *connector)
{ {
return enc_to_intel_dp(&intel_attached_encoder(connector)->base); return enc_to_intel_dp(&intel_attached_encoder(connector)->base);
...@@ -291,7 +296,7 @@ intel_hrawclk(struct drm_device *dev) ...@@ -291,7 +296,7 @@ intel_hrawclk(struct drm_device *dev)
static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp) static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
return (I915_READ(PCH_PP_STATUS) & PP_ON) != 0; return (I915_READ(PCH_PP_STATUS) & PP_ON) != 0;
...@@ -299,7 +304,7 @@ static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp) ...@@ -299,7 +304,7 @@ static bool ironlake_edp_have_panel_power(struct intel_dp *intel_dp)
static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp) static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
return (I915_READ(PCH_PP_CONTROL) & EDP_FORCE_VDD) != 0; return (I915_READ(PCH_PP_CONTROL) & EDP_FORCE_VDD) != 0;
...@@ -308,7 +313,7 @@ static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp) ...@@ -308,7 +313,7 @@ static bool ironlake_edp_have_panel_vdd(struct intel_dp *intel_dp)
static void static void
intel_dp_check_edp(struct intel_dp *intel_dp) intel_dp_check_edp(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
if (!is_edp(intel_dp)) if (!is_edp(intel_dp))
...@@ -327,7 +332,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp, ...@@ -327,7 +332,7 @@ intel_dp_aux_ch(struct intel_dp *intel_dp,
uint8_t *recv, int recv_size) uint8_t *recv, int recv_size)
{ {
uint32_t output_reg = intel_dp->output_reg; uint32_t output_reg = intel_dp->output_reg;
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t ch_ctl = output_reg + 0x10; uint32_t ch_ctl = output_reg + 0x10;
uint32_t ch_data = ch_ctl + 4; uint32_t ch_data = ch_ctl + 4;
...@@ -955,7 +960,7 @@ static void ironlake_wait_panel_status(struct intel_dp *intel_dp, ...@@ -955,7 +960,7 @@ static void ironlake_wait_panel_status(struct intel_dp *intel_dp,
u32 mask, u32 mask,
u32 value) u32 value)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
DRM_DEBUG_KMS("mask %08x value %08x status %08x control %08x\n", DRM_DEBUG_KMS("mask %08x value %08x status %08x control %08x\n",
...@@ -1004,7 +1009,7 @@ static u32 ironlake_get_pp_control(struct drm_i915_private *dev_priv) ...@@ -1004,7 +1009,7 @@ static u32 ironlake_get_pp_control(struct drm_i915_private *dev_priv)
void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp) void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 pp; u32 pp;
...@@ -1043,7 +1048,7 @@ void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp) ...@@ -1043,7 +1048,7 @@ void ironlake_edp_panel_vdd_on(struct intel_dp *intel_dp)
static void ironlake_panel_vdd_off_sync(struct intel_dp *intel_dp) static void ironlake_panel_vdd_off_sync(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 pp; u32 pp;
...@@ -1065,7 +1070,7 @@ static void ironlake_panel_vdd_work(struct work_struct *__work) ...@@ -1065,7 +1070,7 @@ static void ironlake_panel_vdd_work(struct work_struct *__work)
{ {
struct intel_dp *intel_dp = container_of(to_delayed_work(__work), struct intel_dp *intel_dp = container_of(to_delayed_work(__work),
struct intel_dp, panel_vdd_work); struct intel_dp, panel_vdd_work);
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
mutex_lock(&dev->mode_config.mutex); mutex_lock(&dev->mode_config.mutex);
ironlake_panel_vdd_off_sync(intel_dp); ironlake_panel_vdd_off_sync(intel_dp);
...@@ -1097,7 +1102,7 @@ void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync) ...@@ -1097,7 +1102,7 @@ void ironlake_edp_panel_vdd_off(struct intel_dp *intel_dp, bool sync)
void ironlake_edp_panel_on(struct intel_dp *intel_dp) void ironlake_edp_panel_on(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 pp; u32 pp;
...@@ -1139,7 +1144,7 @@ void ironlake_edp_panel_on(struct intel_dp *intel_dp) ...@@ -1139,7 +1144,7 @@ void ironlake_edp_panel_on(struct intel_dp *intel_dp)
void ironlake_edp_panel_off(struct intel_dp *intel_dp) void ironlake_edp_panel_off(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 pp; u32 pp;
...@@ -1164,7 +1169,7 @@ void ironlake_edp_panel_off(struct intel_dp *intel_dp) ...@@ -1164,7 +1169,7 @@ void ironlake_edp_panel_off(struct intel_dp *intel_dp)
void ironlake_edp_backlight_on(struct intel_dp *intel_dp) void ironlake_edp_backlight_on(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
int pipe = to_intel_crtc(intel_dp->base.base.crtc)->pipe; int pipe = to_intel_crtc(intel_dp->base.base.crtc)->pipe;
u32 pp; u32 pp;
...@@ -1190,7 +1195,7 @@ void ironlake_edp_backlight_on(struct intel_dp *intel_dp) ...@@ -1190,7 +1195,7 @@ void ironlake_edp_backlight_on(struct intel_dp *intel_dp)
void ironlake_edp_backlight_off(struct intel_dp *intel_dp) void ironlake_edp_backlight_off(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 pp; u32 pp;
...@@ -1209,7 +1214,7 @@ void ironlake_edp_backlight_off(struct intel_dp *intel_dp) ...@@ -1209,7 +1214,7 @@ void ironlake_edp_backlight_off(struct intel_dp *intel_dp)
static void ironlake_edp_pll_on(struct intel_dp *intel_dp) static void ironlake_edp_pll_on(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_crtc *crtc = intel_dp->base.base.crtc; struct drm_crtc *crtc = intel_dp->base.base.crtc;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 dpa_ctl; u32 dpa_ctl;
...@@ -1234,7 +1239,7 @@ static void ironlake_edp_pll_on(struct intel_dp *intel_dp) ...@@ -1234,7 +1239,7 @@ static void ironlake_edp_pll_on(struct intel_dp *intel_dp)
static void ironlake_edp_pll_off(struct intel_dp *intel_dp) static void ironlake_edp_pll_off(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_crtc *crtc = intel_dp->base.base.crtc; struct drm_crtc *crtc = intel_dp->base.base.crtc;
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
u32 dpa_ctl; u32 dpa_ctl;
...@@ -1446,7 +1451,7 @@ static char *link_train_names[] = { ...@@ -1446,7 +1451,7 @@ static char *link_train_names[] = {
static uint8_t static uint8_t
intel_dp_voltage_max(struct intel_dp *intel_dp) intel_dp_voltage_max(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
if (IS_GEN7(dev) && is_cpu_edp(intel_dp)) if (IS_GEN7(dev) && is_cpu_edp(intel_dp))
return DP_TRAIN_VOLTAGE_SWING_800; return DP_TRAIN_VOLTAGE_SWING_800;
...@@ -1459,7 +1464,7 @@ intel_dp_voltage_max(struct intel_dp *intel_dp) ...@@ -1459,7 +1464,7 @@ intel_dp_voltage_max(struct intel_dp *intel_dp)
static uint8_t static uint8_t
intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing) intel_dp_pre_emphasis_max(struct intel_dp *intel_dp, uint8_t voltage_swing)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
if (IS_HASWELL(dev)) { if (IS_HASWELL(dev)) {
switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) { switch (voltage_swing & DP_TRAIN_VOLTAGE_SWING_MASK) {
...@@ -1665,7 +1670,7 @@ intel_dp_set_link_train(struct intel_dp *intel_dp, ...@@ -1665,7 +1670,7 @@ intel_dp_set_link_train(struct intel_dp *intel_dp,
uint32_t dp_reg_value, uint32_t dp_reg_value,
uint8_t dp_train_pat) uint8_t dp_train_pat)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
int ret; int ret;
uint32_t temp; uint32_t temp;
...@@ -1862,7 +1867,7 @@ intel_dp_start_link_train(struct intel_dp *intel_dp) ...@@ -1862,7 +1867,7 @@ intel_dp_start_link_train(struct intel_dp *intel_dp)
void void
intel_dp_complete_link_train(struct intel_dp *intel_dp) intel_dp_complete_link_train(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
bool channel_eq = false; bool channel_eq = false;
int tries, cr_tries; int tries, cr_tries;
uint32_t DP = intel_dp->DP; uint32_t DP = intel_dp->DP;
...@@ -1941,7 +1946,7 @@ intel_dp_complete_link_train(struct intel_dp *intel_dp) ...@@ -1941,7 +1946,7 @@ intel_dp_complete_link_train(struct intel_dp *intel_dp)
static void static void
intel_dp_link_down(struct intel_dp *intel_dp) intel_dp_link_down(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t DP = intel_dp->DP; uint32_t DP = intel_dp->DP;
...@@ -2183,11 +2188,12 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp) ...@@ -2183,11 +2188,12 @@ intel_dp_detect_dpcd(struct intel_dp *intel_dp)
static enum drm_connector_status static enum drm_connector_status
ironlake_dp_detect(struct intel_dp *intel_dp) ironlake_dp_detect(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp_to_dev(intel_dp);
enum drm_connector_status status; enum drm_connector_status status;
/* Can't disconnect eDP, but you can close the lid... */ /* Can't disconnect eDP, but you can close the lid... */
if (is_edp(intel_dp)) { if (is_edp(intel_dp)) {
status = intel_panel_detect(intel_dp->base.base.dev); status = intel_panel_detect(dev);
if (status == connector_status_unknown) if (status == connector_status_unknown)
status = connector_status_connected; status = connector_status_connected;
return status; return status;
...@@ -2199,7 +2205,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp) ...@@ -2199,7 +2205,7 @@ ironlake_dp_detect(struct intel_dp *intel_dp)
static enum drm_connector_status static enum drm_connector_status
g4x_dp_detect(struct intel_dp *intel_dp) g4x_dp_detect(struct intel_dp *intel_dp)
{ {
struct drm_device *dev = intel_dp->base.base.dev; struct drm_device *dev = intel_dp_to_dev(intel_dp);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t bit; uint32_t bit;
......
...@@ -36,10 +36,15 @@ ...@@ -36,10 +36,15 @@
#include <drm/i915_drm.h> #include <drm/i915_drm.h>
#include "i915_drv.h" #include "i915_drv.h"
static struct drm_device *intel_hdmi_to_dev(struct intel_hdmi *intel_hdmi)
{
return intel_hdmi->base.base.dev;
}
static void static void
assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi) assert_hdmi_port_disabled(struct intel_hdmi *intel_hdmi)
{ {
struct drm_device *dev = intel_hdmi->base.base.dev; struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t enabled_bits; uint32_t enabled_bits;
...@@ -763,7 +768,7 @@ static bool intel_hdmi_mode_fixup(struct drm_encoder *encoder, ...@@ -763,7 +768,7 @@ static bool intel_hdmi_mode_fixup(struct drm_encoder *encoder,
static bool g4x_hdmi_connected(struct intel_hdmi *intel_hdmi) static bool g4x_hdmi_connected(struct intel_hdmi *intel_hdmi)
{ {
struct drm_device *dev = intel_hdmi->base.base.dev; struct drm_device *dev = intel_hdmi_to_dev(intel_hdmi);
struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_private *dev_priv = dev->dev_private;
uint32_t bit; uint32_t bit;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment