Commit Graph

84 Commits

Author SHA1 Message Date
Jason Chen
e33df3d953 ENGR00124760 fec: set mac address correctly
Fix dynamicly set mac address make network hang issue.

Signed-off-by: Jason Chen <b02280@freescale.com>
2010-08-10 11:51:18 -05:00
Xiexiaobo
414ff9f16f ENGR00123808 MX28: Add dual FEC 1588 timer support
The ENET 1588 driver only support one FEC port,
this patch add dual FEC 1588 functions support.

Signed-off-by: Xie Xiaobo <X.Xie@freescale.com>
2010-08-10 11:50:41 -05:00
Jason Liu
f4760024a9 ENGR00123446 Can not get ip address after ifconfig eth0 down
-Fix the fec_enet_mdio_write function with correct FEC_MMFR_OP_WRITE
-Correct comments "start a read op" inside the fec_enet_mdio_write function
-Need do fec_restart in fec open since we do fec_stop in fec close
-Need do phy_stop in fec close to set the correct phy state machine

Signed-off-by:Jason Liu <r64343@freescale.com>
2010-08-10 11:50:29 -05:00
Bryan Wu
4c0e351a62 netdev/fec: fix ifconfig eth0 down hang issue
BugLink: http://bugs.launchpad.net/bugs/559065

In fec open/close function, we need to use phy_connect and phy_disconnect
operation before we start/stop phy. Otherwise it will cause system hang.

Only call fec_enet_mii_probe() in open function, because the first open
action will cause NULL pointer error.

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Tim Gardner <tim.gardner@canonical.com>
Acked-by: Colin King <colin.king@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
2010-08-10 11:50:27 -05:00
Xie Xiaobo
19bb66e24a ENGR00123296 MX5: Fix FEC compiling error
1. One variable declaration was controlled by ARCH_MXS, but it was
used by other platforms, So remove the ARCH_MXS flags controlling.
2. Added judgement for FEC 1588 interrupt enablement.

Signed-off-by: Xie Xiaobo <X.Xie@freescale.com>
2010-08-10 11:50:12 -05:00
Xiexiaobo
9e4ac5e73b ENGR00122832-2 MX28: Support for IEEE 1588 interface functionality
Supply the 1588 support for MX28 FEC.

Signed-off-by: Xie Xiaobo <X.Xie@freescale.com>
2010-08-10 11:50:11 -05:00
Jason
c44b119b86 ENGR00122142-3 fec: Add shared mdio bus for dual MAC
MX28 has two MAC,but External PHY can only be configed by MAC0
which means PHY1 should be configed by MAC0 according to IC spec.
This patch enable dual ENET support. If want to test rootfs from
eth1, can add ip=:::::eth1:dhcp in the command line

Signed-off-by: Jason Liu <r64343@freescale.com>
Signed-off-by: Rob Herring <r.herring@freescale.com>
2010-08-10 11:50:00 -05:00
Rob Herring
6615c0116f ENGR00122142-1 fec: fix RMII with phylib
This fixes RMII support which was broken by phylib support.

Signed-off-by: Rob Herring <r.herring@freescale.com>
2010-08-10 11:49:59 -05:00
Bryan Wu
a1d1a6ba44 UBUNTU: SAUCE: (upstream) netdev/fec: fix performance impact from mdio poll operation
BugLink: http://bugs.launchpad.net/bugs/546649
BugLink: http://bugs.launchpad.net/bugs/457878

After introducing phylib supporting, users experienced performace drop. That is
because of the mdio polling operation of phylib. Use msleep to replace the busy
waiting cpu_relax() and remove the warning message.

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
2010-08-10 11:49:58 -05:00
Bryan Wu
d3cb95c9ed UBUNTU: SAUCE: (upstream) netdev/fec: fix phy_speed caculating
BugLink: http://bugs.launchpad.net/bugs/546649
BugLink: http://bugs.launchpad.net/bugs/457878

 - remove duplicated phy_speed caculation
 - fix the phy_speed caculation according to the DataSheet

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Andy Whitcroft <apw@canonical.com>
Signed-off-by: Andy Whitcroft <apw@canonical.com>
2010-08-10 11:49:57 -05:00
Bryan Wu
7299891410 netdev/fec: fix compiling warning
BugLink: http://bugs.launchpad.net/bugs/457878

