call trace of MCP2518 driver

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

call trace of MCP2518 driver

734 Views
tzeng015
Contributor II
hi all
my platform : imx8mm
Linux version : 5.10
I am in troubled in mcp251xfd-core.c of kernel driver. When I setting the data , it is alwayse call trace. I traced the mcp251xfd-core.c and I find the problem is mcp251xfd_irq. Please see the attach file. static irqreturn_t mcp251xfd_irq(int irq, void *dev_id) { struct mcp251xfd_priv *priv = dev_id; irqreturn_t handled = IRQ_NONE; int err; int val; if (priv->rx_int) do { int rx_pending; rx_pending = gpiod_get_value_cansleep(priv->rx_int); if (!rx_pending) break; err = mcp251xfd_handle(priv, rxif); if (err) goto out_fail; handled = IRQ_HANDLED; } while (1); do { u32 intf_pending, intf_pending_clearable; bool set_normal_mode = false; err = regmap_bulk_read(priv->map_reg, MCP251XFD_REG_INT, &priv->regs_status, sizeof(priv->regs_status) / sizeof(u32)); if (err) goto out_fail; intf_pending = FIELD_GET(MCP251XFD_REG_INT_IF_MASK, priv->regs_status.intf) & FIELD_GET(MCP251XFD_REG_INT_IE_MASK, priv->regs_status.intf); if (!(intf_pending)) return handled; } I find the this (1) handled = IRQ_NONE; (2) intf_pending = 0 (3) if (!(intf_pending)) return handled; handled = IRQ_NONE so this is the call trace reaseon. Summary : Can you help me why intf_pending is 0. I already seeting the INT register but it doesn't any chanage of low bit in interrupt function . Please help me . thank you
0 Kudos
Reply
0 Replies