Standardize a PHY interrupt attachment interface
This commit is contained in:
parent
d79c311508
commit
c52f634b79
@ -273,6 +273,10 @@ if ARCH_HAVE_PHY
|
|||||||
|
|
||||||
comment "External Ethernet PHY Device Support"
|
comment "External Ethernet PHY Device Support"
|
||||||
|
|
||||||
|
config ARCH_PHY_INTERRUPT
|
||||||
|
bool
|
||||||
|
default n
|
||||||
|
|
||||||
choice
|
choice
|
||||||
prompt "Board PHY Selection (ETH0)"
|
prompt "Board PHY Selection (ETH0)"
|
||||||
default ETH0_PHY_NONE
|
default ETH0_PHY_NONE
|
||||||
|
@ -1446,6 +1446,63 @@ uint8_t board_buttons(void);
|
|||||||
xcpt_t board_button_irq(int id, xcpt_t irqhandler);
|
xcpt_t board_button_irq(int id, xcpt_t irqhandler);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
* Name: arch_phy_irq
|
||||||
|
*
|
||||||
|
* Description:
|
||||||
|
* This function may be called to register an interrupt handler that will
|
||||||
|
* be called when a PHY interrupt occurs. This function both attaches
|
||||||
|
* the interrupt handler and enables the interrupt if 'handler' is non-
|
||||||
|
* NULL. If handler is NULL, then the interrupt is detached and disabled
|
||||||
|
* instead.
|
||||||
|
*
|
||||||
|
* This interrupt may or may not be available on a given platform depending
|
||||||
|
* on how the network hardware architecture is implemented. In a typical
|
||||||
|
* case, the PHY interrupt is provided to board-level logic as a GPIO
|
||||||
|
* interrupt (in which case this is a board-specific interface and really
|
||||||
|
* should be called board_phy_irq()); In other cases, the PHY interrupt
|
||||||
|
* may be cause by the chip's MAC logic (in which case arch_phy_irq()) is
|
||||||
|
* an appropriate name. Other other boards, there may be no PHY interrupts
|
||||||
|
* available at all. If client attachable PHY interrupts are available
|
||||||
|
* from the board or from the chip, then CONFIG_ARCH_PHY_INTERRUPT should
|
||||||
|
* be defined to indicate that fact.
|
||||||
|
*
|
||||||
|
* Typical usage:
|
||||||
|
* a. OS service logic (not application logic*) attaches to the PHY
|
||||||
|
* PHY interrupt.
|
||||||
|
* b. When the PHY interrupt occurs, work should be scheduled on the
|
||||||
|
* worker thread (or perhaps a dedicated application thread).
|
||||||
|
* c. That worker thread should use the SIOCGMIIPHY, SIOCGMIIREG,
|
||||||
|
* and SIOCSMIIREG ioctl calls** to communicate with the PHY,
|
||||||
|
* determine what network event took place (Link Up/Down?), and
|
||||||
|
* take the appropriate actions.
|
||||||
|
*
|
||||||
|
* * This is an OS internal interface and should not be used from
|
||||||
|
* application space.
|
||||||
|
* ** This interrupt is really of no use if the Ethernet MAC driver
|
||||||
|
* does not support these ioctl calls.
|
||||||
|
*
|
||||||
|
* Input Parameters:
|
||||||
|
* intf - Identifies the network interface. For example "eth0". Only
|
||||||
|
* useful on platforms that support multiple Ethernet interfaces
|
||||||
|
* and, hence, multiple PHYs and PHY interrupts.
|
||||||
|
* handler - The client interrupt handler to be invoked when the PHY
|
||||||
|
* asserts an interrupt. Must reside in OS space, but can
|
||||||
|
* signal tasks in user space. A value of NULL can be passed
|
||||||
|
* in order to detach and disable the PHY interrupt.
|
||||||
|
*
|
||||||
|
* Returned Value:
|
||||||
|
* The previous PHY interrupt handler address is returned. This allows you
|
||||||
|
* to temporarily replace an interrupt handler, then restore the original
|
||||||
|
* interrupt handler. NULL is returned if there is was not handler in
|
||||||
|
* place when the call was made.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef CONFIG_ARCH_PHY_INTERRUPT
|
||||||
|
xcpt_t arch_phy_irq(FAR const char *intf, xcpt_t handler);
|
||||||
|
#endif
|
||||||
|
|
||||||
/************************************************************************************
|
/************************************************************************************
|
||||||
* Relay control functions
|
* Relay control functions
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user