Commit 61c3e773301eaf4f2549a915c2540c99b3b12626
Committed by
Tom Rini
1 parent
1be040afea
Exists in
smarc_8mq_lf_v2020.04
and in
9 other branches
doc: driver-model: Convert i2c-howto.txt to reST
Convert plain text documentation to reStructuredText format and add it to Sphinx TOC tree. No essential content change. Signed-off-by: Bin Meng <bmeng.cn@gmail.com>
Showing 3 changed files with 57 additions and 54 deletions Side-by-side Diff
doc/driver-model/i2c-howto.rst
1 | +.. SPDX-License-Identifier: GPL-2.0+ | |
2 | + | |
3 | +How to port an I2C driver to driver model | |
4 | +========================================= | |
5 | + | |
6 | +Over half of the I2C drivers have been converted as at November 2016. These | |
7 | +ones remain: | |
8 | + | |
9 | + * adi_i2c | |
10 | + * davinci_i2c | |
11 | + * fti2c010 | |
12 | + * ihs_i2c | |
13 | + * kona_i2c | |
14 | + * lpc32xx_i2c | |
15 | + * pca9564_i2c | |
16 | + * ppc4xx_i2c | |
17 | + * rcar_i2c | |
18 | + * sh_i2c | |
19 | + * soft_i2c | |
20 | + * zynq_i2c | |
21 | + | |
22 | +The deadline for this work is the end of June 2017. If no one steps | |
23 | +forward to convert these, at some point there may come a patch to remove them! | |
24 | + | |
25 | +Here is a suggested approach for converting your I2C driver over to driver | |
26 | +model. Please feel free to update this file with your ideas and suggestions. | |
27 | + | |
28 | +- #ifdef out all your own I2C driver code (#ifndef CONFIG_DM_I2C) | |
29 | +- Define CONFIG_DM_I2C for your board, vendor or architecture | |
30 | +- If the board does not already use driver model, you need CONFIG_DM also | |
31 | +- Your board should then build, but will not work fully since there will be | |
32 | + no I2C driver | |
33 | +- Add the U_BOOT_DRIVER piece at the end (e.g. copy tegra_i2c.c for example) | |
34 | +- Add a private struct for the driver data - avoid using static variables | |
35 | +- Implement each of the driver methods, perhaps by calling your old methods | |
36 | +- You may need to adjust the function parameters so that the old and new | |
37 | + implementations can share most of the existing code | |
38 | +- If you convert all existing users of the driver, remove the pre-driver-model | |
39 | + code | |
40 | + | |
41 | +In terms of patches a conversion series typically has these patches: | |
42 | +- clean up / prepare the driver for conversion | |
43 | +- add driver model code | |
44 | +- convert at least one existing board to use driver model serial | |
45 | +- (if no boards remain that don't use driver model) remove the old code | |
46 | + | |
47 | +This may be a good time to move your board to use device tree also. Mostly | |
48 | +this involves these steps: | |
49 | + | |
50 | +- define CONFIG_OF_CONTROL and CONFIG_OF_SEPARATE | |
51 | +- add your device tree files to arch/<arch>/dts | |
52 | +- update the Makefile there | |
53 | +- Add stdout-path to your /chosen device tree node if it is not already there | |
54 | +- build and get u-boot-dtb.bin so you can test it | |
55 | +- Your drivers can now use device tree | |
56 | +- For device tree in SPL, define CONFIG_SPL_OF_CONTROL |
doc/driver-model/i2c-howto.txt
1 | -How to port a serial driver to driver model | |
2 | -=========================================== | |
3 | - | |
4 | -Over half of the I2C drivers have been converted as at November 2016. These | |
5 | -ones remain: | |
6 | - | |
7 | - adi_i2c | |
8 | - davinci_i2c | |
9 | - fti2c010 | |
10 | - ihs_i2c | |
11 | - kona_i2c | |
12 | - lpc32xx_i2c | |
13 | - pca9564_i2c | |
14 | - ppc4xx_i2c | |
15 | - rcar_i2c | |
16 | - sh_i2c | |
17 | - soft_i2c | |
18 | - zynq_i2c | |
19 | - | |
20 | -The deadline for this work is the end of June 2017. If no one steps | |
21 | -forward to convert these, at some point there may come a patch to remove them! | |
22 | - | |
23 | -Here is a suggested approach for converting your I2C driver over to driver | |
24 | -model. Please feel free to update this file with your ideas and suggestions. | |
25 | - | |
26 | -- #ifdef out all your own I2C driver code (#ifndef CONFIG_DM_I2C) | |
27 | -- Define CONFIG_DM_I2C for your board, vendor or architecture | |
28 | -- If the board does not already use driver model, you need CONFIG_DM also | |
29 | -- Your board should then build, but will not work fully since there will be | |
30 | - no I2C driver | |
31 | -- Add the U_BOOT_DRIVER piece at the end (e.g. copy tegra_i2c.c for example) | |
32 | -- Add a private struct for the driver data - avoid using static variables | |
33 | -- Implement each of the driver methods, perhaps by calling your old methods | |
34 | -- You may need to adjust the function parameters so that the old and new | |
35 | - implementations can share most of the existing code | |
36 | -- If you convert all existing users of the driver, remove the pre-driver-model | |
37 | - code | |
38 | - | |
39 | -In terms of patches a conversion series typically has these patches: | |
40 | -- clean up / prepare the driver for conversion | |
41 | -- add driver model code | |
42 | -- convert at least one existing board to use driver model serial | |
43 | -- (if no boards remain that don't use driver model) remove the old code | |
44 | - | |
45 | -This may be a good time to move your board to use device tree also. Mostly | |
46 | -this involves these steps: | |
47 | - | |
48 | -- define CONFIG_OF_CONTROL and CONFIG_OF_SEPARATE | |
49 | -- add your device tree files to arch/<arch>/dts | |
50 | -- update the Makefile there | |
51 | -- Add stdout-path to your /chosen device tree node if it is not already there | |
52 | -- build and get u-boot-dtb.bin so you can test it | |
53 | -- Your drivers can now use device tree | |
54 | -- For device tree in SPL, define CONFIG_SPL_OF_CONTROL |