Skip to contentSkip to conversation

NVIDIA Tegra20 video decoder driver

PATCH Superseded Dmitry Osipenko 2 participants 6 messages Oct 3, 2017 – Oct 6, 2017

Subsystems (4)

v2 of 5 Superseded Latest is v5 →

lore
Share & tools
lore
#0 lore raw

v2 cover NVIDIA Tegra20 video decoder driver

This driver provides accelerated video decoding to NVIDIA Tegra20 SoC's, it is a result of reverse-engineering efforts. Driver has been tested on Toshiba AC100 and Acer A500, it should work on any Tegra20 device.

In userspace this driver is utilized by libvdpau-tegra [0] that implements VDPAU interface, so any video player that supports VDPAU can provide accelerated video decoding on Tegra20 on Linux.

[0] https://github.com/grate-driver/libvdpau-tegra

Change log:
v2:
- Addressed v1 review comments from Stephen Warren and Dan Carpenter
- Implemented runtime PM
- Miscellaneous code cleanups
- Changed 'TODO'
- CC'd media maintainers for the review as per Greg K-H request, v1 can be viewed at https://lkml.org/lkml/2017/9/25/606

Dmitry Osipenko (2):
staging: Introduce NVIDIA Tegra20 video decoder driver
ARM: dts: tegra20: Add video decoder node

 .../bindings/arm/tegra/nvidia,tegra20-vde.txt      |   43 +
 arch/arm/boot/dts/tegra20.dtsi                     |   17 +
 drivers/staging/Kconfig                            |    2 +
 drivers/staging/Makefile                           |    1 +
 drivers/staging/tegra-vde/Kconfig                  |    6 +
 drivers/staging/tegra-vde/Makefile                 |    1 +
 drivers/staging/tegra-vde/TODO                     |    5 +
 drivers/staging/tegra-vde/uapi.h                   |  101 ++
 drivers/staging/tegra-vde/vde.c                    | 1105 ++++++++++++++++++++
 9 files changed, 1281 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt
 create mode 100644 drivers/staging/tegra-vde/Kconfig
 create mode 100644 drivers/staging/tegra-vde/Makefile
 create mode 100644 drivers/staging/tegra-vde/TODO
 create mode 100644 drivers/staging/tegra-vde/uapi.h
 create mode 100644 drivers/staging/tegra-vde/vde.c
Signature · 1 line
2.14.1
#1 lore raw

PATCH v2 1/2 staging: Introduce NVIDIA Tegra20 video decoder driver

Video decoder, found on NVIDIA Tegra20 SoC, supports a standard set of video formats like H.264 / MPEG-4 / WMV / VC1. Currently driver supports decoding of CAVLC H.264 only.

---
 .../bindings/arm/tegra/nvidia,tegra20-vde.txt      |   43 +
 drivers/staging/Kconfig                            |    2 +
 drivers/staging/Makefile                           |    1 +
 drivers/staging/tegra-vde/Kconfig                  |    6 +
 drivers/staging/tegra-vde/Makefile                 |    1 +
 drivers/staging/tegra-vde/TODO                     |    5 +
 drivers/staging/tegra-vde/uapi.h                   |  101 ++
 drivers/staging/tegra-vde/vde.c                    | 1105 ++++++++++++++++++++
 8 files changed, 1264 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt
 create mode 100644 drivers/staging/tegra-vde/Kconfig
 create mode 100644 drivers/staging/tegra-vde/Makefile
 create mode 100644 drivers/staging/tegra-vde/TODO
 create mode 100644 drivers/staging/tegra-vde/uapi.h
 create mode 100644 drivers/staging/tegra-vde/vde.c
