Commit e7345f92 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'media/v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:

 - a new sensor driver for ov5675

 - a new platform driver for Allwinner A10 sensor interface

 - some new remote controller keymaps

 - some cosmetic changes at V4L2 core in order to avoid #ifdefs and to
   merge two core modules into one

 - removal of bcm2048 radio driver from staging

 - removal of davinci_vpfe video driver from staging

 - regression fix since Kernel 5.1 at the legacy VideoBuffer version 1
   core

 - added some documentation for remote controller protocols

 - pixel format documentation was split on two files

 - lots of other driver improvements and cleanups

* tag 'media/v5.4-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (321 commits)
  media: videobuf-core.c: poll_wait needs a non-NULL buf pointer
  media: sun4i: Make sun4i_csi_formats static
  media: imx: remove unused including <linux/version.h>
  media: stm32-dcmi: Delete an unnecessary of_node_put() call in dcmi_probe()
  media: pvrusb2: qctrl.flag will be uninitlaized if cx2341x_ctrl_query() returns error code
  media: em28xx: Fix exception handling in em28xx_alloc_urbs()
  media: don't do a 31 bit shift on a signed int
  media: use the BIT() macro
  media: ov9650: add a sanity check
  media: aspeed-video: address a protential usage of an unitialized var
  media: vicodec: make life easier for static analyzers
  media: remove include stdarg.h from some drivers
  v4l2-core: fix coding style for the two new c files
  media: v4l2-core: Remove BUG() from i2c and spi helpers
  media: v4l2-core: introduce a helper to unregister a i2c subdev
  media: v4l2-core: introduce a helper to unregister a spi subdev
  media: v4l2-core: move i2c helpers out of v4l2-common.c
  media: v4l2-core: move spi helpers out of v4l2-common.c
  media: v4l2-core: Module re-organization
  media: usbvision: Remove dead code
  ...
