| DT compatible string versioning for SiFive open-source IP blocks |
| |
| This document describes the version specification for DT "compatible" |
| strings for open-source SiFive IP blocks. HDL for these IP blocks |
| can be found in this public repository: |
| |
| https://github.com/sifive/sifive-blocks |
| |
| IP block-specific DT compatible strings are contained within the HDL, |
| in the form "sifive,<ip-block-name><integer version number>". |
| |
| An example is "sifive,uart0" from: |
| |
| https://github.com/sifive/sifive-blocks/blob/v1.0/src/main/scala/devices/uart/UART.scala#L43 |
| |
| Until these IP blocks (or IP integration) support version |
| auto-discovery, the maintainers of these IP blocks intend to increment |
| the suffixed number in the compatible string whenever the software |
| interface to these IP blocks changes, or when the functionality of the |
| underlying IP blocks changes in a way that software should be aware of. |
| |
| Driver developers can use compatible string "match" values such as |
| "sifive,uart0" to indicate that their driver is compatible with the |
| register interface and functionality associated with the relevant |
| upstream sifive-blocks commits. It is expected that most drivers will |
| match on these IP block-specific compatible strings. |
| |
| DT data authors, when writing data for a particular SoC, should |
| continue to specify an SoC-specific compatible string value, such as |
| "sifive,fu540-c000-uart". This way, if SoC-specific |
| integration-specific bug fixes or workarounds are needed, the kernel |
| or other system software can match on this string to apply them. The |
| IP block-specific compatible string (such as "sifive,uart0") should |
| then be specified as a subsequent value. |
| |
| An example of this style: |
| |
| compatible = "sifive,fu540-c000-uart", "sifive,uart0"; |