Skip to content

Commit

Permalink
Merge tag 'media/v6.15-1' of git://git.kernel.org/pub/scm/linux/kerne…
Browse files Browse the repository at this point in the history
…l/git/mchehab/linux-media

Pull media updates from Mauro Carvalho Chehab:

 - platform: synopsys: hdmirx: Fix 64-bit division for 32-bit targets

 - vim2m: print device name after registering device

 - Synopsys DesignWare HDMI RX Driver and various fixes

 - cec/printk fixes and the removal of the vidioc_g/s_ctrl and
   vidioc_queryctrl callbacks

 - AVerMedia H789-C PCIe support and rc-core structs padding

 - Several camera sensor patches

 - uvcvideo improvements

 - visl: Fix ERANGE error when setting enum controls

 - codec fixes

 - V4L2 camera sensor patches mostly

 - chips-media: wave5: Fixes

 - Add SDM670 camera subsystem

 - Qualcomm iris video decoder driver

 - dt-bindings: update clocks for sc7280-camss

 - various fixes and enhancements

* tag 'media/v6.15-1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (264 commits)
  media: pci: mgb4: include linux/errno.h
  media: synopsys: hdmirx: Fix signedness bug in hdmirx_parse_dt()
  media: platform: synopsys: hdmirx: Fix 64-bit division for 32-bit targets
  media: vim2m: print device name after registering device
  media: vivid: Introduce VIDEO_VIVID_OSD
  media: vivid: Move all fb_info references into vivid-osd
  media: platform: synopsys: hdmirx: Optimize struct snps_hdmirx_dev
  media: platform: synopsys: hdmirx: Remove unused HDMI audio CODEC relics
  media: platform: synopsys: hdmirx: Remove duplicated header inclusion
  media: qcom: Clean up Kconfig dependencies
  media: dvb-frontends: tda10048: Make the range of z explicit.
  media: platform: stm32: Add check for clk_enable()
  media: xilinx-tpg: fix double put in xtpg_parse_of()
  media: siano: Fix error handling in smsdvb_module_init()
  media: c8sectpfe: Call of_node_put(i2c_bus) only once in c8sectpfe_probe()
  media: i2c: tda1997x: Call of_node_put(ep) only once in tda1997x_parse_dt()
  dt-bindings: media: mediatek,vcodec: Revise description
  dt-bindings: media: mediatek,jpeg: Relax IOMMU max item count
  media: v4l2-dv-timings: prevent possible overflow in v4l2_detect_gtf()
  media: rockchip: rga: fix rga offset lookup
  ...
  • Loading branch information
Linus Torvalds committed Mar 26, 2025
2 parents c84907a + f215161 commit 1e26c5e
Show file tree
Hide file tree
Showing 281 changed files with 22,628 additions and 3,414 deletions.
2 changes: 1 addition & 1 deletion Documentation/admin-guide/media/cec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -451,7 +451,7 @@ configure the CEC devices for HDMI Input and the HDMI Outputs manually.
---------------------

A three character manufacturer name that is used in the EDID for the HDMI
Input. If not set, then userspace is reponsible for configuring an EDID.
Input. If not set, then userspace is responsible for configuring an EDID.
If set, then the driver will update the EDID automatically based on the
resolutions supported by the connected displays, and it will not be possible
anymore to manually set the EDID for the HDMI Input.
Expand Down
4 changes: 3 additions & 1 deletion Documentation/admin-guide/media/mgb4.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ Global (PCI card) parameters

| 0 - No module present
| 1 - FPDL3
| 2 - GMSL
| 2 - GMSL (one serializer, two daisy chained deserializers)
| 3 - GMSL (one serializer, two deserializers)
| 4 - GMSL (two deserializers with two daisy chain outputs)
**module_version** (R):
Module version number. Zero in case of a missing module.
Expand Down
70 changes: 70 additions & 0 deletions Documentation/devicetree/bindings/media/aspeed,video-engine.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/media/aspeed,video-engine.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: ASPEED Video Engine

maintainers:
- Eddie James <eajames@linux.ibm.com>

