aboutsummaryrefslogtreecommitdiff
path: root/drivers/net/phy
AgeCommit message (Collapse)AuthorFilesLines
2007-09-13Fix a lock problem in generic phy codeHans-Jürgen Koch2-4/+4
Lock debugging finds a problem in phy.c and phy_device.c, this patch fixes it. Tested on an AT91SAM9263-EK board, kernel 2.6.23-rc4. Signed-off-by: Hans J. Koch <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-08-25phy layer: fix genphy_setup_forced (don't reset)Domen Puncer1-1/+1
Writing BMCR_RESET bit will reset MII_BMCR to default values. This is clearly not what we want. Signed-off-by: Domen Puncer <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-08-07phy layer: fix phy_mii_ioctl for autonegotiationDomen Puncer1-2/+2
Fix a thinko (?) in setting phydev->autoneg. Signed-off-by: Domen Puncer <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-07-24Fix error checking in Vitesse IRQ configAndy Fleming1-1/+1
phy_read() returns a negative number if there's an error, but the error-checking code in the Vitesse driver's config_intr function triggers if phy_read() returns non-zero. Correct that. Signed-off-by: Andy Fleming <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-07-18Fix Vitesse RGMII-ID supportAndy Fleming1-3/+20
The Vitesse PHY on the 8641D needs to be set up with internal delay to work in RGMII mode. So we add skew when it is set to RGMII_ID mode. Signed-off-by: Andy Fleming <[email protected]> Signed-off-by: Haruki Dai <[email protected]> Signed-off-by: Haiying Wang <[email protected]>
2007-07-18Fix Vitesse 824x PHY interrupt ackingAndy Fleming1-2/+21
The Vitesse 824x PHY doesn't allow an interrupt to be cleared if the mask bit for that interrupt isn't set. This means that the PHY Lib's order of handling interrupts (disable, then clear) breaks on this PHY. However, clearing then disabling the interrupt opens up the code for a silly race condition. So rather than change the PHY Lib, we change the Vitesse driver so it always clears interrupts before disabling them. Further, the ack function only clears the interrupt if interrupts are enabled. Signed-off-by: Andy Fleming <[email protected]> Signed-off-by: York Sun <[email protected]> Acked-by: Haiying Wang <[email protected]>
2007-07-10phylib: Add Marvell 88E1112 phy idOlof Johansson1-0/+13
Add 88E1112 PHY ID to the marvell driver. Seems to do fine with the 88E1111 inits. Signed-off-by: Olof Johansson <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-07-10phylib: cleanup marvell.c a bitOlof Johansson1-58/+52
Simplify the marvell driver init a bit: Make the supported devices an array instead of explicitly registering each structure. This makes it considerably easier to add new devices down the road. Signed-off-by: Olof Johansson <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-07-08phylib: m88e1111: enable SGMII modeKapil Juneja1-0/+16
If connected via SGMII, initialize with SGMII mode configured. Signed-off-by: Kapil Juneja <[email protected]> Signed-off-by: Andy Fleming <[email protected]> Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-07-08phylib: add the ICPlus IP175C PHY driverMichael Barkowski3-0/+140
The ICPlus IP175C sports a 100Mbit/s 4-port switch in addition to a dedicated 100Mbit/s WAN port. Signed-off-by: Michael Barkowski <[email protected]> Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-06-28phy: Fix phy_id for Vitesse 824x PHYKumar Gala2-2/+3
The phy_id specified for the Vitesse 824x PHY would never match because it was expecting bits to be set that would be masked by the phy_id_mask. Fix the phy_id so it will match properly, and changed the mdio_bus_match to mask both the driver and devices phy_id with the mask so we dont have this issue in the future. Signed-off-by: Kumar Gala <[email protected]>
2007-06-09phylib: add RGMII-ID mode to the Marvell m88e1111 PHY to fix broken ucc_gethKim Phillips1-8/+54
Support for configuring RGMII-ID (RGMII with internal delay) mode on the 88e1111 and 88e1145. Ucc_geth on MPC8360EMDS(the main user of ucc_geth) is broken after changed to use phylib. It is fixed by adding this internal delay. Also renamed 88e1111s -> 88e1111 (no references to an 88e1111s part were found), and fixed some whitespace. Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Li Yang <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-05-24fix compiler warning in fixed.cDenver Gingerich1-0/+4
Correct the following compiler warning (and warnings resulting from the correction): warning: 'fixed_mdio_register_device' defined but not used Signed-off-by: Denver Gingerich <[email protected]> Cc: Vitaly Bordug <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-05-11Add support for the Davicom DM9161A PHYKim Phillips1-8/+26
Distinguish between the Davicom DM9161A PHY and the DM9161E. Signed-off-by: Kim Phillips <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-05-11Use menuconfig objects: PHYJan Engelhardt1-16/+6
Use menuconfigs instead of menus, so the whole menu can be disabled at once instead of going through all options. Signed-off-by: Jan Engelhardt <[email protected]> Cc: Jeff Garzik <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-05-10[S390] Kconfig: unwanted menus for s390.Martin Schwidefsky1-0/+1
Disable some more menus in the configuration files that are of no interest to a s390 machine. Signed-off-by: Martin Schwidefsky <[email protected]>
2007-05-09unify flush_work/flush_work_keventd and rename it to cancel_work_syncOleg Nesterov1-2/+2
flush_work(wq, work) doesn't need the first parameter, we can use cwq->wq (this was possible from the very beginnig, I missed this). So we can unify flush_work_keventd and flush_work. Also, rename flush_work() to cancel_work_sync() and fix all callers. Perhaps this is not the best name, but "flush_work" is really bad. (akpm: this is why the earlier patches bypassed maintainers) Signed-off-by: Oleg Nesterov <[email protected]> Cc: Jeff Garzik <[email protected]> Cc: "David S. Miller" <[email protected]> Cc: Jens Axboe <[email protected]> Cc: Tejun Heo <[email protected]> Cc: Auke Kok <[email protected]>, Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-05-09phy: use flush_work_keventd()Andrew Morton1-3/+3
(akpm: bypassed maintainers, sorry. There are other patches which depend on this) Cc: "Maciej W. Rozycki" <[email protected]> Cc: David Howells <[email protected]> Cc: Jeff Garzik <[email protected]> Cc: Oleg Nesterov <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-04-28network: add the missing phy_device speed information to phy_mii_ioctlShan Lu1-0/+6
Function `phy_mii_ioctl' returns physical device's information based on user requests. When requested to return the basic mode control register information (BMCR), the original implementation only returns the physical device's duplex information and forgets to return speed information, which should not be because BMCR register is used to hold both duplex and speed information. The patch checks the BMCR value against speed-related flags and fills the return structure's speed field accordingly. Signed-off-by: Shan <[email protected]> Cc: Jeff Garzik <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-04-28phy layer: add kernel-doc + DocBookRandy Dunlap3-95/+226
Convert function documentation in drivers/net/phy/ to kernel-doc and add it to DocBook. Signed-off-by: Randy Dunlap <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-04-27PHY: remove rwsem use from phy coreGreg Kroah-Hartman2-14/+1
The subsystem rwsem is not used by the driver core at all, so the use of it in the phy code doesn't make any sense. They might possibly want to use a local lock, but I am unsure about that. Cc: netdev <[email protected]> Signed-off-by: Greg Kroah-Hartman <[email protected]>
2007-02-17phylib: Add support for Marvell 88e1111S and 88e1145Andy Fleming1-12/+144
Changes include: * New support for 88e1145 * New support for 88e111s * Fixing 88e1101 driver to not match non-88e1101 PHYs * Increases in feature support across Marvell PHY product line * Fixes a bunch of whitespace issues found by Lindent Signed-off-by: Andrew Fleming <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-02-17Merge branch 'master' into upstreamJeff Garzik9-9/+0
2007-02-14[PATCH] remove many unneeded #includes of sched.hTim Schmielau9-9/+0
After Al Viro (finally) succeeded in removing the sched.h #include in module.h recently, it makes sense again to remove other superfluous sched.h includes. There are quite a lot of files which include it but don't actually need anything defined in there. Presumably these includes were once needed for macros that used to live in sched.h, but moved to other header files in the course of cleaning it up. To ease the pain, this time I did not fiddle with any header files and only removed #includes from .c-files, which tend to cause less trouble. Compile tested against 2.6.20-rc2 and 2.6.20-rc2-mm2 (with offsets) on alpha, arm, i386, ia64, mips, powerpc, and x86_64 with allnoconfig, defconfig, allmodconfig, and allyesconfig as well as a few randconfigs on x86_64 and all configs in arch/arm/configs on arm. I also checked that no new warnings were introduced by the patch (actually, some warnings are removed that were emitted by unnecessarily included header files). Signed-off-by: Tim Schmielau <[email protected]> Acked-by: Russell King <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2007-02-09phy devices: use same arg typesRandy Dunlap1-2/+2
sparse complains about differing types from prototype to definition, so change the u32 to phy_interface_t: drivers/net/phy/phy_device.c:140:19: error: symbol 'phy_connect' redeclared with different type (originally declared at include/linux/phy.h:362) - incompatible argument 5 (different signedness) drivers/net/phy/phy_device.c:190:19: error: symbol 'phy_attach' redeclared with different type (originally declared at include/linux/phy.h:360) - incompatible argument 4 (different signedness) Signed-off-by: Randy Dunlap <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-01-30FS_ENET: OF-related fixup for FEC and SCC MAC'sVitaly Bordug1-1/+1
Updated direct resource pass with ioremap call, make it grant proper IRQ mapping, stuff incompatible with the new approach were respectively put under #ifndef CONFIG_PPC_MERGE. It is required so that both ppc and powerpc could utilize fs_enet effectively. Signed-off-by: Vitaly Bordug <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2007-01-23PHY: Export phy ethtool helpersKumar Gala1-1/+2
We need to export phy_ethtool_gset and phy_ethtool_sset to allow drivers that use these functions to be built as modules. Signed-off-by: Kumar Gala <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-12-13[PATCH] Fix numerous kcalloc() calls, convert to kzalloc()Robert P. J. Day1-1/+1
All kcalloc() calls of the form "kcalloc(1,...)" are converted to the equivalent kzalloc() calls, and a few kcalloc() calls with the incorrect ordering of the first two arguments are fixed. Signed-off-by: Robert P. J. Day <[email protected]> Cc: Jeff Garzik <[email protected]> Cc: Alan Cox <[email protected]> Cc: Dominik Brodowski <[email protected]> Cc: Adam Belay <[email protected]> Cc: James Bottomley <[email protected]> Cc: Greg KH <[email protected]> Cc: Mark Fasheh <[email protected]> Cc: Trond Myklebust <[email protected]> Cc: Neil Brown <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-12-07Add "run_scheduled_work()" workqueue functionLinus Torvalds1-2/+1
This allows workqueue users to run just their own pending work, rather than wait for the whole workqueue to finish running. This solves the deadlock with networking libphy that was due to other workqueue entries possibly needing a lock that was held by the routine that wanted to flush its own work. It's not wonderful: if you absolutely need to synchronize with the work function having been executed, any user strictly speaking should have its own completion tracking logic, since when we run things explicitly by hand, the generic workqueue layer can no longer help us synchronize. Also, this is strictly only usable for work that has been scheduled without any delayed timers. You can not mix the new interface with schedule_delayed_work(). But it's better than what we had currently. Acked-by: Maciej W. Rozycki <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
2006-12-05Merge branch 'master' of ↵David Howells1-1/+1
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: drivers/ata/libata-scsi.c include/linux/libata.h Futher merge of Linus's head and compilation fixups. Signed-Off-By: David Howells <[email protected]>
2006-12-05Merge branch 'master' of ↵David Howells5-59/+270
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 Conflicts: drivers/infiniband/core/iwcm.c drivers/net/chelsio/cxgb2.c drivers/net/wireless/bcm43xx/bcm43xx_main.c drivers/net/wireless/prism54/islpci_eth.c drivers/usb/core/hub.h drivers/usb/input/hid-core.c net/core/netpoll.c Fix up merge failures with Linus's head and fix new compilation failures. Signed-Off-By: David Howells <[email protected]>
2006-12-04Merge branch 'linux-2.6' into for-linusPaul Mackerras5-59/+270
2006-12-02[PATCH] PHY: Add support for configuring the PHY connection interfaceAndy Fleming1-9/+20
Most PHYs connect to an ethernet controller over a GMII or MII interface. However, a growing number are connected over different interfaces, such as RGMII or SGMII. The ethernet driver will tell the PHY what type of connection it is by setting it manually, or passing it in through phy_connect (or phy_attach). Changes include: * Updates to documentation * Updates to PHY Lib consumers * Changes to PHY Lib to add interface support * Some minor changes to whitespace in phy.h * gianfar driver now detects interface and passes appropriate value to PHY Lib Signed-off-by: Andrew Fleming <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-12-02Revert "[PATCH] Add support for Marvell 88e1111S and 88e1145"Jeff Garzik1-144/+12
This reverts commit 477c517903d57047150b01608149e02c6e9d83dd. This patch depended on something that was not yet committed.
2006-12-02[PATCH] Add support for Marvell 88e1111S and 88e1145Andy Fleming1-12/+144
This patch requires the new support for configurable PHY interfaces. Changes include: * New support for 88e1145 * New support for 88e111s * Fixing 88e1101 driver to not match non-88e1101 PHYs * Increases in feature support across Marvell PHY product line * Fixes a bunch of whitespace issues found by Lindent Signed-off-by: Andrew Fleming <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-12-02[PATCH] Fixed a number of bugs in the PHY LayerAndy Fleming2-42/+40
* genphy_update_link is now exported * Added a fix from [email protected] which changes forcing so it only updates the link. Otherwise, it never tries the lower values, since it is always overwriting the speed/duplex values with the current ones, rather than the intended ones. * Fixed a bug where bringing up a PHY with no link caused it to timeout, and enter forcing mode. Once in forcing mode, plugging in the link didn't autonegotiate. Now the AN state detects the lack of link, and enters the NO_LINK state. AN only times out if the link is up and AN fails * Cleaned up the PHY_AN case, reducing one level of indentation for the timeout code. Signed-off-by: Jeff Garzik <[email protected]>
2006-12-02[PATCH] 2.6.18: sb1250-mac: Phylib IRQ handling fixesMaciej W. Rozycki1-6/+26
This patch fixes a couple of problems discovered with interrupt handling in the phylib core, namely: 1. The driver uses timer and workqueue calls, but does not include <linux/timer.h> nor <linux/workqueue.h>. 2. The driver uses schedule_work() for handling interrupts, but does not make sure any pending work scheduled thus has been completed before driver's structures get freed from memory. This is especially important as interrupts may keep arriving if the line is shared with another PHY. The solution is to ignore phy_interrupt() calls if the reported device has already been halted and calling flush_scheduled_work() from phy_stop_interrupts() (but guarded with current_is_keventd() in case the function has been called through keventd from the MAC device's close call to avoid a deadlock on the netlink lock). Signed-off-by: Maciej W. Rozycki <[email protected]> patch-mips-2.6.18-20060920-phy-irq-16 Signed-off-by: Jeff Garzik <[email protected]>
2006-12-02[PATCH] 2.6.18: sb1250-mac: Broadcom PHY supportMaciej W. Rozycki3-0/+182
This patch adds support for interrupt-driven operation of the Broadcom Gigabit Ethernet PHYs. I have included device IDs for the parts used on Broadcom SiByte evaluation boards; more can be added as a need arises. They are apparently generally software-compatible with one another. Signed-off-by: Maciej W. Rozycki <[email protected]> patch-mips-2.6.18-20060920-broadcom-phy-15 Signed-off-by: Jeff Garzik <[email protected]>
2006-11-30Fix misc Kconfig typosMatt LaPlante1-2/+2
Fix various Kconfig typos. Signed-off-by: Matt LaPlante <[email protected]> Acked-by: Randy Dunlap <[email protected]> Signed-off-by: Adrian Bunk <[email protected]>
2006-11-22WorkStruct: make allyesconfigDavid Howells1-4/+5
Fix up for make allyesconfig. Signed-Off-By: David Howells <[email protected]>
2006-11-13[PATCH] Slight refactor of interrupt mapping for FSL partsAndy Fleming1-1/+1
* Cleaned up interrupt mapping a little by adding a helper function which parses the irq out of the device-tree, and puts it into a resource. * Changed the arch/ppc platform files to specify PHY_POLL, instead of -1 * Changed the fixed phy to use PHY_IGNORE_INTERRUPT * Added ethtool.h and mii.h to phy.h includes Signed-off-by: Paul Mackerras <[email protected]>
2006-10-05IRQ: Maintain regs pointer globally rather than passing to IRQ handlersDavid Howells1-1/+1
Maintain a per-CPU global "struct pt_regs *" variable which can be used instead of passing regs around manually through all ~1800 interrupt handlers in the Linux kernel. The regs pointer is used in few places, but it potentially costs both stack space and code to pass it around. On the FRV arch, removing the regs parameter from all the genirq function results in a 20% speed up of the IRQ exit path (ie: from leaving timer_interrupt() to leaving do_IRQ()). Where appropriate, an arch may override the generic storage facility and do something different with the variable. On FRV, for instance, the address is maintained in GR28 at all times inside the kernel as part of general exception handling. Having looked over the code, it appears that the parameter may be handed down through up to twenty or so layers of functions. Consider a USB character device attached to a USB hub, attached to a USB controller that posts its interrupts through a cascaded auxiliary interrupt controller. A character device driver may want to pass regs to the sysrq handler through the input layer which adds another few layers of parameter passing. I've build this code with allyesconfig for x86_64 and i386. I've runtested the main part of the code on FRV and i386, though I can't test most of the drivers. I've also done partial conversion for powerpc and MIPS - these at least compile with minimal configurations. This will affect all archs. Mostly the changes should be relatively easy. Take do_IRQ(), store the regs pointer at the beginning, saving the old one: struct pt_regs *old_regs = set_irq_regs(regs); And put the old one back at the end: set_irq_regs(old_regs); Don't pass regs through to generic_handle_irq() or __do_IRQ(). In timer_interrupt(), this sort of change will be necessary: - update_process_times(user_mode(regs)); - profile_tick(CPU_PROFILING, regs); + update_process_times(user_mode(get_irq_regs())); + profile_tick(CPU_PROFILING); I'd like to move update_process_times()'s use of get_irq_regs() into itself, except that i386, alone of the archs, uses something other than user_mode(). Some notes on the interrupt handling in the drivers: (*) input_dev() is now gone entirely. The regs pointer is no longer stored in the input_dev struct. (*) finish_unlinks() in drivers/usb/host/ohci-q.c needs checking. It does something different depending on whether it's been supplied with a regs pointer or not. (*) Various IRQ handler function pointers have been moved to type irq_handler_t. Signed-Off-By: David Howells <[email protected]> (cherry picked from 1b16e7ac850969f38b375e511e3fa2f474a33867 commit)
2006-10-04Remove all inclusions of <linux/config.h>Dave Jones1-1/+0
kbuild explicitly includes this at build time. Signed-off-by: Dave Jones <[email protected]>
2006-10-01[netdrvr] phy: Fix bugs in error handlingJeff Garzik2-4/+10
The recent __must_check stuff flagged some error handling bugs. phy/fixed.c: * handle device_bind_driver() failure phy/phy_device.c: * handle device_bind_driver() failure * release rwsem upon failure Signed-off-by: Jeff Garzik <[email protected]>
2006-09-25[PATCH] Signedness issue in drivers/net/phy/phy_device.cEric Sesterhenn1-1/+1
While checking gcc 4.1 -Wextra warnings, I stumbled across the following two warnings: drivers/net/phy/phy_device.c:528: warning: comparison of unsigned expression < 0 is always false drivers/net/phy/phy_device.c:546: warning: comparison of unsigned expression < 0 is always false Since phy_read() returns an integer and can return negative values, it seems to me the best way to get proper error handling working again is to make val an int. Currently it is an u32, so the < 0 check always fails. Signed-off-by: Eric Sesterhenn <[email protected]> Cc: Jeff Garzik <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-09-13drivers/net/phy/fixed: #if 0 some incomplete codeJeff Garzik1-0/+4
Signed-off-by: Jeff Garzik <[email protected]>
2006-08-19Merge branch 'upstream-fixes' into upstreamJeff Garzik5-21/+407
2006-08-19[PATCH] PAL: Support of the fixed PHYVitaly Bordug5-21/+407
This makes it possible for HW PHY-less boards to utilize PAL goodies. Generic routines to connect to fixed PHY are provided, as well as ability to specify software callback that fills up link, speed, etc. information into PHY descriptor (the latter feature not tested so far). Signed-off-by: Vitaly Bordug <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-08-14[PATCH] remove unnecessary config.h includes from drivers/net/Dave Jones2-2/+0
config.h is automatically included by kbuild these days. Signed-off-by: Dave Jones <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>
2006-08-03[PATCH] Stop calling phy_stop_interrupts() twiceSergei Shtylylov1-6/+2
Prevent phylib from freeing PHY IRQ twice on closing an eth device: phy_disconnect() first calls phy_stop_interrupts(), then it calls phy_stop_machine() which in turn calls phy_stop_interrupts() making the kernel complain on each bootup... Signed-off-by: Sergei Shtylyov <[email protected]> Signed-off-by: Jeff Garzik <[email protected]>