Commit ae04e1ca80318ddf3e3677f2355db1155660f648

Authored by Linus Torvalds

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
... ... @@ -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
... ... @@ -297,7 +297,7 @@
297 297 return 0;
298 298 }
299 299  
300   -#ifdef CONFIG_PM
  300 +#ifdef CONFIG_PM_SLEEP
301 301 static int hix5hd2_ir_suspend(struct device *dev)
302 302 {
303 303 struct hix5hd2_ir_priv *priv = dev_get_drvdata(dev);
drivers/media/rc/ir-rc5-decoder.c
... ... @@ -53,7 +53,7 @@
53 53 u32 scancode;
54 54 enum rc_type protocol;
55 55  
56   - if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X)))
  56 + if (!(dev->enabled_protocols & (RC_BIT_RC5 | RC_BIT_RC5X | RC_BIT_RC5_SZ)))
57 57 return 0;
58 58  
59 59 if (!is_timing_event(ev)) {
drivers/media/rc/rc-ir-raw.c
... ... @@ -262,7 +262,6 @@
262 262 return -ENOMEM;
263 263  
264 264 dev->raw->dev = dev;
265   - dev->enabled_protocols = ~0;
266 265 dev->change_protocol = change_protocol;
267 266 rc = kfifo_alloc(&dev->raw->kfifo,
268 267 sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE,
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;