Commit eda5dbe5 authored by Archit Taneja's avatar Archit Taneja Committed by Rob Clark

drm/msm/mdp5: Remove the pipeline stuff in mdp5_ctl

The mdp5_ctl has an 'op_mode' struct which contains info on
the downstream pipeline.

Grouping these params together in a struct doesn't serve much
purpose in the code. Maybe there was a plan to expand this
further that never happened.

Remove the op_mode struct, and place its members directly in
mdp5_ctl. This will help avoid confusion later when I introduce
my own verion of a mdp5 pipeline :)
Signed-off-by: default avatarArchit Taneja <architt@codeaurora.org>
Signed-off-by: default avatarRob Clark <robdclark@gmail.com>
parent 36d1364a
...@@ -32,13 +32,6 @@ ...@@ -32,13 +32,6 @@
#define CTL_STAT_BUSY 0x1 #define CTL_STAT_BUSY 0x1
#define CTL_STAT_BOOKED 0x2 #define CTL_STAT_BOOKED 0x2
struct op_mode {
struct mdp5_interface *intf;
bool encoder_enabled;
uint32_t start_mask;
};
struct mdp5_ctl { struct mdp5_ctl {
struct mdp5_ctl_manager *ctlm; struct mdp5_ctl_manager *ctlm;
...@@ -49,7 +42,10 @@ struct mdp5_ctl { ...@@ -49,7 +42,10 @@ struct mdp5_ctl {
u32 status; u32 status;
/* Operation Mode Configuration for the Pipeline */ /* Operation Mode Configuration for the Pipeline */
struct op_mode pipeline; struct mdp5_interface *intf;
bool encoder_enabled;
uint32_t start_mask;
/* REG_MDP5_CTL_*(<id>) registers access info + lock: */ /* REG_MDP5_CTL_*(<id>) registers access info + lock: */
spinlock_t hw_lock; spinlock_t hw_lock;
...@@ -181,9 +177,9 @@ int mdp5_ctl_set_pipeline(struct mdp5_ctl *ctl, struct mdp5_interface *intf, ...@@ -181,9 +177,9 @@ int mdp5_ctl_set_pipeline(struct mdp5_ctl *ctl, struct mdp5_interface *intf,
struct mdp5_kms *mdp5_kms = get_kms(ctl_mgr); struct mdp5_kms *mdp5_kms = get_kms(ctl_mgr);
ctl->mixer = mixer; ctl->mixer = mixer;
ctl->pipeline.intf = intf; ctl->intf = intf;
ctl->pipeline.start_mask = mdp_ctl_flush_mask_lm(mixer->lm) | ctl->start_mask = mdp_ctl_flush_mask_lm(mixer->lm) |
mdp_ctl_flush_mask_encoder(intf); mdp_ctl_flush_mask_encoder(intf);
/* Virtual interfaces need not set a display intf (e.g.: Writeback) */ /* Virtual interfaces need not set a display intf (e.g.: Writeback) */
...@@ -197,16 +193,14 @@ int mdp5_ctl_set_pipeline(struct mdp5_ctl *ctl, struct mdp5_interface *intf, ...@@ -197,16 +193,14 @@ int mdp5_ctl_set_pipeline(struct mdp5_ctl *ctl, struct mdp5_interface *intf,
static bool start_signal_needed(struct mdp5_ctl *ctl) static bool start_signal_needed(struct mdp5_ctl *ctl)
{ {
struct op_mode *pipeline = &ctl->pipeline; if (!ctl->encoder_enabled || ctl->start_mask != 0)
if (!pipeline->encoder_enabled || pipeline->start_mask != 0)
return false; return false;
switch (pipeline->intf->type) { switch (ctl->intf->type) {
case INTF_WB: case INTF_WB:
return true; return true;
case INTF_DSI: case INTF_DSI:
return pipeline->intf->mode == MDP5_INTF_DSI_MODE_COMMAND; return ctl->intf->mode == MDP5_INTF_DSI_MODE_COMMAND;
default: default:
return false; return false;
} }
...@@ -230,17 +224,16 @@ static void send_start_signal(struct mdp5_ctl *ctl) ...@@ -230,17 +224,16 @@ static void send_start_signal(struct mdp5_ctl *ctl)
static void refill_start_mask(struct mdp5_ctl *ctl) static void refill_start_mask(struct mdp5_ctl *ctl)
{ {
struct op_mode *pipeline = &ctl->pipeline; struct mdp5_interface *intf = ctl->intf;
struct mdp5_interface *intf = pipeline->intf;
pipeline->start_mask = mdp_ctl_flush_mask_lm(ctl->mixer->lm); ctl->start_mask = mdp_ctl_flush_mask_lm(ctl->mixer->lm);
/* /*
* Writeback encoder needs to program & flush * Writeback encoder needs to program & flush
* address registers for each page flip.. * address registers for each page flip..
*/ */
if (intf->type == INTF_WB) if (intf->type == INTF_WB)
pipeline->start_mask |= mdp_ctl_flush_mask_encoder(intf); ctl->start_mask |= mdp_ctl_flush_mask_encoder(intf);
} }
/** /**
...@@ -256,8 +249,8 @@ int mdp5_ctl_set_encoder_state(struct mdp5_ctl *ctl, bool enabled) ...@@ -256,8 +249,8 @@ int mdp5_ctl_set_encoder_state(struct mdp5_ctl *ctl, bool enabled)
if (WARN_ON(!ctl)) if (WARN_ON(!ctl))
return -EINVAL; return -EINVAL;
ctl->pipeline.encoder_enabled = enabled; ctl->encoder_enabled = enabled;
DBG("intf_%d: %s", ctl->pipeline.intf->num, enabled ? "on" : "off"); DBG("intf_%d: %s", ctl->intf->num, enabled ? "on" : "off");
if (start_signal_needed(ctl)) { if (start_signal_needed(ctl)) {
send_start_signal(ctl); send_start_signal(ctl);
...@@ -495,15 +488,14 @@ static void fix_for_single_flush(struct mdp5_ctl *ctl, u32 *flush_mask, ...@@ -495,15 +488,14 @@ static void fix_for_single_flush(struct mdp5_ctl *ctl, u32 *flush_mask,
u32 mdp5_ctl_commit(struct mdp5_ctl *ctl, u32 flush_mask) u32 mdp5_ctl_commit(struct mdp5_ctl *ctl, u32 flush_mask)
{ {
struct mdp5_ctl_manager *ctl_mgr = ctl->ctlm; struct mdp5_ctl_manager *ctl_mgr = ctl->ctlm;
struct op_mode *pipeline = &ctl->pipeline;
unsigned long flags; unsigned long flags;
u32 flush_id = ctl->id; u32 flush_id = ctl->id;
u32 curr_ctl_flush_mask; u32 curr_ctl_flush_mask;
pipeline->start_mask &= ~flush_mask; ctl->start_mask &= ~flush_mask;
VERB("flush_mask=%x, start_mask=%x, trigger=%x", flush_mask, VERB("flush_mask=%x, start_mask=%x, trigger=%x", flush_mask,
pipeline->start_mask, ctl->pending_ctl_trigger); ctl->start_mask, ctl->pending_ctl_trigger);
if (ctl->pending_ctl_trigger & flush_mask) { if (ctl->pending_ctl_trigger & flush_mask) {
flush_mask |= MDP5_CTL_FLUSH_CTL; flush_mask |= MDP5_CTL_FLUSH_CTL;
......
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