]>
Commit | Line | Data |
---|---|---|
4ba31ab3 LCM |
1 | This patch rewrites the miiphybb ( Bit-banged MII bus driver ) in order to |
2 | support an arbitrary number of mii buses. This feature is useful when your | |
3 | board uses different mii buses for different phys and all (or a part) of these | |
4 | buses are implemented via bit-banging mode. | |
5 | ||
6 | The driver requires that the following macros should be defined into the board | |
7 | configuration file: | |
8 | ||
4946775c | 9 | CONFIG_BITBANGMII - Enable the miiphybb driver |
4ba31ab3 LCM |
10 | CONFIG_BITBANGMII_MULTI - Enable the multi bus support |
11 | ||
12 | If the CONFIG_BITBANGMII_MULTI is not defined, the board's config file needs | |
13 | to define at least the following macros: | |
14 | ||
15 | MII_INIT - Generic code to enable the MII bus (optional) | |
16 | MDIO_DECLARE - Declaration needed to access to the MDIO pin (optional) | |
17 | MDIO_ACTIVE - Activate the MDIO pin as out pin | |
18 | MDIO_TRISTATE - Activate the MDIO pin as input/tristate pin | |
19 | MDIO_READ - Read the MDIO pin | |
20 | MDIO(v) - Write v on the MDIO pin | |
21 | MDC_DECLARE - Declaration needed to access to the MDC pin (optional) | |
4946775c | 22 | MDC(v) - Write v on the MDC pin |
4ba31ab3 LCM |
23 | |
24 | The previous macros make the driver compatible with the previous version | |
25 | (that didn't support the multi-bus). | |
26 | ||
27 | When the CONFIG_BITBANGMII_MULTI is also defined, the board code needs to fill | |
28 | the bb_miiphy_buses[] array with a record for each required bus and declare | |
29 | the bb_miiphy_buses_num variable with the number of mii buses. | |
30 | The record (struct bb_miiphy_bus) has the following fields/callbacks (see | |
31 | miiphy.h for details): | |
32 | ||
4946775c WD |
33 | char name[] - The symbolic name that must be equal to the MII bus |
34 | registered name | |
35 | int (*init)() - Initialization function called at startup time (just | |
36 | before the Ethernet initialization) | |
4ba31ab3 LCM |
37 | int (*mdio_active)() - Activate the MDIO pin as output |
38 | int (*mdio_tristate)() - Activate the MDIO pin as input/tristate pin | |
39 | int (*set_mdio)() - Write the MDIO pin | |
40 | int (*get_mdio)() - Read the MDIO pin | |
41 | int (*set_mdc)() - Write the MDC pin | |
4946775c WD |
42 | int (*delay)() - Delay function |
43 | void *priv - Private data used by board specific code | |
4ba31ab3 LCM |
44 | |
45 | The board code will look like: | |
46 | ||
47 | struct bb_miiphy_bus bb_miiphy_buses[] = { | |
48 | { .name = "miibus#1", .init = b1_init, .mdio_active = b1_mdio_active, ... }, | |
49 | { .name = "miibus#2", .init = b2_init, .mdio_active = b2_mdio_active, ... }, | |
50 | ... | |
51 | }; | |
52 | int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) / | |
4946775c | 53 | sizeof(bb_miiphy_buses[0]); |
4ba31ab3 LCM |
54 | |
55 | 2009 Industrie Dial Face S.p.A. | |
56 | Luigi 'Comio' Mantellini <[email protected]> |