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

Over half of the I2C drivers have been converted as at November 2016. These
ones remain:

   adi_i2c
   davinci_i2c
   fti2c010
   ihs_i2c
   kona_i2c
   lpc32xx_i2c
   pca9564_i2c
   ppc4xx_i2c
   rcar_i2c
   sh_i2c
   soft_i2c
   zynq_i2c

The deadline for this work is the end of June 2017. If no one steps
forward to convert these, at some point there may come a patch to remove them!

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

- #ifdef out all your own I2C driver code (#ifndef CONFIG_DM_I2C)
- Define CONFIG_DM_I2C 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 work fully since there will be
    no I2C driver
- Add the U_BOOT_DRIVER piece at the end (e.g. copy tegra_i2c.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