description:
The Video Engine (VE) embedded in the ASPEED SOCs can be configured to
capture and compress video data from digital or analog sources.

properties:
compatible:
enum:
- aspeed,ast2400-video-engine
- aspeed,ast2500-video-engine
- aspeed,ast2600-video-engine

reg:
maxItems: 1

clocks:
maxItems: 2

clock-names:
items:
- const: vclk
- const: eclk

resets:
maxItems: 1

interrupts:
maxItems: 1

memory-region:
maxItems: 1
description: |
Phandle to the reserved memory nodes to be associated with the
VE. VE will acquires memory space for 3 purposes:
1. JPEG header
2. Compressed result
3. Temporary transformed image data
required:
- compatible
- reg
- clocks
- clock-names
- interrupts

additionalProperties: false

examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
#include <dt-bindings/clock/ast2600-clock.h>
video@1e700000 {
compatible = "aspeed,ast2600-video-engine";
reg = <0x1e700000 0x1000>;
clocks = <&syscon ASPEED_CLK_GATE_VCLK>,
<&syscon ASPEED_CLK_GATE_ECLK>;
clock-names = "vclk", "eclk";
interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
};
33 changes: 0 additions & 33 deletions Documentation/devicetree/bindings/media/aspeed-video.txt

This file was deleted.

4 changes: 4 additions & 0 deletions Documentation/devicetree/bindings/media/i2c/adv7180.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,10 @@ properties:
Indicates that the output is a BT.656-4 compatible stream.
type: boolean

interrupts:
items:
- description: The GPIO connected to the INTRQ pin.

port:
$ref: /schemas/graph.yaml#/$defs/port-base
unevaluatedProperties: false
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ properties:
description:
Any lane can be inverted or not.
minItems: 1
maxItems: 2
maxItems: 3

required:
- data-lanes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,70 @@
$id: http://devicetree.org/schemas/media/mediatek,vcodec-subdev-decoder.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Mediatek Video Decode Accelerator With Multi Hardware
title: MediaTek Video Decode Accelerator With Multi Hardware

maintainers:
- Yunfei Dong <yunfei.dong@mediatek.com>