Missed to set .ndo_do_ioctl as fec_enet_ioctl, so will generate a compiling
warning due to nobody uses fec_enet_ioctl. This patch fixed that.

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Amit Kucheria <amit.kucheria@canonical.com>
Acked-by: Colin King <colin.king@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
2010-08-10 11:49:57 -05:00
Bryan Wu
e94b913d8e netdev/fec.c: add phylib supporting to enable carrier detection
netdev/fec.c: add phylib supporting to enable carrier detection

BugLink: http://bugs.launchpad.net/bugs/457878

 - removed old MII phy control code
 - add phylib supporting
 - add ethtool interface to make user space NetworkManager works

This patch is ready for upstream, it will be pushed to upstream for merge

Signed-off-by: Bryan Wu <bryan.wu@canonical.com>
Acked-by: Amit Kucheria <amit.kucheria@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
2010-08-10 11:49:56 -05:00
Xinyu Chen
e148a45ce4 ENGR00121653 MX53 Add FEC support
Add FEC support for MX53 EVK

Signed-off-by: Xinyu Chen <xinyu.chen@freescale.com>
2010-08-10 11:48:28 -05:00
Jason
4b91878877 ENGR00120715 MX28:Fix FEC MAC not set correclty
FEC MAC not set correclty on MX28 EVK board

Signed-off-by:Jason Liu <r64343@freescale.com>
2010-08-10 11:47:46 -05:00
Jason
d52e598394 ENGR00120558 FEC Fix broken and warnings on MXC
FEC Fix broken and warnings on MXC.
-use the fec_platform_data structure of kernel fec.h, remove
the redefinion from mach/mxc.h

-use dsv_phy_done completion to make sure fec clk not disabled
during phy discovery operation.

Signed-off-by:Jason Liu <r64343@freescale.com>
2010-08-10 11:47:41 -05:00
Jason
f61cc66aea ENGR00117744-2 i.MX28 EVK ENET(Single) support
FEC driver support for i.MX28

Signed-off-by:Jason Liu <r64343@freescale.com>
2010-08-10 11:47:31 -05:00
Jun Li
491ec33463 ENGR00119899 Add FEC iomux config and PHY reset.
FEC driver of 2.6.31 kernel remove pin iomux config and PHY reset,
which is in fec_gpio_active() needed for i.MX25 and i.MX35.

Signed-off-by: Li Jun <r65092@freescale.com>
2010-08-10 11:46:32 -05:00
Lily Zhang
dd3541d01b ENGR00118714 Disable FEC clock when it's not used
Disable FEC clock when it's not used in 31 kernel

Signed-off-by: Lily Zhang <r58066@freescale.com>
2010-08-10 11:45:45 -05:00
Lily Zhang
f6939b6d05 ENGR00118698 Fix FEC resume issue
FEC driver is stopped in suspend state. So FEC driver should restart
instead of initialization in resume state

Signed-off-by: Lily Zhang <r58066@freescale.com>
2010-08-10 11:45:44 -05:00
Rob Herring
0fcb4ff094 fec: fix uninitialized rx buffer usage
The fec driver was enabling receive buffer descriptor without allocating
the buffers. Make sure the buffer descriptors are initialized to not
start receiving packets.

Signed-off-by: Rob Herring <r.herring@freescale.com>
2010-08-10 11:44:27 -05:00
Rob Herring
a8da586928 fec: Add RMII gasket support
New versions of FEC support reduced MII interface. Currently only MX25
supports this.

Signed-off-by: Rob Herring <r.herring@freescale.com>
2010-08-10 11:44:26 -05:00
Rob Herring
cc10f20d61 FEC: Add LAN8700 phy support
Signed-off-by: Rob Herring <r.herring@freescale.com>
2010-08-10 11:44:26 -05:00
Uwe Kleine-König
0239a65c82 fec: don't enable irqs in hard irq context
fec_enet_mii, fec_enet_rx and fec_enet_tx are both only called by
fec_enet_interrupt in interrupt context.  So they must not use
spin_lock_irq/spin_unlock_irq.

