|
@@ -109,7 +109,7 @@ static void mdp5_vid_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
struct mdp5_kms *mdp5_kms = get_kms(encoder);
|
|
|
struct drm_device *dev = encoder->dev;
|
|
|
struct drm_connector *connector;
|
|
|
- int intf = mdp5_encoder->intf.num;
|
|
|
+ int intf = mdp5_encoder->intf->num;
|
|
|
uint32_t dtv_hsync_skew, vsync_period, vsync_len, ctrl_pol;
|
|
|
uint32_t display_v_start, display_v_end;
|
|
|
uint32_t hsync_start_x, hsync_end_x;
|
|
@@ -130,7 +130,7 @@ static void mdp5_vid_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
ctrl_pol = 0;
|
|
|
|
|
|
/* DSI controller cannot handle active-low sync signals. */
|
|
|
- if (mdp5_encoder->intf.type != INTF_DSI) {
|
|
|
+ if (mdp5_encoder->intf->type != INTF_DSI) {
|
|
|
if (mode->flags & DRM_MODE_FLAG_NHSYNC)
|
|
|
ctrl_pol |= MDP5_INTF_POLARITY_CTL_HSYNC_LOW;
|
|
|
if (mode->flags & DRM_MODE_FLAG_NVSYNC)
|
|
@@ -175,7 +175,7 @@ static void mdp5_vid_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
* DISPLAY_V_START = (VBP * HCYCLE) + HBP
|
|
|
* DISPLAY_V_END = (VBP + VACTIVE) * HCYCLE - 1 - HFP
|
|
|
*/
|
|
|
- if (mdp5_encoder->intf.type == INTF_eDP) {
|
|
|
+ if (mdp5_encoder->intf->type == INTF_eDP) {
|
|
|
display_v_start += mode->htotal - mode->hsync_start;
|
|
|
display_v_end -= mode->hsync_start - mode->hdisplay;
|
|
|
}
|
|
@@ -206,8 +206,8 @@ static void mdp5_vid_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
|
|
|
spin_unlock_irqrestore(&mdp5_encoder->intf_lock, flags);
|
|
|
|
|
|
- mdp5_crtc_set_pipeline(encoder->crtc, &mdp5_encoder->intf,
|
|
|
- mdp5_encoder->ctl);
|
|
|
+ mdp5_crtc_set_pipeline(encoder->crtc, mdp5_encoder->intf,
|
|
|
+ mdp5_encoder->ctl);
|
|
|
}
|
|
|
|
|
|
static void mdp5_vid_encoder_disable(struct drm_encoder *encoder)
|
|
@@ -216,8 +216,8 @@ static void mdp5_vid_encoder_disable(struct drm_encoder *encoder)
|
|
|
struct mdp5_kms *mdp5_kms = get_kms(encoder);
|
|
|
struct mdp5_ctl *ctl = mdp5_encoder->ctl;
|
|
|
struct mdp5_hw_mixer *mixer = mdp5_crtc_get_mixer(encoder->crtc);
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
- int intfn = mdp5_encoder->intf.num;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
+ int intfn = mdp5_encoder->intf->num;
|
|
|
unsigned long flags;
|
|
|
|
|
|
if (WARN_ON(!mdp5_encoder->enabled))
|
|
@@ -250,8 +250,8 @@ static void mdp5_vid_encoder_enable(struct drm_encoder *encoder)
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
struct mdp5_kms *mdp5_kms = get_kms(encoder);
|
|
|
struct mdp5_ctl *ctl = mdp5_encoder->ctl;
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
- int intfn = mdp5_encoder->intf.num;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
+ int intfn = intf->num;
|
|
|
unsigned long flags;
|
|
|
|
|
|
if (WARN_ON(mdp5_encoder->enabled))
|
|
@@ -273,7 +273,7 @@ static void mdp5_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
struct drm_display_mode *adjusted_mode)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
|
|
|
if (intf->mode == MDP5_INTF_DSI_MODE_COMMAND)
|
|
|
mdp5_cmd_encoder_mode_set(encoder, mode, adjusted_mode);
|
|
@@ -284,7 +284,7 @@ static void mdp5_encoder_mode_set(struct drm_encoder *encoder,
|
|
|
static void mdp5_encoder_disable(struct drm_encoder *encoder)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
|
|
|
if (intf->mode == MDP5_INTF_DSI_MODE_COMMAND)
|
|
|
mdp5_cmd_encoder_disable(encoder);
|
|
@@ -295,7 +295,7 @@ static void mdp5_encoder_disable(struct drm_encoder *encoder)
|
|
|
static void mdp5_encoder_enable(struct drm_encoder *encoder)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
|
|
|
if (intf->mode == MDP5_INTF_DSI_MODE_COMMAND)
|
|
|
mdp5_cmd_encoder_disable(encoder);
|
|
@@ -313,7 +313,7 @@ int mdp5_encoder_get_linecount(struct drm_encoder *encoder)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
struct mdp5_kms *mdp5_kms = get_kms(encoder);
|
|
|
- int intf = mdp5_encoder->intf.num;
|
|
|
+ int intf = mdp5_encoder->intf->num;
|
|
|
|
|
|
return mdp5_read(mdp5_kms, REG_MDP5_INTF_LINE_COUNT(intf));
|
|
|
}
|
|
@@ -322,7 +322,7 @@ u32 mdp5_encoder_get_framecount(struct drm_encoder *encoder)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
struct mdp5_kms *mdp5_kms = get_kms(encoder);
|
|
|
- int intf = mdp5_encoder->intf.num;
|
|
|
+ int intf = mdp5_encoder->intf->num;
|
|
|
|
|
|
return mdp5_read(mdp5_kms, REG_MDP5_INTF_FRAME_COUNT(intf));
|
|
|
}
|
|
@@ -340,7 +340,7 @@ int mdp5_vid_encoder_set_split_display(struct drm_encoder *encoder,
|
|
|
return -EINVAL;
|
|
|
|
|
|
mdp5_kms = get_kms(encoder);
|
|
|
- intf_num = mdp5_encoder->intf.num;
|
|
|
+ intf_num = mdp5_encoder->intf->num;
|
|
|
|
|
|
/* Switch slave encoder's TimingGen Sync mode,
|
|
|
* to use the master's enable signal for the slave encoder.
|
|
@@ -369,7 +369,7 @@ int mdp5_vid_encoder_set_split_display(struct drm_encoder *encoder,
|
|
|
void mdp5_encoder_set_intf_mode(struct drm_encoder *encoder, bool cmd_mode)
|
|
|
{
|
|
|
struct mdp5_encoder *mdp5_encoder = to_mdp5_encoder(encoder);
|
|
|
- struct mdp5_interface *intf = &mdp5_encoder->intf;
|
|
|
+ struct mdp5_interface *intf = mdp5_encoder->intf;
|
|
|
|
|
|
/* TODO: Expand this to set writeback modes too */
|
|
|
if (cmd_mode) {
|
|
@@ -385,7 +385,8 @@ void mdp5_encoder_set_intf_mode(struct drm_encoder *encoder, bool cmd_mode)
|
|
|
|
|
|
/* initialize encoder */
|
|
|
struct drm_encoder *mdp5_encoder_init(struct drm_device *dev,
|
|
|
- struct mdp5_interface *intf, struct mdp5_ctl *ctl)
|
|
|
+ struct mdp5_interface *intf,
|
|
|
+ struct mdp5_ctl *ctl)
|
|
|
{
|
|
|
struct drm_encoder *encoder = NULL;
|
|
|
struct mdp5_encoder *mdp5_encoder;
|
|
@@ -399,9 +400,9 @@ struct drm_encoder *mdp5_encoder_init(struct drm_device *dev,
|
|
|
goto fail;
|
|
|
}
|
|
|
|
|
|
- memcpy(&mdp5_encoder->intf, intf, sizeof(mdp5_encoder->intf));
|
|
|
encoder = &mdp5_encoder->base;
|
|
|
mdp5_encoder->ctl = ctl;
|
|
|
+ mdp5_encoder->intf = intf;
|
|
|
|
|
|
spin_lock_init(&mdp5_encoder->intf_lock);
|
|
|
|