diff options
| author | Dhaval Patel <pdhaval@quicinc.com> | 2016-10-19 10:55:36 -0700 |
|---|---|---|
| committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-10-19 10:55:36 -0700 |
| commit | 79ea75a79f6e618b29eacca40b2a5f655dc712dd (patch) | |
| tree | 7887f15e1a0ab5747e9f61bcf7e45b6645652b0d | |
| parent | fe44e3d9aeaf368e46a69684ab4770480caca635 (diff) | |
| parent | 8873b0865118d2b4759a0d01cb2867f9cd928905 (diff) | |
Merge "drm/msm/sde: move sde_crtc declarations into sde_crtc header" into dev/msm-4.4-drm_kms
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_crtc.h | 48 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_encoder.c | 3 | ||||
| -rw-r--r-- | drivers/gpu/drm/msm/sde/sde_kms.h | 29 |
4 files changed, 46 insertions, 44 deletions
diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.c b/drivers/gpu/drm/msm/sde/sde_crtc.c index 97ec60d1c4cc..6f06104f16a7 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.c +++ b/drivers/gpu/drm/msm/sde/sde_crtc.c @@ -26,14 +26,6 @@ #include "sde_crtc.h" #include "sde_color_processing.h" -#define CTL(i) (CTL_0 + (i)) -#define LM(i) (LM_0 + (i)) -#define INTF(i) (INTF_0 + (i)) - -/* uncomment to enable higher level IRQ msg's */ -/*#define DBG_IRQ DBG*/ -#define DBG_IRQ(fmt, ...) - /* default input fence timeout, in ms */ #define SDE_CRTC_INPUT_FENCE_TIMEOUT 2000 @@ -349,7 +341,7 @@ static void sde_crtc_vblank_cb(void *data) struct drm_crtc *crtc = (struct drm_crtc *)data; drm_crtc_handle_vblank(crtc); - DBG_IRQ(""); + DRM_DEBUG_VBL("crtc%d\n", crtc->base.id); MSM_EVT(crtc->dev, crtc->base.id, 0); } diff --git a/drivers/gpu/drm/msm/sde/sde_crtc.h b/drivers/gpu/drm/msm/sde/sde_crtc.h index a434ea2d4675..02a7ce55f5c0 100644 --- a/drivers/gpu/drm/msm/sde/sde_crtc.h +++ b/drivers/gpu/drm/msm/sde/sde_crtc.h @@ -19,10 +19,6 @@ #include "sde_kms.h" #define SDE_CRTC_NAME_SIZE 12 -#define PENDING_FLIP 2 -/* worst case one frame wait time based on 30 FPS : 33.33ms*/ -#define CRTC_MAX_WAIT_ONE_FRAME 34 -#define CRTC_HW_MIXER_MAXSTAGES(c, idx) ((c)->mixer[idx].sblk->maxblendstages) /** * struct sde_crtc_mixer: stores the map for each virtual pipeline in the CRTC @@ -49,7 +45,8 @@ struct sde_crtc_mixer { * @num_ctls : Number of ctl paths in use * @num_mixers : Number of mixers in use * @mixer : List of active mixers - * @event : Pointer to last received drm vblank event + * @event : Pointer to last received drm vblank event. If there is a + * pending vblank event, this will be non-null. * @pending : Whether or not an update is pending * @vsync_count : Running count of received vsync events * @drm_requested_vblank : Whether vblanks have been enabled in the encoder @@ -70,7 +67,6 @@ struct sde_crtc { u32 num_mixers; struct sde_crtc_mixer mixers[CRTC_DUAL_MIXERS]; - /*if there is a pending flip, these will be non-null */ struct drm_pending_vblank_event *event; u32 vsync_count; @@ -139,4 +135,44 @@ static inline uint32_t get_crtc_split_width(struct drm_crtc *crtc) return sde_crtc_mixer_width(sde_crtc, mode); } +/** + * sde_crtc_vblank - enable or disable vblanks for this crtc + * @crtc: Pointer to drm crtc object + * @en: true to enable vblanks, false to disable + */ +int sde_crtc_vblank(struct drm_crtc *crtc, bool en); + +/** + * sde_crtc_commit_kickoff - trigger kickoff of the commit for this crtc + * @crtc: Pointer to drm crtc object + */ +void sde_crtc_commit_kickoff(struct drm_crtc *crtc); + +/** + * sde_crtc_prepare_fence - callback to prepare for output fences + * @crtc: Pointer to drm crtc object + */ +void sde_crtc_prepare_fence(struct drm_crtc *crtc); + +/** + * sde_crtc_init - create a new crtc object + * @dev: sde device + * @plane: base plane + * @Return: new crtc object or error + */ +struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane); + +/** + * sde_crtc_complete_commit - callback signalling completion of current commit + * @crtc: Pointer to drm crtc object + */ +void sde_crtc_complete_commit(struct drm_crtc *crtc); + +/** + * sde_crtc_cancel_pending_flip - complete flip for clients on lastclose + * @crtc: Pointer to drm crtc object + * @file: client to cancel's file handle + */ +void sde_crtc_cancel_pending_flip(struct drm_crtc *crtc, struct drm_file *file); + #endif /* _SDE_CRTC_H_ */ diff --git a/drivers/gpu/drm/msm/sde/sde_encoder.c b/drivers/gpu/drm/msm/sde/sde_encoder.c index 62ca3b721ee2..bac319ee6889 100644 --- a/drivers/gpu/drm/msm/sde/sde_encoder.c +++ b/drivers/gpu/drm/msm/sde/sde_encoder.c @@ -41,7 +41,8 @@ #define MAX_PHYS_ENCODERS_PER_VIRTUAL \ (MAX_H_TILES_PER_DISPLAY * NUM_PHYS_ENCODER_TYPES) -#define WAIT_TIMEOUT_MSEC 100 +/* Wait timeout sized on worst case of 4 60fps frames ~= 67ms */ +#define WAIT_TIMEOUT_MSEC 67 /** * struct sde_encoder_virt - virtual encoder. Container of one or more physical diff --git a/drivers/gpu/drm/msm/sde/sde_kms.h b/drivers/gpu/drm/msm/sde/sde_kms.h index d966437608dd..5ce5282c9008 100644 --- a/drivers/gpu/drm/msm/sde/sde_kms.h +++ b/drivers/gpu/drm/msm/sde/sde_kms.h @@ -23,6 +23,7 @@ #include "sde_hw_wb.h" #include "sde_hw_top.h" #include "sde_connector.h" +#include "sde_crtc.h" #include "sde_rm.h" #include "sde_power_handle.h" #include "sde_irq.h" @@ -417,34 +418,6 @@ int sde_plane_color_fill(struct drm_plane *plane, uint32_t color, uint32_t alpha); /** - * CRTC functions - */ -int sde_crtc_vblank(struct drm_crtc *crtc, bool en); -void sde_crtc_commit_kickoff(struct drm_crtc *crtc); - -/** - * sde_crtc_prepare_fence - callback to prepare for output fences - * @crtc: Pointer to drm crtc object - */ -void sde_crtc_prepare_fence(struct drm_crtc *crtc); - -/** - * sde_crtc_init - create a new crtc object - * @dev: sde device - * @plane: base plane - * @Return: new crtc object or error - */ -struct drm_crtc *sde_crtc_init(struct drm_device *dev, struct drm_plane *plane); - -/** - * sde_crtc_complete_commit - callback signalling completion of current commit - * @crtc: Pointer to drm crtc object - */ -void sde_crtc_complete_commit(struct drm_crtc *crtc); - -void sde_crtc_cancel_pending_flip(struct drm_crtc *crtc, struct drm_file *file); - -/** * sde_encoder_get_hw_resources - Populate table of required hardware resources * @encoder: encoder pointer * @hw_res: resource table to populate with encoder required resources |
