ENCX24J600: Fix some warnings. Update interface to use newer parameter passing to interrupt handlers
This commit is contained in:
parent
17ca117104
commit
241c1433ef
@ -98,13 +98,15 @@ struct stm32_lower_s
|
|||||||
{
|
{
|
||||||
const struct enc_lower_s lower; /* Low-level MCU interface */
|
const struct enc_lower_s lower; /* Low-level MCU interface */
|
||||||
xcpt_t handler; /* ENCX24J600 interrupt handler */
|
xcpt_t handler; /* ENCX24J600 interrupt handler */
|
||||||
|
FAR void *arg; /* Arguement that accompanies the handler */
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Private Function Prototypes
|
* Private Function Prototypes
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static int up_attach(FAR const struct enc_lower_s *lower, xcpt_t handler);
|
static int up_attach(FAR const struct enc_lower_s *lower, xcpt_t handler,
|
||||||
|
FAR void *arg);
|
||||||
static void up_enable(FAR const struct enc_lower_s *lower);
|
static void up_enable(FAR const struct enc_lower_s *lower);
|
||||||
static void up_disable(FAR const struct enc_lower_s *lower);
|
static void up_disable(FAR const struct enc_lower_s *lower);
|
||||||
|
|
||||||
@ -126,6 +128,7 @@ static struct stm32_lower_s g_enclower =
|
|||||||
.disable = up_disable
|
.disable = up_disable
|
||||||
},
|
},
|
||||||
.handler = NULL,
|
.handler = NULL,
|
||||||
|
.arg = NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -136,13 +139,15 @@ static struct stm32_lower_s g_enclower =
|
|||||||
* Name: struct enc_lower_s methods
|
* Name: struct enc_lower_s methods
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static int up_attach(FAR const struct enc_lower_s *lower, xcpt_t handler)
|
static int up_attach(FAR const struct enc_lower_s *lower, xcpt_t handler,
|
||||||
|
FAR void *arg)
|
||||||
{
|
{
|
||||||
FAR struct stm32_lower_s *priv = (FAR struct stm32_lower_s *)lower;
|
FAR struct stm32_lower_s *priv = (FAR struct stm32_lower_s *)lower;
|
||||||
|
|
||||||
/* Just save the handler for use when the interrupt is enabled */
|
/* Just save the handler for use when the interrupt is enabled */
|
||||||
|
|
||||||
priv->handler = handler;
|
priv->handler = handler;
|
||||||
|
priv->arg = arg;
|
||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -150,11 +155,15 @@ static void up_enable(FAR const struct enc_lower_s *lower)
|
|||||||
{
|
{
|
||||||
FAR struct stm32_lower_s *priv = (FAR struct stm32_lower_s *)lower;
|
FAR struct stm32_lower_s *priv = (FAR struct stm32_lower_s *)lower;
|
||||||
|
|
||||||
DEBUGASSERT(priv->handler);
|
DEBUGASSERT(priv->handler != NULL);
|
||||||
(void)stm32_gpiosetevent(GPIO_ENCX24J600_INTR, false, true, true,
|
(void)stm32_gpiosetevent(GPIO_ENCX24J600_INTR, false, true, true,
|
||||||
priv->handler, NULL);
|
priv->handler, priv->arg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* REVISIT: Since the interrupt is torn down completely, any interrupts
|
||||||
|
* the occur while "disabled" will be lost.
|
||||||
|
*/
|
||||||
|
|
||||||
static void up_disable(FAR const struct enc_lower_s *lower)
|
static void up_disable(FAR const struct enc_lower_s *lower)
|
||||||
{
|
{
|
||||||
(void)stm32_gpiosetevent(GPIO_ENCX24J600_INTR, false, true, true,
|
(void)stm32_gpiosetevent(GPIO_ENCX24J600_INTR, false, true, true,
|
||||||
|
@ -341,7 +341,7 @@ static void enc_txif(FAR struct enc_driver_s *priv);
|
|||||||
static void enc_pktif(FAR struct enc_driver_s *priv);
|
static void enc_pktif(FAR struct enc_driver_s *priv);
|
||||||
static void enc_rxabtif(FAR struct enc_driver_s *priv);
|
static void enc_rxabtif(FAR struct enc_driver_s *priv);
|
||||||
static void enc_irqworker(FAR void *arg);
|
static void enc_irqworker(FAR void *arg);
|
||||||
static int enc_interrupt(int irq, FAR void *context);
|
static int enc_interrupt(int irq, FAR void *context, FAR void *arg);
|
||||||
|
|
||||||
/* Watchdog timer expirations */
|
/* Watchdog timer expirations */
|
||||||
|
|
||||||
@ -1454,8 +1454,6 @@ static void enc_rxdispatch(FAR struct enc_driver_s *priv)
|
|||||||
FAR struct enc_descr_s *descr;
|
FAR struct enc_descr_s *descr;
|
||||||
struct enc_descr_s *next;
|
struct enc_descr_s *next;
|
||||||
|
|
||||||
int ret = ERROR;
|
|
||||||
|
|
||||||
/* Process the RX queue */
|
/* Process the RX queue */
|
||||||
|
|
||||||
descr = (FAR struct enc_descr_s *)sq_peek(&priv->rxqueue);
|
descr = (FAR struct enc_descr_s *)sq_peek(&priv->rxqueue);
|
||||||
@ -1475,7 +1473,7 @@ static void enc_rxdispatch(FAR struct enc_driver_s *priv)
|
|||||||
#ifdef CONFIG_NET_PKT
|
#ifdef CONFIG_NET_PKT
|
||||||
/* When packet sockets are enabled, feed the frame into the packet tap */
|
/* When packet sockets are enabled, feed the frame into the packet tap */
|
||||||
|
|
||||||
pkt_input(&priv->dev);
|
(void)pkt_input(&priv->dev);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* We only accept IP packets of the configured type and ARP packets */
|
/* We only accept IP packets of the configured type and ARP packets */
|
||||||
@ -1533,7 +1531,7 @@ static void enc_rxdispatch(FAR struct enc_driver_s *priv)
|
|||||||
|
|
||||||
/* Give the IPv6 packet to the network layer */
|
/* Give the IPv6 packet to the network layer */
|
||||||
|
|
||||||
ret = ipv6_input(&priv->dev);
|
(void)ipv6_input(&priv->dev);
|
||||||
|
|
||||||
/* Free the packet */
|
/* Free the packet */
|
||||||
|
|
||||||
@ -1976,9 +1974,12 @@ static void enc_irqworker(FAR void *arg)
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static int enc_interrupt(int irq, FAR void *context)
|
static int enc_interrupt(int irq, FAR void *context, FAR void *arg)
|
||||||
{
|
{
|
||||||
register FAR struct enc_driver_s *priv = &g_encx24j600[0];
|
FAR struct enc_driver_s *priv = &g_encx24j600[0];
|
||||||
|
|
||||||
|
DEBUGASSERT(arg != NULL);
|
||||||
|
priv = (FAR struct enc_driver_s *)arg;
|
||||||
|
|
||||||
/* In complex environments, we cannot do SPI transfers from the interrupt
|
/* In complex environments, we cannot do SPI transfers from the interrupt
|
||||||
* handler because semaphores are probably used to lock the SPI bus. In
|
* handler because semaphores are probably used to lock the SPI bus. In
|
||||||
@ -1995,7 +1996,8 @@ static int enc_interrupt(int irq, FAR void *context)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
priv->lower->disable(priv->lower);
|
priv->lower->disable(priv->lower);
|
||||||
return work_queue(ENCWORK, &priv->irqwork, enc_irqworker, (FAR void *)priv, 0);
|
return work_queue(ENCWORK, &priv->irqwork, enc_irqworker,
|
||||||
|
(FAR void *)priv, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -2829,7 +2831,7 @@ int enc_initialize(FAR struct spi_dev_s *spi,
|
|||||||
|
|
||||||
/* Attach the interrupt to the driver (but don't enable it yet) */
|
/* Attach the interrupt to the driver (but don't enable it yet) */
|
||||||
|
|
||||||
if (lower->attach(lower, enc_interrupt))
|
if (lower->attach(lower, enc_interrupt, priv) < 0)
|
||||||
{
|
{
|
||||||
/* We could not attach the ISR to the interrupt */
|
/* We could not attach the ISR to the interrupt */
|
||||||
|
|
||||||
|
@ -86,7 +86,8 @@
|
|||||||
|
|
||||||
struct enc_lower_s
|
struct enc_lower_s
|
||||||
{
|
{
|
||||||
int (*attach)(FAR const struct enc_lower_s *lower, xcpt_t handler);
|
int (*attach)(FAR const struct enc_lower_s *lower, xcpt_t handler,
|
||||||
|
FAR void *arg);
|
||||||
void (*enable)(FAR const struct enc_lower_s *lower);
|
void (*enable)(FAR const struct enc_lower_s *lower);
|
||||||
void (*disable)(FAR const struct enc_lower_s *lower);
|
void (*disable)(FAR const struct enc_lower_s *lower);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user