Merge tag 'media/v4.20-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media fixes from Mauro Carvalho Chehab: - Revert a dt-bindings patch whose driver didn't make for 4.20 - fix a kernel oops at vicodec driver - fix a frame overflow at gspca with was causing regressions on some cameras, making them to not work - use the proper type for wait_queue head - make media request API compatible with 32-bit userspace on 64-bit kernel - fix a regression on Kernel 4.19 at dvb-pll - don't use SPDX headers yet for GFDL * tag 'media/v4.20-4' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: media: mediactl docs: Fix licensing message media: dvb-pll: don't re-validate tuner frequencies media: dvb-pll: fix tuner frequency ranges media: Revert "media: dt-bindings: Document the Rockchip VPU bindings" media: gspca: fix frame overflow error media: vicodec: fix memchr() kernel oops media: cedrus: add action item to the TODO media: media-request: Add compat ioctl media: Use wait_queue_head_t for media_request
This commit is contained in:
@@ -1,29 +0,0 @@
|
|||||||
device-tree bindings for rockchip VPU codec
|
|
||||||
|
|
||||||
Rockchip (Video Processing Unit) present in various Rockchip platforms,
|
|
||||||
such as RK3288 and RK3399.
|
|
||||||
|
|
||||||
Required properties:
|
|
||||||
- compatible: value should be one of the following
|
|
||||||
"rockchip,rk3288-vpu";
|
|
||||||
"rockchip,rk3399-vpu";
|
|
||||||
- interrupts: encoding and decoding interrupt specifiers
|
|
||||||
- interrupt-names: should be "vepu" and "vdpu"
|
|
||||||
- clocks: phandle to VPU aclk, hclk clocks
|
|
||||||
- clock-names: should be "aclk" and "hclk"
|
|
||||||
- power-domains: phandle to power domain node
|
|
||||||
- iommus: phandle to a iommu node
|
|
||||||
|
|
||||||
Example:
|
|
||||||
SoC-specific DT entry:
|
|
||||||
vpu: video-codec@ff9a0000 {
|
|
||||||
compatible = "rockchip,rk3288-vpu";
|
|
||||||
reg = <0x0 0xff9a0000 0x0 0x800>;
|
|
||||||
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
|
|
||||||
<GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
|
|
||||||
interrupt-names = "vepu", "vdpu";
|
|
||||||
clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
|
|
||||||
clock-names = "aclk", "hclk";
|
|
||||||
power-domains = <&power RK3288_PD_VIDEO>;
|
|
||||||
iommus = <&vpu_mmu>;
|
|
||||||
};
|
|
||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_ioc_request_alloc:
|
.. _media_ioc_request_alloc:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_request_ioc_queue:
|
.. _media_request_ioc_queue:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media_request_ioc_reinit:
|
.. _media_request_ioc_reinit:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _media-request-api:
|
.. _media-request-api:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-close:
|
.. _request-func-close:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-ioctl:
|
.. _request-func-ioctl:
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,28 @@
|
|||||||
.. SPDX-License-Identifier: GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
.. This file is dual-licensed: you can use it either under the terms
|
||||||
|
.. of the GPL or the GFDL 1.1+ license, at your option. Note that this
|
||||||
|
.. dual licensing only applies to this file, and not this project as a
|
||||||
|
.. whole.
|
||||||
|
..
|
||||||
|
.. a) This file is free software; you can redistribute it and/or
|
||||||
|
.. modify it under the terms of the GNU General Public License as
|
||||||
|
.. published by the Free Software Foundation; either version 2 of
|
||||||
|
.. the License, or (at your option) any later version.
|
||||||
|
..
|
||||||
|
.. This file is distributed in the hope that it will be useful,
|
||||||
|
.. but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
.. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
.. GNU General Public License for more details.
|
||||||
|
..
|
||||||
|
.. Or, alternatively,
|
||||||
|
..
|
||||||
|
.. b) Permission is granted to copy, distribute and/or modify this
|
||||||
|
.. document under the terms of the GNU Free Documentation License,
|
||||||
|
.. Version 1.1 or any later version published by the Free Software
|
||||||
|
.. Foundation, with no Invariant Sections, no Front-Cover Texts
|
||||||
|
.. and no Back-Cover Texts. A copy of the license is included at
|
||||||
|
.. Documentation/media/uapi/fdl-appendix.rst.
|
||||||
|
..
|
||||||
|
.. TODO: replace it to GPL-2.0 OR GFDL-1.1-or-later WITH no-invariant-sections
|
||||||
|
|
||||||
.. _request-func-poll:
|
.. _request-func-poll:
|
||||||
|
|
||||||
|
|||||||
@@ -80,8 +80,8 @@ struct dvb_pll_desc {
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_thomson_dtt7579 = {
|
static const struct dvb_pll_desc dvb_pll_thomson_dtt7579 = {
|
||||||
.name = "Thomson dtt7579",
|
.name = "Thomson dtt7579",
|
||||||
.min = 177000000,
|
.min = 177 * MHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.sleepdata = (u8[]){ 2, 0xb4, 0x03 },
|
.sleepdata = (u8[]){ 2, 0xb4, 0x03 },
|
||||||
.count = 4,
|
.count = 4,
|
||||||
@@ -102,8 +102,8 @@ static void thomson_dtt759x_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_thomson_dtt759x = {
|
static const struct dvb_pll_desc dvb_pll_thomson_dtt759x = {
|
||||||
.name = "Thomson dtt759x",
|
.name = "Thomson dtt759x",
|
||||||
.min = 177000000,
|
.min = 177 * MHz,
|
||||||
.max = 896000000,
|
.max = 896 * MHz,
|
||||||
.set = thomson_dtt759x_bw,
|
.set = thomson_dtt759x_bw,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.sleepdata = (u8[]){ 2, 0x84, 0x03 },
|
.sleepdata = (u8[]){ 2, 0x84, 0x03 },
|
||||||
@@ -126,8 +126,8 @@ static void thomson_dtt7520x_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_thomson_dtt7520x = {
|
static const struct dvb_pll_desc dvb_pll_thomson_dtt7520x = {
|
||||||
.name = "Thomson dtt7520x",
|
.name = "Thomson dtt7520x",
|
||||||
.min = 185000000,
|
.min = 185 * MHz,
|
||||||
.max = 900000000,
|
.max = 900 * MHz,
|
||||||
.set = thomson_dtt7520x_bw,
|
.set = thomson_dtt7520x_bw,
|
||||||
.iffreq = 36166667,
|
.iffreq = 36166667,
|
||||||
.count = 7,
|
.count = 7,
|
||||||
@@ -144,8 +144,8 @@ static const struct dvb_pll_desc dvb_pll_thomson_dtt7520x = {
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_lg_z201 = {
|
static const struct dvb_pll_desc dvb_pll_lg_z201 = {
|
||||||
.name = "LG z201",
|
.name = "LG z201",
|
||||||
.min = 174000000,
|
.min = 174 * MHz,
|
||||||
.max = 862000000,
|
.max = 862 * MHz,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.sleepdata = (u8[]){ 2, 0xbc, 0x03 },
|
.sleepdata = (u8[]){ 2, 0xbc, 0x03 },
|
||||||
.count = 5,
|
.count = 5,
|
||||||
@@ -160,8 +160,8 @@ static const struct dvb_pll_desc dvb_pll_lg_z201 = {
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_unknown_1 = {
|
static const struct dvb_pll_desc dvb_pll_unknown_1 = {
|
||||||
.name = "unknown 1", /* used by dntv live dvb-t */
|
.name = "unknown 1", /* used by dntv live dvb-t */
|
||||||
.min = 174000000,
|
.min = 174 * MHz,
|
||||||
.max = 862000000,
|
.max = 862 * MHz,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.count = 9,
|
.count = 9,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -182,8 +182,8 @@ static const struct dvb_pll_desc dvb_pll_unknown_1 = {
|
|||||||
*/
|
*/
|
||||||
static const struct dvb_pll_desc dvb_pll_tua6010xs = {
|
static const struct dvb_pll_desc dvb_pll_tua6010xs = {
|
||||||
.name = "Infineon TUA6010XS",
|
.name = "Infineon TUA6010XS",
|
||||||
.min = 44250000,
|
.min = 44250 * kHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.iffreq= 36125000,
|
.iffreq= 36125000,
|
||||||
.count = 3,
|
.count = 3,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -196,8 +196,8 @@ static const struct dvb_pll_desc dvb_pll_tua6010xs = {
|
|||||||
/* Panasonic env57h1xd5 (some Philips PLL ?) */
|
/* Panasonic env57h1xd5 (some Philips PLL ?) */
|
||||||
static const struct dvb_pll_desc dvb_pll_env57h1xd5 = {
|
static const struct dvb_pll_desc dvb_pll_env57h1xd5 = {
|
||||||
.name = "Panasonic ENV57H1XD5",
|
.name = "Panasonic ENV57H1XD5",
|
||||||
.min = 44250000,
|
.min = 44250 * kHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.iffreq= 36125000,
|
.iffreq= 36125000,
|
||||||
.count = 4,
|
.count = 4,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -220,8 +220,8 @@ static void tda665x_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_tda665x = {
|
static const struct dvb_pll_desc dvb_pll_tda665x = {
|
||||||
.name = "Philips TDA6650/TDA6651",
|
.name = "Philips TDA6650/TDA6651",
|
||||||
.min = 44250000,
|
.min = 44250 * kHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.set = tda665x_bw,
|
.set = tda665x_bw,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.initdata = (u8[]){ 4, 0x0b, 0xf5, 0x85, 0xab },
|
.initdata = (u8[]){ 4, 0x0b, 0xf5, 0x85, 0xab },
|
||||||
@@ -254,8 +254,8 @@ static void tua6034_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_tua6034 = {
|
static const struct dvb_pll_desc dvb_pll_tua6034 = {
|
||||||
.name = "Infineon TUA6034",
|
.name = "Infineon TUA6034",
|
||||||
.min = 44250000,
|
.min = 44250 * kHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.count = 3,
|
.count = 3,
|
||||||
.set = tua6034_bw,
|
.set = tua6034_bw,
|
||||||
@@ -278,8 +278,8 @@ static void tded4_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_tded4 = {
|
static const struct dvb_pll_desc dvb_pll_tded4 = {
|
||||||
.name = "ALPS TDED4",
|
.name = "ALPS TDED4",
|
||||||
.min = 47000000,
|
.min = 47 * MHz,
|
||||||
.max = 863000000,
|
.max = 863 * MHz,
|
||||||
.iffreq= 36166667,
|
.iffreq= 36166667,
|
||||||
.set = tded4_bw,
|
.set = tded4_bw,
|
||||||
.count = 4,
|
.count = 4,
|
||||||
@@ -296,8 +296,8 @@ static const struct dvb_pll_desc dvb_pll_tded4 = {
|
|||||||
*/
|
*/
|
||||||
static const struct dvb_pll_desc dvb_pll_tdhu2 = {
|
static const struct dvb_pll_desc dvb_pll_tdhu2 = {
|
||||||
.name = "ALPS TDHU2",
|
.name = "ALPS TDHU2",
|
||||||
.min = 54000000,
|
.min = 54 * MHz,
|
||||||
.max = 864000000,
|
.max = 864 * MHz,
|
||||||
.iffreq= 44000000,
|
.iffreq= 44000000,
|
||||||
.count = 4,
|
.count = 4,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -313,8 +313,8 @@ static const struct dvb_pll_desc dvb_pll_tdhu2 = {
|
|||||||
*/
|
*/
|
||||||
static const struct dvb_pll_desc dvb_pll_samsung_tbmv = {
|
static const struct dvb_pll_desc dvb_pll_samsung_tbmv = {
|
||||||
.name = "Samsung TBMV30111IN / TBMV30712IN1",
|
.name = "Samsung TBMV30111IN / TBMV30712IN1",
|
||||||
.min = 54000000,
|
.min = 54 * MHz,
|
||||||
.max = 860000000,
|
.max = 860 * MHz,
|
||||||
.iffreq= 44000000,
|
.iffreq= 44000000,
|
||||||
.count = 6,
|
.count = 6,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -332,8 +332,8 @@ static const struct dvb_pll_desc dvb_pll_samsung_tbmv = {
|
|||||||
*/
|
*/
|
||||||
static const struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261 = {
|
static const struct dvb_pll_desc dvb_pll_philips_sd1878_tda8261 = {
|
||||||
.name = "Philips SD1878",
|
.name = "Philips SD1878",
|
||||||
.min = 950000,
|
.min = 950 * MHz,
|
||||||
.max = 2150000,
|
.max = 2150 * MHz,
|
||||||
.iffreq= 249, /* zero-IF, offset 249 is to round up */
|
.iffreq= 249, /* zero-IF, offset 249 is to round up */
|
||||||
.count = 4,
|
.count = 4,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -398,8 +398,8 @@ static void opera1_bw(struct dvb_frontend *fe, u8 *buf)
|
|||||||
|
|
||||||
static const struct dvb_pll_desc dvb_pll_opera1 = {
|
static const struct dvb_pll_desc dvb_pll_opera1 = {
|
||||||
.name = "Opera Tuner",
|
.name = "Opera Tuner",
|
||||||
.min = 900000,
|
.min = 900 * MHz,
|
||||||
.max = 2250000,
|
.max = 2250 * MHz,
|
||||||
.initdata = (u8[]){ 4, 0x08, 0xe5, 0xe1, 0x00 },
|
.initdata = (u8[]){ 4, 0x08, 0xe5, 0xe1, 0x00 },
|
||||||
.initdata2 = (u8[]){ 4, 0x08, 0xe5, 0xe5, 0x00 },
|
.initdata2 = (u8[]){ 4, 0x08, 0xe5, 0xe5, 0x00 },
|
||||||
.iffreq= 0,
|
.iffreq= 0,
|
||||||
@@ -445,8 +445,8 @@ static void samsung_dtos403ih102a_set(struct dvb_frontend *fe, u8 *buf)
|
|||||||
/* unknown pll used in Samsung DTOS403IH102A DVB-C tuner */
|
/* unknown pll used in Samsung DTOS403IH102A DVB-C tuner */
|
||||||
static const struct dvb_pll_desc dvb_pll_samsung_dtos403ih102a = {
|
static const struct dvb_pll_desc dvb_pll_samsung_dtos403ih102a = {
|
||||||
.name = "Samsung DTOS403IH102A",
|
.name = "Samsung DTOS403IH102A",
|
||||||
.min = 44250000,
|
.min = 44250 * kHz,
|
||||||
.max = 858000000,
|
.max = 858 * MHz,
|
||||||
.iffreq = 36125000,
|
.iffreq = 36125000,
|
||||||
.count = 8,
|
.count = 8,
|
||||||
.set = samsung_dtos403ih102a_set,
|
.set = samsung_dtos403ih102a_set,
|
||||||
@@ -465,8 +465,8 @@ static const struct dvb_pll_desc dvb_pll_samsung_dtos403ih102a = {
|
|||||||
/* Samsung TDTC9251DH0 DVB-T NIM, as used on AirStar 2 */
|
/* Samsung TDTC9251DH0 DVB-T NIM, as used on AirStar 2 */
|
||||||
static const struct dvb_pll_desc dvb_pll_samsung_tdtc9251dh0 = {
|
static const struct dvb_pll_desc dvb_pll_samsung_tdtc9251dh0 = {
|
||||||
.name = "Samsung TDTC9251DH0",
|
.name = "Samsung TDTC9251DH0",
|
||||||
.min = 48000000,
|
.min = 48 * MHz,
|
||||||
.max = 863000000,
|
.max = 863 * MHz,
|
||||||
.iffreq = 36166667,
|
.iffreq = 36166667,
|
||||||
.count = 3,
|
.count = 3,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -479,8 +479,8 @@ static const struct dvb_pll_desc dvb_pll_samsung_tdtc9251dh0 = {
|
|||||||
/* Samsung TBDU18132 DVB-S NIM with TSA5059 PLL, used in SkyStar2 DVB-S 2.3 */
|
/* Samsung TBDU18132 DVB-S NIM with TSA5059 PLL, used in SkyStar2 DVB-S 2.3 */
|
||||||
static const struct dvb_pll_desc dvb_pll_samsung_tbdu18132 = {
|
static const struct dvb_pll_desc dvb_pll_samsung_tbdu18132 = {
|
||||||
.name = "Samsung TBDU18132",
|
.name = "Samsung TBDU18132",
|
||||||
.min = 950000,
|
.min = 950 * MHz,
|
||||||
.max = 2150000, /* guesses */
|
.max = 2150 * MHz, /* guesses */
|
||||||
.iffreq = 0,
|
.iffreq = 0,
|
||||||
.count = 2,
|
.count = 2,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -500,8 +500,8 @@ static const struct dvb_pll_desc dvb_pll_samsung_tbdu18132 = {
|
|||||||
/* Samsung TBMU24112 DVB-S NIM with SL1935 zero-IF tuner */
|
/* Samsung TBMU24112 DVB-S NIM with SL1935 zero-IF tuner */
|
||||||
static const struct dvb_pll_desc dvb_pll_samsung_tbmu24112 = {
|
static const struct dvb_pll_desc dvb_pll_samsung_tbmu24112 = {
|
||||||
.name = "Samsung TBMU24112",
|
.name = "Samsung TBMU24112",
|
||||||
.min = 950000,
|
.min = 950 * MHz,
|
||||||
.max = 2150000, /* guesses */
|
.max = 2150 * MHz, /* guesses */
|
||||||
.iffreq = 0,
|
.iffreq = 0,
|
||||||
.count = 2,
|
.count = 2,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -521,8 +521,8 @@ static const struct dvb_pll_desc dvb_pll_samsung_tbmu24112 = {
|
|||||||
* 822 - 862 1 * 0 0 1 0 0 0 0x88 */
|
* 822 - 862 1 * 0 0 1 0 0 0 0x88 */
|
||||||
static const struct dvb_pll_desc dvb_pll_alps_tdee4 = {
|
static const struct dvb_pll_desc dvb_pll_alps_tdee4 = {
|
||||||
.name = "ALPS TDEE4",
|
.name = "ALPS TDEE4",
|
||||||
.min = 47000000,
|
.min = 47 * MHz,
|
||||||
.max = 862000000,
|
.max = 862 * MHz,
|
||||||
.iffreq = 36125000,
|
.iffreq = 36125000,
|
||||||
.count = 4,
|
.count = 4,
|
||||||
.entries = {
|
.entries = {
|
||||||
@@ -537,8 +537,8 @@ static const struct dvb_pll_desc dvb_pll_alps_tdee4 = {
|
|||||||
/* CP cur. 50uA, AGC takeover: 103dBuV, PORT3 on */
|
/* CP cur. 50uA, AGC takeover: 103dBuV, PORT3 on */
|
||||||
static const struct dvb_pll_desc dvb_pll_tua6034_friio = {
|
static const struct dvb_pll_desc dvb_pll_tua6034_friio = {
|
||||||
.name = "Infineon TUA6034 ISDB-T (Friio)",
|
.name = "Infineon TUA6034 ISDB-T (Friio)",
|
||||||
.min = 90000000,
|
.min = 90 * MHz,
|
||||||
.max = 770000000,
|
.max = 770 * MHz,
|
||||||
.iffreq = 57000000,
|
.iffreq = 57000000,
|
||||||
.initdata = (u8[]){ 4, 0x9a, 0x50, 0xb2, 0x08 },
|
.initdata = (u8[]){ 4, 0x9a, 0x50, 0xb2, 0x08 },
|
||||||
.sleepdata = (u8[]){ 4, 0x9a, 0x70, 0xb3, 0x0b },
|
.sleepdata = (u8[]){ 4, 0x9a, 0x70, 0xb3, 0x0b },
|
||||||
@@ -553,8 +553,8 @@ static const struct dvb_pll_desc dvb_pll_tua6034_friio = {
|
|||||||
/* Philips TDA6651 ISDB-T, used in Earthsoft PT1 */
|
/* Philips TDA6651 ISDB-T, used in Earthsoft PT1 */
|
||||||
static const struct dvb_pll_desc dvb_pll_tda665x_earth_pt1 = {
|
static const struct dvb_pll_desc dvb_pll_tda665x_earth_pt1 = {
|
||||||
.name = "Philips TDA6651 ISDB-T (EarthSoft PT1)",
|
.name = "Philips TDA6651 ISDB-T (EarthSoft PT1)",
|
||||||
.min = 90000000,
|
.min = 90 * MHz,
|
||||||
.max = 770000000,
|
.max = 770 * MHz,
|
||||||
.iffreq = 57000000,
|
.iffreq = 57000000,
|
||||||
.initdata = (u8[]){ 5, 0x0e, 0x7f, 0xc1, 0x80, 0x80 },
|
.initdata = (u8[]){ 5, 0x0e, 0x7f, 0xc1, 0x80, 0x80 },
|
||||||
.count = 10,
|
.count = 10,
|
||||||
@@ -610,9 +610,6 @@ static int dvb_pll_configure(struct dvb_frontend *fe, u8 *buf,
|
|||||||
u32 div;
|
u32 div;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (frequency && (frequency < desc->min || frequency > desc->max))
|
|
||||||
return -EINVAL;
|
|
||||||
|
|
||||||
for (i = 0; i < desc->count; i++) {
|
for (i = 0; i < desc->count; i++) {
|
||||||
if (frequency > desc->entries[i].limit)
|
if (frequency > desc->entries[i].limit)
|
||||||
continue;
|
continue;
|
||||||
@@ -799,7 +796,6 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
|||||||
struct dvb_pll_priv *priv = NULL;
|
struct dvb_pll_priv *priv = NULL;
|
||||||
int ret;
|
int ret;
|
||||||
const struct dvb_pll_desc *desc;
|
const struct dvb_pll_desc *desc;
|
||||||
struct dtv_frontend_properties *c = &fe->dtv_property_cache;
|
|
||||||
|
|
||||||
b1 = kmalloc(1, GFP_KERNEL);
|
b1 = kmalloc(1, GFP_KERNEL);
|
||||||
if (!b1)
|
if (!b1)
|
||||||
@@ -845,18 +841,12 @@ struct dvb_frontend *dvb_pll_attach(struct dvb_frontend *fe, int pll_addr,
|
|||||||
|
|
||||||
strncpy(fe->ops.tuner_ops.info.name, desc->name,
|
strncpy(fe->ops.tuner_ops.info.name, desc->name,
|
||||||
sizeof(fe->ops.tuner_ops.info.name));
|
sizeof(fe->ops.tuner_ops.info.name));
|
||||||
switch (c->delivery_system) {
|
|
||||||
case SYS_DVBS:
|
fe->ops.tuner_ops.info.frequency_min_hz = desc->min;
|
||||||
case SYS_DVBS2:
|
fe->ops.tuner_ops.info.frequency_max_hz = desc->max;
|
||||||
case SYS_TURBO:
|
|
||||||
case SYS_ISDBS:
|
dprintk("%s tuner, frequency range: %u...%u\n",
|
||||||
fe->ops.tuner_ops.info.frequency_min_hz = desc->min * kHz;
|
desc->name, desc->min, desc->max);
|
||||||
fe->ops.tuner_ops.info.frequency_max_hz = desc->max * kHz;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
fe->ops.tuner_ops.info.frequency_min_hz = desc->min;
|
|
||||||
fe->ops.tuner_ops.info.frequency_max_hz = desc->max;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!desc->initdata)
|
if (!desc->initdata)
|
||||||
fe->ops.tuner_ops.init = NULL;
|
fe->ops.tuner_ops.init = NULL;
|
||||||
|
|||||||
@@ -238,6 +238,9 @@ static const struct file_operations request_fops = {
|
|||||||
.owner = THIS_MODULE,
|
.owner = THIS_MODULE,
|
||||||
.poll = media_request_poll,
|
.poll = media_request_poll,
|
||||||
.unlocked_ioctl = media_request_ioctl,
|
.unlocked_ioctl = media_request_ioctl,
|
||||||
|
#ifdef CONFIG_COMPAT
|
||||||
|
.compat_ioctl = media_request_ioctl,
|
||||||
|
#endif /* CONFIG_COMPAT */
|
||||||
.release = media_request_close,
|
.release = media_request_close,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -304,7 +304,8 @@ restart:
|
|||||||
for (; p < p_out + sz; p++) {
|
for (; p < p_out + sz; p++) {
|
||||||
u32 copy;
|
u32 copy;
|
||||||
|
|
||||||
p = memchr(p, magic[ctx->comp_magic_cnt], sz);
|
p = memchr(p, magic[ctx->comp_magic_cnt],
|
||||||
|
p_out + sz - p);
|
||||||
if (!p) {
|
if (!p) {
|
||||||
ctx->comp_magic_cnt = 0;
|
ctx->comp_magic_cnt = 0;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -426,10 +426,10 @@ void gspca_frame_add(struct gspca_dev *gspca_dev,
|
|||||||
|
|
||||||
/* append the packet to the frame buffer */
|
/* append the packet to the frame buffer */
|
||||||
if (len > 0) {
|
if (len > 0) {
|
||||||
if (gspca_dev->image_len + len > gspca_dev->pixfmt.sizeimage) {
|
if (gspca_dev->image_len + len > PAGE_ALIGN(gspca_dev->pixfmt.sizeimage)) {
|
||||||
gspca_err(gspca_dev, "frame overflow %d > %d\n",
|
gspca_err(gspca_dev, "frame overflow %d > %d\n",
|
||||||
gspca_dev->image_len + len,
|
gspca_dev->image_len + len,
|
||||||
gspca_dev->pixfmt.sizeimage);
|
PAGE_ALIGN(gspca_dev->pixfmt.sizeimage));
|
||||||
packet_type = DISCARD_PACKET;
|
packet_type = DISCARD_PACKET;
|
||||||
} else {
|
} else {
|
||||||
/* !! image is NULL only when last pkt is LAST or DISCARD
|
/* !! image is NULL only when last pkt is LAST or DISCARD
|
||||||
@@ -1297,18 +1297,19 @@ static int gspca_queue_setup(struct vb2_queue *vq,
|
|||||||
unsigned int sizes[], struct device *alloc_devs[])
|
unsigned int sizes[], struct device *alloc_devs[])
|
||||||
{
|
{
|
||||||
struct gspca_dev *gspca_dev = vb2_get_drv_priv(vq);
|
struct gspca_dev *gspca_dev = vb2_get_drv_priv(vq);
|
||||||
|
unsigned int size = PAGE_ALIGN(gspca_dev->pixfmt.sizeimage);
|
||||||
|
|
||||||
if (*nplanes)
|
if (*nplanes)
|
||||||
return sizes[0] < gspca_dev->pixfmt.sizeimage ? -EINVAL : 0;
|
return sizes[0] < size ? -EINVAL : 0;
|
||||||
*nplanes = 1;
|
*nplanes = 1;
|
||||||
sizes[0] = gspca_dev->pixfmt.sizeimage;
|
sizes[0] = size;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int gspca_buffer_prepare(struct vb2_buffer *vb)
|
static int gspca_buffer_prepare(struct vb2_buffer *vb)
|
||||||
{
|
{
|
||||||
struct gspca_dev *gspca_dev = vb2_get_drv_priv(vb->vb2_queue);
|
struct gspca_dev *gspca_dev = vb2_get_drv_priv(vb->vb2_queue);
|
||||||
unsigned long size = gspca_dev->pixfmt.sizeimage;
|
unsigned long size = PAGE_ALIGN(gspca_dev->pixfmt.sizeimage);
|
||||||
|
|
||||||
if (vb2_plane_size(vb, 0) < size) {
|
if (vb2_plane_size(vb, 0) < size) {
|
||||||
gspca_err(gspca_dev, "buffer too small (%lu < %lu)\n",
|
gspca_err(gspca_dev, "buffer too small (%lu < %lu)\n",
|
||||||
|
|||||||
@@ -5,3 +5,8 @@ Before this stateless decoder driver can leave the staging area:
|
|||||||
* Userspace support for the Request API needs to be reviewed;
|
* Userspace support for the Request API needs to be reviewed;
|
||||||
* Another stateless decoder driver should be submitted;
|
* Another stateless decoder driver should be submitted;
|
||||||
* At least one stateless encoder driver should be submitted.
|
* At least one stateless encoder driver should be submitted.
|
||||||
|
* When queueing a request containing references to I frames, the
|
||||||
|
refcount of the memory for those I frames needs to be incremented
|
||||||
|
and decremented when the request is completed. This will likely
|
||||||
|
require some help from vb2. The driver should fail the request
|
||||||
|
if the memory/buffer is gone.
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ struct media_request {
|
|||||||
unsigned int access_count;
|
unsigned int access_count;
|
||||||
struct list_head objects;
|
struct list_head objects;
|
||||||
unsigned int num_incomplete_objects;
|
unsigned int num_incomplete_objects;
|
||||||
struct wait_queue_head poll_wait;
|
wait_queue_head_t poll_wait;
|
||||||
spinlock_t lock;
|
spinlock_t lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user