public inbox for u-boot@lists.denx.de
 help / color / mirror / Atom feed
From: Simon Glass <sjg@chromium.org>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 07/11] dm: net: Adjust PHY interface to work with CONFIG_DM_ETH
Date: Sun,  5 Apr 2015 16:07:39 -0600	[thread overview]
Message-ID: <1428271663-3814-8-git-send-email-sjg@chromium.org> (raw)
In-Reply-To: <1428271663-3814-1-git-send-email-sjg@chromium.org>

When driver model is used for Ethernet a few functions are passed a udevice
instead of an eth_device. Also add a function to find a PHY type given its
name. This will be used to decode the device tree node.

Finally, put a phy_interface field in struct eth_pdata since this is an
important part of the platform data for Ethernet.

Signed-off-by: Simon Glass <sjg@chromium.org>
Acked-by: Joe Hershberger <joe.hershberger@ni.com>
---

Changes in v2: None

 common/miiphyutil.c   |  1 +
 drivers/net/phy/phy.c | 22 ++++++++++++++++++++++
 include/net.h         |  2 ++
 include/phy.h         | 23 ++++++++++++++++++++++-
 4 files changed, 47 insertions(+), 1 deletion(-)

diff --git a/common/miiphyutil.c b/common/miiphyutil.c
index 74812e6..c88c28a 100644
--- a/common/miiphyutil.c
+++ b/common/miiphyutil.c
@@ -11,6 +11,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <miiphy.h>
 #include <phy.h>
 
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index df7e945..9d88afe 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -11,6 +11,7 @@
 
 #include <config.h>
 #include <common.h>
+#include <dm.h>
 #include <malloc.h>
 #include <net.h>
 #include <command.h>
@@ -754,7 +755,11 @@ struct phy_device *phy_find_by_mask(struct mii_dev *bus, unsigned phy_mask,
 	return get_phy_device_by_mask(bus, phy_mask, interface);
 }
 
+#ifdef CONFIG_DM_ETH
+void phy_connect_dev(struct phy_device *phydev, struct udevice *dev)
+#else
 void phy_connect_dev(struct phy_device *phydev, struct eth_device *dev)
+#endif
 {
 	/* Soft Reset the PHY */
 	phy_reset(phydev);
@@ -767,8 +772,13 @@ void phy_connect_dev(struct phy_device *phydev, struct eth_device *dev)
 	debug("%s connected to %s\n", dev->name, phydev->drv->name);
 }
 
+#ifdef CONFIG_DM_ETH
+struct phy_device *phy_connect(struct mii_dev *bus, int addr,
+		struct udevice *dev, phy_interface_t interface)
+#else
 struct phy_device *phy_connect(struct mii_dev *bus, int addr,
 		struct eth_device *dev, phy_interface_t interface)
+#endif
 {
 	struct phy_device *phydev;
 
@@ -813,3 +823,15 @@ int phy_shutdown(struct phy_device *phydev)
 
 	return 0;
 }
