OSDN Git Service

can: rcar_canfd: rcar_canfd_channel_probe(): register the CAN device when fully ready
authorLad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Mon, 21 Feb 2022 22:59:35 +0000 (22:59 +0000)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 25 Feb 2022 16:46:54 +0000 (17:46 +0100)
Register the CAN device only when all the necessary initialization is
completed. This patch makes sure all the data structures and locks are
initialized before registering the CAN device.

Link: https://lore.kernel.org/all/20220221225935.12300-1-prabhakar.mahadev-lad.rj@bp.renesas.com
Reported-by: Pavel Machek <pavel@denx.de>
Signed-off-by: Lad Prabhakar <prabhakar.mahadev-lad.rj@bp.renesas.com>
Reviewed-by: Pavel Machek <pavel@denx.de>
Reviewed-by: Ulrich Hecht <uli+renesas@fpond.eu>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/rcar/rcar_canfd.c

index b7dc1c3..acd7472 100644 (file)
@@ -1715,15 +1715,15 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch,
 
        netif_napi_add(ndev, &priv->napi, rcar_canfd_rx_poll,
                       RCANFD_NAPI_WEIGHT);
+       spin_lock_init(&priv->tx_lock);
+       devm_can_led_init(ndev);
+       gpriv->ch[priv->channel] = priv;
        err = register_candev(ndev);
        if (err) {
                dev_err(&pdev->dev,
                        "register_candev() failed, error %d\n", err);
                goto fail_candev;
        }
-       spin_lock_init(&priv->tx_lock);
-       devm_can_led_init(ndev);
-       gpriv->ch[priv->channel] = priv;
        dev_info(&pdev->dev, "device registered (channel %u)\n", priv->channel);
        return 0;