summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2012-04-13 10:40:05 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2012-04-24 10:31:47 +0200
commit7753263c50d17696e487e188c1ef73df31c8ecff (patch)
tree00284c638de9cbe4fcbf0f88dff0565f5267ec04 /drivers
parent6f20c7bc709dd5875b1066d5dae99d52cc18d51c (diff)
downloadbarebox-7753263c50d17696e487e188c1ef73df31c8ecff.tar.gz
barebox-7753263c50d17696e487e188c1ef73df31c8ecff.tar.xz
net mii: Add mii_open/mii_close functions
Some phys need board specific fixups. To be able to do this from board code add mii_open/mii_close functions so that the board can use the regular mii_read/mii_write functions. Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/miidev.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/net/miidev.c b/drivers/net/miidev.c
index 3b73133201..cc84e63f1e 100644
--- a/drivers/net/miidev.c
+++ b/drivers/net/miidev.c
@@ -28,6 +28,8 @@
#include <net.h>
#include <malloc.h>
+static LIST_HEAD(miidev_list);
+
int miidev_restart_aneg(struct mii_device *mdev)
{
int status, timeout;
@@ -226,6 +228,7 @@ static int miidev_probe(struct device_d *dev)
mdev->cdev.priv = mdev;
mdev->cdev.dev = dev;
devfs_create(&mdev->cdev);
+ list_add_tail(&mdev->list, &miidev_list);
return 0;
}
@@ -233,10 +236,27 @@ static void miidev_remove(struct device_d *dev)
{
struct mii_device *mdev = dev->priv;
+ list_del(&mdev->list);
+
free(mdev->cdev.name);
devfs_remove(&mdev->cdev);
}
+struct mii_device *mii_open(const char *name)
+{
+ struct mii_device *mdev;
+
+ list_for_each_entry(mdev, &miidev_list, list) {
+ if (!strcmp(name, mdev->cdev.name))
+ return mdev;
+ }
+ return NULL;
+}
+
+void mii_close(struct mii_device *mdev)
+{
+}
+
static struct driver_d miidev_drv = {
.name = "miidev",
.probe = miidev_probe,