1 .. SPDX-License-Identifier: GPL-2.0+
3 How to port a serial driver to driver model
4 ===========================================
6 Almost all of the serial drivers have been converted as at January 2016. These
12 The deadline for this work was the end of January 2016. If no one steps
13 forward to convert these, at some point there may come a patch to remove them!
15 Here is a suggested approach for converting your serial driver over to driver
16 model. Please feel free to update this file with your ideas and suggestions.
18 - #ifdef out all your own serial driver code (#ifndef CONFIG_DM_SERIAL)
19 - Define CONFIG_DM_SERIAL for your board, vendor or architecture
20 - If the board does not already use driver model, you need CONFIG_DM also
21 - Your board should then build, but will not boot since there will be no serial
23 - Add the U_BOOT_DRIVER piece at the end (e.g. copy serial_s5p.c for example)
24 - Add a private struct for the driver data - avoid using static variables
25 - Implement each of the driver methods, perhaps by calling your old methods
26 - You may need to adjust the function parameters so that the old and new
27 implementations can share most of the existing code
28 - If you convert all existing users of the driver, remove the pre-driver-model
31 In terms of patches a conversion series typically has these patches:
32 - clean up / prepare the driver for conversion
33 - add driver model code
34 - convert at least one existing board to use driver model serial
35 - (if no boards remain that don't use driver model) remove the old code
37 This may be a good time to move your board to use device tree also. Mostly
38 this involves these steps:
40 - define CONFIG_OF_CONTROL and CONFIG_OF_SEPARATE
41 - add your device tree files to arch/<arch>/dts
42 - update the Makefile there
43 - Add stdout-path to your /chosen device tree node if it is not already there
44 - build and get u-boot-dtb.bin so you can test it
45 - Your drivers can now use device tree
46 - For device tree in SPL, define CONFIG_SPL_OF_CONTROL