mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
dm: Add pcmcia design document
Signed-off-by: Viktor Krivak <viktor.krivak@gmail.com>
This commit is contained in:
parent
a09c649972
commit
cbcc33e951
1 changed files with 78 additions and 0 deletions
78
doc/driver-model/UDM-pcmcia.txt
Normal file
78
doc/driver-model/UDM-pcmcia.txt
Normal file
|
@ -0,0 +1,78 @@
|
|||
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.
|
Loading…
Reference in a new issue