aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch')
-rw-r--r--target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch706
1 files changed, 706 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch b/target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch
new file mode 100644
index 0000000000..3e47c475ff
--- /dev/null
+++ b/target/linux/bcm27xx/patches-5.4/950-0538-dt-bindings-display-Convert-VC4-bindings-to-schemas.patch
@@ -0,0 +1,706 @@
+From 193065956ba3e285df2c67f7c3bdeb3bdaae6ee9 Mon Sep 17 00:00:00 2001
+From: Maxime Ripard <maxime@cerno.tech>
+Date: Thu, 13 Feb 2020 15:42:05 +0100
+Subject: [PATCH] dt-bindings: display: Convert VC4 bindings to schemas
+
+The BCM283x SoCs have a display pipeline composed of several controllers
+with device tree bindings that are supported by Linux.
+
+Now that we have the DT validation in place, let's split into separate
+files and convert the device tree bindings for those controllers to
+schemas.
+
+This is just a 1:1 conversion though, and some bindings were incomplete so
+it results in example validation warnings that are going to be addressed in
+the following patches.
+
+Cc: Rob Herring <robh+dt@kernel.org>
+Cc: devicetree@vger.kernel.org
+Signed-off-by: Maxime Ripard <maxime@cerno.tech>
+---
+ .../bindings/display/brcm,bcm-vc4.txt | 174 ------------------
+ .../bindings/display/brcm,bcm2835-dpi.yaml | 66 +++++++
+ .../bindings/display/brcm,bcm2835-dsi0.yaml | 73 ++++++++
+ .../bindings/display/brcm,bcm2835-hdmi.yaml | 75 ++++++++
+ .../bindings/display/brcm,bcm2835-hvs.yaml | 37 ++++
+ .../display/brcm,bcm2835-pixelvalve0.yaml | 40 ++++
+ .../bindings/display/brcm,bcm2835-txp.yaml | 37 ++++
+ .../bindings/display/brcm,bcm2835-v3d.yaml | 42 +++++
+ .../bindings/display/brcm,bcm2835-vc4.yaml | 34 ++++
+ .../bindings/display/brcm,bcm2835-vec.yaml | 44 +++++
+ MAINTAINERS | 2 +-
+ 11 files changed, 449 insertions(+), 175 deletions(-)
+ delete mode 100644 Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-dpi.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-hdmi.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-v3d.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml
+ create mode 100644 Documentation/devicetree/bindings/display/brcm,bcm2835-vec.yaml
+
+--- a/Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
++++ /dev/null
+@@ -1,174 +0,0 @@
+-Broadcom VC4 (VideoCore4) GPU
+-
+-The VC4 device present on the Raspberry Pi includes a display system
+-with HDMI output and the HVS (Hardware Video Scaler) for compositing
+-display planes.
+-
+-Required properties for VC4:
+-- compatible: Should be "brcm,bcm2835-vc4" or "brcm,cygnus-vc4"
+-
+-Required properties for Pixel Valve:
+-- compatible: Should be one of "brcm,bcm2835-pixelvalve0",
+- "brcm,bcm2835-pixelvalve1", or "brcm,bcm2835-pixelvalve2"
+-- reg: Physical base address and length of the PV's registers
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-
+-Required properties for HVS:
+-- compatible: Should be "brcm,bcm2835-hvs"
+-- reg: Physical base address and length of the HVS's registers
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-
+-Required properties for HDMI
+-- compatible: Should be "brcm,bcm2835-hdmi"
+-- reg: Physical base address and length of the two register ranges
+- ("HDMI" and "HD", in that order)
+-- interrupts: The interrupt numbers
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-- ddc: phandle of the I2C controller used for DDC EDID probing
+-- clocks: a) hdmi: The HDMI state machine clock
+- b) pixel: The pixel clock.
+-
+-Optional properties for HDMI:
+-- hpd-gpios: The GPIO pin for HDMI hotplug detect (if it doesn't appear
+- as an interrupt/status bit in the HDMI controller
+- itself). See bindings/pinctrl/brcm,bcm2835-gpio.txt
+-- dmas: Should contain one entry pointing to the DMA channel used to
+- transfer audio data
+-- dma-names: Should contain "audio-rx"
+-
+-Required properties for DPI:
+-- compatible: Should be "brcm,bcm2835-dpi"
+-- reg: Physical base address and length of the registers
+-- clocks: a) core: The core clock the unit runs on
+- b) pixel: The pixel clock that feeds the pixelvalve
+-- port: Port node with a single endpoint connecting to the panel
+- device, as defined in [1]
+-
+-Required properties for VEC:
+-- compatible: Should be "brcm,bcm2835-vec"
+-- reg: Physical base address and length of the registers
+-- clocks: The core clock the unit runs on
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-
+-Required properties for V3D:
+-- compatible: Should be "brcm,bcm2835-v3d" or "brcm,cygnus-v3d"
+-- reg: Physical base address and length of the V3D's registers
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-
+-Optional properties for V3D:
+-- clocks: The clock the unit runs on
+-
+-Required properties for DSI:
+-- compatible: Should be "brcm,bcm2835-dsi0" or "brcm,bcm2835-dsi1"
+-- reg: Physical base address and length of the DSI block's registers
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-- clocks: a) phy: The DSI PLL clock feeding the DSI analog PHY
+- b) escape: The DSI ESC clock from CPRMAN
+- c) pixel: The DSI pixel clock from CPRMAN
+-- clock-output-names:
+- The 3 clocks output from the DSI analog PHY: dsi[01]_byte,
+- dsi[01]_ddr2, and dsi[01]_ddr
+-
+-Required properties for the TXP (writeback) block:
+-- compatible: Should be "brcm,bcm2835-txp"
+-- reg: Physical base address and length of the TXP block's registers
+-- interrupts: The interrupt number
+- See bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
+-
+-[1] Documentation/devicetree/bindings/media/video-interfaces.txt
+-
+-Example:
+-pixelvalve@7e807000 {
+- compatible = "brcm,bcm2835-pixelvalve2";
+- reg = <0x7e807000 0x100>;
+- interrupts = <2 10>; /* pixelvalve */
+-};
+-
+-hvs@7e400000 {
+- compatible = "brcm,bcm2835-hvs";
+- reg = <0x7e400000 0x6000>;
+- interrupts = <2 1>;
+-};
+-
+-hdmi: hdmi@7e902000 {
+- compatible = "brcm,bcm2835-hdmi";
+- reg = <0x7e902000 0x600>,
+- <0x7e808000 0x100>;
+- interrupts = <2 8>, <2 9>;
+- ddc = <&i2c2>;
+- hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
+- clocks = <&clocks BCM2835_PLLH_PIX>,
+- <&clocks BCM2835_CLOCK_HSM>;
+- clock-names = "pixel", "hdmi";
+-};
+-
+-dpi: dpi@7e208000 {
+- compatible = "brcm,bcm2835-dpi";
+- reg = <0x7e208000 0x8c>;
+- clocks = <&clocks BCM2835_CLOCK_VPU>,
+- <&clocks BCM2835_CLOCK_DPI>;
+- clock-names = "core", "pixel";
+- #address-cells = <1>;
+- #size-cells = <0>;
+-
+- port {
+- dpi_out: endpoint@0 {
+- remote-endpoint = <&panel_in>;
+- };
+- };
+-};
+-
+-dsi1: dsi@7e700000 {
+- compatible = "brcm,bcm2835-dsi1";
+- reg = <0x7e700000 0x8c>;
+- interrupts = <2 12>;
+- #address-cells = <1>;
+- #size-cells = <0>;
+- #clock-cells = <1>;
+-
+- clocks = <&clocks BCM2835_PLLD_DSI1>,
+- <&clocks BCM2835_CLOCK_DSI1E>,
+- <&clocks BCM2835_CLOCK_DSI1P>;
+- clock-names = "phy", "escape", "pixel";
+-
+- clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
+-
+- pitouchscreen: panel@0 {
+- compatible = "raspberrypi,touchscreen";
+- reg = <0>;
+-
+- <...>
+- };
+-};
+-
+-vec: vec@7e806000 {
+- compatible = "brcm,bcm2835-vec";
+- reg = <0x7e806000 0x1000>;
+- clocks = <&clocks BCM2835_CLOCK_VEC>;
+- interrupts = <2 27>;
+-};
+-
+-v3d: v3d@7ec00000 {
+- compatible = "brcm,bcm2835-v3d";
+- reg = <0x7ec00000 0x1000>;
+- interrupts = <1 10>;
+-};
+-
+-vc4: gpu {
+- compatible = "brcm,bcm2835-vc4";
+-};
+-
+-panel: panel {
+- compatible = "ontat,yx700wv03", "simple-panel";
+-
+- port {
+- panel_in: endpoint {
+- remote-endpoint = <&dpi_out>;
+- };
+- };
+-};
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-dpi.yaml
+@@ -0,0 +1,66 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-dpi.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) DPI Controller
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ const: brcm,bcm2835-dpi
++
++ reg:
++ maxItems: 1
++
++ clocks:
++ items:
++ - description: The core clock the unit runs on
++ - description: The pixel clock that feeds the pixelvalve
++
++ port:
++ type: object
++ description: >
++ Port node with a single endpoint connecting to the panel, as
++ defined in Documentation/devicetree/bindings/media/video-interfaces.txt.
++
++required:
++ - compatible
++ - reg
++ - clocks
++ - port
++
++additionalProperties: false
++
++examples:
++ - |
++ #include <dt-bindings/clock/bcm2835.h>
++
++ panel: panel {
++ compatible = "ontat,yx700wv03", "simple-panel";
++
++ port {
++ panel_in: endpoint {
++ remote-endpoint = <&dpi_out>;
++ };
++ };
++ };
++
++ dpi: dpi@7e208000 {
++ compatible = "brcm,bcm2835-dpi";
++ reg = <0x7e208000 0x8c>;
++ clocks = <&clocks BCM2835_CLOCK_VPU>,
++ <&clocks BCM2835_CLOCK_DPI>;
++ clock-names = "core", "pixel";
++
++ port {
++ dpi_out: endpoint {
++ remote-endpoint = <&panel_in>;
++ };
++ };
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-dsi0.yaml
+@@ -0,0 +1,73 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-dsi0.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) DSI Controller
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ enum:
++ - brcm,bcm2835-dsi0
++ - brcm,bcm2835-dsi1
++
++ reg:
++ maxItems: 1
++
++ clocks:
++ items:
++ - description: The DSI PLL clock feeding the DSI analog PHY
++ - description: The DSI ESC clock
++ - description: The DSI pixel clock
++
++ clock-output-names: true
++ # FIXME: The meta-schemas don't seem to allow it for now
++ # items:
++ # - description: The DSI byte clock for the PHY
++ # - description: The DSI DDR2 clock
++ # - description: The DSI DDR clock
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - clocks
++ - clock-output-names
++ - interrupts
++
++unevaluatedProperties: false
++
++examples:
++ - |
++ #include <dt-bindings/clock/bcm2835.h>
++
++ dsi1: dsi@7e700000 {
++ compatible = "brcm,bcm2835-dsi1";
++ reg = <0x7e700000 0x8c>;
++ interrupts = <2 12>;
++ #address-cells = <1>;
++ #size-cells = <0>;
++ #clock-cells = <1>;
++
++ clocks = <&clocks BCM2835_PLLD_DSI1>,
++ <&clocks BCM2835_CLOCK_DSI1E>,
++ <&clocks BCM2835_CLOCK_DSI1P>;
++ clock-names = "phy", "escape", "pixel";
++
++ clock-output-names = "dsi1_byte", "dsi1_ddr2", "dsi1_ddr";
++
++ pitouchscreen: panel@0 {
++ compatible = "raspberrypi,touchscreen";
++ reg = <0>;
++
++ /* ... */
++ };
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-hdmi.yaml
+@@ -0,0 +1,75 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-hdmi.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) HDMI Controller
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ const: brcm,bcm2835-hdmi
++
++ reg:
++ items:
++ - description: HDMI register range
++ - description: HD register range
++
++ interrupts:
++ minItems: 2
++
++ clocks:
++ items:
++ - description: The HDMI state machine clock
++ - description: The pixel clock
++
++ ddc:
++ allOf:
++ - $ref: /schemas/types.yaml#/definitions/phandle
++ description: >
++ Phandle of the I2C controller used for DDC EDID probing
++
++ hpd-gpios:
++ description: >
++ The GPIO pin for the HDMI hotplug detect (if it doesn't appear
++ as an interrupt/status bit in the HDMI controller itself)
++
++ dmas:
++ maxItems: 1
++ description: >
++ Should contain one entry pointing to the DMA channel used to
++ transfer audio data.
++
++ dma-names:
++ const: audio-rx
++
++required:
++ - compatible
++ - reg
++ - interrupts
++ - clocks
++ - ddc
++
++additionalProperties: false
++
++examples:
++ - |
++ #include <dt-bindings/clock/bcm2835.h>
++ #include <dt-bindings/gpio/gpio.h>
++
++ hdmi: hdmi@7e902000 {
++ compatible = "brcm,bcm2835-hdmi";
++ reg = <0x7e902000 0x600>,
++ <0x7e808000 0x100>;
++ interrupts = <2 8>, <2 9>;
++ ddc = <&i2c2>;
++ hpd-gpios = <&gpio 46 GPIO_ACTIVE_HIGH>;
++ clocks = <&clocks BCM2835_PLLH_PIX>,
++ <&clocks BCM2835_CLOCK_HSM>;
++ clock-names = "pixel", "hdmi";
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-hvs.yaml
+@@ -0,0 +1,37 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-hvs.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) Hardware Video Scaler
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ const: brcm,bcm2835-hvs
++
++ reg:
++ maxItems: 1
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - interrupts
++
++additionalProperties: false
++
++examples:
++ - |
++ hvs@7e400000 {
++ compatible = "brcm,bcm2835-hvs";
++ reg = <0x7e400000 0x6000>;
++ interrupts = <2 1>;
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-pixelvalve0.yaml
+@@ -0,0 +1,40 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-pixelvalve0.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) PixelValve
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ enum:
++ - brcm,bcm2835-pixelvalve0
++ - brcm,bcm2835-pixelvalve1
++ - brcm,bcm2835-pixelvalve2
++
++ reg:
++ maxItems: 1
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - interrupts
++
++additionalProperties: false
++
++examples:
++ - |
++ pixelvalve@7e807000 {
++ compatible = "brcm,bcm2835-pixelvalve2";
++ reg = <0x7e807000 0x100>;
++ interrupts = <2 10>; /* pixelvalve */
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-txp.yaml
+@@ -0,0 +1,37 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-txp.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) TXP (writeback) Controller
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ const: brcm,bcm2835-txp
++
++ reg:
++ maxItems: 1
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - interrupts
++
++additionalProperties: false
++
++examples:
++ - |
++ txp: txp@7e004000 {
++ compatible = "brcm,bcm2835-txp";
++ reg = <0x7e004000 0x20>;
++ interrupts = <1 11>;
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-v3d.yaml
+@@ -0,0 +1,42 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-v3d.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) V3D GPU
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ enum:
++ - brcm,bcm2835-v3d
++ - brcm,cygnus-v3d
++
++ reg:
++ maxItems: 1
++
++ clocks:
++ maxItems: 1
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - interrupts
++
++additionalProperties: false
++
++examples:
++ - |
++ v3d: v3d@7ec00000 {
++ compatible = "brcm,bcm2835-v3d";
++ reg = <0x7ec00000 0x1000>;
++ interrupts = <1 10>;
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-vc4.yaml
+@@ -0,0 +1,34 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-vc4.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) GPU
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++description: >
++ The VC4 device present on the Raspberry Pi includes a display system
++ with HDMI output and the HVS (Hardware Video Scaler) for compositing
++ display planes.
++
++properties:
++ compatible:
++ enum:
++ - brcm,bcm2835-vc4
++ - brcm,cygnus-vc4
++
++required:
++ - compatible
++
++additionalProperties: false
++
++examples:
++ - |
++ vc4: gpu {
++ compatible = "brcm,bcm2835-vc4";
++ };
++
++...
+--- /dev/null
++++ b/Documentation/devicetree/bindings/display/brcm,bcm2835-vec.yaml
+@@ -0,0 +1,44 @@
++# SPDX-License-Identifier: GPL-2.0
++%YAML 1.2
++---
++$id: http://devicetree.org/schemas/display/brcm,bcm2835-vec.yaml#
++$schema: http://devicetree.org/meta-schemas/core.yaml#
++
++title: Broadcom VC4 (VideoCore4) VEC
++
++maintainers:
++ - Eric Anholt <eric@anholt.net>
++
++properties:
++ compatible:
++ const: brcm,bcm2835-vec
++
++ reg:
++ maxItems: 1
++
++ clocks:
++ maxItems: 1
++
++ interrupts:
++ maxItems: 1
++
++required:
++ - compatible
++ - reg
++ - clocks
++ - interrupts
++
++additionalProperties: false
++
++examples:
++ - |
++ #include <dt-bindings/clock/bcm2835.h>
++
++ vec: vec@7e806000 {
++ compatible = "brcm,bcm2835-vec";
++ reg = <0x7e806000 0x1000>;
++ clocks = <&clocks BCM2835_CLOCK_VEC>;
++ interrupts = <2 27>;
++ };
++
++...
+--- a/MAINTAINERS
++++ b/MAINTAINERS
+@@ -5573,7 +5573,7 @@ T: git git://github.com/anholt/linux
+ S: Supported
+ F: drivers/gpu/drm/vc4/
+ F: include/uapi/drm/vc4_drm.h
+-F: Documentation/devicetree/bindings/display/brcm,bcm-vc4.txt
++F: Documentation/devicetree/bindings/display/brcm,bcm2835-*.yaml
+ T: git git://anongit.freedesktop.org/drm/drm-misc
+
+ DRM DRIVERS FOR VIVANTE GPU IP