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>
diff --git a/doc/README.bitbangMII b/doc/README.bitbangMII
deleted file mode 100644
index 05ab203..0000000
--- a/doc/README.bitbangMII
+++ /dev/null
@@ -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>
diff --git a/doc/develop/bitbangmii.rst b/doc/develop/bitbangmii.rst
new file mode 100644
index 0000000..35a4a0c
--- /dev/null
+++ b/doc/develop/bitbangmii.rst
@@ -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);
+    ...
+    }
diff --git a/doc/develop/index.rst b/doc/develop/index.rst
index d9f2a83..c907f8c 100644
--- a/doc/develop/index.rst
+++ b/doc/develop/index.rst
@@ -9,6 +9,7 @@
 .. toctree::
    :maxdepth: 1
 
+   bitbangmii
    board_best_practices
    codingstyle
    designprinciples