parents 6ab8ad31 6f51fdfd
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/arm/allwinner,sun4i-a10-csi.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Allwinner A10 CMOS Sensor Interface (CSI) Device Tree Bindings
maintainers:
- Chen-Yu Tsai <wens@csie.org>
- Maxime Ripard <maxime.ripard@bootlin.com>
description: |-
The Allwinner A10 and later has a CMOS Sensor Interface to retrieve
frames from a parallel or BT656 sensor.
properties:
compatible:
const: allwinner,sun7i-a20-csi0
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
items:
- description: The CSI interface clock
- description: The CSI module clock
- description: The CSI ISP clock
- description: The CSI DRAM clock
clock-names:
items:
- const: bus
- const: mod
- const: isp
- const: ram
resets:
maxItems: 1
# See ./video-interfaces.txt for details
port:
type: object
additionalProperties: false
properties:
endpoint:
type: object
properties:
bus-width:
enum: [8, 16]
data-active: true
hsync-active: true
pclk-sample: true
remote-endpoint: true
vsync-active: true
required:
- bus-width
- data-active
- hsync-active
- pclk-sample
- remote-endpoint
- vsync-active
required:
- endpoint
required:
- compatible
- reg
- interrupts
- clocks
additionalProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/sun7i-a20-ccu.h>
#include <dt-bindings/reset/sun4i-a10-ccu.h>
csi0: csi@1c09000 {
compatible = "allwinner,sun7i-a20-csi0";
reg = <0x01c09000 0x1000>;
interrupts = <GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&ccu CLK_AHB_CSI0>, <&ccu CLK_CSI0>,
<&ccu CLK_CSI_SCLK>, <&ccu CLK_DRAM_CSI0>;
clock-names = "bus", "mod", "isp", "ram";
resets = <&ccu RST_CSI0>;
port {
csi_from_ov5640: endpoint {
remote-endpoint = <&ov5640_to_csi>;
bus-width = <8>;
hsync-active = <1>; /* Active high */
vsync-active = <0>; /* Active low */
data-active = <1>; /* Active high */
pclk-sample = <1>; /* Rising */
};
};
};
...
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/allwinner,sun4i-a10-ir.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Allwinner A10 Infrared Controller Device Tree Bindings
maintainers:
- Chen-Yu Tsai <wens@csie.org>
- Maxime Ripard <maxime.ripard@bootlin.com>
allOf:
- $ref: "rc.yaml#"
properties:
compatible:
oneOf:
- const: allwinner,sun4i-a10-ir
- const: allwinner,sun5i-a13-ir
- items:
- const: allwinner,sun8i-a83t-ir
- const: allwinner,sun6i-a31-ir
- const: allwinner,sun6i-a31-ir
- items:
- const: allwinner,sun50i-a64-ir
- const: allwinner,sun6i-a31-ir
- items:
- const: allwinner,sun50i-h6-ir
- const: allwinner,sun6i-a31-ir
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
items:
- description: Bus Clock
- description: Module Clock
clock-names:
items:
- const: apb
- const: ir
resets:
maxItems: 1
clock-frequency:
default: 8000000
description:
IR Receiver clock frequency, in Hertz.
required:
- compatible
- reg
- interrupts
- clocks
- clock-names
# FIXME: We should set it, but it would report all the generic
# properties as additional properties.
# additionalProperties: false
examples:
- |
ir0: ir@1c21800 {
compatible = "allwinner,sun4i-a10-ir";
clocks = <&apb0_gates 6>, <&ir0_clk>;
clock-names = "apb", "ir";
clock-frequency = <3000000>;
resets = <&apb0_rst 1>;
interrupts = <0 5 1>;
reg = <0x01C21800 0x40>;
linux,rc-map-name = "rc-rc6-mce";
};
...
......@@ -5,7 +5,8 @@ The Cadence MIPI-CSI2 TX controller is a CSI-2 bridge supporting up to
4 CSI lanes in output, and up to 4 different pixel streams in input.
Required properties:
- compatible: must be set to "cdns,csi2tx"
- compatible: must be set to "cdns,csi2tx" or "cdns,csi2tx-1.3"
for version 1.3 of the controller, "cdns,csi2tx-2.1" for v2.1
- reg: base address and size of the memory mapped region
- clocks: phandles to the clocks driving the controller
- clock-names: must contain:
......
......@@ -9,7 +9,7 @@ to connect directly to external CMOS image sensors.
Required properties:
- compatible : "fsl,imx7-csi";
- compatible : "fsl,imx7-csi" or "fsl,imx6ul-csi";
- reg : base address and length of the register set for the device;
- interrupts : should contain CSI interrupt;
- clocks : list of clock specifiers, see
......
......@@ -5,10 +5,12 @@ to handle communication between HDMI connected devices over the CEC bus.
Required properties:
- compatible : value should be following depending on the SoC :
For GXBB, GXL, GXM and G12A (AO_CEC_A module) :
For GXBB, GXL, GXM, G12A and SM1 (AO_CEC_A module) :
"amlogic,meson-gx-ao-cec"
For G12A (AO_CEC_B module) :
"amlogic,meson-g12a-ao-cec"
For SM1 (AO_CEC_B module) :
"amlogic,meson-sm1-ao-cec"
- reg : Physical base address of the IP registers and length of memory
mapped region.
......@@ -16,9 +18,9 @@ Required properties:
- interrupts : AO-CEC interrupt number to the CPU.
- clocks : from common clock binding: handle to AO-CEC clock.
- clock-names : from common clock binding, must contain :
For GXBB, GXL, GXM and G12A (AO_CEC_A module) :
For GXBB, GXL, GXM, G12A and SM1 (AO_CEC_A module) :
- "core"
For G12A (AO_CEC_B module) :
For G12A, SM1 (AO_CEC_B module) :
- "oscin"
corresponding to entry in the clocks property.
- hdmi-phandle: phandle to the HDMI controller
......
......@@ -35,6 +35,7 @@ Optional properties:
- resets : Must contain an entry for each entry in reset-names.
- reset-names : Must include the following entries:
- mc
- iommus: Must contain phandle to the IOMMU device node.
Example:
......@@ -59,4 +60,5 @@ video-codec@6001a000 {
clocks = <&tegra_car TEGRA20_CLK_VDE>;
reset-names = "vde", "mc";
resets = <&tegra_car 61>, <&mc TEGRA20_MC_RESET_VDE>;
iommus = <&mc TEGRA_SWGROUP_VDE>;
};
The following properties are common to the infrared remote controllers:
- linux,rc-map-name: string, specifies the scancode/key mapping table
defined in-kernel for the remote controller. Support values are:
* "rc-adstech-dvb-t-pci"
* "rc-alink-dtu-m"
* "rc-anysee"
* "rc-apac-viewcomp"
* "rc-asus-pc39"
* "rc-asus-ps3-100"
* "rc-ati-tv-wonder-hd-600"
* "rc-ati-x10"
* "rc-avermedia-a16d"
* "rc-avermedia-cardbus"
* "rc-avermedia-dvbt"
* "rc-avermedia-m135a"
* "rc-avermedia-m733a-rm-k6"
* "rc-avermedia-rm-ks"
* "rc-avermedia"
* "rc-avertv-303"
* "rc-azurewave-ad-tu700"
* "rc-behold-columbus"
* "rc-behold"
* "rc-budget-ci-old"
* "rc-cec"
* "rc-cinergy-1400"
* "rc-cinergy"
* "rc-delock-61959"
* "rc-dib0700-nec"
* "rc-dib0700-rc5"
* "rc-digitalnow-tinytwin"
* "rc-digittrade"
* "rc-dm1105-nec"
* "rc-dntv-live-dvbt-pro"
* "rc-dntv-live-dvb-t"
* "rc-dtt200u"
* "rc-dvbsky"
* "rc-empty"
* "rc-em-terratec"
* "rc-encore-enltv2"
* "rc-encore-enltv-fm53"
* "rc-encore-enltv"
* "rc-evga-indtube"
* "rc-eztv"
* "rc-flydvb"
* "rc-flyvideo"
* "rc-fusionhdtv-mce"
* "rc-gadmei-rm008z"
* "rc-geekbox"
* "rc-genius-tvgo-a11mce"
* "rc-gotview7135"
* "rc-hauppauge"
* "rc-imon-mce"
* "rc-imon-pad"
* "rc-iodata-bctv7e"
* "rc-it913x-v1"
* "rc-it913x-v2"
* "rc-kaiomy"
* "rc-kworld-315u"
* "rc-kworld-pc150u"
* "rc-kworld-plus-tv-analog"
* "rc-leadtek-y04g0051"
* "rc-lirc"
* "rc-lme2510"
* "rc-manli"
* "rc-medion-x10"
* "rc-medion-x10-digitainer"
* "rc-medion-x10-or2x"
* "rc-msi-digivox-ii"
* "rc-msi-digivox-iii"
* "rc-msi-tvanywhere-plus"
* "rc-msi-tvanywhere"
* "rc-nebula"
* "rc-nec-terratec-cinergy-xs"
* "rc-norwood"
* "rc-npgtech"
* "rc-pctv-sedna"
* "rc-pinnacle-color"
* "rc-pinnacle-grey"
* "rc-pinnacle-pctv-hd"
* "rc-pixelview-new"
* "rc-pixelview"
* "rc-pixelview-002t"
* "rc-pixelview-mk12"
* "rc-powercolor-real-angel"
* "rc-proteus-2309"
* "rc-purpletv"
* "rc-pv951"
* "rc-hauppauge"
* "rc-rc5-tv"
* "rc-rc6-mce"
* "rc-real-audio-220-32-keys"
* "rc-reddo"
* "rc-snapstream-firefly"
* "rc-streamzap"
* "rc-tbs-nec"
* "rc-technisat-ts35"
* "rc-technisat-usb2"
* "rc-terratec-cinergy-c-pci"
* "rc-terratec-cinergy-s2-hd"
* "rc-terratec-cinergy-xs"
* "rc-terratec-slim"
* "rc-terratec-slim-2"
* "rc-tevii-nec"
* "rc-tivo"
* "rc-total-media-in-hand"
* "rc-total-media-in-hand-02"
* "rc-trekstor"
* "rc-tt-1500"
* "rc-twinhan-dtv-cab-ci"
* "rc-twinhan1027"
* "rc-videomate-k100"
* "rc-videomate-s350"
* "rc-videomate-tv-pvr"
* "rc-winfast"
* "rc-winfast-usbii-deluxe"
* "rc-su3000"
This file has been moved to rc.yaml.
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/rc.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Generic Infrared Remote Controller Device Tree Bindings
maintainers:
- Mauro Carvalho Chehab <mchehab@kernel.org>
- Sean Young <sean@mess.org>
properties:
$nodename:
pattern: "^ir(@[a-f0-9]+)?$"
linux,rc-map-name:
description:
Specifies the scancode/key mapping table defined in-kernel for
the remote controller.
allOf:
- $ref: '/schemas/types.yaml#/definitions/string'
- enum:
- rc-adstech-dvb-t-pci
- rc-alink-dtu-m
- rc-anysee
- rc-apac-viewcomp
- rc-astrometa-t2hybrid
- rc-asus-pc39
- rc-asus-ps3-100
- rc-ati-tv-wonder-hd-600
- rc-ati-x10
- rc-avermedia
- rc-avermedia-a16d
- rc-avermedia-cardbus
- rc-avermedia-dvbt
- rc-avermedia-m135a
- rc-avermedia-m733a-rm-k6
- rc-avermedia-rm-ks
- rc-avertv-303
- rc-azurewave-ad-tu700
- rc-behold
- rc-behold-columbus
- rc-budget-ci-old
- rc-cec
- rc-cinergy
- rc-cinergy-1400
- rc-d680-dmb
- rc-delock-61959
- rc-dib0700-nec
- rc-dib0700-rc5
- rc-digitalnow-tinytwin
- rc-digittrade
- rc-dm1105-nec
- rc-dntv-live-dvb-t
- rc-dntv-live-dvbt-pro
- rc-dtt200u
- rc-dvbsky
- rc-dvico-mce
- rc-dvico-portable
- rc-em-terratec
- rc-empty
- rc-encore-enltv
- rc-encore-enltv-fm53
- rc-encore-enltv2
- rc-evga-indtube
- rc-eztv
- rc-flydvb
- rc-flyvideo
- rc-fusionhdtv-mce
- rc-gadmei-rm008z
- rc-geekbox
- rc-genius-tvgo-a11mce
- rc-gotview7135
- rc-hauppauge
- rc-hauppauge
- rc-hisi-poplar
- rc-hisi-tv-demo
- rc-imon-mce
- rc-imon-pad
- rc-imon-rsc
- rc-iodata-bctv7e
- rc-it913x-v1
- rc-it913x-v2
- rc-kaiomy
- rc-kworld-315u
- rc-kworld-pc150u
- rc-kworld-plus-tv-analog
- rc-leadtek-y04g0051
- rc-lme2510
- rc-manli
- rc-medion-x10
- rc-medion-x10-digitainer
- rc-medion-x10-or2x
- rc-msi-digivox-ii
- rc-msi-digivox-iii
- rc-msi-tvanywhere
- rc-msi-tvanywhere-plus
- rc-nebula
- rc-nec-terratec-cinergy-xs
- rc-norwood
- rc-npgtech
- rc-pctv-sedna
- rc-pinnacle-color
- rc-pinnacle-grey
- rc-pinnacle-pctv-hd
- rc-pixelview
- rc-pixelview-002t
- rc-pixelview-mk12
- rc-pixelview-new
- rc-powercolor-real-angel
- rc-proteus-2309
- rc-purpletv
- rc-pv951
- rc-rc5-tv
- rc-rc6-mce
- rc-real-audio-220-32-keys
- rc-reddo
- rc-snapstream-firefly
- rc-streamzap
- rc-su3000
- rc-tango
- rc-tbs-nec
- rc-technisat-ts35
- rc-technisat-usb2
- rc-terratec-cinergy-c-pci
- rc-terratec-cinergy-s2-hd
- rc-terratec-cinergy-xs
- rc-terratec-slim
- rc-terratec-slim-2
- rc-tevii-nec
- rc-tivo
- rc-total-media-in-hand
- rc-total-media-in-hand-02
- rc-trekstor
- rc-tt-1500
- rc-twinhan-dtv-cab-ci
- rc-twinhan1027
- rc-videomate-k100
- rc-videomate-s350
- rc-videomate-tv-pvr
- rc-winfast
- rc-winfast-usbii-deluxe
- rc-xbox-dvd
- rc-zx-irdec
device-tree bindings for rockchip VPU codec
Rockchip (Video Processing Unit) present in various Rockchip platforms,
such as RK3288 and RK3399.
such as RK3288, RK3328 and RK3399.
Required properties:
- compatible: value should be one of the following
"rockchip,rk3288-vpu";
"rockchip,rk3328-vpu";
"rockchip,rk3399-vpu";
- interrupts: encoding and decoding interrupt specifiers
- interrupt-names: should be "vepu" and "vdpu"
- interrupt-names: should be
"vepu", "vdpu" on RK3288 and RK3399,
"vdpu" on RK3328.
- clocks: phandle to VPU aclk, hclk clocks
- clock-names: should be "aclk" and "hclk"
- power-domains: phandle to power domain node
......@@ -27,3 +30,14 @@ SoC-specific DT entry:
power-domains = <&power RK3288_PD_VIDEO>;
iommus = <&vpu_mmu>;
};
vpu: video-codec@ff350000 {
compatible = "rockchip,rk3328-vpu";
reg = <0x0 0xff350000 0x0 0x800>;
interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "vdpu";
clocks = <&cru ACLK_VPU>, <&cru HCLK_VPU>;
clock-names = "aclk", "hclk";
power-domains = <&power RK3328_PD_VPU>;
iommus = <&vpu_mmu>;
};
Device-Tree bindings for SUNXI IR controller found in sunXi SoC family
Required properties:
- compatible : "allwinner,sun4i-a10-ir" or "allwinner,sun5i-a13-ir"
- clocks : list of clock specifiers, corresponding to
entries in clock-names property;
- clock-names : should contain "apb" and "ir" entries;
- interrupts : should contain IR IRQ number;
- reg : should contain IO map address for IR.
Optional properties:
- linux,rc-map-name: see rc.txt file in the same directory.
- resets : phandle + reset specifier pair
- clock-frequency : IR Receiver clock frequency, in Hertz. Defaults to 8 MHz
if missing.
Example:
ir0: ir@1c21800 {
compatible = "allwinner,sun4i-a10-ir";
clocks = <&apb0_gates 6>, <&ir0_clk>;
clock-names = "apb", "ir";
clock-frequency = <3000000>;
resets = <&apb0_rst 1>;
interrupts = <0 5 1>;
reg = <0x01C21800 0x40>;
linux,rc-map-name = "rc-rc6-mce";
};
......@@ -49,9 +49,13 @@ where
The transmitter drivers must, if possible, configure the CSI-2
transmitter to *LP-11 mode* whenever the transmitter is powered on but
not active. Some transmitters do this automatically but some have to
be explicitly programmed to do so, and some are unable to do so
altogether due to hardware constraints.
not active, and maintain *LP-11 mode* until stream on. Only at stream
on should the transmitter activate the clock on the clock lane and
transition to *HS mode*.
Some transmitters do this automatically but some have to be explicitly
programmed to do so, and some are unable to do so altogether due to
hardware constraints.
Stopping the transmitter
^^^^^^^^^^^^^^^^^^^^^^^^
......@@ -72,3 +76,10 @@ the transmitter up by using the
:c:type:`v4l2_subdev_core_ops`->s_power() callback. This may take
place either indirectly by using :c:func:`v4l2_pipeline_pm_use` or
directly.
Formats
-------
The media bus pixel codes document parallel formats. Should the pixel data be
transported over a serial bus, the media bus pixel code that describes a
parallel format that transfers a sample on a single clock cycle is used.
......@@ -288,6 +288,7 @@ Mask Description