mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-11 07:24:46 +00:00
net: miiphybb: Convert documentation to rst
Convert the current miiphybb documentation to rst. Rename the README.bitbangMII to bitbangmii.rst in the process. Signed-off-by: Marek Vasut <marek.vasut+renesas@mailbox.org> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
parent
15d6518c94
commit
60ea8a94d6
3 changed files with 76 additions and 39 deletions
|
@ -1,39 +0,0 @@
|
|||
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
|
||||
|
||||
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>
|
75
doc/develop/bitbangmii.rst
Normal file
75
doc/develop/bitbangmii.rst
Normal file
|
@ -0,0 +1,75 @@
|
|||
.. SPDX-License-Identifier: GPL-2.0-or-later
|
||||
.. Luigi 'Comio' Mantellini <luigi.mantellini@idf-hit.com>, Industrie Dial Face S.p.A., 2009
|
||||
|
||||
Bit-banged MII bus support
|
||||
==========================
|
||||
|
||||
The miiphybb ( Bit-banged MII bus driver ) supports an arbitrary number of
|
||||
MII buses. This feature is useful when a driver 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 macro is defined in the board
|
||||
configuration file:
|
||||
|
||||
* CONFIG_BITBANGMII - Enable the miiphybb driver
|
||||
|
||||
The driver code needs to allocate a regular MDIO device using mdio_alloc()
|
||||
and assign .read and .write accessors which wrap bb_miiphy_read() and
|
||||
bb_miiphy_write() functions respectively. The bb_miiphy_read() and
|
||||
bb_miiphy_write() functions take a pointer to a callback structure,
|
||||
struct bb_miiphy_bus_ops. The struct bb_miiphy_bus_ops has the following
|
||||
fields/callbacks (see miiphy.h for details):
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
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
|
||||
|
||||
The driver code will look like:
|
||||
|
||||
.. code-block:: c
|
||||
|
||||
static const struct bb_miiphy_bus_ops ravb_bb_miiphy_bus_ops = {
|
||||
.mdio_active = ravb_bb_mdio_active,
|
||||
.mdio_tristate = ravb_bb_mdio_tristate,
|
||||
.set_mdio = ravb_bb_set_mdio,
|
||||
.get_mdio = ravb_bb_get_mdio,
|
||||
.set_mdc = ravb_bb_set_mdc,
|
||||
.delay = ravb_bb_delay,
|
||||
};
|
||||
|
||||
static int ravb_bb_miiphy_read(struct mii_dev *miidev, int addr,
|
||||
int devad, int reg)
|
||||
{
|
||||
return bb_miiphy_read(miidev, &ravb_bb_miiphy_bus_ops,
|
||||
addr, devad, reg);
|
||||
}
|
||||
|
||||
static int ravb_bb_miiphy_write(struct mii_dev *miidev, int addr,
|
||||
int devad, int reg, u16 value)
|
||||
{
|
||||
return bb_miiphy_write(miidev, &ravb_bb_miiphy_bus_ops,
|
||||
addr, devad, reg, value);
|
||||
}
|
||||
|
||||
static int ravb_probe(struct udevice *dev)
|
||||
{
|
||||
struct mii_dev *mdiodev;
|
||||
...
|
||||
mdiodev = mdio_alloc();
|
||||
if (!mdiodev)
|
||||
return -ENOMEM;
|
||||
|
||||
mdiodev->read = ravb_bb_miiphy_read;
|
||||
mdiodev->write = ravb_bb_miiphy_write;
|
||||
mdiodev->priv = eth;
|
||||
snprintf(mdiodev->name, sizeof(mdiodev->name), dev->name);
|
||||
|
||||
ret = mdio_register(mdiodev);
|
||||
...
|
||||
}
|
|
@ -9,6 +9,7 @@ General
|
|||
.. toctree::
|
||||
:maxdepth: 1
|
||||
|
||||
bitbangmii
|
||||
board_best_practices
|
||||
codingstyle
|
||||
designprinciples
|
||||
|
|
Loading…
Add table
Reference in a new issue