aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-multimedia/gstreamer/gst-plugins-bad/0001-Setup-MERAM-for-A1.patch
blob: 802d159d1c430e9eb2a0981ea6bb122bf715290e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
From 0e02696530388011f573f0a5cc91af97ed84184d Mon Sep 17 00:00:00 2001
From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
Date: Thu, 13 Sep 2012 13:14:13 +0900
Subject: [PATCH] Setup MERAM for A1

The A1 MERAM settings are different from E1 settings.  Namely A1 has
more MERAM memory available and so can use more caching.
---
 ext/directfb/dfbvideosink.c |   14 +++++++-------
 1 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/ext/directfb/dfbvideosink.c b/ext/directfb/dfbvideosink.c
index 39aa4cc..e680681 100644
--- a/ext/directfb/dfbvideosink.c
+++ b/ext/directfb/dfbvideosink.c
@@ -994,7 +994,7 @@ gst_dfbvideosink_setup (GstDfbVideoSink * dfbvideosink)
       meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[DST], MExxCTRL,
           val | (7 << 4));
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[DST], MExxCTRL,
-        0x90400702);
+        0x90c00702);
     /* NOTE: MExxSBSIZE is setting up afterward, that is in gst_dfbvideosink_setcaps(). */
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[DST], MExxSSARB,
         0);
@@ -1665,7 +1665,7 @@ gst_dfbvideosink_setup_meram (GstDfbVideoSink * dfbvideosink, GstCaps * caps,
       0) ? dfbvideosink->chroma_byte_offset / stride : video_height;
 
   /* set up a readahead icb for Y plane
-     4 lines / block-line, 8 lines held, 16 lines allocated */
+     32 lines / block-line, 32 lines held, 64 lines allocated */
   if (dfbvideosink->icby[SRC]) {
     addr =
         meram_get_icb_address (dfbvideosink->meram, dfbvideosink->icby[SRC], 0);
@@ -1680,13 +1680,13 @@ gst_dfbvideosink_setup_meram (GstDfbVideoSink * dfbvideosink, GstCaps * caps,
     return;
   }
   meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxMCNF,
-      0x010f0000);
+      0x003f0000);
   meram_read_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxCTRL, &val);
   if (val & (7 << 4))
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxCTRL,
         val | 7 << 4);
   meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxCTRL,
-      0xa0000701);
+      0xd0000701);
   meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxSSARB, 0);
   meram_write_icb (dfbvideosink->meram, dfbvideosink->icby[SRC], MExxBSIZE,
       (((sliceheight + dfbvideosink->tile_boundary_y_offset -
@@ -1717,7 +1717,7 @@ gst_dfbvideosink_setup_meram (GstDfbVideoSink * dfbvideosink, GstCaps * caps,
   uiomux_register ((void *) addr, addr, 4096 * sliceheight);
 
   /* set up a readahead icb for CbCr plane
-     4 lines / block-line, 8 lines held, 16 lines allocated */
+     16 lines / block-line, 16 lines held, 32 lines allocated */
   if (dfbvideosink->icbc[SRC]) {
     addr =
         meram_get_icb_address (dfbvideosink->meram, dfbvideosink->icbc[SRC], 0);
@@ -1733,14 +1733,14 @@ gst_dfbvideosink_setup_meram (GstDfbVideoSink * dfbvideosink, GstCaps * caps,
       return;
     }
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icbc[SRC], MExxMCNF,
-        0x010f0000);
+        0x001f0000);
     meram_read_icb (dfbvideosink->meram, dfbvideosink->icbc[SRC], MExxCTRL,
         &val);
     if (val & (7 << 4))
       meram_write_icb (dfbvideosink->meram, dfbvideosink->icbc[SRC], MExxCTRL,
           val | 7 << 4);
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icbc[SRC], MExxCTRL,
-        0xa0200701);
+        0xc0800701);
     meram_write_icb (dfbvideosink->meram, dfbvideosink->icbc[SRC], MExxBSIZE,
         (((sliceheight / 2 + dfbvideosink->tile_boundary_c_offset -
                     1) & 0x1fff) << 16) | ((stride - 1) & 0x7fff));
-- 
1.7.0.4