diff mbox

[U-Boot,2/2] net: add ICPlus PHY driver

Message ID 1354097718-13775-2-git-send-email-yegorslists@googlemail.com
State Accepted
Delegated to: Joe Hershberger
Headers show

Commit Message

Yegor Yefremov Nov. 28, 2012, 10:15 a.m. UTC
From: Yegor Yefremov <yegorslists@googlemail.com>

The driver code was taken from Linux kernel source:
drivers/net/phy/icplus.c

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 drivers/net/phy/Makefile |    1 +
 drivers/net/phy/icplus.c |   90 ++++++++++++++++++++++++++++++++++++++++++++++
 drivers/net/phy/phy.c    |    3 ++
 3 files changed, 94 insertions(+), 0 deletions(-)
 create mode 100644 drivers/net/phy/icplus.c

Comments

Marek Vasut Nov. 29, 2012, 6:27 a.m. UTC | #1
Dear yegorslists@googlemail.com,

> From: Yegor Yefremov <yegorslists@googlemail.com>
> 
> The driver code was taken from Linux kernel source:
> drivers/net/phy/icplus.c
> 
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
[...]

Is there any user for this PHY please?

Best regards,
Marek Vasut
Yegor Yefremov Nov. 29, 2012, 7:32 a.m. UTC | #2
On Thu, Nov 29, 2012 at 7:27 AM, Marek Vasut <marex@denx.de> wrote:
> Dear yegorslists@googlemail.com,
>
>> From: Yegor Yefremov <yegorslists@googlemail.com>
>>
>> The driver code was taken from Linux kernel source:
>> drivers/net/phy/icplus.c
>>
>> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> [...]
>
> Is there any user for this PHY please?

Yes, our new device, that will be soon introduced. The successor of
this one http://www.visionsystems.de/produkte/6806.html.

Yegor
Marek Vasut Nov. 29, 2012, 7:43 a.m. UTC | #3
Dear Yegor Yefremov,

> On Thu, Nov 29, 2012 at 7:27 AM, Marek Vasut <marex@denx.de> wrote:
> > Dear yegorslists@googlemail.com,
> > 
> >> From: Yegor Yefremov <yegorslists@googlemail.com>
> >> 
> >> The driver code was taken from Linux kernel source:
> >> drivers/net/phy/icplus.c
> >> 
> >> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> > 
> > [...]
> > 
> > Is there any user for this PHY please?
> 
> Yes, our new device, that will be soon introduced. The successor of
> this one http://www.visionsystems.de/produkte/6806.html.

Good, ok ... just make sure the board support also hits u-boot, so we won't have 
dead code.

Best regards,
Marek Vasut
Henrik Nordström Nov. 29, 2012, 7:53 a.m. UTC | #4
tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
> Dear yegorslists@googlemail.com,
> 
> > From: Yegor Yefremov <yegorslists@googlemail.com>
> > 
> > The driver code was taken from Linux kernel source:
> > drivers/net/phy/icplus.c
> > 
> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> [...]
> 
> Is there any user for this PHY please?

I don't have one, but know at least one user having one in an A10 based
"netbook".

http://linux-sunxi.org/File:H6-netbook-mainboard.jpg

Regards
Henrik
Yegor Yefremov Nov. 29, 2012, 8:07 a.m. UTC | #5
On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
<henrik@henriknordstrom.net> wrote:
> tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
>> Dear yegorslists@googlemail.com,
>>
>> > From: Yegor Yefremov <yegorslists@googlemail.com>
>> >
>> > The driver code was taken from Linux kernel source:
>> > drivers/net/phy/icplus.c
>> >
>> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> [...]
>>
>> Is there any user for this PHY please?
>
> I don't have one, but know at least one user having one in an A10 based
> "netbook".
>
> http://linux-sunxi.org/File:H6-netbook-mainboard.jpg

I found these boards in kernel:

arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m


Yegor
Marek Vasut Nov. 29, 2012, 12:55 p.m. UTC | #6
Dear Yegor Yefremov,

> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
> 
> <henrik@henriknordstrom.net> wrote:
> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
> >> Dear yegorslists@googlemail.com,
> >> 
> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
> >> > 
> >> > The driver code was taken from Linux kernel source:
> >> > drivers/net/phy/icplus.c
> >> > 
> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> >> 
> >> [...]
> >> 
> >> Is there any user for this PHY please?
> > 
> > I don't have one, but know at least one user having one in an A10 based
> > "netbook".
> > 
> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
> 
> I found these boards in kernel:
> 
> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m

Sure, but the question/point is ... won't this be dead code in u-boot? It won't 
once you add at least one board that actually uses it ... adding it only so it's 
there will only cause it to bitrot and it'll actually only add more burden to 
maintainers.

Best regards,
Marek Vasut
Yegor Yefremov Nov. 29, 2012, 1:13 p.m. UTC | #7
On Thu, Nov 29, 2012 at 1:55 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Yegor Yefremov,
>
>> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
>>
>> <henrik@henriknordstrom.net> wrote:
>> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
>> >> Dear yegorslists@googlemail.com,
>> >>
>> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
>> >> >
>> >> > The driver code was taken from Linux kernel source:
>> >> > drivers/net/phy/icplus.c
>> >> >
>> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> >>
>> >> [...]
>> >>
>> >> Is there any user for this PHY please?
>> >
>> > I don't have one, but know at least one user having one in an A10 based
>> > "netbook".
>> >
>> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
>>
>> I found these boards in kernel:
>>
>> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
>> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
>> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
>> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
>> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
>> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
>> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
>> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
>> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m
>
> Sure, but the question/point is ... won't this be dead code in u-boot? It won't
> once you add at least one board that actually uses it ... adding it only so it's
> there will only cause it to bitrot and it'll actually only add more burden to
> maintainers.

It won't be dead code, because we will use it :-) Our board is
derivative of BeagleBone & Co, so the whole support stuff is already
in u-boot. I can also image that some system didn't require network
support in u-boot and didn't bother with implementing the phy driver.
x86 systems are likely to have this phy too. And the driver is really
small and uses mostly generic routines.

Yegor
Marek Vasut Nov. 29, 2012, 2:29 p.m. UTC | #8
Dear Yegor Yefremov,

> On Thu, Nov 29, 2012 at 1:55 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Yegor Yefremov,
> > 
> >> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
> >> 
> >> <henrik@henriknordstrom.net> wrote:
> >> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
> >> >> Dear yegorslists@googlemail.com,
> >> >> 
> >> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
> >> >> > 
> >> >> > The driver code was taken from Linux kernel source:
> >> >> > drivers/net/phy/icplus.c
> >> >> > 
> >> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> >> >> 
> >> >> [...]
> >> >> 
> >> >> Is there any user for this PHY please?
> >> > 
> >> > I don't have one, but know at least one user having one in an A10
> >> > based "netbook".
> >> > 
> >> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
> >> 
> >> I found these boards in kernel:
> >> 
> >> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
> >> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
> >> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
> >> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
> >> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
> >> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
> >> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
> >> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
> >> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m
> > 
> > Sure, but the question/point is ... won't this be dead code in u-boot? It
> > won't once you add at least one board that actually uses it ... adding
> > it only so it's there will only cause it to bitrot and it'll actually
> > only add more burden to maintainers.
> 
> It won't be dead code, because we will use it :-) Our board is
> derivative of BeagleBone & Co, so the whole support stuff is already
> in u-boot.

You need to enable it for that board though ;-)

> I can also image that some system didn't require network
> support in u-boot and didn't bother with implementing the phy driver.
> x86 systems are likely to have this phy too. And the driver is really
> small and uses mostly generic routines.
> 
> Yegor

