123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- The U-Boot Driver Model Project
- ===============================
- PCMCIA analysis
- ===============
- Viktor Krivak <viktor.krivak@gmail.com>
- 2012-03-17
- I) Overview
- -----------
- U-boot implements only 2 methods to interoperate with pcmcia. One to turn
- device on and other to turn device off. Names of these methods are usually
- pcmcia_on() and pcmcia_off() without any parameters. Some files in driver
- directory implements only internal API. These methods aren't used outside
- driver directory and they are not converted to new driver model.
- II) Approach
- -----------
- 1) New API
- ----------
- Current API is preserved and all internal methods are hiden.
- struct ops {
- void (*pcmcia_on)(struct instance *i);
- void (*pcmcia_off)(struct instance *i);
- }
- 2) Conversion
- -------------
- In header file pcmcia.h are some other variables which are used for
- additional configuration. But all have to be moved to platform data or to
- specific driver implementation.
- 3) Platform data
- ----------------
- Many boards have custom implementation of internal API. Pointers to these
- methods are stored in platform_data. But the most implementations for Intel
- 82365 and compatible PC Card controllers and Yenta-compatible
- PCI-to-CardBus controllers implement whole API per board. In these cases
- pcmcia_on() and pcmcia_off() behave only as wrappers and call specific
- board methods.
- III) Analysis of in-tree drivers
- --------------------------------
- 1) i82365.c
- -----------
- Driver methods have different name i82365_init() and i82365_exit but
- all functionality is the same. Board files board/atc/ti113x.c and
- board/cpc45/pd67290.c use their own implementation of these method.
- In this case all methods in driver behave only as wrappers.
- 2) marubun_pcmcia.c
- -------------------
- Meets standard API behaviour. Simple conversion.
- 3) mpc8xx_pcmcia.c
- ------------------
- Meets standard API behaviour. Simple conversion.
- 4) rpx_pcmcia.c
- ---------------
- Implements only internal API used in other drivers. Non of methods
- implemented here are used outside driver model.
- 5) ti_pci1410a.c
- ----------------
- Has different API but methods in this file are never called. Probably
- dead code.
- 6)tqm8xx_pcmcia.c
- -----------------
- Implements only internal API used in other drivers. Non of methods
- implemented here are used outside driver model.
|