27 Apr, 2009
2 commits
-
Add phy_connect_direct() and phy_attach_direct() functions so that
drivers can use a pointer to the phy_device instead of trying to determine
the phy's bus_id string.This patch is useful for OF device tree descriptions of phy devices where
the driver doesn't need or know what the bus_id value in order to get a
phy_device pointer.Signed-off-by: Grant Likely
Acked-by: Andy Fleming
Signed-off-by: David S. Miller -
This patch makes changes in preparation for supporting open firmware
device tree descriptions of MDIO busses. Changes include:
- Cleanup handling of phy_map[] entries; they are already NULLed when
registering and so don't need to be re-cleared, and it is good practice
to clear them out when unregistering.
- Split phy_device registration out into a new function so that the
OF helpers can do two stage registration (separate allocation and
registration steps).Signed-off-by: Grant Likely
Acked-by: Andy Fleming
Signed-off-by: David S. Miller
14 Apr, 2009
1 commit
-
Marvell 88E1121R Dual PHY device can be hardware-configured
to use shared interrupt pin for both PHY ports. For such
PHY configurations using shared PHY interrupt phy_interrupt()
handler will also schedule a work for PHY port which didn't
cause an interrupt.This patch adds a possibility for PHY drivers to provide
did_interrupt() function which reports if the PHY (or a PHY
port in a multi-PHY device) generated an interrupt. This
function is called in phy_change() as phy_change() shouldn't
proceed if it is invoked for a PHY which didn't cause an
interrupt. So check for interrupt originator in phy_change()
to allow early-out.Signed-off-by: Anatolij Gustschin
Signed-off-by: David S. Miller
14 Mar, 2009
1 commit
-
It closes a race in phy_stop_machine when reprogramming of phy_timer
(from phy_state_machine) happens between del_timer_sync and cancel_work_sync.Without this change it could lead to crash if phy_device would be freed after
phy_stop_machine (timer would fire and schedule freed work).Signed-off-by: Marcin Slusarz
Acked-by: Jean Delvare
Signed-off-by: David S. Miller
29 Nov, 2008
1 commit
-
This patch adds the power management support into the physical
abstraction layer.Suspend and resume functions respectively turns on/off the bit 11
into the PHY Basic mode control register.
Generic PHY device starts supporting PM.In order to support the wake-on LAN and avoid to put in power down
the PHY device, the MDIO is aware of what the Ethernet device wants to do.Voluntary, no CONFIG_PM defines were added into the sources.
Also generic suspend/resume functions are exported to allow
other drivers use them (such as genphy_config_aneg etc.).Within the phy_driver_register function, we need to remove the
memset. It overrides the device driver owner and it is not good.Signed-off-by: Giuseppe Cavallaro
Signed-off-by: David S. Miller
09 Oct, 2008
4 commits
-
Add mdiobus_{read,write} routines to allow direct reading/writing
of registers on an mii bus without having to go through the PHY
abstraction, and make phy_{read,write} use these primitives.Signed-off-by: Lennert Buytenhek
Signed-off-by: David S. Miller -
Introduce the mdio_bus class, and give each 'struct mii_bus' its own
'struct device', so that mii_bus objects are represented in the device
tree and can be found by querying the device tree.Signed-off-by: Lennert Buytenhek
Acked-by: Andy Fleming
Signed-off-by: David S. Miller -
This patch introduces mdiobus_alloc() and mdiobus_free(), and
makes all mdio bus drivers use these functions to allocate their
struct mii_bus'es dynamically.Signed-off-by: Lennert Buytenhek
Signed-off-by: David S. Miller
Acked-by: Andy Fleming -
In preparation of giving mii_bus objects a device tree presence of
their own, rename struct mii_bus's ->dev argument to ->parent, since
having a 'struct device *dev' that points to our parent device
conflicts with introducing a 'struct device dev' representing our own
device.Signed-off-by: Lennert Buytenhek
Signed-off-by: David S. Miller
Acked-by: Andy Fleming
19 Sep, 2008
1 commit
-
This patch splits the bus scanning code in mdiobus_register() off
into a separate function, and makes this function available for
calling from external code. This allows incrementally scanning an
mii bus, e.g. as information about which addresses are 'safe' to
scan becomes available.Signed-off-by: Lennert Buytenhek
Acked-by: Andy Fleming
07 May, 2008
1 commit
-
Declared some things static, declared some things in the header.
Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik
25 Apr, 2008
1 commit
-
Sometimes the specific interaction between the platform and the PHY
requires special handling. For instance, to change where the PHY's
clock input is, or to add a delay to account for latency issues in the
data path. We add a mechanism for registering a callback with the PHY
Lib to be called on matching PHYs when they are brought up, or reset.Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik
18 Apr, 2008
1 commit
-
We were already doing what amounts to a get_phy_id from within
get_phy_device, and rather than duplicate this for the TBIPA
probing, we might as well just factor it out and make it available
instead.Signed-off-by: Paul Gortmaker
Acked-by: Andy Fleming
Signed-off-by: Jeff Garzik
17 Apr, 2008
2 commits
-
Multi-line comments weren't all CodingStyle compliant
Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik -
Having the id field be an int was making more complex bus topologies
excessively difficult. For now, just convert it to a string, and
change all instances of "bus->id = val" to
snprintf(id, MII_BUS_ID_LEN, "%x", val).Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik
03 Feb, 2008
1 commit
-
PHY read/write functions can potentially sleep (e.g., a PHY accessed
via I2C). The following changes were made to account for this:* Change spin locks to mutex locks
* Add a BUG_ON() to phy_read() phy_write() to warn against
calling them from an interrupt context.
* Use work queue for PHY state machine handling since
it can potentially sleep
* Change phydev lock from spinlock to mutexSigned-off-by: Nate Case
Acked-by: Andy Fleming
Signed-off-by: Jeff Garzik
Signed-off-by: David S. Miller
05 Dec, 2007
1 commit
-
Lately I've got this nice badness on mdio bus removal:
Device 'e0103120:06' does not have a release() function, it is broken and must be fixed.
------------[ cut here ]------------
Badness at drivers/base/core.c:107
NIP: c015c1a8 LR: c015c1a8 CTR: c0157488
REGS: c34bdcf0 TRAP: 0700 Not tainted (2.6.23-rc5-g9ebadfbb-dirty)
MSR: 00029032 CR: 24088422 XER: 00000000
...
[c34bdda0] [c015c1a8] device_release+0x78/0x80 (unreliable)
[c34bddb0] [c01354cc] kobject_cleanup+0x80/0xbc
[c34bddd0] [c01365f0] kref_put+0x54/0x6c
[c34bdde0] [c013543c] kobject_put+0x24/0x34
[c34bddf0] [c015c384] put_device+0x1c/0x2c
[c34bde00] [c0180e84] mdiobus_unregister+0x2c/0x58
...Though actually there is nothing broken, it just device
subsystem core expects another "pattern" of resource managment.This patch implement phy device's release function, thus
we're getting rid of this badness.Also small hidden bug fixed, hope none other introduced. ;-)
Signed-off-by: Anton Vorontsov
Acked-by: Andy Fleming
Signed-off-by: Jeff Garzik
02 Dec, 2007
1 commit
-
Allow phylib specification of cases where hardware needs to configure
PHYs for Internal Delay only on either RX or TX (not both).Signed-off-by: Kim Phillips
Tested-by: Anton Vorontsov
Acked-by: Li Yang
Signed-off-by: Jeff Garzik
11 Oct, 2007
1 commit
-
Keep track of disable_irq_nosync() invocations and call enable_irq() the
right number of times if work has been cancelled that would include them.Now that the call to flush_work_keventd() (problematic because of
rtnl_mutex being held) has been replaced by cancel_work_sync() another
issue has arisen and been left unresolved. As the MDIO bus cannot be
accessed from the interrupt context the PHY interrupt handler uses
disable_irq_nosync() to prevent from looping and schedules some work to be
done as a softirq, which, apart from handling the state change of the
originating PHY, is responsible for reenabling the interrupt. Now if the
interrupt line is shared by another device and a call to the softirq
handler has been cancelled, that call to enable_irq() never happens and the
other device cannot use its interrupt anymore as its stuck disabled.I decided to use a counter rather than a flag because there may be more
than one call to phy_change() cancelled in the queue -- a real one and a
fake one triggered by free_irq() if DEBUG_SHIRQ is used, if nothing else.
Therefore because of its nesting property enable_irq() has to be called the
right number of times to match the number disable_irq_nosync() was called
and restore the original state. This DEBUG_SHIRQ feature is also the
reason why free_irq() has to be called before cancel_work_sync().While at it I updated the comment about phy_stop_interrupts() being called
from `keventd' -- this is no longer relevant as the use of
cancel_work_sync() makes such an approach unnecessary. OTOH a similar
comment referring to flush_scheduled_work() in phy_stop() still applies as
using cancel_work_sync() there would be dangerous.Checked with checkpatch.pl and at the run time (with and without
DEBUG_SHIRQ).Signed-off-by: Maciej W. Rozycki
Cc: Andy Fleming
Cc: Jeff Garzik
Signed-off-by: Andrew Morton
Signed-off-by: Jeff Garzik
28 Apr, 2007
1 commit
-
The RGMII spec allows compliance for devices that implement an internal
delay on TXC or RXC inside the transmitter. This patch adds an RGMII_ID
definition to support RGMII-ID devices in the phylib.Signed-off-by: Kim Phillips
Signed-off-by: Jeff Garzik
02 Dec, 2006
2 commits
-
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
Signed-off-by: Jeff Garzik -
The uses some types and macros defined in
, , and ,
but fails to include these headers.Signed-off-by: Maciej W. Rozycki
patch-mips-2.6.18-20060920-include-phy-16
Signed-off-by: Jeff Garzik
20 Aug, 2006
1 commit
-
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
Signed-off-by: Andrew Morton
Signed-off-by: Jeff Garzik
13 Jan, 2006
1 commit
-
Add the PHY_ID_FMT macro to ensure that the format of the id string used by a
driver to match to its specific phy is consistent between the mdio_bus and the
driver.Signed-off-by: Kumar Gala
Signed-off-by: Andrew Morton
Signed-off-by: Jeff Garzik
06 Nov, 2005
1 commit
-
Adds a phy_mask field to struct mii_bus and uses it. This field
indicates each phy address to be ignored when probing the mdio bus.This support is needed for the fs_enet and ibm_emac drivers to be
converted to the generic phy layer among other drivers. Many systems
lock up on probing certain phy addresses or probing doesn't return
0xffff when nothing is found at the address. A new driver I'm
working on also makes use of this mask.Signed-off-by: Matt Porter
Signed-off-by: Jeff Garzik
29 Aug, 2005
1 commit
-
This patch adds back the code that was taken out, thus re-enabling:
* The PHY Layer to initialize without crashing
* Drivers to actually connect to PHYs
* The entire PHY Control LayerThis patch is used by the gianfar driver, and other drivers which are in
development.Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik
11 Aug, 2005
2 commits
-
- unexport symbols never used outside of home module
- remove dead code
- remove CONFIG_PHYCONTROL, make it unconditionally enabled -
Includes fixes for problems noted by Adrian Bunk, Andrew Morton,
and one other person lost in the annals of history (and email folders).
31 Jul, 2005
1 commit
-
ethernet drivers to remain as ignorant as is reasonable of the connected
PHY's design and operation details.Signed-off-by: Andy Fleming
Signed-off-by: Jeff Garzik