Best regards,
Marek Vasut
Yegor Yefremov Nov. 29, 2012, 2:40 p.m. UTC | #9
On Thu, Nov 29, 2012 at 3:29 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Yegor Yefremov,
>
>> On Thu, Nov 29, 2012 at 1:55 PM, Marek Vasut <marex@denx.de> wrote:
>> > Dear Yegor Yefremov,
>> >
>> >> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
>> >>
>> >> <henrik@henriknordstrom.net> wrote:
>> >> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
>> >> >> Dear yegorslists@googlemail.com,
>> >> >>
>> >> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
>> >> >> >
>> >> >> > The driver code was taken from Linux kernel source:
>> >> >> > drivers/net/phy/icplus.c
>> >> >> >
>> >> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> >> >>
>> >> >> [...]
>> >> >>
>> >> >> Is there any user for this PHY please?
>> >> >
>> >> > I don't have one, but know at least one user having one in an A10
>> >> > based "netbook".
>> >> >
>> >> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
>> >>
>> >> I found these boards in kernel:
>> >>
>> >> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
>> >> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
>> >> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
>> >> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
>> >> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
>> >> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
>> >> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
>> >> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
>> >> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m
>> >
>> > Sure, but the question/point is ... won't this be dead code in u-boot? It
>> > won't once you add at least one board that actually uses it ... adding
>> > it only so it's there will only cause it to bitrot and it'll actually
>> > only add more burden to maintainers.
>>
>> It won't be dead code, because we will use it :-) Our board is
>> derivative of BeagleBone & Co, so the whole support stuff is already
>> in u-boot.
>
> You need to enable it for that board though ;-)

Will do this as soon as we come near to the release. I'd like to have
basic stuff mainlined before.

Yegor
Marek Vasut Nov. 29, 2012, 2:51 p.m. UTC | #10
Dear Yegor Yefremov,

> On Thu, Nov 29, 2012 at 3:29 PM, Marek Vasut <marex@denx.de> wrote:
> > Dear Yegor Yefremov,
> > 
> >> On Thu, Nov 29, 2012 at 1:55 PM, Marek Vasut <marex@denx.de> wrote:
> >> > Dear Yegor Yefremov,
> >> > 
> >> >> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
> >> >> 
> >> >> <henrik@henriknordstrom.net> wrote:
> >> >> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
> >> >> >> Dear yegorslists@googlemail.com,
> >> >> >> 
> >> >> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
> >> >> >> > 
> >> >> >> > The driver code was taken from Linux kernel source:
> >> >> >> > drivers/net/phy/icplus.c
> >> >> >> > 
> >> >> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
> >> >> >> 
> >> >> >> [...]
> >> >> >> 
> >> >> >> Is there any user for this PHY please?
> >> >> > 
> >> >> > I don't have one, but know at least one user having one in an A10
> >> >> > based "netbook".
> >> >> > 
> >> >> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
> >> >> 
> >> >> I found these boards in kernel:
> >> >> 
> >> >> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
> >> >> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
> >> >> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
> >> >> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
> >> >> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
> >> >> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
> >> >> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
> >> >> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
> >> >> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m
> >> > 
> >> > Sure, but the question/point is ... won't this be dead code in u-boot?
> >> > It won't once you add at least one board that actually uses it ...
> >> > adding it only so it's there will only cause it to bitrot and it'll
> >> > actually only add more burden to maintainers.
> >> 
> >> It won't be dead code, because we will use it :-) Our board is
> >> derivative of BeagleBone & Co, so the whole support stuff is already
> >> in u-boot.
> > 
> > You need to enable it for that board though ;-)
> 
> Will do this as soon as we come near to the release.

Release of what? The hardware?

> I'd like to have basic stuff mainlined before.

Well, I'll leave that up to Joe anyway

