Commit ae04e1ca80318ddf3e3677f2355db1155660f648
Exists in
ti-lsk-linux-4.1.y
and in
10 other branches
Merge git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media fixes from Mauro Carvalho Chehab: "For: - some regression fixes at the Remote Controller core and imon driver - a build fix for certain randconfigs with ir-hix5hd2 - don't feed power to satellite system at ds3000 driver init It also contains some fixes for drivers added for Kernel 3.18: - some fixes at the new ISDB-S driver, and the corresponding bits to fix some descriptors for this Japanese TV standard at the DVB core - two warning cleanups for sp2 driver if PM is disabled - change the default mode for the new vivid driver" * git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] sp2: sp2_init() can be static [media] dvb:tc90522: fix always-false expression [media] dvb-core: set default properties of ISDB-S [media] dvb:tc90522: fix stats report [media] vivid: default to single planar device instances [media] imon: fix other RC type protocol support [media] ir-hix5hd2 fix build warning [media] ds3000: fix LNB supply voltage on Tevii S480 on initialization [media] rc5-decoder: BZ#85721: Fix RC5-SZ decoding [media] rc-core: fix protocol_change regression in ir_raw_event_register
Showing 11 changed files Side-by-side Diff
- Documentation/video4linux/vivid.txt
- drivers/media/dvb-core/dvb_frontend.c
- drivers/media/dvb-frontends/ds3000.c
- drivers/media/dvb-frontends/sp2.c
- drivers/media/dvb-frontends/tc90522.c
- drivers/media/platform/vivid/vivid-core.c
- drivers/media/rc/imon.c
- drivers/media/rc/ir-hix5hd2.c
- drivers/media/rc/ir-rc5-decoder.c
- drivers/media/rc/rc-ir-raw.c
- drivers/media/rc/rc-main.c
Documentation/video4linux/vivid.txt
... | ... | @@ -221,12 +221,11 @@ |
221 | 221 | key, not quality. |
222 | 222 | |
223 | 223 | multiplanar: select whether each device instance supports multi-planar formats, |
224 | - and thus the V4L2 multi-planar API. By default the first device instance | |
225 | - is single-planar, the second multi-planar, and it keeps alternating. | |
224 | + and thus the V4L2 multi-planar API. By default device instances are | |
225 | + single-planar. | |
226 | 226 | |
227 | 227 | This module option can override that for each instance. Values are: |
228 | 228 | |
229 | - 0: use alternating single and multi-planar devices. | |
230 | 229 | 1: this is a single-planar instance. |
231 | 230 | 2: this is a multi-planar instance. |
232 | 231 | |
... | ... | @@ -975,9 +974,8 @@ |
975 | 974 | 0 otherwise. |
976 | 975 | |
977 | 976 | The driver has to be configured to support the multiplanar formats. By default |
978 | -the first driver instance is single-planar, the second is multi-planar, and it | |
979 | -keeps alternating. This can be changed by setting the multiplanar module option, | |
980 | -see section 1 for more details on that option. | |
977 | +the driver instances are single-planar. This can be changed by setting the | |
978 | +multiplanar module option, see section 1 for more details on that option. | |
981 | 979 | |
982 | 980 | If the driver instance is using the multiplanar formats/API, then the first |
983 | 981 | single planar format (YUYV) and the multiplanar NV16M and NV61M formats the |
... | ... | @@ -1021,7 +1019,7 @@ |
1021 | 1019 | to see the blended framebuffer overlay that's being written to by the second |
1022 | 1020 | instance. This setup would require the following commands: |
1023 | 1021 | |
1024 | - $ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1 multiplanar=1,1 | |
1022 | + $ sudo modprobe vivid n_devs=2 node_types=0x10101,0x1 | |
1025 | 1023 | $ v4l2-ctl -d1 --find-fb |
1026 | 1024 | /dev/fb1 is the framebuffer associated with base address 0x12800000 |
1027 | 1025 | $ sudo v4l2-ctl -d2 --set-fbuf fb=1 |
drivers/media/dvb-core/dvb_frontend.c
... | ... | @@ -962,6 +962,11 @@ |
962 | 962 | case SYS_ATSC: |
963 | 963 | c->modulation = VSB_8; |
964 | 964 | break; |
965 | + case SYS_ISDBS: | |
966 | + c->symbol_rate = 28860000; | |
967 | + c->rolloff = ROLLOFF_35; | |
968 | + c->bandwidth_hz = c->symbol_rate / 100 * 135; | |
969 | + break; | |
965 | 970 | default: |
966 | 971 | c->modulation = QAM_AUTO; |
967 | 972 | break; |
... | ... | @@ -2072,6 +2077,7 @@ |
2072 | 2077 | break; |
2073 | 2078 | case SYS_DVBS: |
2074 | 2079 | case SYS_TURBO: |
2080 | + case SYS_ISDBS: | |
2075 | 2081 | rolloff = 135; |
2076 | 2082 | break; |
2077 | 2083 | case SYS_DVBS2: |
drivers/media/dvb-frontends/ds3000.c
... | ... | @@ -864,6 +864,13 @@ |
864 | 864 | memcpy(&state->frontend.ops, &ds3000_ops, |
865 | 865 | sizeof(struct dvb_frontend_ops)); |
866 | 866 | state->frontend.demodulator_priv = state; |
867 | + | |
868 | + /* | |
869 | + * Some devices like T480 starts with voltage on. Be sure | |
870 | + * to turn voltage off during init, as this can otherwise | |
871 | + * interfere with Unicable SCR systems. | |
872 | + */ | |
873 | + ds3000_set_voltage(&state->frontend, SEC_VOLTAGE_OFF); | |
867 | 874 | return &state->frontend; |
868 | 875 | |
869 | 876 | error3: |
drivers/media/dvb-frontends/sp2.c
... | ... | @@ -266,7 +266,7 @@ |
266 | 266 | return s->status; |
267 | 267 | } |
268 | 268 | |
269 | -int sp2_init(struct sp2 *s) | |
269 | +static int sp2_init(struct sp2 *s) | |
270 | 270 | { |
271 | 271 | int ret = 0; |
272 | 272 | u8 buf; |
... | ... | @@ -348,7 +348,7 @@ |
348 | 348 | return ret; |
349 | 349 | } |
350 | 350 | |
351 | -int sp2_exit(struct i2c_client *client) | |
351 | +static int sp2_exit(struct i2c_client *client) | |
352 | 352 | { |
353 | 353 | struct sp2 *s; |
354 | 354 |
drivers/media/dvb-frontends/tc90522.c
... | ... | @@ -216,32 +216,30 @@ |
216 | 216 | c->delivery_system = SYS_ISDBS; |
217 | 217 | |
218 | 218 | layers = 0; |
219 | - ret = reg_read(state, 0xe8, val, 3); | |
219 | + ret = reg_read(state, 0xe6, val, 5); | |
220 | 220 | if (ret == 0) { |
221 | - int slots; | |
222 | 221 | u8 v; |
223 | 222 | |
223 | + c->stream_id = val[0] << 8 | val[1]; | |
224 | + | |
224 | 225 | /* high/single layer */ |
225 | - v = (val[0] & 0x70) >> 4; | |
226 | + v = (val[2] & 0x70) >> 4; | |
226 | 227 | c->modulation = (v == 7) ? PSK_8 : QPSK; |
227 | 228 | c->fec_inner = fec_conv_sat[v]; |
228 | 229 | c->layer[0].fec = c->fec_inner; |
229 | 230 | c->layer[0].modulation = c->modulation; |
230 | - c->layer[0].segment_count = val[1] & 0x3f; /* slots */ | |
231 | + c->layer[0].segment_count = val[3] & 0x3f; /* slots */ | |
231 | 232 | |
232 | 233 | /* low layer */ |
233 | - v = (val[0] & 0x07); | |
234 | + v = (val[2] & 0x07); | |
234 | 235 | c->layer[1].fec = fec_conv_sat[v]; |
235 | 236 | if (v == 0) /* no low layer */ |
236 | 237 | c->layer[1].segment_count = 0; |
237 | 238 | else |
238 | - c->layer[1].segment_count = val[2] & 0x3f; /* slots */ | |
239 | + c->layer[1].segment_count = val[4] & 0x3f; /* slots */ | |
239 | 240 | /* actually, BPSK if v==1, but not defined in fe_modulation_t */ |
240 | 241 | c->layer[1].modulation = QPSK; |
241 | 242 | layers = (v > 0) ? 2 : 1; |
242 | - | |
243 | - slots = c->layer[0].segment_count + c->layer[1].segment_count; | |
244 | - c->symbol_rate = 28860000 * slots / 48; | |
245 | 243 | } |
246 | 244 | |
247 | 245 | /* statistics */ |
... | ... | @@ -363,7 +361,7 @@ |
363 | 361 | u8 v; |
364 | 362 | |
365 | 363 | c->isdbt_partial_reception = val[0] & 0x01; |
366 | - c->isdbt_sb_mode = (val[0] & 0xc0) == 0x01; | |
364 | + c->isdbt_sb_mode = (val[0] & 0xc0) == 0x40; | |
367 | 365 | |
368 | 366 | /* layer A */ |
369 | 367 | v = (val[2] & 0x78) >> 3; |
drivers/media/platform/vivid/vivid-core.c
... | ... | @@ -100,11 +100,9 @@ |
100 | 100 | "\t\t bit 0=crop, 1=compose, 2=scale,\n" |
101 | 101 | "\t\t -1=user-controlled (default)"); |
102 | 102 | |
103 | -static unsigned multiplanar[VIVID_MAX_DEVS]; | |
103 | +static unsigned multiplanar[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 1 }; | |
104 | 104 | module_param_array(multiplanar, uint, NULL, 0444); |
105 | -MODULE_PARM_DESC(multiplanar, " 0 (default) is alternating single and multiplanar devices,\n" | |
106 | - "\t\t 1 is single planar devices,\n" | |
107 | - "\t\t 2 is multiplanar devices"); | |
105 | +MODULE_PARM_DESC(multiplanar, " 1 (default) creates a single planar device, 2 creates a multiplanar device."); | |
108 | 106 | |
109 | 107 | /* Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + vbi-out + vid-out */ |
110 | 108 | static unsigned node_types[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 0x1d3d }; |
... | ... | @@ -669,10 +667,7 @@ |
669 | 667 | /* start detecting feature set */ |
670 | 668 | |
671 | 669 | /* do we use single- or multi-planar? */ |
672 | - if (multiplanar[inst] == 0) | |
673 | - dev->multiplanar = inst & 1; | |
674 | - else | |
675 | - dev->multiplanar = multiplanar[inst] > 1; | |
670 | + dev->multiplanar = multiplanar[inst] > 1; | |
676 | 671 | v4l2_info(&dev->v4l2_dev, "using %splanar format API\n", |
677 | 672 | dev->multiplanar ? "multi" : "single "); |
678 | 673 |
drivers/media/rc/imon.c
... | ... | @@ -1678,7 +1678,8 @@ |
1678 | 1678 | if (press_type == 0) |
1679 | 1679 | rc_keyup(ictx->rdev); |
1680 | 1680 | else { |
1681 | - if (ictx->rc_type == RC_BIT_RC6_MCE) | |
1681 | + if (ictx->rc_type == RC_BIT_RC6_MCE || | |
1682 | + ictx->rc_type == RC_BIT_OTHER) | |
1682 | 1683 | rc_keydown(ictx->rdev, |
1683 | 1684 | ictx->rc_type == RC_BIT_RC6_MCE ? RC_TYPE_RC6_MCE : RC_TYPE_OTHER, |
1684 | 1685 | ictx->rc_scancode, ictx->rc_toggle); |
drivers/media/rc/ir-hix5hd2.c
drivers/media/rc/ir-rc5-decoder.c
drivers/media/rc/rc-ir-raw.c
drivers/media/rc/rc-main.c
... | ... | @@ -1421,6 +1421,8 @@ |
1421 | 1421 | |
1422 | 1422 | if (dev->change_protocol) { |
1423 | 1423 | u64 rc_type = (1 << rc_map->rc_type); |
1424 | + if (dev->driver_type == RC_DRIVER_IR_RAW) | |
1425 | + rc_type |= RC_BIT_LIRC; | |
1424 | 1426 | rc = dev->change_protocol(dev, &rc_type); |
1425 | 1427 | if (rc < 0) |
1426 | 1428 | goto out_raw; |