Documentation/devicetree/bindings/arm/tegra/nvidia,tegra20-vde.txt new file +43 -0
new file mode 100644
index 000000000000..bf746777c58f
@@ -0,0 +1,43 @@
+NVIDIA Tegra Video Decoder Engine
+
+Required properties:
+- compatible : "nvidia,tegra20-vde"
+- reg : Must contain 2 register ranges: registers and IRAM region that
+        VDE uses for its internal needs and for passing some of decoding
+        parameters.
+- reg-names : Must include the following entries:
+  - regs
+  - iram
+- interrupts : Must contain an entry for each entry in interrupt-names.
+- interrupt-names : Must include the following entries:
+  - ucq-error
+  - sync-token
+  - bsev
+  - bsea
+  - sxe
+- clocks : Must contain an entry for each entry in clock-names.
+  See ../clocks/clock-bindings.txt for details.
+- clock-names : Must include the following entries:
+  - vde
+- resets : Must contain an entry for each entry in reset-names.
+  See ../reset/reset.txt for details.
+- reset-names : Must include the following entries:
+  - vde
+
+Example:
+	vde@6001a000 {
+		compatible = "nvidia,tegra20-vde";
+		reg = <0x6001a000 0x3D00    /* VDE registers */
+		       0x40000400 0x3FC00>; /* IRAM region */
+		reg-names = "regs", "iram";
+		interrupts = <GIC_SPI  8 IRQ_TYPE_LEVEL_HIGH>, /* UCQ error interrupt */
+			     <GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>, /* Sync token interrupt */
+			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, /* BSE-V interrupt */
+			     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, /* BSE-A interrupt */
+			     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; /* SXE interrupt */
+		interrupt-names = "ucq-error", "sync-token", "bsev", "bsea", "sxe";
+		clocks = <&tegra_car TEGRA20_CLK_VDE>;
+		clock-names = "vde";
+		resets = <&tegra_car 61>;
+		reset-names = "vde";
+	};
drivers/staging/Kconfig +2 -0
index 554683912cff..10c982811093 100644
@@ -118,4 +118,6 @@ source "drivers/staging/vboxvideo/Kconfig"
 
 source "drivers/staging/pi433/Kconfig"
 
+source "drivers/staging/tegra-vde/Kconfig"
+
 endif # STAGING
drivers/staging/Makefile +1 -0
index 8951c37d8d80..c5ef39767f22 100644
@@ -49,3 +49,4 @@ obj-$(CONFIG_BCM2835_VCHIQ)	+= vc04_services/
 obj-$(CONFIG_CRYPTO_DEV_CCREE)	+= ccree/
 obj-$(CONFIG_DRM_VBOXVIDEO)	+= vboxvideo/
 obj-$(CONFIG_PI433)		+= pi433/
+obj-$(CONFIG_TEGRA_VDE)		+= tegra-vde/
drivers/staging/tegra-vde/Kconfig new file +6 -0
new file mode 100644
index 000000000000..730ee006de66
@@ -0,0 +1,6 @@
+config TEGRA_VDE
+	tristate "NVIDIA Tegra Video Decoder Engine driver"
+	depends on ARCH_TEGRA_2x_SOC || COMPILE_TEST
+	help
+	    Say Y here to enable support for the NVIDIA Tegra video decoder
+	    driver.
drivers/staging/tegra-vde/Makefile new file +1 -0
new file mode 100644
index 000000000000..e7c0df1174bf
@@ -0,0 +1 @@
+obj-$(CONFIG_TEGRA_VDE)	+= vde.o
drivers/staging/tegra-vde/TODO new file +5 -0
new file mode 100644
index 000000000000..e98bbc7b3c19
@@ -0,0 +1,5 @@
+TODO:
+	- Figure out how generic V4L2 API could be utilized by this driver,
+	  implement it.
+
+Contact: Dmitry Osipenko <[email protected]>
drivers/staging/tegra-vde/uapi.h new file +101 -0

101 lines not on this page · raw message

drivers/staging/tegra-vde/vde.c new file +1105 -0

1,105 lines not on this page · raw message

Signature · 1 line
2.14.1
#2 lore raw

Re: [PATCH v2 1/2] staging: Introduce NVIDIA Tegra20 video decoder driver

url: https://github.com/0day-ci/linux/commits/Dmitry-Osipenko/staging-Introduce-NVIDIA-Tegra20-video-decoder-driver/20171006-101015 config: blackfin-allyesconfig (attached as .config) compiler…

