On Thu, Sep 17, 2020 at 10:53 AM Krzysztof Kozlowski krzk@kernel.org wrote:
Convert parts of gpio.txt bindings into common dtschema file for GPIO controllers. The schema enforces proper naming of GPIO controller nodes and GPIO hogs.
Did you not see my previous reply about a common schema? We already have a common GPIO and hog schema in dtschema. Please add to it whatever is missing.
My goal is all common schema end up in dtschema, but I haven't pushed folks to do that yet. Ones I've done are there though. One issue is what's in dtschema should be GPL/BSD and the existing text bindings are default GPL, so there's a relicensing exercise. In some cases, the schema is there but I haven't copied over the descriptions.
Rob
- description:
Indicates the start and size of the GPIOs that can't be used.- ngpios:
- description: |
Optionally, a GPIO controller may have a "ngpios" property. This propertyindicates the number of in-use slots of available slots for GPIOs. Thetypical example is something like this: the hardware register is 32 bitswide, but only 18 of the bits have a physical counterpart. The driver isgenerally written so that all 32 bits can be used, but the IP block isreused in a lot of designs, some using all 32 bits, some using 18 andsome using 12. In this case, setting "ngpios = <18>;" informs the driverthat only the first 18 GPIOs, at local offset 0 .. 17, are in use.If these GPIOs do not happen to be the first N GPIOs at offset 0...N-1,an additional set of tuples is needed to specify which GPIOs areunusable, with the gpio-reserved-ranges binding.+patternProperties:
- "^(hog-[0-9]+|.+-hog(-[0-9]+)?)$":
- type: object
- description:
The GPIO chip may contain GPIO hog definitions. GPIO hogging is a mechanismproviding automatic GPIO request and configuration as part of thegpio-controller's driver probe function.Each GPIO hog definition is represented as a child node of the GPIO controller.- properties:
gpio-hog: truegpios: trueinput: trueoutput-high: trueoutput-low: trueline-name:description:The GPIO label name. If not present the node name is used.- required:
- gpio-hog- gpios- oneOf:
- required:- input- required:- output-high- required:- output-low- additionalProperties: false
+required:
- "#gpio-cells"
- gpio-controller
+examples:
- |
- gpio-controller@15000000 {
compatible = "foo";reg = <0x15000000 0x1000>;gpio-controller;#gpio-cells = <2>;ngpios = <18>;gpio-reserved-ranges = <0 4>, <12 2>;gpio-line-names = "MMC-CD", "MMC-WP", "VDD eth", "RST eth", "LED R","LED G", "LED B", "Col A", "Col B", "Col C", "Col D","Row A", "Row B", "Row C", "Row D", "NMI button","poweroff", "reset";- };
- |
- gpio-controller@1400 {
compatible = "fsl,qe-pario-bank-a", "fsl,qe-pario-bank";reg = <0x1400 0x18>;gpio-controller;#gpio-cells = <2>;line-b-hog {gpio-hog;gpios = <6 0>;input;line-name = "foo-bar-gpio";};- };
-- 2.17.1