Rev 5056 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 5056 | Rev 6934 | ||
---|---|---|---|
Line 25... | Line 25... | ||
25 | #include |
25 | #include |
26 | #include |
26 | #include |
27 | #include |
27 | #include |
28 | #include |
28 | #include |
29 | #include |
29 | #include |
- | 30 | #include |
|
Line -... | Line 31... | ||
- | 31 | ||
- | 32 | #define hdmi_log(fmt, ...) dev_printk(level, dev, fmt, ##__VA_ARGS__) |
|
30 | 33 | ||
31 | static void hdmi_infoframe_checksum(void *buffer, size_t size) |
34 | static u8 hdmi_infoframe_checksum(u8 *ptr, size_t size) |
32 | { |
- | |
33 | u8 *ptr = buffer; |
35 | { |
34 | u8 csum = 0; |
36 | u8 csum = 0; |
Line 35... | Line 37... | ||
35 | size_t i; |
37 | size_t i; |
36 | 38 | ||
37 | /* compute checksum */ |
39 | /* compute checksum */ |
Line 38... | Line 40... | ||
38 | for (i = 0; i < size; i++) |
40 | for (i = 0; i < size; i++) |
- | 41 | csum += ptr[i]; |
|
- | 42 | ||
- | 43 | return 256 - csum; |
|
- | 44 | } |
|
- | 45 | ||
- | 46 | static void hdmi_infoframe_set_checksum(void *buffer, size_t size) |
|
- | 47 | { |
|
39 | csum += ptr[i]; |
48 | u8 *ptr = buffer; |
Line 40... | Line 49... | ||
40 | 49 | ||
41 | ptr[3] = 256 - csum; |
50 | ptr[3] = hdmi_infoframe_checksum(buffer, size); |
42 | } |
51 | } |
Line 134... | Line 143... | ||
134 | ptr[9] = frame->left_bar & 0xff; |
143 | ptr[9] = frame->left_bar & 0xff; |
135 | ptr[10] = (frame->left_bar >> 8) & 0xff; |
144 | ptr[10] = (frame->left_bar >> 8) & 0xff; |
136 | ptr[11] = frame->right_bar & 0xff; |
145 | ptr[11] = frame->right_bar & 0xff; |
137 | ptr[12] = (frame->right_bar >> 8) & 0xff; |
146 | ptr[12] = (frame->right_bar >> 8) & 0xff; |
Line 138... | Line 147... | ||
138 | 147 | ||
Line 139... | Line 148... | ||
139 | hdmi_infoframe_checksum(buffer, length); |
148 | hdmi_infoframe_set_checksum(buffer, length); |
140 | 149 | ||
141 | return length; |
150 | return length; |
Line 204... | Line 213... | ||
204 | memcpy(ptr, frame->vendor, sizeof(frame->vendor)); |
213 | memcpy(ptr, frame->vendor, sizeof(frame->vendor)); |
205 | memcpy(ptr + 8, frame->product, sizeof(frame->product)); |
214 | memcpy(ptr + 8, frame->product, sizeof(frame->product)); |
Line 206... | Line 215... | ||
206 | 215 | ||
Line 207... | Line 216... | ||
207 | ptr[24] = frame->sdi; |
216 | ptr[24] = frame->sdi; |
Line 208... | Line 217... | ||
208 | 217 | ||
209 | hdmi_infoframe_checksum(buffer, length); |
218 | hdmi_infoframe_set_checksum(buffer, length); |
210 | 219 | ||
Line 279... | Line 288... | ||
279 | ptr[4] = (frame->level_shift_value & 0xf) << 3; |
288 | ptr[4] = (frame->level_shift_value & 0xf) << 3; |
Line 280... | Line 289... | ||
280 | 289 | ||
281 | if (frame->downmix_inhibit) |
290 | if (frame->downmix_inhibit) |
Line 282... | Line 291... | ||
282 | ptr[4] |= BIT(7); |
291 | ptr[4] |= BIT(7); |
Line 283... | Line 292... | ||
283 | 292 | ||
284 | hdmi_infoframe_checksum(buffer, length); |
293 | hdmi_infoframe_set_checksum(buffer, length); |
285 | 294 | ||
Line 371... | Line 380... | ||
371 | ptr[8] = (frame->s3d_struct & 0xf) << 4; |
380 | ptr[8] = (frame->s3d_struct & 0xf) << 4; |
372 | if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) |
381 | if (frame->s3d_struct >= HDMI_3D_STRUCTURE_SIDE_BY_SIDE_HALF) |
373 | ptr[9] = (frame->s3d_ext_data & 0xf) << 4; |
382 | ptr[9] = (frame->s3d_ext_data & 0xf) << 4; |
374 | } |
383 | } |
Line 375... | Line 384... | ||
375 | 384 | ||
Line 376... | Line 385... | ||
376 | hdmi_infoframe_checksum(buffer, length); |
385 | hdmi_infoframe_set_checksum(buffer, length); |
377 | 386 | ||
378 | return length; |
387 | return length; |