u-boot/doc/driver-model/UDM-pcmcia.txt
Masahiro Yamada 566c6e4370 cosmetic: doc: driver-model: Do not number driver lists
Everytime a dead driver is removed from the list,
we must re-number. This is a painful task.

Try
  git show e53232250 -- doc/driver-model/UDM-serial.txt
  git show 6f62f4207 -- doc/driver-model/UDM-serial.txt
  git show b9f4bc34a -- doc/driver-model/UDM-serial.txt
to see what I mean.

Signed-off-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
2013-11-08 15:25:12 -05:00

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.