This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
gsoc:2024-gsoc-device-tree-bindings [2024/02/08 12:19] dbaluta [Proposal 1: Convert device tree bindings to DT schema] |
gsoc:2024-gsoc-device-tree-bindings [2024/05/23 12:32] (current) dbaluta [Proposal 1: Convert device tree bindings to DT schema] |
||
---|---|---|---|
Line 16: | Line 16: | ||
1 contributor medium-size (175hours) | 1 contributor medium-size (175hours) | ||
- | Level of difficulty: Easy | + | Level of difficulty: Intermediate |
Historically device tree bindings were written in plain ''.txt'' files. These files serve only as documentation but they cannot really be used to validate the syntax used in device tree files. | Historically device tree bindings were written in plain ''.txt'' files. These files serve only as documentation but they cannot really be used to validate the syntax used in device tree files. | ||
Line 29: | Line 29: | ||
'' | '' | ||
- | You can have a look at this [[https://lore.kernel.org/lkml/20230211134755.86061-1-krzysztof.kozlowski@linaro.org/T/ | example ]]. | + | You can have a look at this [[https://lore.kernel.org/lkml/20230211134755.86061-1-krzysztof.kozlowski@linaro.org/T/ | example ]] of a conversion patch looks like. |
- | Tips for writing a good proposal: | + | Before writing your proposal you need to: |
- | * understand basic concepts about writing a device tree binding file. Look [[https://www.kernel.org/doc/html/v5.10/devicetree/writing-schema.html | here ]] and [[https://elinux.org/images/6/6b/LPC2018_json-schema_for_Devicetree.pdf | here ]]. | + | - Watch this [[https://www.youtube.com/watch?v=JrwZ4xLBU38|presentation]] from Krzysztof and get a feel of the work should be done in the project. |
- | * clone the Linux kernel tree: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git/ | + | - Write an email to project Mentor announcing your intention to work on the proposal. |
- | * demonstrate the knowledge about device tree bindings by writing a small patch to convert a ''.txt'' file to yaml. | + | - Create a small patch that converts a device tree binding ''.txt'' file to ''yaml'' |
- | * look inside ''Documentation/devicetree/bindings'' | + | |
- | * start with small and simple ''.txt'' file and convert it to yaml | + | How to create a small patch? |
- | * create a a small [[ http://nickdesaulniers.github.io/blog/2017/05/16/submitting-your-first-patch-to-the-linux-kernel-and-responding-to-feedback/ | patch ]] and review it with the mentor | + | |
- | * verify the patch: | + | - clone the Linux kernel tree: https://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git/ |
+ | - look inside ''Documentation/devicetree/bindings'' | ||
+ | * start with small and simple ''.txt'' file and convert it to yaml | ||
+ | * discuss with your mentor about your chosen file and after that start working on the patch | ||
+ | - Watch again the [[https://www.youtube.com/watch?v=JrwZ4xLBU38|presentation]] and read about how to create your first [[ http://nickdesaulniers.github.io/blog/2017/05/16/submitting-your-first-patch-to-the-linux-kernel-and-responding-to-feedback/ | patch ]]. | ||
+ | - Review patch your mentor by email first and after that send it to community | ||
+ | - Always verify your patch before submitting for review | ||
* make dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml | * make dt_binding_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml | ||
* make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml | * make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/trivial-devices.yaml | ||
* make DT_CHECKER_FLAGS=-m dt_binding_check | * make DT_CHECKER_FLAGS=-m dt_binding_check | ||
- | * send the patch to Linux kernel mailing list and work with the community to get it merged | ||
- | * before submitting the proposal discuss with the mentor about a plan and a set of ''.txt'' files to work on | ||
- | |||
- | How to find ideas of patches to create: | ||
- | |||
- | 1) Look for small ''txt'' files that might be easier to convert. | ||
- | * Suggestion is for files to have in mind ''Documentation/devicetree/bindings/{sound|iio|hwmon,regulator, rtc, watchdog}''. | ||
- | * Use ''git log'' and look into history to see how similar patches where done. | ||
- | * For example ''git log 715f45854f559f361d2c222a0353a3a1818875ed'' | ||
- | |||
- | |||
- | 2) Cleanup all easy dtbs_check warnings for the platforms, like node | ||
- | names, unused/not allowed properties. Run ''make dtbs_check''. | ||
Desired knowledge: C, shell scripting, make, git | Desired knowledge: C, shell scripting, make, git | ||
- | Code license: GPL-2.0 OR BSD-3-Clause | + | Code license: GPL-2.0-only OR BSD-2-Clause |
The project is considered successful if the code is accepted into mainline Linux kernel tree. | The project is considered successful if the code is accepted into mainline Linux kernel tree. | ||
Line 66: | Line 59: | ||
- | ==== How do I get started? ==== | + | |