diff options
author | Kevin Huang <kevinh@nvidia.com> | 2012-05-17 15:23:51 -0700 |
---|---|---|
committer | Simone Willett <swillett@nvidia.com> | 2012-05-21 11:58:14 -0700 |
commit | 1f4ccee135b9729ec09eceaddd1b573ea7366d15 (patch) | |
tree | 7612f3edc41613124fdde69cb6311e8d40160113 /drivers/video/tegra | |
parent | e13ee8192e43a3f1ee6b7ae8842adbdb33eddae8 (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.c | 40 | ||||
-rw-r--r-- | drivers/video/tegra/dc/dc_config.h | 65 |
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, |