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 property
indicates the number of in-use slots of available slots for GPIOs. The
typical example is something like this: the hardware register is 32 bits
wide, but only 18 of the bits have a physical counterpart. The driver is
generally written so that all 32 bits can be used, but the IP block is
reused in a lot of designs, some using all 32 bits, some using 18 and
some using 12. In this case, setting "ngpios = <18>;" informs the driver
that 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 are
unusable, 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 mechanism
providing automatic GPIO request and configuration as part of the
gpio-controller's driver probe function.
Each GPIO hog definition is represented as a child node of the GPIO controller.
- properties:
gpio-hog: true
gpios: true
input: true
output-high: true
output-low: true
line-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