diff --git a/drivers/phy/Kconfig b/drivers/phy/Kconfig
index 0a74920..75f459d 100644
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -33,4 +33,12 @@
 	  compatible as possible with the equivalent framework found in the
 	  linux kernel.
 
+config PHY_SANDBOX
+	bool "Sandbox PHY support"
+	depends on SANDBOX
+	depends on PHY
+	help
+	  This select a dummy sandbox PHY driver. It used only to implement
+	  the unit tests for the phy framework
+
 endmenu
diff --git a/drivers/phy/Makefile b/drivers/phy/Makefile
index 45f786a..fd037c3 100644
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -6,3 +6,4 @@
 #
 
 obj-$(CONFIG_$(SPL_)PHY) += phy-uclass.o
+obj-$(CONFIG_PHY_SANDBOX) += sandbox-phy.o
diff --git a/drivers/phy/sandbox-phy.c b/drivers/phy/sandbox-phy.c
new file mode 100644
index 0000000..9ad820c
--- /dev/null
+++ b/drivers/phy/sandbox-phy.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
+ * Written by Jean-Jacques Hiblot  <jjhiblot@ti.com>
+ *
+ * SPDX-License-Identifier:	GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <generic-phy.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct sandbox_phy_priv {
+	bool initialized;
+	bool on;
+	bool broken;
+};
+
+static int sandbox_phy_power_on(struct phy *phy)
+{
+	struct sandbox_phy_priv *priv = dev_get_priv(phy->dev);
+
+	if (!priv->initialized)
+		return -EIO;
+
+	if (priv->broken)
+		return -EIO;
+
+	priv->on = true;
+
+	return 0;
+}
+
+static int sandbox_phy_power_off(struct phy *phy)
+{
+	struct sandbox_phy_priv *priv = dev_get_priv(phy->dev);
+
+	if (!priv->initialized)
+		return -EIO;
+
+	if (priv->broken)
+		return -EIO;
+
+	/*
+	 * for validation purpose, let's says that power off
+	 * works only for PHY 0
+	 */
+	if (phy->id)
+		return -EIO;
+
+	priv->on = false;
+
+	return 0;
+}
+
+static int sandbox_phy_init(struct phy *phy)
+{
+	struct sandbox_phy_priv *priv = dev_get_priv(phy->dev);
+
+	priv->initialized = true;
+	priv->on = true;
+
+	return 0;
+}
+
+static int sandbox_phy_exit(struct phy *phy)
+{
+	struct sandbox_phy_priv *priv = dev_get_priv(phy->dev);
+
+	priv->initialized = false;
+	priv->on = false;
+
+	return 0;
+}
+
+static int sandbox_phy_probe(struct udevice *dev)
+{
+	struct sandbox_phy_priv *priv = dev_get_priv(dev);
+
+	priv->initialized = false;
+	priv->on = false;
+	priv->broken = fdtdec_get_bool(gd->fdt_blob, dev_of_offset(dev),
+				       "broken");
+
+	return 0;
+}
+
+static struct phy_ops sandbox_phy_ops = {
+	.power_on = sandbox_phy_power_on,
+	.power_off = sandbox_phy_power_off,
+	.init = sandbox_phy_init,
+	.exit = sandbox_phy_exit,
+};
+
+static const struct udevice_id sandbox_phy_ids[] = {
+	{ .compatible = "sandbox,phy" },
+	{ }
+};
+
+U_BOOT_DRIVER(phy_sandbox) = {
+	.name		= "phy_sandbox",
+	.id		= UCLASS_PHY,
+	.of_match	= sandbox_phy_ids,
+	.ops		= &sandbox_phy_ops,
+	.probe		= sandbox_phy_probe,
+	.priv_auto_alloc_size = sizeof(struct sandbox_phy_priv),
+};