description: |
Mediatek Video Decode is the video decode hardware present in Mediatek
SoCs which supports high resolution decoding functionalities. Required
parent and child device node.
About the Decoder Hardware Block Diagram, please check below:
+------------------------------------------------+-------------------------------------+
| | |
| input -> lat soc HW -> lat HW -> lat buffer --|--> lat buffer -> core HW -> output |
| || || | || |
+------------||-------------||-------------------+---------------------||--------------+
|| lat || | core workqueue <parent>
-------------||-------------||-------------------|---------------------||---------------
||<------------||----------------HW index---------------->|| <child>
\/ \/ \/
+-------------------------------------------------------------+
| enable/disable |
| clk power irq iommu |
| (lat/lat soc/core0/core1) |
+-------------------------------------------------------------+
As above, there are parent and child devices, child mean each hardware. The child device
controls the information of each hardware independent which include clk/power/irq.
There are two workqueues in parent device: lat workqueue and core workqueue. They are used
to lat and core hardware decoder. Lat workqueue need to get input bitstream and lat buffer,
then enable lat to decode, writing the result to lat buffer, dislabe hardware when lat decode
done. Core workqueue need to get lat buffer and output buffer, then enable core to decode,
writing the result to output buffer, disable hardware when core decode done. These two
hardwares will decode each frame cyclically.
For the smi common may not the same for each hardware, can't combine all hardware in one node,
or leading to iommu fault when access dram data.
Lat soc is a hardware which is related with some larb(local arbiter) ports. For mt8195
platform, there are some ports like RDMA, UFO in lat soc larb, need to enable its power and
clock when lat start to work, don't have interrupt.
mt8195: lat soc HW + lat HW + core HW
mt8192: lat HW + core HW
MediaTek Video Decode Accelerator is the video decoding hardware present in
MediaTek SoCs that supports high-resolution decoding functionalities.
It consists of parent and child nodes.
The decoder hardware block diagram is shown below:
+------------------------------------------------+------------------------------+
| | |
| input -> LAT-SoC HW -> LAT HW -> LAT buffer --|--> Core HW -> output buffer |
| || || | || |
+--------------||-----------||-------------------+-------||---------------------+
LAT Workqueue | Core Workqueue <parent>
---------------||-----------||-------------------|-------||----------------------
||<----------||---------HW index--------->|| <child>
\/ \/ \/
+-------------------------------------------------------------+
| enable/disable |
| clk power irq iommu |
| (lat/lat-soc/core0/core1) |
+-------------------------------------------------------------+
The child nodes represent the individual hardware blocks within the decoding
pipeline, such as LAT-SoC, LAT and Core.
Each child node is responsible for managing the dedicated resources of the
hardware, such as clocks, power domains, interrupts and IOMMUs.
The parent node is a central point of control for the child nodes.
It identifies the specific video decoding pipeline architecture used by the
SoC, manages the shared resources like workqueues and platform data, and
handles V4L2 API calls on behalf of the underlying hardware.
The parent utilizes two workqueues to manage the decoding process.
1. LAT Workqueue, for LAT-SoC and LAT decoder:
Its workers take input bitstream and LAT buffer, enable the hardware for
decoding tasks, write the result to LAT buffer, and disable the hardware
after the LAT decoding is done.
2. Core Workqueue, for Core decoder:
Its workers take LAT buffer and output buffer, enable the hardware for
decoding tasks, write the result to output buffer, and disable the hardware
after the Core decoding is done.
These hardware decode each frame cyclically.
The hardware might be associated with different SMI-common devices.
To prevent IOMMU faults during DRAM access in such cases, each hardware with
the unique SMI-common device must be placed under a separate parent node in
the device tree.
LAT-SoC refers to another hardware block that connected to additional LARB
(local arbiter) ports, such as RDMA and UFO.
It requires independent power and clock control to work with LAT decoder, and
it doesn't have a dedicated interrupt.
The used video decoding pipeline architecture across various Mediatek SoC:
MT8195: LAT-SoC + LAT + Core
MT8192: LAT + Core
MT8188: LAT + Core
MT8186: Core
properties:
compatible:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ properties:
maxItems: 1

iommus:
maxItems: 2
minItems: 2
maxItems: 32
description: |
Points to the respective IOMMU block with master port as argument, see
Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ properties:

iommus:
minItems: 2
maxItems: 4
maxItems: 32
description: |
Points to the respective IOMMU block with master port as argument, see
Documentation/devicetree/bindings/iommu/mediatek,iommu.yaml for details.
Expand Down
10 changes: 5 additions & 5 deletions Documentation/devicetree/bindings/media/qcom,sc7280-camss.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ properties:
- const: csiphy3_timer
- const: csiphy4
- const: csiphy4_timer
- const: gcc_camera_ahb
- const: gcc_cam_hf_axi
- const: gcc_axi_hf
- const: gcc_axi_sf
- const: icp_ahb
- const: vfe0
- const: vfe0_axi
Expand Down Expand Up @@ -310,8 +310,8 @@ examples:
<&camcc CAM_CC_CSI3PHYTIMER_CLK>,
<&camcc CAM_CC_CSIPHY4_CLK>,
<&camcc CAM_CC_CSI4PHYTIMER_CLK>,
<&gcc GCC_CAMERA_AHB_CLK>,
<&gcc GCC_CAMERA_HF_AXI_CLK>,
<&gcc GCC_CAMERA_SF_AXI_CLK>,
<&camcc CAM_CC_ICP_AHB_CLK>,
<&camcc CAM_CC_IFE_0_CLK>,
<&camcc CAM_CC_IFE_0_AXI_CLK>,
Expand Down Expand Up @@ -343,8 +343,8 @@ examples:
"csiphy3_timer",
"csiphy4",
"csiphy4_timer",
"gcc_camera_ahb",
"gcc_cam_hf_axi",
"gcc_axi_hf",
"gcc_axi_sf",
"icp_ahb",
"vfe0",
"vfe0_axi",
Expand Down
Loading

0 comments on commit 1e26c5e

Please sign in to comment.