mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-15 17:28:15 +00:00
566c6e4370
Everytime a dead driver is removed from the list, we must re-number. This is a painful task. Try git showe53232250
-- doc/driver-model/UDM-serial.txt git show6f62f4207
-- doc/driver-model/UDM-serial.txt git showb9f4bc34a
-- doc/driver-model/UDM-serial.txt to see what I mean. Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
78 lines
2.4 KiB
Text
78 lines
2.4 KiB
Text
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
|
|
--------------------------------
|
|
|
|
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.
|
|
|
|
marubun_pcmcia.c
|
|
----------------
|
|
Meets standard API behaviour. Simple conversion.
|
|
|
|
mpc8xx_pcmcia.c
|
|
---------------
|
|
Meets standard API behaviour. Simple conversion.
|
|
|
|
rpx_pcmcia.c
|
|
------------
|
|
Implements only internal API used in other drivers. Non of methods
|
|
implemented here are used outside driver model.
|
|
|
|
ti_pci1410a.c
|
|
-------------
|
|
Has different API but methods in this file are never called. Probably
|
|
dead code.
|
|
|
|
tqm8xx_pcmcia.c
|
|
---------------
|
|
Implements only internal API used in other drivers. Non of methods
|
|
implemented here are used outside driver model.
|