This fixes:
	WARNING: at kernel/lockdep.c:2140 trace_hardirqs_on_caller+0x130/0x194()
	...

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Matt Waddel <Matt.Waddel@freescale.com>
Cc: netdev@vger.kernel.org
Cc: Tim Sander <tim01@vlsi.informatik.tu-darmstadt.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-08-10 11:44:21 -05:00
Uwe Kleine-König
2008b9c7cf fec: fix recursive locking of mii_lock
mii_discover_phy is only called by fec_enet_mii (via mip->mii_func).  So
&fep->mii_lock is already held and mii_discover_phy must not call
mii_queue which locks &fep->mii_lock, too.

This was noticed by lockdep:

	=============================================
	[ INFO: possible recursive locking detected ]
	2.6.31-rc8-00038-g37d0892 #109
	---------------------------------------------
	swapper/1 is trying to acquire lock:
	 (&fep->mii_lock){-.....}, at: [<c01569f8>] mii_queue+0x2c/0xcc

	but task is already holding lock:
	 (&fep->mii_lock){-.....}, at: [<c0156328>] fec_enet_interrupt+0x78/0x460

	other info that might help us debug this:
	2 locks held by swapper/1:
	 #0:  (rtnl_mutex){+.+.+.}, at: [<c0183534>] rtnl_lock+0x18/0x20
	 #1:  (&fep->mii_lock){-.....}, at: [<c0156328>] fec_enet_interrupt+0x78/0x460

	stack backtrace:
	Backtrace:
	[<c00226fc>] (dump_backtrace+0x0/0x108) from [<c01eac14>] (dump_stack+0x18/0x1c)
	 r6:c781d118 r5:c03e41d8 r4:00000001
	[<c01eabfc>] (dump_stack+0x0/0x1c) from [<c005bae4>] (__lock_acquire+0x1a20/0x1a88)
	[<c005a0c4>] (__lock_acquire+0x0/0x1a88) from [<c005bbac>] (lock_acquire+0x60/0x74)
	[<c005bb4c>] (lock_acquire+0x0/0x74) from [<c01edda8>] (_spin_lock_irqsave+0x54/0x68)
	 r7:60000093 r6:c01569f8 r5:c785e468 r4:00000000
	[<c01edd54>] (_spin_lock_irqsave+0x0/0x68) from [<c01569f8>] (mii_queue+0x2c/0xcc)
	 r7:c785e468 r6:c0156b24 r5:600a0000 r4:c785e000
	[<c01569cc>] (mii_queue+0x0/0xcc) from [<c0156b78>] (mii_discover_phy+0x54/0xa8)
	 r8:00000002 r7:00000032 r6:c785e000 r5:c785e360 r4:c785e000
	[<c0156b24>] (mii_discover_phy+0x0/0xa8) from [<c0156354>] (fec_enet_interrupt+0xa4/0x460)
	 r5:c785e360 r4:c077a170
	[<c01562b0>] (fec_enet_interrupt+0x0/0x460) from [<c0066674>] (handle_IRQ_event+0x48/0x120)
	[<c006662c>] (handle_IRQ_event+0x0/0x120) from [<c0068438>] (handle_level_irq+0x94/0x11c)
	...

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Cc: Greg Ungerer <gerg@uclinux.org>
Cc: Ben Hutchings <ben@decadent.org.uk>
Cc: Patrick McHardy <kaber@trash.net>
Cc: Sascha Hauer <s.hauer@pengutronix.de>
Cc: Matt Waddel <Matt.Waddel@freescale.com>
Cc: netdev@vger.kernel.org
Cc: Tim Sander <tim01@vlsi.informatik.tu-darmstadt.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-08-10 11:44:21 -05:00
Greg Ungerer
9555b31e8c fec: fix FEC driver packet transmission breakage
Commit f0b3fbeae1 ("FEC Buffer rework")
breaks transmission of packets where the skb data buffer is not memory
aligned according to FEC_ALIGNMENT. It incorrectly passes to
dma_sync_single() the buffer address directly from the skb, instead of
the address calculated for use (which may be the skb address or one of
the bounce buffers).

It seems there is no use converting the cpu address of the buffer to
a physical either, since dma_map_single() expects the cpu address and
will return the dma address to use in the descriptor. So remove the use
of __pa() on the buffer address as well.

