Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 294308
b: refs/heads/master
c: e0e405b
h: refs/heads/master
v: v3
  • Loading branch information
Tomi Valkeinen committed Jan 25, 2012
1 parent 7f3bf35 commit e5af856
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 7 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 83fa2f2e940dc21a204cff697d84d37214a91708
refs/heads/master: e0e405b9252e5e8926786d796e0d4293bc90cd56
28 changes: 24 additions & 4 deletions trunk/drivers/video/omap2/dss/dispc.c
Original file line number Diff line number Diff line change
Expand Up @@ -1072,13 +1072,33 @@ void dispc_ovl_compute_fifo_thresholds(enum omap_plane plane,
*/

unsigned buf_unit = dss_feat_get_buffer_size_unit();
unsigned fifo_size, burst_size;
unsigned ovl_fifo_size, total_fifo_size, burst_size;
int i;

burst_size = dispc_ovl_get_burst_size(plane);
fifo_size = dispc_ovl_get_fifo_size(plane);
ovl_fifo_size = dispc_ovl_get_fifo_size(plane);

*fifo_low = fifo_size - burst_size;
*fifo_high = fifo_size - buf_unit;
if (use_fifomerge) {
total_fifo_size = 0;
for (i = 0; i < omap_dss_get_num_overlays(); ++i)
total_fifo_size += dispc_ovl_get_fifo_size(i);
} else {
total_fifo_size = ovl_fifo_size;
}

/*
* We use the same low threshold for both fifomerge and non-fifomerge
* cases, but for fifomerge we calculate the high threshold using the
* combined fifo size
*/

if (dss_has_feature(FEAT_OMAP3_DSI_FIFO_BUG)) {
*fifo_low = ovl_fifo_size - burst_size * 2;
*fifo_high = total_fifo_size - burst_size;
} else {
*fifo_low = ovl_fifo_size - burst_size;
*fifo_high = total_fifo_size - buf_unit;
}
}

static void dispc_ovl_set_fir(enum omap_plane plane,
Expand Down
6 changes: 4 additions & 2 deletions trunk/drivers/video/omap2/dss/dss_features.c
Original file line number Diff line number Diff line change
Expand Up @@ -370,7 +370,8 @@ static const struct omap_dss_features omap3430_dss_features = {
FEAT_LINEBUFFERSPLIT | FEAT_RESIZECONF |
FEAT_DSI_PLL_FREQSEL | FEAT_DSI_REVERSE_TXCLKESC |
FEAT_VENC_REQUIRES_TV_DAC_CLK | FEAT_CPR | FEAT_PRELOAD |
FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER | FEAT_FIFO_MERGE,
FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER | FEAT_FIFO_MERGE |
FEAT_OMAP3_DSI_FIFO_BUG,

.num_mgrs = 2,
.num_ovls = 3,
Expand All @@ -394,7 +395,8 @@ static const struct omap_dss_features omap3630_dss_features = {
FEAT_ROWREPEATENABLE | FEAT_LINEBUFFERSPLIT |
FEAT_RESIZECONF | FEAT_DSI_PLL_PWR_BUG |
FEAT_DSI_PLL_FREQSEL | FEAT_CPR | FEAT_PRELOAD |
FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER | FEAT_FIFO_MERGE,
FEAT_FIR_COEF_V | FEAT_ALPHA_FIXED_ZORDER | FEAT_FIFO_MERGE |
FEAT_OMAP3_DSI_FIFO_BUG,

.num_mgrs = 2,
.num_ovls = 3,
Expand Down
2 changes: 2 additions & 0 deletions trunk/drivers/video/omap2/dss/dss_features.h
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ enum dss_feat_id {
FEAT_ALPHA_FIXED_ZORDER = 1 << 26,
FEAT_ALPHA_FREE_ZORDER = 1 << 27,
FEAT_FIFO_MERGE = 1 << 28,
/* An unknown HW bug causing the normal FIFO thresholds not to work */
FEAT_OMAP3_DSI_FIFO_BUG = 1 << 29,
};

/* DSS register field id */
Expand Down

0 comments on commit e5af856

Please sign in to comment.