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