summaryrefslogtreecommitdiff
path: root/doc/README.bitbangMII
diff options
context:
space:
mode:
authorWolfgang Denk <wd@denx.de>2009-10-12 23:40:27 +0200
committerWolfgang Denk <wd@denx.de>2009-10-12 23:40:27 +0200
commit14abfe361b3ed23b02f564e2f5d663e158cd5799 (patch)
tree76ccf4f0ce3bb2d8c0fda116ee3d0e10de262af5 /doc/README.bitbangMII
parent285870f75378aca41c5063e4358ad93bf3014fd8 (diff)
parentbe2254423b86572841aa70ff05d20933d1b49823 (diff)
downloadu-boot-imx-14abfe361b3ed23b02f564e2f5d663e158cd5799.zip
u-boot-imx-14abfe361b3ed23b02f564e2f5d663e158cd5799.tar.gz
u-boot-imx-14abfe361b3ed23b02f564e2f5d663e158cd5799.tar.bz2
Merge branch 'master' of /home/wd/git/u-boot/custodians
Diffstat (limited to 'doc/README.bitbangMII')
-rw-r--r--doc/README.bitbangMII56
1 files changed, 56 insertions, 0 deletions
diff --git a/doc/README.bitbangMII b/doc/README.bitbangMII
new file mode 100644
index 0000000..edd0856
--- /dev/null
+++ b/doc/README.bitbangMII
@@ -0,0 +1,56 @@
+This patch rewrites the miiphybb ( Bit-banged MII bus driver ) in order to
+support an arbitrary number of mii buses. This feature is useful when your
+board uses different mii buses for different phys and all (or a part) of these
+buses are implemented via bit-banging mode.
+
+The driver requires that the following macros should be defined into the board
+configuration file:
+
+CONFIG_BITBANGMII - Enable the miiphybb driver
+CONFIG_BITBANGMII_MULTI - Enable the multi bus support
+
+If the CONFIG_BITBANGMII_MULTI is not defined, the board's config file needs
+to define at least the following macros:
+
+MII_INIT - Generic code to enable the MII bus (optional)
+MDIO_DECLARE - Declaration needed to access to the MDIO pin (optional)
+MDIO_ACTIVE - Activate the MDIO pin as out pin
+MDIO_TRISTATE - Activate the MDIO pin as input/tristate pin
+MDIO_READ - Read the MDIO pin
+MDIO(v) - Write v on the MDIO pin
+MDC_DECLARE - Declaration needed to access to the MDC pin (optional)
+MDC(v) - Write v on the MDC pin
+
+The previous macros make the driver compatible with the previous version
+(that didn't support the multi-bus).
+
+When the CONFIG_BITBANGMII_MULTI is also defined, the board code needs to fill
+the bb_miiphy_buses[] array with a record for each required bus and declare
+the bb_miiphy_buses_num variable with the number of mii buses.
+The record (struct bb_miiphy_bus) has the following fields/callbacks (see
+miiphy.h for details):
+
+char name[] - The symbolic name that must be equal to the MII bus
+ registered name
+int (*init)() - Initialization function called at startup time (just
+ before the Ethernet initialization)
+int (*mdio_active)() - Activate the MDIO pin as output
+int (*mdio_tristate)() - Activate the MDIO pin as input/tristate pin
+int (*set_mdio)() - Write the MDIO pin
+int (*get_mdio)() - Read the MDIO pin
+int (*set_mdc)() - Write the MDC pin
+int (*delay)() - Delay function
+void *priv - Private data used by board specific code
+
+The board code will look like:
+
+struct bb_miiphy_bus bb_miiphy_buses[] = {
+ { .name = "miibus#1", .init = b1_init, .mdio_active = b1_mdio_active, ... },
+ { .name = "miibus#2", .init = b2_init, .mdio_active = b2_mdio_active, ... },
+ ...
+};
+int bb_miiphy_buses_num = sizeof(bb_miiphy_buses) /
+ sizeof(bb_miiphy_buses[0]);
+
+2009 Industrie Dial Face S.p.A.
+ Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com>