Add Broadcom / Netgear changes from RAXE 1.0.0.48
[project/bcm63xx/u-boot.git] / drivers / net / bcmbca / phy / bus_drv_mdio_v1.c
diff --git a/drivers/net/bcmbca/phy/bus_drv_mdio_v1.c b/drivers/net/bcmbca/phy/bus_drv_mdio_v1.c
new file mode 100644 (file)
index 0000000..75ac8c8
--- /dev/null
@@ -0,0 +1,74 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+   Copyright (c) 2016 Broadcom Corporation
+   All Rights Reserved
+
+    
+*/
+
+/*
+ *  Created on: Aug 2017
+ *      Author: dima.mamut@broadcom.com
+ */
+
+#include "bus_drv.h"
+#include "mdio_drv_impl5.h"
+
+/* Internal MDIO bus */
+static int bus_mdio_v1_int_c22_read(uint32_t addr, uint16_t reg, uint16_t *val)
+{
+    return mdio_read_c22_register(MDIO_INT, addr, reg, val);
+}
+
+static int bus_mdio_v1_int_c22_write(uint32_t addr, uint16_t reg, uint16_t val)
+{
+    return mdio_write_c22_register(MDIO_INT, addr, reg, val);
+}
+
+static int bus_mdio_v1_int_c45_read(uint32_t addr, uint16_t dev, uint16_t reg, uint16_t *val)
+{
+    return mdio_read_c45_register(MDIO_INT, addr, dev, reg, val);
+}
+
+static int bus_mdio_v1_int_c45_write(uint32_t addr, uint16_t dev, uint16_t reg, uint16_t val)
+{
+    return mdio_write_c45_register(MDIO_INT, addr, dev, reg, val);
+}
+
+bus_drv_t bus_mdio_v1_int_drv =
+{
+    .c22_read = bus_mdio_v1_int_c22_read,
+    .c22_write = bus_mdio_v1_int_c22_write,
+    .c45_read = bus_mdio_v1_int_c45_read,
+    .c45_write = bus_mdio_v1_int_c45_write,
+};
+
+
+/* External MDIO bus */
+static int bus_mdio_v1_ext_c22_read(uint32_t addr, uint16_t reg, uint16_t *val)
+{
+    return mdio_read_c22_register(MDIO_EXT, addr, reg, val);
+}
+
+static int bus_mdio_v1_ext_c22_write(uint32_t addr, uint16_t reg, uint16_t val)
+{
+    return mdio_write_c22_register(MDIO_EXT, addr, reg, val);
+}
+
+static int bus_mdio_v1_ext_c45_read(uint32_t addr, uint16_t dev, uint16_t reg, uint16_t *val)
+{
+    return mdio_read_c45_register(MDIO_EXT, addr, dev, reg, val);
+}
+
+static int bus_mdio_v1_ext_c45_write(uint32_t addr, uint16_t dev, uint16_t reg, uint16_t val)
+{
+    return mdio_write_c45_register(MDIO_EXT, addr, dev, reg, val);
+}
+
+bus_drv_t bus_mdio_v1_ext_drv =
+{
+    .c22_read = bus_mdio_v1_ext_c22_read,
+    .c22_write = bus_mdio_v1_ext_c22_write,
+    .c45_read = bus_mdio_v1_ext_c45_read,
+    .c45_write = bus_mdio_v1_ext_c45_write,
+};