From c298996f1c6f060337cd1091553159077a23fc73 Mon Sep 17 00:00:00 2001 From: lsm <1355280398@qq.com> Date: Fri, 27 Dec 2024 09:54:15 +0000 Subject: [PATCH] =?UTF-8?q?update=20drivers/net/can/spi/mcp251x.c.=20?= =?UTF-8?q?=E9=81=BF=E5=85=8D=E5=9C=A8=20mcp251x=5Fopen=20=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E4=B8=AD=E6=8C=81=E6=9C=89=E9=94=81=E7=9A=84=E6=83=85?= =?UTF-8?q?=E5=86=B5=E4=B8=8B=E8=AF=B7=E6=B1=82=E4=B8=AD=E6=96=AD=E3=80=82?= =?UTF-8?q?=E9=80=9A=E8=BF=87=E8=B0=83=E6=95=B4=E9=94=81=E7=9A=84=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E6=97=B6=E6=9C=BA=EF=BC=8C=E7=A1=AE=E4=BF=9D=E4=B8=AD?= =?UTF-8?q?=E6=96=AD=E5=A4=84=E7=90=86=E7=A8=8B=E5=BA=8F=E5=9C=A8=E6=B2=A1?= =?UTF-8?q?=E6=9C=89=E4=BA=89=E7=94=A8=E5=90=8C=E4=B8=80=E4=B8=AA=E9=94=81?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E4=B8=8B=E8=BF=9B=E8=A1=8C=EF=BC=8C?= =?UTF-8?q?=E4=BB=8E=E8=80=8C=E8=A7=A3=E5=86=B3=E4=BA=86=E6=BD=9C=E5=9C=A8?= =?UTF-8?q?=E7=9A=84=E6=AD=BB=E9=94=81=E9=97=AE=E9=A2=98=E3=80=82=20?= =?UTF-8?q?=E9=94=81=E7=9A=84=E9=87=8A=E6=94=BE=E6=97=B6=E6=9C=BA=EF=BC=9A?= =?UTF-8?q?=20=E5=B0=86=20mutex=5Funlock(&priv->mcp=5Flock)=20=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E5=88=B0=E8=AF=B7=E6=B1=82=E4=B8=AD=E6=96=AD=EF=BC=88?= =?UTF-8?q?request=5Fthreaded=5Firq=EF=BC=89=E4=B9=8B=E5=90=8E=E3=80=82?= =?UTF-8?q?=E8=BF=99=E6=A0=B7=EF=BC=8C=E5=9C=A8=E8=AF=B7=E6=B1=82=E4=B8=AD?= =?UTF-8?q?=E6=96=AD=E4=B9=8B=E5=89=8D=EF=BC=8Cpriv->mcp=5Flock=20?= =?UTF-8?q?=E5=B7=B2=E7=BB=8F=E8=A2=AB=E9=87=8A=E6=94=BE=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E4=BA=86=E4=B8=AD=E6=96=AD=E5=A4=84=E7=90=86=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E5=9C=A8=E8=AF=95=E5=9B=BE=E8=8E=B7=E5=8F=96=E5=90=8C?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E9=94=81=E6=97=B6=E5=8F=AF=E8=83=BD=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E6=AD=BB=E9=94=81=E3=80=82=20=E4=B8=AD?= =?UTF-8?q?=E6=96=AD=E8=AF=B7=E6=B1=82=E5=90=8E=E7=9A=84=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=9A=20=E5=9C=A8=E5=8E=9F=E4=BB=A3=E7=A0=81=E4=B8=AD?= =?UTF-8?q?=EF=BC=8Crequest=5Fthreaded=5Firq=20=E8=B0=83=E7=94=A8=E4=B9=8B?= =?UTF-8?q?=E5=89=8D=EF=BC=8C=E9=94=81=E4=B8=80=E7=9B=B4=E4=BF=9D=E6=8C=81?= =?UTF-8?q?=E7=9D=80=E3=80=82=E9=80=9A=E8=BF=87=E5=B0=86=E9=94=81=E9=87=8A?= =?UTF-8?q?=E6=94=BE=E6=97=B6=E6=9C=BA=E8=B0=83=E6=95=B4=E5=88=B0=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E4=B8=AD=E6=96=AD=E4=B9=8B=E5=90=8E=EF=BC=8C=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E8=AE=A9=E4=B8=AD=E6=96=AD=E5=A4=84=E7=90=86=E7=A8=8B?= =?UTF-8?q?=E5=BA=8F=E5=9C=A8=20priv->mcp=5Flock=20=E9=94=81=E8=A2=AB?= =?UTF-8?q?=E9=87=8A=E6=94=BE=E5=90=8E=E9=A1=BA=E5=88=A9=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=EF=BC=8C=E9=81=BF=E5=85=8D=E4=BA=86=E5=9C=A8=E4=B8=AD=E6=96=AD?= =?UTF-8?q?=E5=A4=84=E7=90=86=E6=97=B6=E5=8F=91=E7=94=9F=E6=AD=BB=E9=94=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: lsm <1355280398@qq.com> --- drivers/net/can/spi/mcp251x.c | 38 ++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) diff --git a/drivers/net/can/spi/mcp251x.c b/drivers/net/can/spi/mcp251x.c index 88d065718e99..22126d4077c0 100644 --- a/drivers/net/can/spi/mcp251x.c +++ b/drivers/net/can/spi/mcp251x.c @@ -1223,16 +1223,36 @@ static int mcp251x_open(struct net_device *net) priv->tx_skb = NULL; priv->tx_len = 0; - if (!dev_fwnode(&spi->dev)) - flags = IRQF_TRIGGER_FALLING; + if (!dev_fwnode(&spi->dev)) + flags = IRQF_TRIGGER_FALLING; - ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist, - flags | IRQF_ONESHOT, dev_name(&spi->dev), - priv); - if (ret) { - dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq); - goto out_close; - } + ret = mcp251x_hw_wake(spi); + if (ret) + goto out_free_irq; + + ret = mcp251x_setup(net, spi); + if (ret) + goto out_free_irq; + + ret = mcp251x_set_normal_mode(spi); + if (ret) + goto out_free_irq; + + can_led_event(net, CAN_LED_EVENT_OPEN); + + netif_wake_queue(net); + + // 在此处释放锁 + mutex_unlock(&priv->mcp_lock); + + // 请求中断 + ret = request_threaded_irq(spi->irq, NULL, mcp251x_can_ist, + flags | IRQF_ONESHOT, dev_name(&spi->dev), + priv); + if (ret) { + dev_err(&spi->dev, "failed to acquire irq %d\n", spi->irq); + goto out_close; + } ret = mcp251x_hw_wake(spi); if (ret) -- Gitee