|
@@ -65,79 +65,6 @@ void miiphy_init(void)
|
|
|
current_mii = NULL;
|
|
|
}
|
|
|
|
|
|
-static int legacy_miiphy_read(struct mii_dev *bus, int addr, int devad, int reg)
|
|
|
-{
|
|
|
- unsigned short val;
|
|
|
- int ret;
|
|
|
- struct legacy_mii_dev *ldev = bus->priv;
|
|
|
-
|
|
|
- ret = ldev->read(bus->name, addr, reg, &val);
|
|
|
-
|
|
|
- return ret ? -1 : (int)val;
|
|
|
-}
|
|
|
-
|
|
|
-static int legacy_miiphy_write(struct mii_dev *bus, int addr, int devad,
|
|
|
- int reg, u16 val)
|
|
|
-{
|
|
|
- struct legacy_mii_dev *ldev = bus->priv;
|
|
|
-
|
|
|
- return ldev->write(bus->name, addr, reg, val);
|
|
|
-}
|
|
|
-
|
|
|
-/*****************************************************************************
|
|
|
- *
|
|
|
- * Register read and write MII access routines for the device <name>.
|
|
|
- * This API is now deprecated. Please use mdio_alloc and mdio_register, instead.
|
|
|
- */
|
|
|
-void miiphy_register(const char *name,
|
|
|
- int (*read)(const char *devname, unsigned char addr,
|
|
|
- unsigned char reg, unsigned short *value),
|
|
|
- int (*write)(const char *devname, unsigned char addr,
|
|
|
- unsigned char reg, unsigned short value))
|
|
|
-{
|
|
|
- struct mii_dev *new_dev;
|
|
|
- struct legacy_mii_dev *ldev;
|
|
|
-
|
|
|
- BUG_ON(strlen(name) >= MDIO_NAME_LEN);
|
|
|
-
|
|
|
- /* check if we have unique name */
|
|
|
- new_dev = miiphy_get_dev_by_name(name);
|
|
|
- if (new_dev) {
|
|
|
- printf("miiphy_register: non unique device name '%s'\n", name);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- /* allocate memory */
|
|
|
- new_dev = mdio_alloc();
|
|
|
- ldev = malloc(sizeof(*ldev));
|
|
|
-
|
|
|
- if (new_dev == NULL || ldev == NULL) {
|
|
|
- printf("miiphy_register: cannot allocate memory for '%s'\n",
|
|
|
- name);
|
|
|
- free(ldev);
|
|
|
- mdio_free(new_dev);
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- /* initalize mii_dev struct fields */
|
|
|
- new_dev->read = legacy_miiphy_read;
|
|
|
- new_dev->write = legacy_miiphy_write;
|
|
|
- strncpy(new_dev->name, name, MDIO_NAME_LEN);
|
|
|
- new_dev->name[MDIO_NAME_LEN - 1] = 0;
|
|
|
- ldev->read = read;
|
|
|
- ldev->write = write;
|
|
|
- new_dev->priv = ldev;
|
|
|
-
|
|
|
- debug("miiphy_register: added '%s', read=0x%08lx, write=0x%08lx\n",
|
|
|
- new_dev->name, ldev->read, ldev->write);
|
|
|
-
|
|
|
- /* add it to the list */
|
|
|
- list_add_tail(&new_dev->link, &mii_devs);
|
|
|
-
|
|
|
- if (!current_mii)
|
|
|
- current_mii = new_dev;
|
|
|
-}
|
|
|
-
|
|
|
struct mii_dev *mdio_alloc(void)
|
|
|
{
|
|
|
struct mii_dev *bus;
|