Best regards,
Marek Vasut
Yegor Yefremov Nov. 29, 2012, 2:59 p.m. UTC | #11
On Thu, Nov 29, 2012 at 3:51 PM, Marek Vasut <marex@denx.de> wrote:
> Dear Yegor Yefremov,
>
>> On Thu, Nov 29, 2012 at 3:29 PM, Marek Vasut <marex@denx.de> wrote:
>> > Dear Yegor Yefremov,
>> >
>> >> On Thu, Nov 29, 2012 at 1:55 PM, Marek Vasut <marex@denx.de> wrote:
>> >> > Dear Yegor Yefremov,
>> >> >
>> >> >> On Thu, Nov 29, 2012 at 8:53 AM, Henrik Nordström
>> >> >>
>> >> >> <henrik@henriknordstrom.net> wrote:
>> >> >> > tor 2012-11-29 klockan 07:27 +0100 skrev Marek Vasut:
>> >> >> >> Dear yegorslists@googlemail.com,
>> >> >> >>
>> >> >> >> > From: Yegor Yefremov <yegorslists@googlemail.com>
>> >> >> >> >
>> >> >> >> > The driver code was taken from Linux kernel source:
>> >> >> >> > drivers/net/phy/icplus.c
>> >> >> >> >
>> >> >> >> > Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
>> >> >> >>
>> >> >> >> [...]
>> >> >> >>
>> >> >> >> Is there any user for this PHY please?
>> >> >> >
>> >> >> > I don't have one, but know at least one user having one in an A10
>> >> >> > based "netbook".
>> >> >> >
>> >> >> > http://linux-sunxi.org/File:H6-netbook-mainboard.jpg
>> >> >>
>> >> >> I found these boards in kernel:
>> >> >>
>> >> >> arch/mips/configs/malta_defconfig:CONFIG_ICPLUS_PHY=m
>> >> >> arch/mips/configs/bcm47xx_defconfig:CONFIG_ICPLUS_PHY=m
>> >> >> arch/mips/configs/ip27_defconfig:CONFIG_ICPLUS_PHY=m
>> >> >> arch/mips/configs/sead3_defconfig:CONFIG_ICPLUS_PHY=y
>> >> >> arch/powerpc/configs/mpc512x_defconfig:CONFIG_ICPLUS_PHY=y
>> >> >> arch/powerpc/configs/52xx/motionpro_defconfig:CONFIG_ICPLUS_PHY=y
>> >> >> arch/powerpc/configs/83xx/mpc832x_rdb_defconfig:CONFIG_ICPLUS_PHY=y
>> >> >> arch/powerpc/configs/mpc83xx_defconfig:CONFIG_ICPLUS_PHY=y
>> >> >> arch/powerpc/configs/ppc6xx_defconfig:CONFIG_ICPLUS_PHY=m
>> >> >
>> >> > Sure, but the question/point is ... won't this be dead code in u-boot?
>> >> > It won't once you add at least one board that actually uses it ...
>> >> > adding it only so it's there will only cause it to bitrot and it'll
>> >> > actually only add more burden to maintainers.
>> >>
>> >> It won't be dead code, because we will use it :-) Our board is
>> >> derivative of BeagleBone & Co, so the whole support stuff is already
>> >> in u-boot.
>> >
>> > You need to enable it for that board though ;-)
>>
>> Will do this as soon as we come near to the release.
>
> Release of what? The hardware?

Release of hardware and when two more patches hit main line u-boot:

http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/147860
http://permalink.gmane.org/gmane.comp.boot-loaders.u-boot/147859

>> I'd like to have basic stuff mainlined before.
>
> Well, I'll leave that up to Joe anyway

O.K.

Yegor
Joe Hershberger July 8, 2013, 3:47 p.m. UTC | #12
On Wed, Nov 28, 2012 at 4:15 AM,  <yegorslists@googlemail.com> wrote:
> From: Yegor Yefremov <yegorslists@googlemail.com>
>
> The driver code was taken from Linux kernel source:
> drivers/net/phy/icplus.c
>
> Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>

Applied, Thanks.
-Joe
diff mbox

Patch

diff --git a/drivers/net/phy/Makefile b/drivers/net/phy/Makefile
index 5e90d70..2c5ab5f 100644
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -34,6 +34,7 @@  COBJS-$(CONFIG_PHYLIB_10G) += generic_10g.o
 COBJS-$(CONFIG_PHY_ATHEROS) += atheros.o
 COBJS-$(CONFIG_PHY_BROADCOM) += broadcom.o
 COBJS-$(CONFIG_PHY_DAVICOM) += davicom.o
+COBJS-$(CONFIG_PHY_ICPLUS) += icplus.o
 COBJS-$(CONFIG_PHY_LXT) += lxt.o
 COBJS-$(CONFIG_PHY_MARVELL) += marvell.o
 COBJS-$(CONFIG_PHY_MICREL) += micrel.o