This patch is against 2.6.30-rc5. This breakage is a regression over
2.6.30, which does not have this problem.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-08-09 21:45:33 -07:00
Ben Hutchings
635ecaa70e netdev: restore MTU change operation
alloc_etherdev() used to install a default implementation of this
operation, but it must now be explicitly installed in struct
net_device_ops.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-07-12 14:20:04 -07:00
Patrick McHardy
5b54814022 net: use symbolic values for ndo_start_xmit() return codes
Convert magic values 1 and -1 to NETDEV_TX_BUSY and NETDEV_TX_LOCKED respectively.

0 (NETDEV_TX_OK) is not changed to keep the noise down, except in very few cases
where its in direct proximity to one of the other values.

Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-06-13 01:18:50 -07:00
David S. Miller
a54bfa40fd Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2009-04-16 17:35:26 -07:00
Sascha Hauer
fe957c40ec fec: call fec_restart() in fec_open()
We called fec_stop() in fec_enet_close(), thus we have to call
fec_restart() in fec_enet_open().

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:54 -07:00
Sascha Hauer
f0b3fbeae1 FEC Buffer rework
Allocate buffers in fec_open and free them again in fec_close. This makes
it possible to use this driver as a module.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:53 -07:00
Sascha Hauer
009fda83ee fec: switch to net_device_ops
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:52 -07:00
Sascha Hauer
3644ee00c4 fec: remove debugging printks
These printks in fec_timeout do not give useful information in
a production kernel.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:52 -07:00
Sascha Hauer
8549889c33 fec: align receive packets
Otherwise we get a lot of alignment errors

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:51 -07:00
Sascha Hauer
4f1ceb4b46 fec: refactor init function
fec_enet_init() does the hardware initialisation and then calls
fec_restart() which does the same initialisation again, so we
can safely remove the initialisation from fec_enet_init().

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:51 -07:00
Sascha Hauer
4e8318368a fec: refactor set_multicast_list() to make it more readable
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:50 -07:00
Sascha Hauer
22f6b860da fec: Codingstyle cleanups
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:50 -07:00
Sascha Hauer
8d4dd5cff8 fec: remove unnecessary cast
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:49 -07:00
Sascha Hauer
2e28532f7e fec: do not typedef struct types
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:48 -07:00
Sascha Hauer
f44d630528 fec: switch to writel/readl
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-16 02:34:47 -07:00
Sascha Hauer
fb922b0de6 FEC driver: add missing #endif
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-04-08 15:44:45 -07:00
Greg Ungerer
43be63662d m68knommu: remove ColdFire specific setup code from FEC driver
Remove the ColdFire CPU specific setup from here. The ColdFire
CPU platform code now sets up all this.

Signed-off-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-26 22:42:51 -08:00
David S. Miller
b3ff29d2cc Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
Conflicts:
	drivers/net/Kconfig
2009-02-03 00:15:35 -08:00
Sascha Hauer
ead731837d FEC: Turn FEC driver into platform device driver
This turns the fec driver into a platform device driver for new
platforms. Old platforms are still supported through a FEC_LEGACY define
till they are also ported.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:26 -08:00
Sascha Hauer
196719ecec fec: Add support for Freescale MX27
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:26 -08:00
Sascha Hauer
ccdc4f1981 fec: replace flush_dcache_range with dma_sync_single
flush_dcache_range is not portable across architectures. Use
dma_sync_single instead. Also, the memory must be synchronised in the
receive path aswell.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:24 -08:00
Sascha Hauer
43268dcea7 fec: Fix KS8721BL_ICSR phy register offset
According to the datasheet the ICSR register is at offset 27, not 22.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:24 -08:00
Sascha Hauer
4661e75b9d fec: use dma_alloc_coherent for descriptor ring
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:23 -08:00
Sascha Hauer
6989f5122f fec: do not use memcpy on physical addresses
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:22 -08:00
Sascha Hauer
6f501b173f fec: use linux/*.h instead of asm/*.h
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:22 -08:00
Sascha Hauer
6a8ea2c6f5 fec: remove empty functions
There are some architecture specific functions which are all
empty. Remove them.

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Acked-by: Greg Ungerer <gerg@uclinux.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2009-02-01 00:58:21 -08:00