Hi Dmitry,

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v4.14-rc3 next-20170929]
[cannot apply to tegra/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Dmitry-Osipenko/staging-Introduce-NVIDIA-Tegra20-video-decoder-driver/20171006-101015
config: blackfin-allyesconfig (attached as .config)
compiler: bfin-uclinux-gcc (GCC) 6.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=blackfin

All warnings (new ones prefixed by >>):

In file included from include/linux/kernel.h:13:0,
from include/linux/clk.h:16,
from drivers/staging/tegra-vde/vde.c:11:
drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_setup_hw_context':

>> drivers/staging/tegra-vde/vde.c:51:11: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'long unsigned int' [-Wformat=]
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
              ^
   include/linux/printk.h:285:21: note: in definition of macro 'pr_fmt'
    #define pr_fmt(fmt) fmt
                        ^~~
   include/linux/printk.h:333:2: note: in expansion of macro 'dynamic_pr_debug'
     dynamic_pr_debug(fmt, ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~~
>> drivers/staging/tegra-vde/vde.c:51:2: note: in expansion of macro 'pr_debug'
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
     ^~~~~~~~
>> drivers/staging/tegra-vde/vde.c:362:2: note: in expansion of macro 'VDE_WR'
     VDE_WR(bitstream_data_paddr + bitstream_data_size,
     ^~~~~~
   drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_attach_dmabuf':
>> drivers/staging/tegra-vde/vde.c:531:40: warning: format '%d' expects argument of type 'int', but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=]
      dev_err(dev, "Too small dmabuf size %d @0x%lX, "
                                           ^

vim +51 drivers/staging/tegra-vde/vde.c

  > 11	#include <linux/clk.h>
    12	#include <linux/delay.h>
    13	#include <linux/dma-buf.h>
    14	#include <linux/interrupt.h>
    15	#include <linux/io.h>
    16	#include <linux/iopoll.h>
    17	#include <linux/miscdevice.h>
    18	#include <linux/module.h>
    19	#include <linux/platform_device.h>
    20	#include <linux/pm_runtime.h>
    21	#include <linux/reset.h>
    22	#include <linux/slab.h>
    23	#include <linux/uaccess.h>
    24	
    25	#include <soc/tegra/pmc.h>
    26	
    27	#include "uapi.h"
    28	
    29	#define SXE(offt)		(0x0000 + (offt)) /* Syntax Engine */
    30	#define BSEV(offt)		(0x1000 + (offt)) /* Video Bitstream Engine */
    31	#define MBE(offt)		(0x2000 + (offt)) /* Macroblock Engine */
    32	#define PPE(offt)		(0x2200 + (offt)) /* Post-processing Engine */
    33	#define MCE(offt)		(0x2400 + (offt)) /* Motion Compensation Eng. */
    34	#define TFE(offt)		(0x2600 + (offt)) /* Transform Engine */
    35	#define VDMA(offt)		(0x2A00 + (offt)) /* Video DMA */
    36	#define FRAMEID(offt)		(0x3800 + (offt))
    37	
    38	#define ICMDQUE_WR		0x00
    39	#define CMDQUE_CONTROL		0x08
    40	#define INTR_STATUS		0x18
    41	#define BSE_INT_ENB		0x40
    42	#define BSE_CONFIG		0x44
    43	
    44	#define BSE_ICMDQUE_EMPTY	BIT(3)
    45	#define BSE_DMA_BUSY		BIT(23)
    46	
    47	#define TEGRA_VDE_TIMEOUT	msecs_to_jiffies(1000)
    48	
    49	#define VDE_WR(__data, __addr)				\
    50	do {							\
  > 51		pr_debug("%s: %d: 0x%08X => " #__addr ")\n",	\
    52			  __func__, __LINE__, (__data));	\
    53		writel_relaxed(__data, __addr);			\
    54	} while (0)
    55	

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#3 lore raw

Re: [PATCH v2 1/2] staging: Introduce NVIDIA Tegra20 video decoder driver

In reply to Dmitry Osipenko
url: https://github.com/0day-ci/linux/commits/Dmitry-Osipenko/staging-Introduce-NVIDIA-Tegra20-video-decoder-driver/20171006-101015 config: ia64-allmodconfig (attached as .config) compiler…

Hi Dmitry,

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v4.14-rc3 next-20170929]
[cannot apply to tegra/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Dmitry-Osipenko/staging-Introduce-NVIDIA-Tegra20-video-decoder-driver/20171006-101015
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=ia64

All warnings (new ones prefixed by >>):

In file included from include/linux/kernel.h:13:0,
from include/linux/clk.h:16,
from drivers/staging/tegra-vde/vde.c:11:
drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_setup_hw_context':

>> drivers/staging/tegra-vde/vde.c:51:11: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'long long unsigned int' [-Wformat=]
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
              ^
   include/linux/printk.h:285:21: note: in definition of macro 'pr_fmt'
    #define pr_fmt(fmt) fmt
                        ^~~
   include/linux/printk.h:333:2: note: in expansion of macro 'dynamic_pr_debug'
     dynamic_pr_debug(fmt, ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~~
   drivers/staging/tegra-vde/vde.c:51:2: note: in expansion of macro 'pr_debug'
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
     ^~~~~~~~
   drivers/staging/tegra-vde/vde.c:362:2: note: in expansion of macro 'VDE_WR'
     VDE_WR(bitstream_data_paddr + bitstream_data_size,
     ^~~~~~
>> drivers/staging/tegra-vde/vde.c:51:11: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'phys_addr_t {aka long long unsigned int}' [-Wformat=]
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
              ^
   include/linux/printk.h:285:21: note: in definition of macro 'pr_fmt'
    #define pr_fmt(fmt) fmt
                        ^~~
   include/linux/printk.h:333:2: note: in expansion of macro 'dynamic_pr_debug'
     dynamic_pr_debug(fmt, ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~~
   drivers/staging/tegra-vde/vde.c:51:2: note: in expansion of macro 'pr_debug'
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
     ^~~~~~~~
   drivers/staging/tegra-vde/vde.c:435:2: note: in expansion of macro 'VDE_WR'
     VDE_WR(bitstream_data_paddr, vde->regs + SXE(0x6C));
     ^~~~~~
   drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_attach_dmabuf':
   drivers/staging/tegra-vde/vde.c:531:40: warning: format '%d' expects argument of type 'int', but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=]
      dev_err(dev, "Too small dmabuf size %d @0x%lX, "
                                           ^

drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_ioctl_decode_h264':
drivers/staging/tegra-vde/vde.c:855:16: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'phys_addr_t {aka long long unsigned int}' [-Wformat=]
dev_err(dev, "Decoding failed, "
^~~~~~~~~~~~~~~~~~~

vim +51 drivers/staging/tegra-vde/vde.c

  > 11	#include <linux/clk.h>
    12	#include <linux/delay.h>
    13	#include <linux/dma-buf.h>
    14	#include <linux/interrupt.h>
    15	#include <linux/io.h>
    16	#include <linux/iopoll.h>
    17	#include <linux/miscdevice.h>
    18	#include <linux/module.h>
    19	#include <linux/platform_device.h>
    20	#include <linux/pm_runtime.h>
    21	#include <linux/reset.h>
    22	#include <linux/slab.h>
    23	#include <linux/uaccess.h>
    24	
    25	#include <soc/tegra/pmc.h>
    26	
    27	#include "uapi.h"
    28	
    29	#define SXE(offt)		(0x0000 + (offt)) /* Syntax Engine */
    30	#define BSEV(offt)		(0x1000 + (offt)) /* Video Bitstream Engine */
    31	#define MBE(offt)		(0x2000 + (offt)) /* Macroblock Engine */
    32	#define PPE(offt)		(0x2200 + (offt)) /* Post-processing Engine */
    33	#define MCE(offt)		(0x2400 + (offt)) /* Motion Compensation Eng. */
    34	#define TFE(offt)		(0x2600 + (offt)) /* Transform Engine */
    35	#define VDMA(offt)		(0x2A00 + (offt)) /* Video DMA */
    36	#define FRAMEID(offt)		(0x3800 + (offt))
    37	
    38	#define ICMDQUE_WR		0x00
    39	#define CMDQUE_CONTROL		0x08
    40	#define INTR_STATUS		0x18
    41	#define BSE_INT_ENB		0x40
    42	#define BSE_CONFIG		0x44
    43	
    44	#define BSE_ICMDQUE_EMPTY	BIT(3)
    45	#define BSE_DMA_BUSY		BIT(23)
    46	
    47	#define TEGRA_VDE_TIMEOUT	msecs_to_jiffies(1000)
    48	
    49	#define VDE_WR(__data, __addr)				\
    50	do {							\
  > 51		pr_debug("%s: %d: 0x%08X => " #__addr ")\n",	\
    52			  __func__, __LINE__, (__data));	\
    53		writel_relaxed(__data, __addr);			\
    54	} while (0)
    55	

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

#4 lore raw

Re: [PATCH v2 1/2] staging: Introduce NVIDIA Tegra20 video decoder driver

Quoted 104 lines · kbuild test robot

Hi Dmitry,

[auto build test WARNING on staging/staging-testing]
[also build test WARNING on v4.14-rc3 next-20170929]
[cannot apply to tegra/for-next]
[if your patch is applied to the wrong git tree, please drop us a note to help improve the system]

url: https://github.com/0day-ci/linux/commits/Dmitry-Osipenko/staging-Introduce-NVIDIA-Tegra20-video-decoder-driver/20171006-101015
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 6.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=ia64

All warnings (new ones prefixed by >>):

In file included from include/linux/kernel.h:13:0,
from include/linux/clk.h:16,
from drivers/staging/tegra-vde/vde.c:11:
drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_setup_hw_context':

Quoted 1 line
Quoted 1 line

drivers/staging/tegra-vde/vde.c:51:11: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'long long unsigned int' [-Wformat=]

     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
              ^
   include/linux/printk.h:285:21: note: in definition of macro 'pr_fmt'
    #define pr_fmt(fmt) fmt
                        ^~~
   include/linux/printk.h:333:2: note: in expansion of macro 'dynamic_pr_debug'
     dynamic_pr_debug(fmt, ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~~
   drivers/staging/tegra-vde/vde.c:51:2: note: in expansion of macro 'pr_debug'
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
     ^~~~~~~~

drivers/staging/tegra-vde/vde.c:362:2: note: in expansion of macro 'VDE_WR'
VDE_WR(bitstream_data_paddr + bitstream_data_size,
^~~~~~

Quoted 1 line
Quoted 1 line

drivers/staging/tegra-vde/vde.c:51:11: warning: format '%X' expects argument of type 'unsigned int', but argument 5 has type 'phys_addr_t {aka long long unsigned int}' [-Wformat=]

     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
              ^
   include/linux/printk.h:285:21: note: in definition of macro 'pr_fmt'
    #define pr_fmt(fmt) fmt
                        ^~~
   include/linux/printk.h:333:2: note: in expansion of macro 'dynamic_pr_debug'
     dynamic_pr_debug(fmt, ##__VA_ARGS__)
     ^~~~~~~~~~~~~~~~
   drivers/staging/tegra-vde/vde.c:51:2: note: in expansion of macro 'pr_debug'
     pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \
     ^~~~~~~~
   drivers/staging/tegra-vde/vde.c:435:2: note: in expansion of macro 'VDE_WR'
     VDE_WR(bitstream_data_paddr, vde->regs + SXE(0x6C));
     ^~~~~~
   drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_attach_dmabuf':
   drivers/staging/tegra-vde/vde.c:531:40: warning: format '%d' expects argument of type 'int', but argument 3 has type 'size_t {aka long unsigned int}' [-Wformat=]
      dev_err(dev, "Too small dmabuf size %d @0x%lX, "
                                           ^

drivers/staging/tegra-vde/vde.c: In function 'tegra_vde_ioctl_decode_h264':
drivers/staging/tegra-vde/vde.c:855:16: warning: format '%X' expects argument of type 'unsigned int', but argument 3 has type 'phys_addr_t {aka long long unsigned int}' [-Wformat=]
dev_err(dev, "Decoding failed, "
^~~~~~~~~~~~~~~~~~~

vim +51 drivers/staging/tegra-vde/vde.c

Quoted 1 line

11 #include <linux/clk.h>

    12	#include <linux/delay.h>
    13	#include <linux/dma-buf.h>
    14	#include <linux/interrupt.h>
    15	#include <linux/io.h>
    16	#include <linux/iopoll.h>
    17	#include <linux/miscdevice.h>
    18	#include <linux/module.h>
    19	#include <linux/platform_device.h>
    20	#include <linux/pm_runtime.h>
    21	#include <linux/reset.h>
    22	#include <linux/slab.h>
    23	#include <linux/uaccess.h>
    24	
    25	#include <soc/tegra/pmc.h>
    26	
    27	#include "uapi.h"
    28	
    29	#define SXE(offt)		(0x0000 + (offt)) /* Syntax Engine */
    30	#define BSEV(offt)		(0x1000 + (offt)) /* Video Bitstream Engine */
    31	#define MBE(offt)		(0x2000 + (offt)) /* Macroblock Engine */
    32	#define PPE(offt)		(0x2200 + (offt)) /* Post-processing Engine */
    33	#define MCE(offt)		(0x2400 + (offt)) /* Motion Compensation Eng. */
    34	#define TFE(offt)		(0x2600 + (offt)) /* Transform Engine */
    35	#define VDMA(offt)		(0x2A00 + (offt)) /* Video DMA */
    36	#define FRAMEID(offt)		(0x3800 + (offt))
    37	
    38	#define ICMDQUE_WR		0x00
    39	#define CMDQUE_CONTROL		0x08
    40	#define INTR_STATUS		0x18
    41	#define BSE_INT_ENB		0x40
    42	#define BSE_CONFIG		0x44
    43	
    44	#define BSE_ICMDQUE_EMPTY	BIT(3)
    45	#define BSE_DMA_BUSY		BIT(23)
    46	
    47	#define TEGRA_VDE_TIMEOUT	msecs_to_jiffies(1000)
    48	
    49	#define VDE_WR(__data, __addr)				\
    50	do {							\
Quoted 1 line

51 pr_debug("%s: %d: 0x%08X => " #__addr ")\n", \

Quoted 9 lines
    52			  __func__, __LINE__, (__data));	\
    53		writel_relaxed(__data, __addr);			\
    54	} while (0)
    55	

---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation

I'll silence these warnings in v3.

#5 lore raw

PATCH v2 2/2 ARM: dts: tegra20: Add video decoder node

In reply to Dmitry Osipenko

Add a device node for the video decoder engine found on Tegra20.

---
 arch/arm/boot/dts/tegra20.dtsi | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)
arch/arm/boot/dts/tegra20.dtsi +17 -0
index 7c85f97f72ea..1b5d54b6c0cb 100644
@@ -249,6 +249,23 @@
 		*/
 	};
 
+	vde@6001a000 {
+		compatible = "nvidia,tegra20-vde";
+		reg = <0x6001a000 0x3D00    /* VDE registers */
+		       0x40000400 0x3FC00>; /* IRAM region */
+		reg-names = "regs", "iram";
+		interrupts = <GIC_SPI  8 IRQ_TYPE_LEVEL_HIGH>, /* UCQ error interrupt */
+			     <GIC_SPI  9 IRQ_TYPE_LEVEL_HIGH>, /* Sync token interrupt */
+			     <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>, /* BSE-V interrupt */
+			     <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>, /* BSE-A interrupt */
+			     <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>; /* SXE interrupt */
+		interrupt-names = "ucq-error", "sync-token", "bsev", "bsea", "sxe";
+		clocks = <&tegra_car TEGRA20_CLK_VDE>;
+		clock-names = "vde";
+		resets = <&tegra_car 61>;
+		reset-names = "vde";
+	};
+
 	apbmisc@70000800 {
 		compatible = "nvidia,tegra20-apbmisc";
 		reg = <0x70000800 0x64   /* Chip revision */
Signature · 1 line
2.14.1