* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-01 10:11 ` [PATCH] net/fec: gasket needs to be enabled for some i.mx Shawn Guo
@ 2011-07-04 6:55 ` Sascha Hauer
2011-07-06 5:14 ` Shawn Guo
2011-07-07 11:12 ` David Miller
2011-07-08 10:18 ` Sascha Hauer
2 siblings, 1 reply; 12+ messages in thread
From: Sascha Hauer @ 2011-07-04 6:55 UTC (permalink / raw)
To: Shawn Guo
Cc: netdev, linux-arm-kernel, u.kleine-koenig, LW, Troy Kisky,
David S. Miller
David,
On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
> On the recent i.mx (mx25/50/53), there is a gasket inside fec
> controller which needs to be enabled no matter phy works in MII
> or RMII mode.
>
> The current code enables the gasket only when phy interface is RMII.
> It's broken when the driver works with a MII phy. The patch uses
> platform_device_id to distinguish the SoCs that have the gasket and
> enables it on these SoCs for both MII and RMII mode.
>
> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> arch/arm/mach-imx/clock-imx25.c | 2 +-
> arch/arm/mach-imx/clock-imx27.c | 2 +-
> arch/arm/mach-imx/clock-imx35.c | 2 +-
> arch/arm/mach-mx5/clock-mx51-mx53.c | 4 +-
> arch/arm/plat-mxc/devices/platform-fec.c | 17 ++++++++-------
> arch/arm/plat-mxc/include/mach/devices-common.h | 1 +
> drivers/net/fec.c | 26 ++++++++++++++++++++--
I either need your Ack for this or we need to split this up into two
patches. Pushing this through the net tree is probably not a good idea.
Sascha
> 7 files changed, 38 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/mach-imx/clock-imx25.c b/arch/arm/mach-imx/clock-imx25.c
> index a65838f..5527fff 100644
> --- a/arch/arm/mach-imx/clock-imx25.c
> +++ b/arch/arm/mach-imx/clock-imx25.c
> @@ -294,7 +294,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
> _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk)
> _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx25-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK("imxdi_rtc.0", NULL, dryice_clk)
> _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk)
> _REGISTER_CLOCK("imx2-wdt.0", NULL, wdt_clk)
> diff --git a/arch/arm/mach-imx/clock-imx27.c b/arch/arm/mach-imx/clock-imx27.c
> index 583f251..d197df2 100644
> --- a/arch/arm/mach-imx/clock-imx27.c
> +++ b/arch/arm/mach-imx/clock-imx27.c
> @@ -662,7 +662,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK(NULL, "brom", brom_clk)
> _REGISTER_CLOCK(NULL, "emma", emma_clk)
> _REGISTER_CLOCK(NULL, "slcdc", slcdc_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx27-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "emi", emi_clk)
> _REGISTER_CLOCK(NULL, "sahara2", sahara2_clk)
> _REGISTER_CLOCK(NULL, "ata", ata_clk)
> diff --git a/arch/arm/mach-imx/clock-imx35.c b/arch/arm/mach-imx/clock-imx35.c
> index 5a4cc1e..fb4007b 100644
> --- a/arch/arm/mach-imx/clock-imx35.c
> +++ b/arch/arm/mach-imx/clock-imx35.c
> @@ -461,7 +461,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk)
> _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk)
> _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx35-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio1_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio2_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio3_clk)
> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> index 699b0d2..04c5a01 100644
> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> @@ -1426,7 +1426,7 @@ static struct clk_lookup mx51_lookups[] = {
> _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
> _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
> _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx51-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK("mxc_pwm.0", "pwm", pwm1_clk)
> _REGISTER_CLOCK("mxc_pwm.1", "pwm", pwm2_clk)
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> @@ -1475,7 +1475,7 @@ static struct clk_lookup mx53_lookups[] = {
> _REGISTER_CLOCK("imx-uart.3", NULL, uart4_clk)
> _REGISTER_CLOCK("imx-uart.4", NULL, uart5_clk)
> _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx53-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
> diff --git a/arch/arm/plat-mxc/devices/platform-fec.c b/arch/arm/plat-mxc/devices/platform-fec.c
> index ccc789e..3790c59 100644
> --- a/arch/arm/plat-mxc/devices/platform-fec.c
> +++ b/arch/arm/plat-mxc/devices/platform-fec.c
> @@ -10,40 +10,41 @@
> #include <mach/hardware.h>
> #include <mach/devices-common.h>
>
> -#define imx_fec_data_entry_single(soc) \
> +#define imx_fec_data_entry_single(soc, _devid) \
> { \
> + .devid = _devid, \
> .iobase = soc ## _FEC_BASE_ADDR, \
> .irq = soc ## _INT_FEC, \
> }
>
> #ifdef CONFIG_SOC_IMX25
> const struct imx_fec_data imx25_fec_data __initconst =
> - imx_fec_data_entry_single(MX25);
> + imx_fec_data_entry_single(MX25, "imx25-fec");
> #endif /* ifdef CONFIG_SOC_IMX25 */
>
> #ifdef CONFIG_SOC_IMX27
> const struct imx_fec_data imx27_fec_data __initconst =
> - imx_fec_data_entry_single(MX27);
> + imx_fec_data_entry_single(MX27, "imx27-fec");
> #endif /* ifdef CONFIG_SOC_IMX27 */
>
> #ifdef CONFIG_SOC_IMX35
> const struct imx_fec_data imx35_fec_data __initconst =
> - imx_fec_data_entry_single(MX35);
> + imx_fec_data_entry_single(MX35, "imx35-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX50
> const struct imx_fec_data imx50_fec_data __initconst =
> - imx_fec_data_entry_single(MX50);
> + imx_fec_data_entry_single(MX50, "imx50-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX51
> const struct imx_fec_data imx51_fec_data __initconst =
> - imx_fec_data_entry_single(MX51);
> + imx_fec_data_entry_single(MX51, "imx51-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX53
> const struct imx_fec_data imx53_fec_data __initconst =
> - imx_fec_data_entry_single(MX53);
> + imx_fec_data_entry_single(MX53, "imx53-fec");
> #endif
>
> struct platform_device *__init imx_add_fec(
> @@ -62,7 +63,7 @@ struct platform_device *__init imx_add_fec(
> },
> };
>
> - return imx_add_platform_device_dmamask("fec", 0,
> + return imx_add_platform_device_dmamask(data->devid, 0,
> res, ARRAY_SIZE(res),
> pdata, sizeof(*pdata), DMA_BIT_MASK(32));
> }
> diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
> index bf93820..6ac2450 100644
> --- a/arch/arm/plat-mxc/include/mach/devices-common.h
> +++ b/arch/arm/plat-mxc/include/mach/devices-common.h
> @@ -30,6 +30,7 @@ static inline struct platform_device *imx_add_platform_device(
>
> #include <linux/fec.h>
> struct imx_fec_data {
> + const char *devid;
> resource_size_t iobase;
> resource_size_t irq;
> };
> diff --git a/drivers/net/fec.c b/drivers/net/fec.c
> index 885d8ba..9161a82 100644
> --- a/drivers/net/fec.c
> +++ b/drivers/net/fec.c
> @@ -66,14 +66,31 @@
> #define FEC_QUIRK_ENET_MAC (1 << 0)
> /* Controller needs driver to swap frame */
> #define FEC_QUIRK_SWAP_FRAME (1 << 1)
> +/* Controller uses gasket */
> +#define FEC_QUIRK_USE_GASKET (1 << 2)
>
> static struct platform_device_id fec_devtype[] = {
> {
> - .name = DRIVER_NAME,
> + .name = "imx25-fec",
> + .driver_data = FEC_QUIRK_USE_GASKET,
> + }, {
> + .name = "imx27-fec",
> .driver_data = 0,
> }, {
> .name = "imx28-fec",
> .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME,
> + }, {
> + .name = "imx35-fec",
> + .driver_data = 0,
> + }, {
> + .name = "imx50-fec",
> + .driver_data = FEC_QUIRK_USE_GASKET,
> + }, {
> + .name = "imx51-fec",
> + .driver_data = 0,
> + }, {
> + .name = "imx53-fec",
> + .driver_data = FEC_QUIRK_USE_GASKET,
> },
> { }
> };
> @@ -425,7 +442,7 @@ fec_restart(struct net_device *ndev, int duplex)
>
> } else {
> #ifdef FEC_MIIGSK_ENR
> - if (fep->phy_interface == PHY_INTERFACE_MODE_RMII) {
> + if (id_entry->driver_data & FEC_QUIRK_USE_GASKET) {
> /* disable the gasket and wait */
> writel(0, fep->hwp + FEC_MIIGSK_ENR);
> while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4)
> @@ -434,8 +451,11 @@ fec_restart(struct net_device *ndev, int duplex)
> /*
> * configure the gasket:
> * RMII, 50 MHz, no loopback, no echo
> + * MII, 25 MHz, no loopback, no echo
> */
> - writel(1, fep->hwp + FEC_MIIGSK_CFGR);
> + writel((fep->phy_interface == PHY_INTERFACE_MODE_RMII) ?
> + 1 : 0, fep->hwp + FEC_MIIGSK_CFGR);
> +
>
> /* re-enable the gasket */
> writel(2, fep->hwp + FEC_MIIGSK_ENR);
> --
> 1.7.4.1
>
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-04 6:55 ` Sascha Hauer
@ 2011-07-06 5:14 ` Shawn Guo
0 siblings, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2011-07-06 5:14 UTC (permalink / raw)
To: Sascha Hauer
Cc: Shawn Guo, netdev, linux-arm-kernel, u.kleine-koenig, LW,
Troy Kisky, David S. Miller
On Mon, Jul 04, 2011 at 08:55:23AM +0200, Sascha Hauer wrote:
> David,
>
> On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
> > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > controller which needs to be enabled no matter phy works in MII
> > or RMII mode.
> >
> > The current code enables the gasket only when phy interface is RMII.
> > It's broken when the driver works with a MII phy. The patch uses
> > platform_device_id to distinguish the SoCs that have the gasket and
> > enables it on these SoCs for both MII and RMII mode.
> >
> > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > Cc: David S. Miller <davem@davemloft.net>
> > Cc: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > arch/arm/mach-imx/clock-imx25.c | 2 +-
> > arch/arm/mach-imx/clock-imx27.c | 2 +-
> > arch/arm/mach-imx/clock-imx35.c | 2 +-
> > arch/arm/mach-mx5/clock-mx51-mx53.c | 4 +-
> > arch/arm/plat-mxc/devices/platform-fec.c | 17 ++++++++-------
> > arch/arm/plat-mxc/include/mach/devices-common.h | 1 +
> > drivers/net/fec.c | 26 ++++++++++++++++++++--
>
> I either need your Ack for this or we need to split this up into two
> patches. Pushing this through the net tree is probably not a good idea.
>
I need to do another rebase on 'next' as David just applied the dt
series.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-01 10:11 ` [PATCH] net/fec: gasket needs to be enabled for some i.mx Shawn Guo
2011-07-04 6:55 ` Sascha Hauer
@ 2011-07-07 11:12 ` David Miller
2011-07-07 13:41 ` Shawn Guo
2011-07-08 10:18 ` Sascha Hauer
2 siblings, 1 reply; 12+ messages in thread
From: David Miller @ 2011-07-07 11:12 UTC (permalink / raw)
To: shawn.guo
Cc: netdev, s.hauer, troy.kisky, u.kleine-koenig, linux-arm-kernel,
LW
From: Shawn Guo <shawn.guo@linaro.org>
Date: Fri, 1 Jul 2011 18:11:22 +0800
> On the recent i.mx (mx25/50/53), there is a gasket inside fec
> controller which needs to be enabled no matter phy works in MII
> or RMII mode.
>
> The current code enables the gasket only when phy interface is RMII.
> It's broken when the driver works with a MII phy. The patch uses
> platform_device_id to distinguish the SoCs that have the gasket and
> enables it on these SoCs for both MII and RMII mode.
>
> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: David S. Miller <davem@davemloft.net>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-07 11:12 ` David Miller
@ 2011-07-07 13:41 ` Shawn Guo
2011-07-07 18:44 ` Grant Likely
0 siblings, 1 reply; 12+ messages in thread
From: Shawn Guo @ 2011-07-07 13:41 UTC (permalink / raw)
To: David Miller
Cc: shawn.guo, netdev, linux-arm-kernel, u.kleine-koenig, LW,
troy.kisky, s.hauer, Grant Likely
On Thu, Jul 07, 2011 at 04:12:57AM -0700, David Miller wrote:
> From: Shawn Guo <shawn.guo@linaro.org>
> Date: Fri, 1 Jul 2011 18:11:22 +0800
>
> > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > controller which needs to be enabled no matter phy works in MII
> > or RMII mode.
> >
> > The current code enables the gasket only when phy interface is RMII.
> > It's broken when the driver works with a MII phy. The patch uses
> > platform_device_id to distinguish the SoCs that have the gasket and
> > enables it on these SoCs for both MII and RMII mode.
> >
> > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
>
> Acked-by: David S. Miller <davem@davemloft.net>
> --
Thanks, David. I will try to get it through Sascha's tree after
the rebase again dt series.
Hi Sascha,
How should we proceed? It seems Grant will take the fec-dt series
on his tree. Would you then merge that tree into yours, so that I
can rebase this patch on your tree and get it go through there?
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-07 13:41 ` Shawn Guo
@ 2011-07-07 18:44 ` Grant Likely
2011-07-08 0:06 ` Shawn Guo
0 siblings, 1 reply; 12+ messages in thread
From: Grant Likely @ 2011-07-07 18:44 UTC (permalink / raw)
To: Shawn Guo
Cc: David Miller, netdev, s.hauer, troy.kisky, u.kleine-koenig,
shawn.guo, linux-arm-kernel, LW
On Thu, Jul 07, 2011 at 09:41:58PM +0800, Shawn Guo wrote:
> On Thu, Jul 07, 2011 at 04:12:57AM -0700, David Miller wrote:
> > From: Shawn Guo <shawn.guo@linaro.org>
> > Date: Fri, 1 Jul 2011 18:11:22 +0800
> >
> > > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > > controller which needs to be enabled no matter phy works in MII
> > > or RMII mode.
> > >
> > > The current code enables the gasket only when phy interface is RMII.
> > > It's broken when the driver works with a MII phy. The patch uses
> > > platform_device_id to distinguish the SoCs that have the gasket and
> > > enables it on these SoCs for both MII and RMII mode.
> > >
> > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> >
> > Acked-by: David S. Miller <davem@davemloft.net>
> > --
>
> Thanks, David. I will try to get it through Sascha's tree after
> the rebase again dt series.
>
> Hi Sascha,
>
> How should we proceed? It seems Grant will take the fec-dt series
> on his tree. Would you then merge that tree into yours, so that I
> can rebase this patch on your tree and get it go through there?
I should probably just take the lot.
g.
>
> --
> Regards,
> Shawn
>
>
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-07 18:44 ` Grant Likely
@ 2011-07-08 0:06 ` Shawn Guo
2011-07-22 2:00 ` Shawn Guo
0 siblings, 1 reply; 12+ messages in thread
From: Shawn Guo @ 2011-07-08 0:06 UTC (permalink / raw)
To: Grant Likely
Cc: David Miller, netdev, s.hauer, troy.kisky, u.kleine-koenig,
shawn.guo, linux-arm-kernel, LW
On Thu, Jul 07, 2011 at 12:44:09PM -0600, Grant Likely wrote:
> On Thu, Jul 07, 2011 at 09:41:58PM +0800, Shawn Guo wrote:
> > On Thu, Jul 07, 2011 at 04:12:57AM -0700, David Miller wrote:
> > > From: Shawn Guo <shawn.guo@linaro.org>
> > > Date: Fri, 1 Jul 2011 18:11:22 +0800
> > >
> > > > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > > > controller which needs to be enabled no matter phy works in MII
> > > > or RMII mode.
> > > >
> > > > The current code enables the gasket only when phy interface is RMII.
> > > > It's broken when the driver works with a MII phy. The patch uses
> > > > platform_device_id to distinguish the SoCs that have the gasket and
> > > > enables it on these SoCs for both MII and RMII mode.
> > > >
> > > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > >
> > > Acked-by: David S. Miller <davem@davemloft.net>
> > > --
> >
> > Thanks, David. I will try to get it through Sascha's tree after
> > the rebase again dt series.
> >
> > Hi Sascha,
> >
> > How should we proceed? It seems Grant will take the fec-dt series
> > on his tree. Would you then merge that tree into yours, so that I
> > can rebase this patch on your tree and get it go through there?
>
> I should probably just take the lot.
>
Thanks, Grant. That makes people's life easier. Please let me know
once you apply the dt series, so that I can start rebase the patch on
your tree.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-08 0:06 ` Shawn Guo
@ 2011-07-22 2:00 ` Shawn Guo
0 siblings, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2011-07-22 2:00 UTC (permalink / raw)
To: Grant Likely
Cc: netdev, s.hauer, troy.kisky, u.kleine-koenig, shawn.guo,
David Miller, linux-arm-kernel, LW
On Fri, Jul 08, 2011 at 08:06:39AM +0800, Shawn Guo wrote:
> On Thu, Jul 07, 2011 at 12:44:09PM -0600, Grant Likely wrote:
> > On Thu, Jul 07, 2011 at 09:41:58PM +0800, Shawn Guo wrote:
> > > On Thu, Jul 07, 2011 at 04:12:57AM -0700, David Miller wrote:
> > > > From: Shawn Guo <shawn.guo@linaro.org>
> > > > Date: Fri, 1 Jul 2011 18:11:22 +0800
> > > >
> > > > > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > > > > controller which needs to be enabled no matter phy works in MII
> > > > > or RMII mode.
> > > > >
> > > > > The current code enables the gasket only when phy interface is RMII.
> > > > > It's broken when the driver works with a MII phy. The patch uses
> > > > > platform_device_id to distinguish the SoCs that have the gasket and
> > > > > enables it on these SoCs for both MII and RMII mode.
> > > > >
> > > > > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > > > > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > > >
> > > > Acked-by: David S. Miller <davem@davemloft.net>
> > > > --
> > >
> > > Thanks, David. I will try to get it through Sascha's tree after
> > > the rebase again dt series.
> > >
> > > Hi Sascha,
> > >
> > > How should we proceed? It seems Grant will take the fec-dt series
> > > on his tree. Would you then merge that tree into yours, so that I
> > > can rebase this patch on your tree and get it go through there?
> >
> > I should probably just take the lot.
> >
> Thanks, Grant. That makes people's life easier. Please let me know
> once you apply the dt series, so that I can start rebase the patch on
> your tree.
>
I think I should repost the patch together with the device tree support
one when Grant's devicetree/next and i.mx tree get merged on mainline
in the coming merge window, and get them through Sascha's tree, so that
we can avoid conflicts there.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-01 10:11 ` [PATCH] net/fec: gasket needs to be enabled for some i.mx Shawn Guo
2011-07-04 6:55 ` Sascha Hauer
2011-07-07 11:12 ` David Miller
@ 2011-07-08 10:18 ` Sascha Hauer
2011-07-08 18:38 ` Troy Kisky
2011-07-09 5:44 ` Shawn Guo
2 siblings, 2 replies; 12+ messages in thread
From: Sascha Hauer @ 2011-07-08 10:18 UTC (permalink / raw)
To: Shawn Guo
Cc: netdev, linux-arm-kernel, u.kleine-koenig, LW, Troy Kisky,
David S. Miller
On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
> On the recent i.mx (mx25/50/53), there is a gasket inside fec
> controller which needs to be enabled no matter phy works in MII
> or RMII mode.
>
> The current code enables the gasket only when phy interface is RMII.
> It's broken when the driver works with a MII phy. The patch uses
> platform_device_id to distinguish the SoCs that have the gasket and
> enables it on these SoCs for both MII and RMII mode.
>
> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> Cc: David S. Miller <davem@davemloft.net>
> Cc: Sascha Hauer <s.hauer@pengutronix.de>
> ---
> arch/arm/mach-imx/clock-imx25.c | 2 +-
> arch/arm/mach-imx/clock-imx27.c | 2 +-
> arch/arm/mach-imx/clock-imx35.c | 2 +-
> arch/arm/mach-mx5/clock-mx51-mx53.c | 4 +-
> arch/arm/plat-mxc/devices/platform-fec.c | 17 ++++++++-------
> arch/arm/plat-mxc/include/mach/devices-common.h | 1 +
> drivers/net/fec.c | 26 ++++++++++++++++++++--
> 7 files changed, 38 insertions(+), 16 deletions(-)
>
> diff --git a/arch/arm/mach-imx/clock-imx25.c b/arch/arm/mach-imx/clock-imx25.c
> index a65838f..5527fff 100644
> --- a/arch/arm/mach-imx/clock-imx25.c
> +++ b/arch/arm/mach-imx/clock-imx25.c
> @@ -294,7 +294,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
> _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk)
> _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx25-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK("imxdi_rtc.0", NULL, dryice_clk)
> _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk)
> _REGISTER_CLOCK("imx2-wdt.0", NULL, wdt_clk)
> diff --git a/arch/arm/mach-imx/clock-imx27.c b/arch/arm/mach-imx/clock-imx27.c
> index 583f251..d197df2 100644
> --- a/arch/arm/mach-imx/clock-imx27.c
> +++ b/arch/arm/mach-imx/clock-imx27.c
> @@ -662,7 +662,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK(NULL, "brom", brom_clk)
> _REGISTER_CLOCK(NULL, "emma", emma_clk)
> _REGISTER_CLOCK(NULL, "slcdc", slcdc_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx27-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "emi", emi_clk)
> _REGISTER_CLOCK(NULL, "sahara2", sahara2_clk)
> _REGISTER_CLOCK(NULL, "ata", ata_clk)
> diff --git a/arch/arm/mach-imx/clock-imx35.c b/arch/arm/mach-imx/clock-imx35.c
> index 5a4cc1e..fb4007b 100644
> --- a/arch/arm/mach-imx/clock-imx35.c
> +++ b/arch/arm/mach-imx/clock-imx35.c
> @@ -461,7 +461,7 @@ static struct clk_lookup lookups[] = {
> _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk)
> _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk)
> _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx35-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio1_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio2_clk)
> _REGISTER_CLOCK(NULL, "gpio", gpio3_clk)
> diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> index 699b0d2..04c5a01 100644
> --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> @@ -1426,7 +1426,7 @@ static struct clk_lookup mx51_lookups[] = {
> _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
> _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
> _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx51-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK("mxc_pwm.0", "pwm", pwm1_clk)
> _REGISTER_CLOCK("mxc_pwm.1", "pwm", pwm2_clk)
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> @@ -1475,7 +1475,7 @@ static struct clk_lookup mx53_lookups[] = {
> _REGISTER_CLOCK("imx-uart.3", NULL, uart4_clk)
> _REGISTER_CLOCK("imx-uart.4", NULL, uart5_clk)
> _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> + _REGISTER_CLOCK("imx53-fec.0", NULL, fec_clk)
> _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)
> _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
> diff --git a/arch/arm/plat-mxc/devices/platform-fec.c b/arch/arm/plat-mxc/devices/platform-fec.c
> index ccc789e..3790c59 100644
> --- a/arch/arm/plat-mxc/devices/platform-fec.c
> +++ b/arch/arm/plat-mxc/devices/platform-fec.c
> @@ -10,40 +10,41 @@
> #include <mach/hardware.h>
> #include <mach/devices-common.h>
>
> -#define imx_fec_data_entry_single(soc) \
> +#define imx_fec_data_entry_single(soc, _devid) \
> { \
> + .devid = _devid, \
> .iobase = soc ## _FEC_BASE_ADDR, \
> .irq = soc ## _INT_FEC, \
> }
>
> #ifdef CONFIG_SOC_IMX25
> const struct imx_fec_data imx25_fec_data __initconst =
> - imx_fec_data_entry_single(MX25);
> + imx_fec_data_entry_single(MX25, "imx25-fec");
> #endif /* ifdef CONFIG_SOC_IMX25 */
>
> #ifdef CONFIG_SOC_IMX27
> const struct imx_fec_data imx27_fec_data __initconst =
> - imx_fec_data_entry_single(MX27);
> + imx_fec_data_entry_single(MX27, "imx27-fec");
> #endif /* ifdef CONFIG_SOC_IMX27 */
>
> #ifdef CONFIG_SOC_IMX35
> const struct imx_fec_data imx35_fec_data __initconst =
> - imx_fec_data_entry_single(MX35);
> + imx_fec_data_entry_single(MX35, "imx35-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX50
> const struct imx_fec_data imx50_fec_data __initconst =
> - imx_fec_data_entry_single(MX50);
> + imx_fec_data_entry_single(MX50, "imx50-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX51
> const struct imx_fec_data imx51_fec_data __initconst =
> - imx_fec_data_entry_single(MX51);
> + imx_fec_data_entry_single(MX51, "imx51-fec");
> #endif
>
> #ifdef CONFIG_SOC_IMX53
> const struct imx_fec_data imx53_fec_data __initconst =
> - imx_fec_data_entry_single(MX53);
> + imx_fec_data_entry_single(MX53, "imx53-fec");
> #endif
>
> struct platform_device *__init imx_add_fec(
> @@ -62,7 +63,7 @@ struct platform_device *__init imx_add_fec(
> },
> };
>
> - return imx_add_platform_device_dmamask("fec", 0,
> + return imx_add_platform_device_dmamask(data->devid, 0,
> res, ARRAY_SIZE(res),
> pdata, sizeof(*pdata), DMA_BIT_MASK(32));
> }
> diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
> index bf93820..6ac2450 100644
> --- a/arch/arm/plat-mxc/include/mach/devices-common.h
> +++ b/arch/arm/plat-mxc/include/mach/devices-common.h
> @@ -30,6 +30,7 @@ static inline struct platform_device *imx_add_platform_device(
>
> #include <linux/fec.h>
> struct imx_fec_data {
> + const char *devid;
> resource_size_t iobase;
> resource_size_t irq;
> };
> diff --git a/drivers/net/fec.c b/drivers/net/fec.c
> index 885d8ba..9161a82 100644
> --- a/drivers/net/fec.c
> +++ b/drivers/net/fec.c
> @@ -66,14 +66,31 @@
> #define FEC_QUIRK_ENET_MAC (1 << 0)
> /* Controller needs driver to swap frame */
> #define FEC_QUIRK_SWAP_FRAME (1 << 1)
> +/* Controller uses gasket */
> +#define FEC_QUIRK_USE_GASKET (1 << 2)
>
> static struct platform_device_id fec_devtype[] = {
> {
> - .name = DRIVER_NAME,
> + .name = "imx25-fec",
Just realized that this change breaks m68k support. You shouldn't remove
DRIVER_NAME from fec_devtype[]
Sascha
> + .driver_data = FEC_QUIRK_USE_GASKET,
> + }, {
> + .name = "imx27-fec",
> .driver_data = 0,
> }, {
> .name = "imx28-fec",
> .driver_data = FEC_QUIRK_ENET_MAC | FEC_QUIRK_SWAP_FRAME,
> + }, {
> + .name = "imx35-fec",
> + .driver_data = 0,
> + }, {
> + .name = "imx50-fec",
> + .driver_data = FEC_QUIRK_USE_GASKET,
> + }, {
> + .name = "imx51-fec",
> + .driver_data = 0,
> + }, {
> + .name = "imx53-fec",
> + .driver_data = FEC_QUIRK_USE_GASKET,
> },
> { }
> };
> @@ -425,7 +442,7 @@ fec_restart(struct net_device *ndev, int duplex)
>
> } else {
> #ifdef FEC_MIIGSK_ENR
> - if (fep->phy_interface == PHY_INTERFACE_MODE_RMII) {
> + if (id_entry->driver_data & FEC_QUIRK_USE_GASKET) {
> /* disable the gasket and wait */
> writel(0, fep->hwp + FEC_MIIGSK_ENR);
> while (readl(fep->hwp + FEC_MIIGSK_ENR) & 4)
> @@ -434,8 +451,11 @@ fec_restart(struct net_device *ndev, int duplex)
> /*
> * configure the gasket:
> * RMII, 50 MHz, no loopback, no echo
> + * MII, 25 MHz, no loopback, no echo
> */
> - writel(1, fep->hwp + FEC_MIIGSK_CFGR);
> + writel((fep->phy_interface == PHY_INTERFACE_MODE_RMII) ?
> + 1 : 0, fep->hwp + FEC_MIIGSK_CFGR);
> +
>
> /* re-enable the gasket */
> writel(2, fep->hwp + FEC_MIIGSK_ENR);
> --
> 1.7.4.1
>
>
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
^ permalink raw reply [flat|nested] 12+ messages in thread* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-08 10:18 ` Sascha Hauer
@ 2011-07-08 18:38 ` Troy Kisky
2011-07-09 5:45 ` Shawn Guo
2011-07-09 5:44 ` Shawn Guo
1 sibling, 1 reply; 12+ messages in thread
From: Troy Kisky @ 2011-07-08 18:38 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, netdev, linux-arm-kernel, u.kleine-koenig, LW,
David S. Miller
On 7/8/2011 3:18 AM, Sascha Hauer wrote:
> On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
>> On the recent i.mx (mx25/50/53), there is a gasket inside fec
>> controller which needs to be enabled no matter phy works in MII
>> or RMII mode.
>>
>> The current code enables the gasket only when phy interface is RMII.
>> It's broken when the driver works with a MII phy. The patch uses
>> platform_device_id to distinguish the SoCs that have the gasket and
>> enables it on these SoCs for both MII and RMII mode.
>>
>> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
While you're making changes, you can change this to
Reported-by: Troy Kisky
Thanks
>> Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
>> Cc: David S. Miller <davem@davemloft.net>
>> Cc: Sascha Hauer <s.hauer@pengutronix.de>
>> ---
>> arch/arm/mach-imx/clock-imx25.c | 2 +-
>> arch/arm/mach-imx/clock-imx27.c | 2 +-
>> arch/arm/mach-imx/clock-imx35.c | 2 +-
>> arch/arm/mach-mx5/clock-mx51-mx53.c | 4 +-
>> arch/arm/plat-mxc/devices/platform-fec.c | 17 ++++++++-------
>> arch/arm/plat-mxc/include/mach/devices-common.h | 1 +
>> drivers/net/fec.c | 26 ++++++++++++++++++++--
>> 7 files changed, 38 insertions(+), 16 deletions(-)
>
> Just realized that this change breaks m68k support. You shouldn't remove
> DRIVER_NAME from fec_devtype[]
>
>
> Sascha
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-08 18:38 ` Troy Kisky
@ 2011-07-09 5:45 ` Shawn Guo
0 siblings, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2011-07-09 5:45 UTC (permalink / raw)
To: Troy Kisky
Cc: Shawn Guo, Sascha Hauer, netdev, linux-arm-kernel,
u.kleine-koenig, LW, David S. Miller
On Fri, Jul 08, 2011 at 11:38:09AM -0700, Troy Kisky wrote:
> On 7/8/2011 3:18 AM, Sascha Hauer wrote:
> > On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
> >> On the recent i.mx (mx25/50/53), there is a gasket inside fec
> >> controller which needs to be enabled no matter phy works in MII
> >> or RMII mode.
> >>
> >> The current code enables the gasket only when phy interface is RMII.
> >> It's broken when the driver works with a MII phy. The patch uses
> >> platform_device_id to distinguish the SoCs that have the gasket and
> >> enables it on these SoCs for both MII and RMII mode.
> >>
> >> Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
>
> While you're making changes, you can change this to
> Reported-by: Troy Kisky
>
Ok.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [PATCH] net/fec: gasket needs to be enabled for some i.mx
2011-07-08 10:18 ` Sascha Hauer
2011-07-08 18:38 ` Troy Kisky
@ 2011-07-09 5:44 ` Shawn Guo
1 sibling, 0 replies; 12+ messages in thread
From: Shawn Guo @ 2011-07-09 5:44 UTC (permalink / raw)
To: Sascha Hauer
Cc: netdev, Troy Kisky, u.kleine-koenig, Shawn Guo, David S. Miller,
linux-arm-kernel, LW
On Fri, Jul 08, 2011 at 12:18:10PM +0200, Sascha Hauer wrote:
> On Fri, Jul 01, 2011 at 06:11:22PM +0800, Shawn Guo wrote:
> > On the recent i.mx (mx25/50/53), there is a gasket inside fec
> > controller which needs to be enabled no matter phy works in MII
> > or RMII mode.
> >
> > The current code enables the gasket only when phy interface is RMII.
> > It's broken when the driver works with a MII phy. The patch uses
> > platform_device_id to distinguish the SoCs that have the gasket and
> > enables it on these SoCs for both MII and RMII mode.
> >
> > Signed-off-by: Troy Kisky <troy.kisky@boundarydevices.com>
> > Signed-off-by: Shawn Guo <shawn.guo@linaro.org>
> > Cc: David S. Miller <davem@davemloft.net>
> > Cc: Sascha Hauer <s.hauer@pengutronix.de>
> > ---
> > arch/arm/mach-imx/clock-imx25.c | 2 +-
> > arch/arm/mach-imx/clock-imx27.c | 2 +-
> > arch/arm/mach-imx/clock-imx35.c | 2 +-
> > arch/arm/mach-mx5/clock-mx51-mx53.c | 4 +-
> > arch/arm/plat-mxc/devices/platform-fec.c | 17 ++++++++-------
> > arch/arm/plat-mxc/include/mach/devices-common.h | 1 +
> > drivers/net/fec.c | 26 ++++++++++++++++++++--
> > 7 files changed, 38 insertions(+), 16 deletions(-)
> >
> > diff --git a/arch/arm/mach-imx/clock-imx25.c b/arch/arm/mach-imx/clock-imx25.c
> > index a65838f..5527fff 100644
> > --- a/arch/arm/mach-imx/clock-imx25.c
> > +++ b/arch/arm/mach-imx/clock-imx25.c
> > @@ -294,7 +294,7 @@ static struct clk_lookup lookups[] = {
> > _REGISTER_CLOCK("imx-i2c.0", NULL, i2c_clk)
> > _REGISTER_CLOCK("imx-i2c.1", NULL, i2c_clk)
> > _REGISTER_CLOCK("imx-i2c.2", NULL, i2c_clk)
> > - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> > + _REGISTER_CLOCK("imx25-fec.0", NULL, fec_clk)
> > _REGISTER_CLOCK("imxdi_rtc.0", NULL, dryice_clk)
> > _REGISTER_CLOCK("imx-fb.0", NULL, lcdc_clk)
> > _REGISTER_CLOCK("imx2-wdt.0", NULL, wdt_clk)
> > diff --git a/arch/arm/mach-imx/clock-imx27.c b/arch/arm/mach-imx/clock-imx27.c
> > index 583f251..d197df2 100644
> > --- a/arch/arm/mach-imx/clock-imx27.c
> > +++ b/arch/arm/mach-imx/clock-imx27.c
> > @@ -662,7 +662,7 @@ static struct clk_lookup lookups[] = {
> > _REGISTER_CLOCK(NULL, "brom", brom_clk)
> > _REGISTER_CLOCK(NULL, "emma", emma_clk)
> > _REGISTER_CLOCK(NULL, "slcdc", slcdc_clk)
> > - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> > + _REGISTER_CLOCK("imx27-fec.0", NULL, fec_clk)
> > _REGISTER_CLOCK(NULL, "emi", emi_clk)
> > _REGISTER_CLOCK(NULL, "sahara2", sahara2_clk)
> > _REGISTER_CLOCK(NULL, "ata", ata_clk)
> > diff --git a/arch/arm/mach-imx/clock-imx35.c b/arch/arm/mach-imx/clock-imx35.c
> > index 5a4cc1e..fb4007b 100644
> > --- a/arch/arm/mach-imx/clock-imx35.c
> > +++ b/arch/arm/mach-imx/clock-imx35.c
> > @@ -461,7 +461,7 @@ static struct clk_lookup lookups[] = {
> > _REGISTER_CLOCK("sdhci-esdhc-imx.0", NULL, esdhc1_clk)
> > _REGISTER_CLOCK("sdhci-esdhc-imx.1", NULL, esdhc2_clk)
> > _REGISTER_CLOCK("sdhci-esdhc-imx.2", NULL, esdhc3_clk)
> > - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> > + _REGISTER_CLOCK("imx35-fec.0", NULL, fec_clk)
> > _REGISTER_CLOCK(NULL, "gpio", gpio1_clk)
> > _REGISTER_CLOCK(NULL, "gpio", gpio2_clk)
> > _REGISTER_CLOCK(NULL, "gpio", gpio3_clk)
> > diff --git a/arch/arm/mach-mx5/clock-mx51-mx53.c b/arch/arm/mach-mx5/clock-mx51-mx53.c
> > index 699b0d2..04c5a01 100644
> > --- a/arch/arm/mach-mx5/clock-mx51-mx53.c
> > +++ b/arch/arm/mach-mx5/clock-mx51-mx53.c
> > @@ -1426,7 +1426,7 @@ static struct clk_lookup mx51_lookups[] = {
> > _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
> > _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
> > _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> > - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> > + _REGISTER_CLOCK("imx51-fec.0", NULL, fec_clk)
> > _REGISTER_CLOCK("mxc_pwm.0", "pwm", pwm1_clk)
> > _REGISTER_CLOCK("mxc_pwm.1", "pwm", pwm2_clk)
> > _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> > @@ -1475,7 +1475,7 @@ static struct clk_lookup mx53_lookups[] = {
> > _REGISTER_CLOCK("imx-uart.3", NULL, uart4_clk)
> > _REGISTER_CLOCK("imx-uart.4", NULL, uart5_clk)
> > _REGISTER_CLOCK(NULL, "gpt", gpt_clk)
> > - _REGISTER_CLOCK("fec.0", NULL, fec_clk)
> > + _REGISTER_CLOCK("imx53-fec.0", NULL, fec_clk)
> > _REGISTER_CLOCK(NULL, "iim_clk", iim_clk)
> > _REGISTER_CLOCK("imx-i2c.0", NULL, i2c1_clk)
> > _REGISTER_CLOCK("imx-i2c.1", NULL, i2c2_clk)
> > diff --git a/arch/arm/plat-mxc/devices/platform-fec.c b/arch/arm/plat-mxc/devices/platform-fec.c
> > index ccc789e..3790c59 100644
> > --- a/arch/arm/plat-mxc/devices/platform-fec.c
> > +++ b/arch/arm/plat-mxc/devices/platform-fec.c
> > @@ -10,40 +10,41 @@
> > #include <mach/hardware.h>
> > #include <mach/devices-common.h>
> >
> > -#define imx_fec_data_entry_single(soc) \
> > +#define imx_fec_data_entry_single(soc, _devid) \
> > { \
> > + .devid = _devid, \
> > .iobase = soc ## _FEC_BASE_ADDR, \
> > .irq = soc ## _INT_FEC, \
> > }
> >
> > #ifdef CONFIG_SOC_IMX25
> > const struct imx_fec_data imx25_fec_data __initconst =
> > - imx_fec_data_entry_single(MX25);
> > + imx_fec_data_entry_single(MX25, "imx25-fec");
> > #endif /* ifdef CONFIG_SOC_IMX25 */
> >
> > #ifdef CONFIG_SOC_IMX27
> > const struct imx_fec_data imx27_fec_data __initconst =
> > - imx_fec_data_entry_single(MX27);
> > + imx_fec_data_entry_single(MX27, "imx27-fec");
> > #endif /* ifdef CONFIG_SOC_IMX27 */
> >
> > #ifdef CONFIG_SOC_IMX35
> > const struct imx_fec_data imx35_fec_data __initconst =
> > - imx_fec_data_entry_single(MX35);
> > + imx_fec_data_entry_single(MX35, "imx35-fec");
> > #endif
> >
> > #ifdef CONFIG_SOC_IMX50
> > const struct imx_fec_data imx50_fec_data __initconst =
> > - imx_fec_data_entry_single(MX50);
> > + imx_fec_data_entry_single(MX50, "imx50-fec");
> > #endif
> >
> > #ifdef CONFIG_SOC_IMX51
> > const struct imx_fec_data imx51_fec_data __initconst =
> > - imx_fec_data_entry_single(MX51);
> > + imx_fec_data_entry_single(MX51, "imx51-fec");
> > #endif
> >
> > #ifdef CONFIG_SOC_IMX53
> > const struct imx_fec_data imx53_fec_data __initconst =
> > - imx_fec_data_entry_single(MX53);
> > + imx_fec_data_entry_single(MX53, "imx53-fec");
> > #endif
> >
> > struct platform_device *__init imx_add_fec(
> > @@ -62,7 +63,7 @@ struct platform_device *__init imx_add_fec(
> > },
> > };
> >
> > - return imx_add_platform_device_dmamask("fec", 0,
> > + return imx_add_platform_device_dmamask(data->devid, 0,
> > res, ARRAY_SIZE(res),
> > pdata, sizeof(*pdata), DMA_BIT_MASK(32));
> > }
> > diff --git a/arch/arm/plat-mxc/include/mach/devices-common.h b/arch/arm/plat-mxc/include/mach/devices-common.h
> > index bf93820..6ac2450 100644
> > --- a/arch/arm/plat-mxc/include/mach/devices-common.h
> > +++ b/arch/arm/plat-mxc/include/mach/devices-common.h
> > @@ -30,6 +30,7 @@ static inline struct platform_device *imx_add_platform_device(
> >
> > #include <linux/fec.h>
> > struct imx_fec_data {
> > + const char *devid;
> > resource_size_t iobase;
> > resource_size_t irq;
> > };
> > diff --git a/drivers/net/fec.c b/drivers/net/fec.c
> > index 885d8ba..9161a82 100644
> > --- a/drivers/net/fec.c
> > +++ b/drivers/net/fec.c
> > @@ -66,14 +66,31 @@
> > #define FEC_QUIRK_ENET_MAC (1 << 0)
> > /* Controller needs driver to swap frame */
> > #define FEC_QUIRK_SWAP_FRAME (1 << 1)
> > +/* Controller uses gasket */
> > +#define FEC_QUIRK_USE_GASKET (1 << 2)
> >
> > static struct platform_device_id fec_devtype[] = {
> > {
> > - .name = DRIVER_NAME,
> > + .name = "imx25-fec",
>
> Just realized that this change breaks m68k support. You shouldn't remove
> DRIVER_NAME from fec_devtype[]
>
Right, I forgot that family. Thanks for the reminding, Sascha.
--
Regards,
Shawn
^ permalink raw reply [flat|nested] 12+ messages in thread