From mboxrd@z Thu Jan 1 00:00:00 1970 From: gerg@snapgear.com (Greg Ungerer) Date: Mon, 11 Jan 2010 13:25:27 +1000 Subject: [PATCH 3/4] fec: add support for Freescale i.MX25 PDK (3DS) In-Reply-To: <20100105082429.GB25571@tarshish> References: <20091214103348.GV15126@pengutronix.de> <20091215083142.GB18290@jasper.tkos.co.il> <4B277878.1050804@snapgear.com> <20091215201109.GA2621@tarshish> <4B282644.8030104@snapgear.com> <20091216063402.GA13160@jasper.tkos.co.il> <20100105082429.GB25571@tarshish> Message-ID: <4B4A9A27.8040500@snapgear.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Baruch, Baruch Siach wrote: > On Wed, Dec 16, 2009 at 08:34:06AM +0200, Baruch Siach wrote: >> Hi Greg, > > [snip] > >> Thanks. The updated patch below. > > Ping? > > How should take care of this? > > The platform code for i.MX25 PDK is going via Sascha's tree, and it depends on > this patch to compile. I assumed it would go via the net git tree? Regards Greg >> From 2d0751f868519978603b16baa197bfb9f9ec9e2e Mon Sep 17 00:00:00 2001 >> Message-Id: <2d0751f868519978603b16baa197bfb9f9ec9e2e.1260945080.git.baruch@tkos.co.il> >> From: Baruch Siach >> Date: Mon, 14 Dec 2009 10:36:50 +0200 >> Subject: [PATCH] fec: add support for PHY interface platform data >> >> The i.MX25 PDK uses RMII to communicate with its PHY. This patch adds the >> ability to configure RMII, based on platform data. >> >> Signed-off-by: Baruch Siach >> Acked-by: Greg Ungerer >> --- >> drivers/net/fec.c | 22 ++++++++++++++++++++++ >> drivers/net/fec.h | 2 ++ >> include/linux/fec.h | 21 +++++++++++++++++++++ >> 3 files changed, 45 insertions(+), 0 deletions(-) >> create mode 100644 include/linux/fec.h >> >> diff --git a/drivers/net/fec.c b/drivers/net/fec.c >> index 16a1d58..a7cfe0d 100644 >> --- a/drivers/net/fec.c >> +++ b/drivers/net/fec.c >> @@ -40,6 +40,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> >> @@ -198,6 +199,7 @@ struct fec_enet_private { >> uint phy_speed; >> phy_info_t const *phy; >> struct work_struct phy_task; >> + phy_interface_t phy_interface; >> >> uint sequence_done; >> uint mii_phy_task_queued; >> @@ -1810,6 +1812,21 @@ fec_restart(struct net_device *dev, int duplex) >> /* Set MII speed */ >> writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED); >> >> +#ifdef FEC_MIIGSK_ENR >> + if (fep->phy_interface == PHY_INTERFACE_MODE_RMII) { >> + /* disable the gasket and wait */ >> + writel(0, fep->hwp + FEC_MIIGSK_ENR); >> + while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4) >> + udelay(1); >> + >> + /* configure the gasket: RMII, 50 MHz, no loopback, no echo */ >> + writel(1, fep->hwp + FEC_MIIGSK_CFGR); >> + >> + /* re-enable the gasket */ >> + writel(2, fep->hwp + FEC_MIIGSK_ENR); >> + } >> +#endif >> + >> /* And last, enable the transmit and receive processing */ >> writel(2, fep->hwp + FEC_ECNTRL); >> writel(0, fep->hwp + FEC_R_DES_ACTIVE); >> @@ -1847,6 +1864,7 @@ static int __devinit >> fec_probe(struct platform_device *pdev) >> { >> struct fec_enet_private *fep; >> + struct fec_platform_data *pdata; >> struct net_device *ndev; >> int i, irq, ret = 0; >> struct resource *r; >> @@ -1879,6 +1897,10 @@ fec_probe(struct platform_device *pdev) >> >> platform_set_drvdata(pdev, ndev); >> >> + pdata = pdev->dev.platform_data; >> + if (pdata) >> + fep->phy_interface = pdata->phy; >> + >> /* This device has up to three irqs on some platforms */ >> for (i = 0; i < 3; i++) { >> irq = platform_get_irq(pdev, i); >> diff --git a/drivers/net/fec.h b/drivers/net/fec.h >> index cc47f3f..2c48b25 100644 >> --- a/drivers/net/fec.h >> +++ b/drivers/net/fec.h >> @@ -43,6 +43,8 @@ >> #define FEC_R_DES_START 0x180 /* Receive descriptor ring */ >> #define FEC_X_DES_START 0x184 /* Transmit descriptor ring */ >> #define FEC_R_BUFF_SIZE 0x188 /* Maximum receive buff size */ >> +#define FEC_MIIGSK_CFGR 0x300 /* MIIGSK Configuration reg */ >> +#define FEC_MIIGSK_ENR 0x308 /* MIIGSK Enable reg */ >> >> #else >> >> diff --git a/include/linux/fec.h b/include/linux/fec.h >> new file mode 100644 >> index 0000000..5d3523d >> --- /dev/null >> +++ b/include/linux/fec.h >> @@ -0,0 +1,21 @@ >> +/* include/linux/fec.h >> + * >> + * Copyright (c) 2009 Orex Computed Radiography >> + * Baruch Siach >> + * >> + * Header file for the FEC platform data >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> + */ >> +#ifndef __LINUX_FEC_H__ >> +#define __LINUX_FEC_H__ >> + >> +#include >> + >> +struct fec_platform_data { >> + phy_interface_t phy; >> +}; >> + >> +#endif >> -- >> 1.6.5 >> >> >> -- >> ~. .~ Tk Open Systems >> =}------------------------------------------------ooO--U--Ooo------------{= >> - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il - >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel at lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- ------------------------------------------------------------------------ Greg Ungerer -- Principal Engineer EMAIL: gerg at snapgear.com SnapGear Group, McAfee PHONE: +61 7 3435 2888 8 Gardner Close FAX: +61 7 3217 5323 Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com From mboxrd@z Thu Jan 1 00:00:00 1970 From: Greg Ungerer Subject: Re: [PATCH 3/4] fec: add support for Freescale i.MX25 PDK (3DS) Date: Mon, 11 Jan 2010 13:25:27 +1000 Message-ID: <4B4A9A27.8040500@snapgear.com> References: <20091214103348.GV15126@pengutronix.de> <20091215083142.GB18290@jasper.tkos.co.il> <4B277878.1050804@snapgear.com> <20091215201109.GA2621@tarshish> <4B282644.8030104@snapgear.com> <20091216063402.GA13160@jasper.tkos.co.il> <20100105082429.GB25571@tarshish> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: netdev@vger.kernel.org, Sascha Hauer , linux-arm-kernel@lists.infradead.org To: Baruch Siach Return-path: Received: from rex.securecomputing.com ([203.24.151.4]:57792 "EHLO cyberguard.com.au" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751013Ab0AKDZ1 (ORCPT ); Sun, 10 Jan 2010 22:25:27 -0500 In-Reply-To: <20100105082429.GB25571@tarshish> Sender: netdev-owner@vger.kernel.org List-ID: Hi Baruch, Baruch Siach wrote: > On Wed, Dec 16, 2009 at 08:34:06AM +0200, Baruch Siach wrote: >> Hi Greg, > > [snip] > >> Thanks. The updated patch below. > > Ping? > > How should take care of this? > > The platform code for i.MX25 PDK is going via Sascha's tree, and it depends on > this patch to compile. I assumed it would go via the net git tree? Regards Greg >> From 2d0751f868519978603b16baa197bfb9f9ec9e2e Mon Sep 17 00:00:00 2001 >> Message-Id: <2d0751f868519978603b16baa197bfb9f9ec9e2e.1260945080.git.baruch@tkos.co.il> >> From: Baruch Siach >> Date: Mon, 14 Dec 2009 10:36:50 +0200 >> Subject: [PATCH] fec: add support for PHY interface platform data >> >> The i.MX25 PDK uses RMII to communicate with its PHY. This patch adds the >> ability to configure RMII, based on platform data. >> >> Signed-off-by: Baruch Siach >> Acked-by: Greg Ungerer >> --- >> drivers/net/fec.c | 22 ++++++++++++++++++++++ >> drivers/net/fec.h | 2 ++ >> include/linux/fec.h | 21 +++++++++++++++++++++ >> 3 files changed, 45 insertions(+), 0 deletions(-) >> create mode 100644 include/linux/fec.h >> >> diff --git a/drivers/net/fec.c b/drivers/net/fec.c >> index 16a1d58..a7cfe0d 100644 >> --- a/drivers/net/fec.c >> +++ b/drivers/net/fec.c >> @@ -40,6 +40,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> >> @@ -198,6 +199,7 @@ struct fec_enet_private { >> uint phy_speed; >> phy_info_t const *phy; >> struct work_struct phy_task; >> + phy_interface_t phy_interface; >> >> uint sequence_done; >> uint mii_phy_task_queued; >> @@ -1810,6 +1812,21 @@ fec_restart(struct net_device *dev, int duplex) >> /* Set MII speed */ >> writel(fep->phy_speed, fep->hwp + FEC_MII_SPEED); >> >> +#ifdef FEC_MIIGSK_ENR >> + if (fep->phy_interface == PHY_INTERFACE_MODE_RMII) { >> + /* disable the gasket and wait */ >> + writel(0, fep->hwp + FEC_MIIGSK_ENR); >> + while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4) >> + udelay(1); >> + >> + /* configure the gasket: RMII, 50 MHz, no loopback, no echo */ >> + writel(1, fep->hwp + FEC_MIIGSK_CFGR); >> + >> + /* re-enable the gasket */ >> + writel(2, fep->hwp + FEC_MIIGSK_ENR); >> + } >> +#endif >> + >> /* And last, enable the transmit and receive processing */ >> writel(2, fep->hwp + FEC_ECNTRL); >> writel(0, fep->hwp + FEC_R_DES_ACTIVE); >> @@ -1847,6 +1864,7 @@ static int __devinit >> fec_probe(struct platform_device *pdev) >> { >> struct fec_enet_private *fep; >> + struct fec_platform_data *pdata; >> struct net_device *ndev; >> int i, irq, ret = 0; >> struct resource *r; >> @@ -1879,6 +1897,10 @@ fec_probe(struct platform_device *pdev) >> >> platform_set_drvdata(pdev, ndev); >> >> + pdata = pdev->dev.platform_data; >> + if (pdata) >> + fep->phy_interface = pdata->phy; >> + >> /* This device has up to three irqs on some platforms */ >> for (i = 0; i < 3; i++) { >> irq = platform_get_irq(pdev, i); >> diff --git a/drivers/net/fec.h b/drivers/net/fec.h >> index cc47f3f..2c48b25 100644 >> --- a/drivers/net/fec.h >> +++ b/drivers/net/fec.h >> @@ -43,6 +43,8 @@ >> #define FEC_R_DES_START 0x180 /* Receive descriptor ring */ >> #define FEC_X_DES_START 0x184 /* Transmit descriptor ring */ >> #define FEC_R_BUFF_SIZE 0x188 /* Maximum receive buff size */ >> +#define FEC_MIIGSK_CFGR 0x300 /* MIIGSK Configuration reg */ >> +#define FEC_MIIGSK_ENR 0x308 /* MIIGSK Enable reg */ >> >> #else >> >> diff --git a/include/linux/fec.h b/include/linux/fec.h >> new file mode 100644 >> index 0000000..5d3523d >> --- /dev/null >> +++ b/include/linux/fec.h >> @@ -0,0 +1,21 @@ >> +/* include/linux/fec.h >> + * >> + * Copyright (c) 2009 Orex Computed Radiography >> + * Baruch Siach >> + * >> + * Header file for the FEC platform data >> + * >> + * This program is free software; you can redistribute it and/or modify >> + * it under the terms of the GNU General Public License version 2 as >> + * published by the Free Software Foundation. >> + */ >> +#ifndef __LINUX_FEC_H__ >> +#define __LINUX_FEC_H__ >> + >> +#include >> + >> +struct fec_platform_data { >> + phy_interface_t phy; >> +}; >> + >> +#endif >> -- >> 1.6.5 >> >> >> -- >> ~. .~ Tk Open Systems >> =}------------------------------------------------ooO--U--Ooo------------{= >> - baruch@tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il - >> >> _______________________________________________ >> linux-arm-kernel mailing list >> linux-arm-kernel@lists.infradead.org >> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel > -- ------------------------------------------------------------------------ Greg Ungerer -- Principal Engineer EMAIL: gerg@snapgear.com SnapGear Group, McAfee PHONE: +61 7 3435 2888 8 Gardner Close FAX: +61 7 3217 5323 Milton, QLD, 4064, Australia WEB: http://www.SnapGear.com