+
+int phy_get_interface_by_name(const char *str)
+{
+	int i;
+
+	for (i = 0; i < PHY_INTERFACE_MODE_COUNT; i++) {
+		if (!strcmp(str, phy_interface_strings[i]))
+			return i;
+	}
+
+	return -1;
+}
diff --git a/include/net.h b/include/net.h
index f9df532..2b4f9f3 100644
--- a/include/net.h
+++ b/include/net.h
@@ -84,10 +84,12 @@ enum eth_state_t {
  *
  * @iobase: The base address of the hardware registers
  * @enetaddr: The Ethernet MAC address that is loaded from EEPROM or env
+ * @phy_interface: PHY interface to use - see PHY_INTERFACE_MODE_...
  */
 struct eth_pdata {
 	phys_addr_t iobase;
 	unsigned char enetaddr[6];
+	int phy_interface;
 };
 
 /**
diff --git a/include/phy.h b/include/phy.h
index d117fc1..384dc23 100644
--- a/include/phy.h
+++ b/include/phy.h
@@ -51,7 +51,9 @@ typedef enum {
 	PHY_INTERFACE_MODE_RGMII_TXID,
 	PHY_INTERFACE_MODE_RTBI,
 	PHY_INTERFACE_MODE_XGMII,
-	PHY_INTERFACE_MODE_NONE	/* Must be last */
+	PHY_INTERFACE_MODE_NONE,	/* Must be last */
+
+	PHY_INTERFACE_MODE_COUNT,
 } phy_interface_t;
 
 static const char *phy_interface_strings[] = {
@@ -142,7 +144,11 @@ struct phy_device {
 	struct phy_driver *drv;
 	void *priv;
 
+#ifdef CONFIG_DM_ETH
+	struct udevice *dev;
+#else
 	struct eth_device *dev;
+#endif
 
 	/* forced speed & duplex (no autoneg)
 	 * partner speed & duplex & pause (autoneg)
@@ -205,10 +211,17 @@ int phy_init(void);
 int phy_reset(struct phy_device *phydev);
 struct phy_device *phy_find_by_mask(struct mii_dev *bus, unsigned phy_mask,
 		phy_interface_t interface);
+#ifdef CONFIG_DM_ETH
+void phy_connect_dev(struct phy_device *phydev, struct udevice *dev);
+struct phy_device *phy_connect(struct mii_dev *bus, int addr,
+				struct udevice *dev,
+				phy_interface_t interface);
+#else
 void phy_connect_dev(struct phy_device *phydev, struct eth_device *dev);
 struct phy_device *phy_connect(struct mii_dev *bus, int addr,
 				struct eth_device *dev,
 				phy_interface_t interface);
+#endif
 int phy_startup(struct phy_device *phydev);
 int phy_config(struct phy_device *phydev);
 int phy_shutdown(struct phy_device *phydev);
@@ -242,6 +255,14 @@ int phy_vitesse_init(void);
 
 int board_phy_config(struct phy_device *phydev);
 
+/**
+ * phy_get_interface_by_name() - Look up a PHY interface name
+ *
+ * @str:	PHY interface name, e.g. "mii"
+ * @return PHY_INTERFACE_MODE_... value, or -1 if not found
+ */
+int phy_get_interface_by_name(const char *str);
+
 /* PHY UIDs for various PHYs that are referenced in external code */
 #define PHY_UID_CS4340  0x13e51002
 #define PHY_UID_TN2020	0x00a19410
-- 
2.2.0.rc0.207.ga3a616c

  parent reply	other threads:[~2015-04-05 22:07 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-05 22:07 [U-Boot] [PATCH v2 0/11] dm: net: Conversion patches for sunxi driver model Ethernet Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 01/11] sunxi: Replace the pcDuino3 config with FDT version Simon Glass
2015-04-09  3:00   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 02/11] Kconfig: Move CONFIG_DESIGNWARE_ETH to Kconfig Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 03/11] dts: sunxi: Bring in Ethernet device tree bindings Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 04/11] dm: core: Support allocating driver-private data for DMA Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 05/11] dm: net: Use existing Ethernet init for driver model Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 06/11] Avoid calling print_eths() with " Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` Simon Glass [this message]
2015-04-09  3:04   ` [U-Boot] [PATCH v2 07/11] dm: net: Adjust PHY interface to work with CONFIG_DM_ETH Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 08/11] dm: net: Tidy up designware driver ready for driver model Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 09/11] dm: net: Adjust designware driver to support " Simon Glass
2015-04-06 21:09   ` Joe Hershberger
2015-04-09  3:04     ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 10/11] dm: sunxi: Support driver model for Ethernet Simon Glass
2015-04-09  3:04   ` Simon Glass
2015-04-05 22:07 ` [U-Boot] [PATCH v2 11/11] dm: sunxi: Use driver model for Ethernet on Linksprite pcDuino3 Simon Glass
2015-04-09  3:04   ` Simon Glass

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1428271663-3814-8-git-send-email-sjg@chromium.org \
    --to=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox