diff options
-rw-r--r-- | Documentation/video4linux/vivid.txt | 12 | ||||
-rw-r--r-- | drivers/media/dvb-core/dvb_frontend.c | 6 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/ds3000.c | 7 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/sp2.c | 4 | ||||
-rw-r--r-- | drivers/media/dvb-frontends/tc90522.c | 18 | ||||
-rw-r--r-- | drivers/media/platform/vivid/vivid-core.c | 11 | ||||
-rw-r--r-- | drivers/media/rc/imon.c | 3 | ||||
-rw-r--r-- | drivers/media/rc/ir-hix5hd2.c | 2 | ||||
-rw-r--r-- | drivers/media/rc/ir-rc5-decoder.c | 2 | ||||
-rw-r--r-- | drivers/media/rc/rc-ir-raw.c | 1 | ||||
-rw-r--r-- | drivers/media/rc/rc-main.c | 2 |
11 files changed, 37 insertions, 31 deletions
diff --git a/Documentation/video4linux/vivid.txt b/Documentation/video4linux/vivid.txt index eeb11a28e4fc..e5a940e3d304 100644 --- a/Documentation/video4linux/vivid.txt +++ b/Documentation/video4linux/vivid.txt | |||
@@ -221,12 +221,11 @@ ccs_out_mode: specify the allowed video output crop/compose/scaling combination | |||
221 | key, not quality. | 221 | key, not quality. |
222 | 222 | ||
223 | multiplanar: select whether each device instance supports multi-planar formats, | 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 | 224 | and thus the V4L2 multi-planar API. By default device instances are |
225 | is single-planar, the second multi-planar, and it keeps alternating. | 225 | single-planar. |
226 | 226 | ||
227 | This module option can override that for each instance. Values are: | 227 | This module option can override that for each instance. Values are: |
228 | 228 | ||
229 | 0: use alternating single and multi-planar devices. | ||
230 | 1: this is a single-planar instance. | 229 | 1: this is a single-planar instance. |
231 | 2: this is a multi-planar instance. | 230 | 2: this is a multi-planar instance. |
232 | 231 | ||
@@ -975,9 +974,8 @@ is set, then the alpha component is only used for the color red and set to | |||
975 | 0 otherwise. | 974 | 0 otherwise. |
976 | 975 | ||
977 | The driver has to be configured to support the multiplanar formats. By default | 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 | 977 | the driver instances are single-planar. This can be changed by setting the |
979 | keeps alternating. This can be changed by setting the multiplanar module option, | 978 | multiplanar module option, see section 1 for more details on that option. |
980 | see section 1 for more details on that option. | ||
981 | 979 | ||
982 | If the driver instance is using the multiplanar formats/API, then the first | 980 | If the driver instance is using the multiplanar formats/API, then the first |
983 | single planar format (YUYV) and the multiplanar NV16M and NV61M formats the | 981 | single planar format (YUYV) and the multiplanar NV16M and NV61M formats the |
@@ -1021,7 +1019,7 @@ the output overlay for the video output, turn on video looping and capture | |||
1021 | to see the blended framebuffer overlay that's being written to by the second | 1019 | to see the blended framebuffer overlay that's being written to by the second |
1022 | instance. This setup would require the following commands: | 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 | $ v4l2-ctl -d1 --find-fb | 1023 | $ v4l2-ctl -d1 --find-fb |
1026 | /dev/fb1 is the framebuffer associated with base address 0x12800000 | 1024 | /dev/fb1 is the framebuffer associated with base address 0x12800000 |
1027 | $ sudo v4l2-ctl -d2 --set-fbuf fb=1 | 1025 | $ sudo v4l2-ctl -d2 --set-fbuf fb=1 |
diff --git a/drivers/media/dvb-core/dvb_frontend.c b/drivers/media/dvb-core/dvb_frontend.c index b8579ee68bd6..2cf30576bf39 100644 --- a/drivers/media/dvb-core/dvb_frontend.c +++ b/drivers/media/dvb-core/dvb_frontend.c | |||
@@ -962,6 +962,11 @@ static int dvb_frontend_clear_cache(struct dvb_frontend *fe) | |||
962 | case SYS_ATSC: | 962 | case SYS_ATSC: |
963 | c->modulation = VSB_8; | 963 | c->modulation = VSB_8; |
964 | break; | 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 | default: | 970 | default: |
966 | c->modulation = QAM_AUTO; | 971 | c->modulation = QAM_AUTO; |
967 | break; | 972 | break; |
@@ -2072,6 +2077,7 @@ static int dtv_set_frontend(struct dvb_frontend *fe) | |||
2072 | break; | 2077 | break; |
2073 | case SYS_DVBS: | 2078 | case SYS_DVBS: |
2074 | case SYS_TURBO: | 2079 | case SYS_TURBO: |
2080 | case SYS_ISDBS: | ||
2075 | rolloff = 135; | 2081 | rolloff = 135; |
2076 | break; | 2082 | break; |
2077 | case SYS_DVBS2: | 2083 | case SYS_DVBS2: |
diff --git a/drivers/media/dvb-frontends/ds3000.c b/drivers/media/dvb-frontends/ds3000.c index 335daeff91b9..9d0d0347758f 100644 --- a/drivers/media/dvb-frontends/ds3000.c +++ b/drivers/media/dvb-frontends/ds3000.c | |||
@@ -864,6 +864,13 @@ struct dvb_frontend *ds3000_attach(const struct ds3000_config *config, | |||
864 | memcpy(&state->frontend.ops, &ds3000_ops, | 864 | memcpy(&state->frontend.ops, &ds3000_ops, |
865 | sizeof(struct dvb_frontend_ops)); | 865 | sizeof(struct dvb_frontend_ops)); |
866 | state->frontend.demodulator_priv = state; | 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 | return &state->frontend; | 874 | return &state->frontend; |
868 | 875 | ||
869 | error3: | 876 | error3: |
diff --git a/drivers/media/dvb-frontends/sp2.c b/drivers/media/dvb-frontends/sp2.c index 9b684d5c8f91..15bf4318cb74 100644 --- a/drivers/media/dvb-frontends/sp2.c +++ b/drivers/media/dvb-frontends/sp2.c | |||
@@ -266,7 +266,7 @@ int sp2_ci_poll_slot_status(struct dvb_ca_en50221 *en50221, | |||
266 | return s->status; | 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 | int ret = 0; | 271 | int ret = 0; |
272 | u8 buf; | 272 | u8 buf; |
@@ -348,7 +348,7 @@ err: | |||
348 | return ret; | 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 | struct sp2 *s; | 353 | struct sp2 *s; |
354 | 354 | ||
diff --git a/drivers/media/dvb-frontends/tc90522.c b/drivers/media/dvb-frontends/tc90522.c index d9905fb52f84..b35d65c9cc05 100644 --- a/drivers/media/dvb-frontends/tc90522.c +++ b/drivers/media/dvb-frontends/tc90522.c | |||
@@ -216,32 +216,30 @@ static int tc90522s_get_frontend(struct dvb_frontend *fe) | |||
216 | c->delivery_system = SYS_ISDBS; | 216 | c->delivery_system = SYS_ISDBS; |
217 | 217 | ||
218 | layers = 0; | 218 | layers = 0; |
219 | ret = reg_read(state, 0xe8, val, 3); | 219 | ret = reg_read(state, 0xe6, val, 5); |
220 | if (ret == 0) { | 220 | if (ret == 0) { |
221 | int slots; | ||
222 | u8 v; | 221 | u8 v; |
223 | 222 | ||
223 | c->stream_id = val[0] << 8 | val[1]; | ||
224 | |||
224 | /* high/single layer */ | 225 | /* high/single layer */ |
225 | v = (val[0] & 0x70) >> 4; | 226 | v = (val[2] & 0x70) >> 4; |
226 | c->modulation = (v == 7) ? PSK_8 : QPSK; | 227 | c->modulation = (v == 7) ? PSK_8 : QPSK; |
227 | c->fec_inner = fec_conv_sat[v]; | 228 | c->fec_inner = fec_conv_sat[v]; |
228 | c->layer[0].fec = c->fec_inner; | 229 | c->layer[0].fec = c->fec_inner; |
229 | c->layer[0].modulation = c->modulation; | 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 | /* low layer */ | 233 | /* low layer */ |
233 | v = (val[0] & 0x07); | 234 | v = (val[2] & 0x07); |
234 | c->layer[1].fec = fec_conv_sat[v]; | 235 | c->layer[1].fec = fec_conv_sat[v]; |
235 | if (v == 0) /* no low layer */ | 236 | if (v == 0) /* no low layer */ |
236 | c->layer[1].segment_count = 0; | 237 | c->layer[1].segment_count = 0; |
237 | else | 238 | else |
238 | c->layer[1].segment_count = val[2] & 0x3f; /* slots */ | 239 | c->layer[1].segment_count = val[4] & 0x3f; /* slots */ |
239 | /* actually, BPSK if v==1, but not defined in fe_modulation_t */ | 240 | /* actually, BPSK if v==1, but not defined in fe_modulation_t */ |
240 | c->layer[1].modulation = QPSK; | 241 | c->layer[1].modulation = QPSK; |
241 | layers = (v > 0) ? 2 : 1; | 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 | /* statistics */ | 245 | /* statistics */ |
@@ -363,7 +361,7 @@ static int tc90522t_get_frontend(struct dvb_frontend *fe) | |||
363 | u8 v; | 361 | u8 v; |
364 | 362 | ||
365 | c->isdbt_partial_reception = val[0] & 0x01; | 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 | /* layer A */ | 366 | /* layer A */ |
369 | v = (val[2] & 0x78) >> 3; | 367 | v = (val[2] & 0x78) >> 3; |
diff --git a/drivers/media/platform/vivid/vivid-core.c b/drivers/media/platform/vivid/vivid-core.c index 2c61a62ab48b..686c3c2ad05b 100644 --- a/drivers/media/platform/vivid/vivid-core.c +++ b/drivers/media/platform/vivid/vivid-core.c | |||
@@ -100,11 +100,9 @@ MODULE_PARM_DESC(ccs_out_mode, " output crop/compose/scale mode:\n" | |||
100 | "\t\t bit 0=crop, 1=compose, 2=scale,\n" | 100 | "\t\t bit 0=crop, 1=compose, 2=scale,\n" |
101 | "\t\t -1=user-controlled (default)"); | 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 | module_param_array(multiplanar, uint, NULL, 0444); | 104 | module_param_array(multiplanar, uint, NULL, 0444); |
105 | MODULE_PARM_DESC(multiplanar, " 0 (default) is alternating single and multiplanar devices,\n" | 105 | MODULE_PARM_DESC(multiplanar, " 1 (default) creates a single planar device, 2 creates a multiplanar device."); |
106 | "\t\t 1 is single planar devices,\n" | ||
107 | "\t\t 2 is multiplanar devices"); | ||
108 | 106 | ||
109 | /* Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + vbi-out + vid-out */ | 107 | /* Default: video + vbi-cap (raw and sliced) + radio rx + radio tx + sdr + vbi-out + vid-out */ |
110 | static unsigned node_types[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 0x1d3d }; | 108 | static unsigned node_types[VIVID_MAX_DEVS] = { [0 ... (VIVID_MAX_DEVS - 1)] = 0x1d3d }; |
@@ -669,10 +667,7 @@ static int __init vivid_create_instance(int inst) | |||
669 | /* start detecting feature set */ | 667 | /* start detecting feature set */ |
670 | 668 | ||
671 | /* do we use single- or multi-planar? */ | 669 | /* do we use single- or multi-planar? */ |
672 | if (multiplanar[inst] == 0) | 670 | dev->multiplanar = multiplanar[inst] > 1; |
673 | dev->multiplanar = inst & 1; | ||
674 | else | ||
675 | dev->multiplanar = multiplanar[inst] > 1; | ||
676 | v4l2_info(&dev->v4l2_dev, "using %splanar format API\n", | 671 | v4l2_info(&dev->v4l2_dev, "using %splanar format API\n", |
677 | dev->multiplanar ? "multi" : "single "); | 672 | dev->multiplanar ? "multi" : "single "); |
678 | 673 | ||
diff --git a/drivers/media/rc/imon.c b/drivers/media/rc/imon.c index b8837dd39bb2..65f80b8b9f7a 100644 --- a/drivers/media/rc/imon.c +++ b/drivers/media/rc/imon.c | |||
@@ -1678,7 +1678,8 @@ static void imon_incoming_packet(struct imon_context *ictx, | |||
1678 | if (press_type == 0) | 1678 | if (press_type == 0) |
1679 | rc_keyup(ictx->rdev); | 1679 | rc_keyup(ictx->rdev); |
1680 | else { | 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 | rc_keydown(ictx->rdev, | 1683 | rc_keydown(ictx->rdev, |
1683 | ictx->rc_type == RC_BIT_RC6_MCE ? RC_TYPE_RC6_MCE : RC_TYPE_OTHER, | 1684 | ictx->rc_type == RC_BIT_RC6_MCE ? RC_TYPE_RC6_MCE : RC_TYPE_OTHER, |
1684 | ictx->rc_scancode, ictx->rc_toggle); | 1685 | ictx->rc_scancode, ictx->rc_toggle); |
diff --git a/drivers/media/rc/ir-hix5hd2.c b/drivers/media/rc/ir-hix5hd2.c index 08bbd4f508cd..b0df62961c14 100644 --- a/drivers/media/rc/ir-hix5hd2.c +++ b/drivers/media/rc/ir-hix5hd2.c | |||
@@ -297,7 +297,7 @@ static int hix5hd2_ir_remove(struct platform_device *pdev) | |||
297 | return 0; | 297 | return 0; |
298 | } | 298 | } |
299 | 299 | ||
300 | #ifdef CONFIG_PM | 300 | #ifdef CONFIG_PM_SLEEP |
301 | static int hix5hd2_ir_suspend(struct device *dev) | 301 | static int hix5hd2_ir_suspend(struct device *dev) |
302 | { | 302 | { |
303 | struct hix5hd2_ir_priv *priv = dev_get_drvdata(dev); | 303 | struct hix5hd2_ir_priv *priv = dev_get_drvdata(dev); |
diff --git a/drivers/media/rc/ir-rc5-decoder.c b/drivers/media/rc/ir-rc5-decoder.c index 2ef763928ca4..84fa6e9b59a1 100644 --- a/drivers/media/rc/ir-rc5-decoder.c +++ b/drivers/media/rc/ir-rc5-decoder.c | |||
@@ -53,7 +53,7 @@ static int ir_rc5_decode(struct rc_dev *dev, struct ir_raw_event ev) | |||
53 | u32 scancode; | 53 | u32 scancode; |
54 | enum rc_type protocol; | 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 | return 0; | 57 | return 0; |
58 | 58 | ||
59 | if (!is_timing_event(ev)) { | 59 | if (!is_timing_event(ev)) { |
diff --git a/drivers/media/rc/rc-ir-raw.c b/drivers/media/rc/rc-ir-raw.c index e8fff2add265..b732ac6a26d8 100644 --- a/drivers/media/rc/rc-ir-raw.c +++ b/drivers/media/rc/rc-ir-raw.c | |||
@@ -262,7 +262,6 @@ int ir_raw_event_register(struct rc_dev *dev) | |||
262 | return -ENOMEM; | 262 | return -ENOMEM; |
263 | 263 | ||
264 | dev->raw->dev = dev; | 264 | dev->raw->dev = dev; |
265 | dev->enabled_protocols = ~0; | ||
266 | dev->change_protocol = change_protocol; | 265 | dev->change_protocol = change_protocol; |
267 | rc = kfifo_alloc(&dev->raw->kfifo, | 266 | rc = kfifo_alloc(&dev->raw->kfifo, |
268 | sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE, | 267 | sizeof(struct ir_raw_event) * MAX_IR_EVENT_SIZE, |
diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c index a7991c7d010a..8d3b74c5a717 100644 --- a/drivers/media/rc/rc-main.c +++ b/drivers/media/rc/rc-main.c | |||
@@ -1421,6 +1421,8 @@ int rc_register_device(struct rc_dev *dev) | |||
1421 | 1421 | ||
1422 | if (dev->change_protocol) { | 1422 | if (dev->change_protocol) { |
1423 | u64 rc_type = (1 << rc_map->rc_type); | 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 | rc = dev->change_protocol(dev, &rc_type); | 1426 | rc = dev->change_protocol(dev, &rc_type); |
1425 | if (rc < 0) | 1427 | if (rc < 0) |
1426 | goto out_raw; | 1428 | goto out_raw; |