From patchwork Thu Nov 7 11:06:04 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H. Nikolaus Schaller" X-Patchwork-Id: 11234229 Return-Path: Received: from mail.kernel.org (pdx-korg-mail-1.web.codeaurora.org [172.30.200.123]) by pdx-korg-patchwork-2.web.codeaurora.org (Postfix) with ESMTP id 498281390 for ; Fri, 8 Nov 2019 08:13:05 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 3256821D7B for ; Fri, 8 Nov 2019 08:13:05 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 3256821D7B Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=goldelico.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 55E7D6F870; Fri, 8 Nov 2019 08:12:34 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mo6-p04-ob.smtp.rzone.de (mo6-p04-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5304::4]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7FCCD6F653 for ; Thu, 7 Nov 2019 11:06:23 +0000 (UTC) X-RZG-AUTH: ":JGIXVUS7cutRB/49FwqZ7WcJeFKiMhflhwDubTJ9o1OAA2UNf2M7PR5/L9P0" X-RZG-CLASS-ID: mo00 Received: from iMac.fritz.box by smtp.strato.de (RZmta 44.29.0 DYNA|AUTH) with ESMTPSA id L09db3vA7B6Ddgr (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Thu, 7 Nov 2019 12:06:13 +0100 (CET) From: "H. Nikolaus Schaller" To: David Airlie , Daniel Vetter , Rob Herring , Mark Rutland , =?utf-8?q?Beno=C3=AEt_Cousson?= , Tony Lindgren , Paul Cercueil , Ralf Baechle , Paul Burton , James Hogan Subject: [PATCH v2 1/8] RFC: dt-bindings: add img, pvrsgx.yaml for Imagination GPUs Date: Thu, 7 Nov 2019 12:06:04 +0100 Message-Id: <4292cec1fd82cbd7d42742d749557adb01705574.1573124770.git.hns@goldelico.com> X-Mailer: git-send-email 2.23.0 In-Reply-To: References: MIME-Version: 1.0 X-Mailman-Approved-At: Fri, 08 Nov 2019 08:12:31 +0000 X-Mailman-Original-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1573124782; s=strato-dkim-0002; d=goldelico.com; h=References:In-Reply-To:Message-Id:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=IY6Eulbt2jyl28hkhi/AyASn70Nx6tDbWDifM+F27ZI=; b=aJHVPII29bU+LywdVPJ1d/6uf6YZQWATMQ6PDbXJWA03MqZJZN7Dscmc6jCeYeId9+ 4ylCigetH9Zoiu85qw9+EGjPVvWpq8VPj0iTk9rt0WuBbPzgUcKV2xJnZcexEFPil5sw ozu3cLxQGgE2/71ZaZUuPSb8+SdVCur3Mz+b/yY6t2riv1kfc4xgijzebY8Hom2VCU17 fKHlqWOvLKKWkgH4E/U+34NtXisPmGOycKTsJ7UM77q635PPpBSfxipQmvu61braS0Lz RIU0jb3Swwf8XY0oUjdym6I8aSSqVVds5Mqds8OduIUIDUIteyyClD/beSehoIpU6bJ2 0lZQ== X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, linux-omap@vger.kernel.org, "H. Nikolaus Schaller" , openpvrsgx-devgroup@letux.org, linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, linux-mips@vger.kernel.org, kernel@pyra-handheld.com, letux-kernel@openphoenux.org Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" The Imagination PVR/SGX GPU is part of several SoC from multiple vendors, e.g. TI OMAP, Ingenic JZ4780, Intel Poulsbo and others. With this binding, we describe how the SGX processor is interfaced to the SoC (registers, interrupt etc.). Clock, Reset and power management should be handled by a parent node or elsewhere. --- I have used the doc2yaml script to get a first veryion but I am still stuggling with the yaml thing. My impression is that while it is human readable, it is not very human writable... Unfortunately I haven't found a good tutorial for Dummies (like me) for bindings in YAML. The big problem is not the YAML syntax but what the schema should contain and how to correctly formulate ideas in this new language. Specific questions for this RFC: * formatting: is space/tab indentation correct? * are strings with "" correct or without? * how do I specify that there is a list of compatible strings required in a specific order? * but there are multiple such lists, and only one of them is to be chosen? * how can be described in the binding that there should be certain values in the parent node (ranges) to make it work? I was not able to run make dt_binding_check dtbs_check due to some missing dependencies (which I did not want to invest time to research them) on my build host, so I could not get automated help from those. --- .../devicetree/bindings/gpu/img,pvrsgx.yaml | 128 ++++++++++++++++++ 1 file changed, 128 insertions(+) create mode 100644 Documentation/devicetree/bindings/gpu/img,pvrsgx.yaml diff --git a/Documentation/devicetree/bindings/gpu/img,pvrsgx.yaml b/Documentation/devicetree/bindings/gpu/img,pvrsgx.yaml new file mode 100644 index 000000000000..b1b021601c47 --- /dev/null +++ b/Documentation/devicetree/bindings/gpu/img,pvrsgx.yaml @@ -0,0 +1,128 @@ +# SPDX-License-Identifier: None +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/bindings/gpu/img,pvrsgx.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Imagination PVR/SGX GPU + +maintainers: + - H. Nikolaus Schaller +description: |+ + This binding describes the Imagination SGX5 series of 3D accelerators which + are found in several different SoC like TI OMAP, Sitara, Ingenic JZ4780, + Allwinner A83, and Intel Poulsbo and CedarView. + + Only the Imagination SGX530, SGX540 and SGX544 GPUs are currently covered by + this binding. + + The SGX node is usually a child node of some DT node belonging to the SoC + which handles clocks, reset and general address space mapping of the SGX + register area. + +properties: + compatible: + oneOf: + - item: + # BeagleBoard ABC, OpenPandora 600MHz + - const: "ti,omap3-sgx530-121", "img,sgx530-121", "img,sgx530", "img,sgx5" + # BeagleBoard XM, GTA04, OpenPandora 1GHz + - const: "ti,omap3-sgx530-125", "img,sgx530-125", "img,sgx530", "img,sgx5" + # BeagleBone Black + - const: "ti,am335x-sgx530-125", "img,sgx530-125", "img,sgx530", "img,sgx5" + # Pandaboard (ES) + - const: "ti,omap4-sgx540-120", "img,sgx540-120", "img,sgx540", "img,sgx5" + - const "ti,omap4-sgx544-112", "img,sgx544-112", "img,sgx544", "img,sgx5" + # OMAP5 UEVM, Pyra Handheld + "ti,omap5-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5" + "ti,dra7-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5" + # CI20 + "ingenic,jz4780-sgx540-120", "img,sgx540-120", "img,sgx540", "img,sgx5"; + + reg: + items: + - description: physical base address and length of the register area + + interrupts: + items: + - description: interrupt from SGX subsystem to core processor + + clocks: + items: + - description: optional clocks + + required: + - compatible + - reg + - interrupts + +examples: | + gpu@fe00 { + compatible = "ti,omap-omap5-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5"; + reg = <0xfe00 0x200>; + interrupts = ; + }; + + +historical: | + Imagination PVR/SGX GPU + + Only the Imagination SGX530, SGX540 and SGX544 GPUs are currently covered by this binding. + + Required properties: + - compatible: Should be one of + "ti,omap3-sgx530-121", "img,sgx530-121", "img,sgx530", "img,sgx5"; - BeagleBoard ABC, OpenPandora 600MHz + "ti,omap3-sgx530-125", "img,sgx530-125", "img,sgx530", "img,sgx5"; - BeagleBoard XM, GTA04, OpenPandora 1GHz + "ti,am3517-sgx530-125", "img,sgx530-125", "img,sgx530", "img,sgx5"; + "ti,am335x-sgx530-125", "img,sgx530-125", "img,sgx530", "img,sgx5"; - BeagleBone Black + "ti,omap4-sgx540-120", "img,sgx540-120", "img,sgx540", "img,sgx5"; - Pandaboard (ES) + "ti,omap4-sgx544-112", "img,sgx544-112", "img,sgx544", "img,sgx5"; + "ti,omap5-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5"; - OMAP5 UEVM, Pyra Handheld + "ti,dra7-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5"; + "ti,am3517-sgx530-?", "img,sgx530-?", "img,sgx530", "img,sgx5"; + "ti,am43xx-sgx530-?", "img,sgx530-?", "img,sgx530", "img,sgx5"; + "ti,ti81xx-sgx530-?", "img,sgx530-?", "img,sgx530", "img,sgx5"; + "img,jz4780-sgx540-?", "img,sgx540-?", "img,sgx540", "img,sgx5"; - CI20 + "allwinner,sun8i-a83t-sgx544-?", "img,sgx544-116", "img,sgx544", "img,sgx5"; - Banana-Pi-M3 (Allwinner A83T) + "intel,poulsbo-gma500-sgx535", "img,sgx535-116", "img,sgx535", "img,sgx5"; - Atom Z5xx + "intel,medfield-gma-sgx540", "img,sgx540-116", "img,sgx540", "img,sgx5"; - Atom Z24xx + "intel,cedarview-gma3600-sgx545", "img,sgx545-116", "img,sgx545", "img,sgx5"; - Atom N2600, D2500 + + The "ti,omap..." entries are needed temporarily to handle SoC + specific builds of the kernel module. + + In the long run, only the "img,sgx..." entry should suffice + to match a generic driver for all architectures and driver + code can dynamically find out on which SoC it is running. + + + - reg: Physical base address and length of the register area. + - interrupts: The interrupt numbers. + + / { + ocp { + sgx_module: target-module@56000000 { + compatible = "ti,sysc-omap4", "ti,sysc"; + reg = <0x5600fe00 0x4>, + <0x5600fe10 0x4>; + reg-names = "rev", "sysc"; + ti,sysc-midle = , + , + ; + ti,sysc-sidle = , + , + ; + clocks = <&gpu_clkctrl OMAP5_GPU_CLKCTRL 0>; + clock-names = "fck"; + #address-cells = <1>; + #size-cells = <1>; + ranges = <0 0x56000000 0x2000000>; + + gpu@fe00 { + compatible = "ti,omap-omap5-sgx544-116", "img,sgx544-116", "img,sgx544", "img,sgx5"; + reg = <0xfe00 0x200>; + interrupts = ; + }; + }; + }; + };