summaryrefslogtreecommitdiff
path: root/drivers/video/tegra
diff options
context:
space:
mode:
authorKevin Huang <kevinh@nvidia.com>2012-05-17 15:23:51 -0700
committerSimone Willett <swillett@nvidia.com>2012-05-21 11:58:14 -0700
commit1f4ccee135b9729ec09eceaddd1b573ea7366d15 (patch)
tree7612f3edc41613124fdde69cb6311e8d40160113 /drivers/video/tegra
parente13ee8192e43a3f1ee6b7ae8842adbdb33eddae8 (diff)
video: tegra: dc: Change the definitions in display feature table.
Change-Id: I13f0f7502aea7f43b2ddff12e9664c22a1d9bd21 Signed-off-by: Kevin Huang <kevinh@nvidia.com> Reviewed-on: http://git-master/r/103210 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Reviewed-by: Jon Mayo <jmayo@nvidia.com>
Diffstat (limited to 'drivers/video/tegra')
-rw-r--r--drivers/video/tegra/dc/dc_config.c40
-rw-r--r--drivers/video/tegra/dc/dc_config.h65
2 files changed, 62 insertions, 43 deletions
diff --git a/drivers/video/tegra/dc/dc_config.c b/drivers/video/tegra/dc/dc_config.c
index 828240575da8..a40712f5dca1 100644
--- a/drivers/video/tegra/dc/dc_config.c
+++ b/drivers/video/tegra/dc/dc_config.c
@@ -25,7 +25,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_a[] = {
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 0, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 0,} },
- { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 0, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 1, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_B,} },
@@ -34,7 +34,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_a[] = {
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 1, TEGRA_DC_FEATURE_FILTER_TYPE, {1, 1,} },
- { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 1, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 2, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_C,} },
@@ -42,7 +42,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_a[] = {
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 2, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 1,} },
- { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 2, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
};
@@ -52,7 +52,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_b[] = {
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 0, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 0,} },
- { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 0, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 1, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_B,} },
@@ -61,7 +61,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_b[] = {
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 1, TEGRA_DC_FEATURE_FILTER_TYPE, {1, 1,} },
- { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 1, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 2, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_C,} },
@@ -69,7 +69,7 @@ static struct tegra_dc_feature_entry t20_feature_entries_b[] = {
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 2, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 1,} },
- { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 2, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
};
@@ -87,7 +87,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_a[] = {
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 0, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 0,} },
- { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1} },
{ 0, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 1, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_B,} },
@@ -96,7 +96,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_a[] = {
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 1, TEGRA_DC_FEATURE_FILTER_TYPE, {1, 1,} },
- { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1} },
{ 1, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 2, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_C,} },
@@ -104,7 +104,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_a[] = {
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 2, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 1,} },
- { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1} },
{ 2, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
};
@@ -114,7 +114,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_b[] = {
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 0, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 0, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 0,} },
- { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 0, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 0, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 1, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_B,} },
@@ -123,7 +123,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_b[] = {
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 1, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 1, TEGRA_DC_FEATURE_FILTER_TYPE, {1, 1,} },
- { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 1, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 1, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
{ 2, TEGRA_DC_FEATURE_FORMATS, {TEGRA_WIN_FMT_WIN_C,} },
@@ -131,7 +131,7 @@ static struct tegra_dc_feature_entry t30_feature_entries_b[] = {
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SIZE, {4095, 16, 4095, 16,} },
{ 2, TEGRA_DC_FEATURE_MAXIMUM_SCALE, {2, 2, 2, 2,} },
{ 2, TEGRA_DC_FEATURE_FILTER_TYPE, {0, 1,} },
- { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1,} },
+ { 2, TEGRA_DC_FEATURE_LAYOUT_TYPE, {1, 1,} },
{ 2, TEGRA_DC_FEATURE_INVERT_TYPE, {1, 1, 0,} },
};
@@ -217,7 +217,7 @@ int tegra_dc_feature_has_tiling(struct tegra_dc *dc, int win_idx)
{
long *addr = tegra_dc_parse_feature(dc, win_idx, HAS_TILED);
- return addr[0];
+ return addr[TILED_LAYOUT];
}
int tegra_dc_feature_has_filter(struct tegra_dc *dc, int win_idx, int operation)
@@ -225,9 +225,9 @@ int tegra_dc_feature_has_filter(struct tegra_dc *dc, int win_idx, int operation)
long *addr = tegra_dc_parse_feature(dc, win_idx, operation);
if (operation == HAS_V_FILTER)
- return addr[0];
+ return addr[V_FILTER];
else
- return addr[1];
+ return addr[H_FILTER];
}
void tegra_dc_feature_register(struct tegra_dc *dc)
@@ -242,15 +242,5 @@ void tegra_dc_feature_register(struct tegra_dc *dc)
dc->feature = &t30_feature_table_a;
else
dc->feature = &t30_feature_table_b;
-#elif defined(CONFIG_ARCH_TEGRA_11x_SOC)
- if (!dc->ndev->id)
- dc->feature = &t114_feature_table_a;
- else
- dc->feature = &t114_feature_table_b;
-#elif defined(CONFIG_ARCH_TEGRA_14x_SOC)
- if (!dc->ndev->id)
- dc->feature = &t148_feature_table_a;
- else
- dc->feature = &t148_feature_table_b;
#endif
}
diff --git a/drivers/video/tegra/dc/dc_config.h b/drivers/video/tegra/dc/dc_config.h
index 55df5ef956a0..f513cd06dc45 100644
--- a/drivers/video/tegra/dc/dc_config.h
+++ b/drivers/video/tegra/dc/dc_config.h
@@ -27,7 +27,8 @@
#define ENTRY_SIZE 4 /* Size of feature entry args */
-/* These macros are defined based on T20/T30 formats. */
+/* Define the supported formats. TEGRA_WIN_FMT_WIN_x macros are defined
+ * based on T20/T30 formats. */
#define TEGRA_WIN_FMT_BASE_CNT (TEGRA_WIN_FMT_YUV422RA + 1)
#define TEGRA_WIN_FMT_BASE ((1 << TEGRA_WIN_FMT_P8) | \
(1 << TEGRA_WIN_FMT_B4G4R4A4) | \
@@ -36,8 +37,6 @@
(1 << TEGRA_WIN_FMT_AB5G5R5) | \
(1 << TEGRA_WIN_FMT_B8G8R8A8) | \
(1 << TEGRA_WIN_FMT_R8G8B8A8) | \
- (1 << TEGRA_WIN_FMT_B6x2G6x2R6x2A8) | \
- (1 << TEGRA_WIN_FMT_R6x2G6x2B6x2A8) | \
(1 << TEGRA_WIN_FMT_YCbCr422) | \
(1 << TEGRA_WIN_FMT_YUV422) | \
(1 << TEGRA_WIN_FMT_YCbCr420P) | \
@@ -45,9 +44,7 @@
(1 << TEGRA_WIN_FMT_YCbCr422P) | \
(1 << TEGRA_WIN_FMT_YUV422P) | \
(1 << TEGRA_WIN_FMT_YCbCr422R) | \
- (1 << TEGRA_WIN_FMT_YUV422R) | \
- (1 << TEGRA_WIN_FMT_YCbCr422RA) | \
- (1 << TEGRA_WIN_FMT_YUV422RA))
+ (1 << TEGRA_WIN_FMT_YUV422R))
#define TEGRA_WIN_FMT_WIN_A ((1 << TEGRA_WIN_FMT_P1) | \
(1 << TEGRA_WIN_FMT_P2) | \
@@ -62,16 +59,33 @@
(1 << TEGRA_WIN_FMT_B6x2G6x2R6x2A8) | \
(1 << TEGRA_WIN_FMT_R6x2G6x2B6x2A8))
-#define TEGRA_WIN_FMT_WIN_B TEGRA_WIN_FMT_BASE
+#define TEGRA_WIN_FMT_WIN_B (TEGRA_WIN_FMT_BASE | \
+ (1 << TEGRA_WIN_FMT_B6x2G6x2R6x2A8) | \
+ (1 << TEGRA_WIN_FMT_R6x2G6x2B6x2A8) | \
+ (1 << TEGRA_WIN_FMT_YCbCr422RA) | \
+ (1 << TEGRA_WIN_FMT_YUV422RA))
-#define TEGRA_WIN_FMT_WIN_C TEGRA_WIN_FMT_BASE
+#define TEGRA_WIN_FMT_WIN_C (TEGRA_WIN_FMT_BASE | \
+ (1 << TEGRA_WIN_FMT_B6x2G6x2R6x2A8) | \
+ (1 << TEGRA_WIN_FMT_R6x2G6x2B6x2A8) | \
+ (1 << TEGRA_WIN_FMT_YCbCr422RA) | \
+ (1 << TEGRA_WIN_FMT_YUV422RA))
/* preferred formats do not include 32-bpp formats */
-#define TEGRA_WIN_PREF_FMT_WIN_B (TEGRA_WIN_FMT_BASE & \
+#define TEGRA_WIN_PREF_FMT_WIN_B (TEGRA_WIN_FMT_WIN_B & \
~(1 << TEGRA_WIN_FMT_B8G8R8A8) & \
~(1 << TEGRA_WIN_FMT_R8G8B8A8))
-#define UNDEFINED -1
+
+
+/* For each entry, we define the offset to read specific feature. Define the
+ * offset for TEGRA_DC_FEATURE_MAXIMUM_SCALE */
+#define H_SCALE_UP 0
+#define V_SCALE_UP 1
+#define H_FILTER_DOWN 2
+#define V_FILTER_DOWN 3
+
+/* Define the offset for TEGRA_DC_FEATURE_MAXIMUM_SIZE */
#define MAX_WIDTH 0
#define MIN_WIDTH 1
#define MAX_HEIGHT 2
@@ -79,14 +93,29 @@
#define CHECK_SIZE(val, min, max) ( \
((val) < (min) || (val) > (max)) ? -EINVAL : 0)
-/* Available operations of feature table. */
-#define HAS_SCALE 1
-#define HAS_TILED 2
-#define HAS_V_FILTER 3
-#define HAS_H_FILTER 4
-#define HAS_GEN2_BLEND 5
-#define GET_WIN_FORMATS 6
-#define GET_WIN_SIZE 7
+/* Define the offset for TEGRA_DC_FEATURE_FILTER_TYPE */
+#define V_FILTER 0
+#define H_FILTER 1
+
+/* Define the offset for TEGRA_DC_FEATURE_INVERT_TYPE */
+#define H_INVERT 0
+#define V_INVERT 1
+#define SCAN_COLUMN 2
+
+/* Define the offset for TEGRA_DC_FEATURE_LAYOUT_TYPE. */
+#define PITCHED_LAYOUT 0
+#define TILED_LAYOUT 1
+
+/* Available operations on feature table. */
+enum {
+ HAS_SCALE,
+ HAS_TILED,
+ HAS_V_FILTER,
+ HAS_H_FILTER,
+ HAS_GEN2_BLEND,
+ GET_WIN_FORMATS,
+ GET_WIN_SIZE,
+};
enum tegra_dc_feature_option {
TEGRA_DC_FEATURE_FORMATS,