diff options
author | Hans Verkuil <hans.verkuil@cisco.com> | 2013-03-04 05:18:38 -0500 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2013-03-19 15:16:04 -0400 |
commit | 1de1951930d4450d1645a0a907b710f268af42c3 (patch) | |
tree | fafa302bede6d683050882b14ad3c48766ede5c1 | |
parent | b12aed0ec518eb348ae0f6d196fd726c57670823 (diff) |
[media] davinci/dm644x_ccdc: fix compiler warning
drivers/media/platform/davinci/dm644x_ccdc.c: In function ‘validate_ccdc_param’:
drivers/media/platform/davinci/dm644x_ccdc.c:233:32: warning: comparison between ‘enum ccdc_gama_width’ and ‘enum ccdc_data_size’ [-Wenum-compare]
It took a bit of work, see this thread of an earlier attempt to fix this:
https://patchwork.kernel.org/patch/1923091/
I've chosen not to follow the suggestions in that thread since gamma_width is
really a different property from data_size. What you really want is to know if
gamma_width fits inside data_size and for that you need to translate each
enum into a maximum bit number so you can safely compare the two.
So I put in two static inline translation functions instead, keeping the rest
of the code the same (except for fixing the 'gama' typo).
Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Lad, Prabhakar <prabhakar.lad@ti.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/platform/davinci/dm644x_ccdc.c | 13 | ||||
-rw-r--r-- | drivers/media/platform/davinci/dm644x_ccdc_regs.h | 2 | ||||
-rw-r--r-- | include/media/davinci/dm644x_ccdc.h | 24 |
3 files changed, 27 insertions, 12 deletions
diff --git a/drivers/media/platform/davinci/dm644x_ccdc.c b/drivers/media/platform/davinci/dm644x_ccdc.c index 318e80512998..971d639b6674 100644 --- a/drivers/media/platform/davinci/dm644x_ccdc.c +++ b/drivers/media/platform/davinci/dm644x_ccdc.c | |||
@@ -228,9 +228,12 @@ static void ccdc_readregs(void) | |||
228 | static int validate_ccdc_param(struct ccdc_config_params_raw *ccdcparam) | 228 | static int validate_ccdc_param(struct ccdc_config_params_raw *ccdcparam) |
229 | { | 229 | { |
230 | if (ccdcparam->alaw.enable) { | 230 | if (ccdcparam->alaw.enable) { |
231 | if ((ccdcparam->alaw.gama_wd > CCDC_GAMMA_BITS_09_0) || | 231 | u8 max_gamma = ccdc_gamma_width_max_bit(ccdcparam->alaw.gamma_wd); |
232 | (ccdcparam->alaw.gama_wd < CCDC_GAMMA_BITS_15_6) || | 232 | u8 max_data = ccdc_data_size_max_bit(ccdcparam->data_sz); |
233 | (ccdcparam->alaw.gama_wd < ccdcparam->data_sz)) { | 233 | |
234 | if ((ccdcparam->alaw.gamma_wd > CCDC_GAMMA_BITS_09_0) || | ||
235 | (ccdcparam->alaw.gamma_wd < CCDC_GAMMA_BITS_15_6) || | ||
236 | (max_gamma > max_data)) { | ||
234 | dev_dbg(ccdc_cfg.dev, "\nInvalid data line select"); | 237 | dev_dbg(ccdc_cfg.dev, "\nInvalid data line select"); |
235 | return -1; | 238 | return -1; |
236 | } | 239 | } |
@@ -560,8 +563,8 @@ void ccdc_config_raw(void) | |||
560 | 563 | ||
561 | /* Enable and configure aLaw register if needed */ | 564 | /* Enable and configure aLaw register if needed */ |
562 | if (config_params->alaw.enable) { | 565 | if (config_params->alaw.enable) { |
563 | val = ((config_params->alaw.gama_wd & | 566 | val = ((config_params->alaw.gamma_wd & |
564 | CCDC_ALAW_GAMA_WD_MASK) | CCDC_ALAW_ENABLE); | 567 | CCDC_ALAW_GAMMA_WD_MASK) | CCDC_ALAW_ENABLE); |
565 | regw(val, CCDC_ALAW); | 568 | regw(val, CCDC_ALAW); |
566 | dev_dbg(ccdc_cfg.dev, "\nWriting 0x%x to ALAW...\n", val); | 569 | dev_dbg(ccdc_cfg.dev, "\nWriting 0x%x to ALAW...\n", val); |
567 | } | 570 | } |
diff --git a/drivers/media/platform/davinci/dm644x_ccdc_regs.h b/drivers/media/platform/davinci/dm644x_ccdc_regs.h index 90370e414e2c..2b0aca5383f0 100644 --- a/drivers/media/platform/davinci/dm644x_ccdc_regs.h +++ b/drivers/media/platform/davinci/dm644x_ccdc_regs.h | |||
@@ -84,7 +84,7 @@ | |||
84 | #define CCDC_VDHDEN_ENABLE (1 << 16) | 84 | #define CCDC_VDHDEN_ENABLE (1 << 16) |
85 | #define CCDC_LPF_ENABLE (1 << 14) | 85 | #define CCDC_LPF_ENABLE (1 << 14) |
86 | #define CCDC_ALAW_ENABLE (1 << 3) | 86 | #define CCDC_ALAW_ENABLE (1 << 3) |
87 | #define CCDC_ALAW_GAMA_WD_MASK 7 | 87 | #define CCDC_ALAW_GAMMA_WD_MASK 7 |
88 | #define CCDC_BLK_CLAMP_ENABLE (1 << 31) | 88 | #define CCDC_BLK_CLAMP_ENABLE (1 << 31) |
89 | #define CCDC_BLK_SGAIN_MASK 0x1F | 89 | #define CCDC_BLK_SGAIN_MASK 0x1F |
90 | #define CCDC_BLK_ST_PXL_MASK 0x7FFF | 90 | #define CCDC_BLK_ST_PXL_MASK 0x7FFF |
diff --git a/include/media/davinci/dm644x_ccdc.h b/include/media/davinci/dm644x_ccdc.h index 3e178eb52fb3..852e96c4bb46 100644 --- a/include/media/davinci/dm644x_ccdc.h +++ b/include/media/davinci/dm644x_ccdc.h | |||
@@ -38,17 +38,23 @@ enum ccdc_sample_line { | |||
38 | CCDC_SAMPLE_16LINES | 38 | CCDC_SAMPLE_16LINES |
39 | }; | 39 | }; |
40 | 40 | ||
41 | /* enum for Alaw gama width */ | 41 | /* enum for Alaw gamma width */ |
42 | enum ccdc_gama_width { | 42 | enum ccdc_gamma_width { |
43 | CCDC_GAMMA_BITS_15_6, | 43 | CCDC_GAMMA_BITS_15_6, /* use bits 15-6 for gamma */ |
44 | CCDC_GAMMA_BITS_14_5, | 44 | CCDC_GAMMA_BITS_14_5, |
45 | CCDC_GAMMA_BITS_13_4, | 45 | CCDC_GAMMA_BITS_13_4, |
46 | CCDC_GAMMA_BITS_12_3, | 46 | CCDC_GAMMA_BITS_12_3, |
47 | CCDC_GAMMA_BITS_11_2, | 47 | CCDC_GAMMA_BITS_11_2, |
48 | CCDC_GAMMA_BITS_10_1, | 48 | CCDC_GAMMA_BITS_10_1, |
49 | CCDC_GAMMA_BITS_09_0 | 49 | CCDC_GAMMA_BITS_09_0 /* use bits 9-0 for gamma */ |
50 | }; | 50 | }; |
51 | 51 | ||
52 | /* returns the highest bit used for the gamma */ | ||
53 | static inline u8 ccdc_gamma_width_max_bit(enum ccdc_gamma_width width) | ||
54 | { | ||
55 | return 15 - width; | ||
56 | } | ||
57 | |||
52 | enum ccdc_data_size { | 58 | enum ccdc_data_size { |
53 | CCDC_DATA_16BITS, | 59 | CCDC_DATA_16BITS, |
54 | CCDC_DATA_15BITS, | 60 | CCDC_DATA_15BITS, |
@@ -60,12 +66,18 @@ enum ccdc_data_size { | |||
60 | CCDC_DATA_8BITS | 66 | CCDC_DATA_8BITS |
61 | }; | 67 | }; |
62 | 68 | ||
69 | /* returns the highest bit used for this data size */ | ||
70 | static inline u8 ccdc_data_size_max_bit(enum ccdc_data_size sz) | ||
71 | { | ||
72 | return sz == CCDC_DATA_8BITS ? 7 : 15 - sz; | ||
73 | } | ||
74 | |||
63 | /* structure for ALaw */ | 75 | /* structure for ALaw */ |
64 | struct ccdc_a_law { | 76 | struct ccdc_a_law { |
65 | /* Enable/disable A-Law */ | 77 | /* Enable/disable A-Law */ |
66 | unsigned char enable; | 78 | unsigned char enable; |
67 | /* Gama Width Input */ | 79 | /* Gamma Width Input */ |
68 | enum ccdc_gama_width gama_wd; | 80 | enum ccdc_gamma_width gamma_wd; |
69 | }; | 81 | }; |
70 | 82 | ||
71 | /* structure for Black Clamping */ | 83 | /* structure for Black Clamping */ |