diff --git a/drivers/net/phy/icplus.c b/drivers/net/phy/icplus.c
new file mode 100644
index 0000000..85b9720
--- /dev/null
+++ b/drivers/net/phy/icplus.c
@@ -0,0 +1,90 @@ 
+/*
+ * ICPlus PHY drivers
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ * Copyright (c) 2007 Freescale Semiconductor, Inc.
+ *
+ */
+#include <phy.h>
+
+/* IP101A/G - IP1001 */
+#define IP10XX_SPEC_CTRL_STATUS         16      /* Spec. Control Register */
+#define IP1001_SPEC_CTRL_STATUS_2       20      /* IP1001 Spec. Control Reg 2 */
+#define IP1001_PHASE_SEL_MASK           3       /* IP1001 RX/TXPHASE_SEL */
+#define IP1001_APS_ON                   11      /* IP1001 APS Mode  bit */
+#define IP101A_G_APS_ON                 2       /* IP101A/G APS Mode bit */
+#define IP101A_G_IRQ_CONF_STATUS        0x11    /* Conf Info IRQ & Status Reg */
+#define IP101A_G_IRQ_PIN_USED           (1<<15) /* INTR pin used */
+#define IP101A_G_IRQ_DEFAULT            IP101A_G_IRQ_PIN_USED
+
+static int ip1001_config(struct phy_device *phydev)
+{
+	int c;
+
+	/* Enable Auto Power Saving mode */
+	c = phy_read(phydev, MDIO_DEVAD_NONE,IP1001_SPEC_CTRL_STATUS_2);
+	if (c < 0)
+		return c;
+	c |= IP1001_APS_ON;
+	c = phy_write(phydev, MDIO_DEVAD_NONE,IP1001_SPEC_CTRL_STATUS_2, c);
+	if (c < 0)
+		return c;
+
+	/* INTR pin used: speed/link/duplex will cause an interrupt */
+	c = phy_write(phydev, MDIO_DEVAD_NONE,IP101A_G_IRQ_CONF_STATUS, IP101A_G_IRQ_DEFAULT);
+	if (c < 0)
+		return c;
+
+	if (phydev->interface == PHY_INTERFACE_MODE_RGMII) {
+		/* Additional delay (2ns) used to adjust RX clock phase
+		 * at RGMII interface */
+		c = phy_read(phydev, MDIO_DEVAD_NONE,IP10XX_SPEC_CTRL_STATUS);
+		if (c < 0)
+			return c;
+
+		c |= IP1001_PHASE_SEL_MASK;
+		c = phy_write(phydev, MDIO_DEVAD_NONE,IP10XX_SPEC_CTRL_STATUS, c);
+		if (c < 0)
+			return c;
+	}
+
+	return 0;
+}
+
+static int ip1001_startup(struct phy_device *phydev)
+{
+	genphy_update_link(phydev);
+	genphy_parse_link(phydev);
+
+	return 0;
+}
+static struct phy_driver IP1001_driver = {
+	.name = "ICPlus IP1001",
+	.uid = 0x02430d90,
+	.mask = 0x0ffffff0,
+	.features = PHY_GBIT_FEATURES,
+	.config = &ip1001_config,
+	.startup = &ip1001_startup,
+	.shutdown = &genphy_shutdown,
+};
+
+int phy_icplus_init(void)
+{
+	phy_register(&IP1001_driver);
+
+	return 0;
+}
diff --git a/drivers/net/phy/phy.c b/drivers/net/phy/phy.c
index c28ea70..9eccf40 100644
--- a/drivers/net/phy/phy.c
+++ b/drivers/net/phy/phy.c
@@ -429,6 +429,9 @@  int phy_init(void)
 #ifdef CONFIG_PHY_DAVICOM
 	phy_davicom_init();
 #endif
+#ifdef CONFIG_PHY_ICPLUS
+	phy_icplus_init();
+#endif
 #ifdef CONFIG_PHY_LXT
 	phy_lxt_init();
 #endif