How to port a serial driver to driver model
===========================================

About 16 of 33 serial drivers have been converted as at September 2015. It
is time for maintainers to start converting over the remaining serial drivers:

   arm_dcc.c
   lpc32xx_hsuart.c
   mcfuart.c
   mxs_auart.c
   opencores_yanu.c
   serial_bfin.c
   serial_imx.c
   serial_max3100.c
   serial_pxa.c
   serial_s3c24x0.c
   serial_sa1100.c
   serial_xuartlite.c
   usbtty.c

You should complete this by the end of January 2016.

Here is a suggested approach for converting your serial driver over to driver
model. Please feel free to update this file with your ideas and suggestions.

- #ifdef out all your own serial driver code (#ifndef CONFIG_DM_SERIAL)
- Define CONFIG_DM_SERIAL for your board, vendor or architecture
- If the board does not already use driver model, you need CONFIG_DM also
- Your board should then build, but will not boot since there will be no serial
    driver
- Add the U_BOOT_DRIVER piece at the end (e.g. copy serial_s5p.c for example)
- Add a private struct for the driver data - avoid using static variables
- Implement each of the driver methods, perhaps by calling your old methods
- You may need to adjust the function parameters so that the old and new
    implementations can share most of the existing code
- If you convert all existing users of the driver, remove the pre-driver-model
    code

In terms of patches a conversion series typically has these patches:
- clean up / prepare the driver for conversion
- add driver model code
- convert at least one existing board to use driver model serial
- (if no boards remain that don't use driver model) remove the old code

This may be a good time to move your board to use device tree also. Mostly
this involves these steps:

- define CONFIG_OF_CONTROL and CONFIG_OF_SEPARATE
- add your device tree files to arch/<arch>/dts
- update the Makefile there
- Add stdout-path to your /chosen device tree node if it is not already there
- build and get u-boot-dtb.bin so you can test it
- Your drivers can now use device tree
- For device tree in SPL, define CONFIG_SPL_OF_CONTROL
