On Thu, Mar 29, 2012 at 9:59 PM, jonsm...@gmail.com <jonsm...@gmail.com> wrote:
> i2c provides an example of where a schema would be useful.
> From the binding text files, I removed the common items

Another reason for schemas, I just misspelled an attribute. It took me
several hours to figure out why my system wasn't working. I ended up
inserting printks in the driver looking for what was wrong before I
figured out that the attribute was simply misspelled. I used
slave-address when the attribute was slave-addr. Schema would have
flagged the unknown attribute at compile time.

------------------------------------------------------------

Using XML schemas is a crazy idea. It would better to leverage the DTC
and kernel infrastructure. We can use a scheme similar to kernel
module support.

The driver source for each OF compatible device would contain macros
that generate a small schema that describes the device.

Instantiation of the device in a real device tree...
                ads7846@1 {
                        compatible = "ti,ads7846";
                        spi-max-frequency = <1200000>;
                        reg = <1>;
                        gpio_pendown = <&gpio_gpio 4 0>;
                        gpio_cs = <&gpio_ebi_i2stx_0 3 0>;
                };

schema for this would be something like

{
        compatible = "ti,ads7846";
        inherits-from = "schema,spi-device"
        gpio_pendown* = <&gpio_reference>;  /* star = optional */
        gpio_cs = <&gpio_reference>;
}
for a spi host...
{
        compatible = "nxp,lpc31xx-spi";
        inherits-from = "schema,spi-bus"
};
Compiling these drivers would generate two small files containing the
schema snippets into a temp directory.

Another permanent directory would hold the generic definitions.
{
        compatible = "schema,spi-device";
        inherits-from = "schema,generic-device"
        spi-max-frequency* = <0-50M>; /* range validation */
};
{
        compatible = "schema,generic-device";
        reg = <>;
        interrupts = <>;
};
{
        compatible = "schema,spi-bus";
        inherits-from = "schema,generic-bus"
        contains = {"schema,spi-device"}
};
{
        compatible = "schema,generic-bus";
        reg = <>;
        interrupts = <>;
        #address-cells = <>;
        #size-cells = <>;                               
};

Now the DT compiler can read in these schema snippets and use them to
pattern match against the DT being compiled and perform validation.

-- 
Jon Smirl
jonsm...@gmail.com
_______________________________________________
devicetree-discuss mailing list
devicetree-discuss@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/devicetree-discuss

Reply via email to