]> www.infradead.org Git - users/hch/misc.git/commitdiff
can: rockchip_canfd: fix broken quirks checks
authorWeizhao Ouyang <o451686892@gmail.com>
Mon, 24 Mar 2025 11:44:16 +0000 (19:44 +0800)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Tue, 15 Apr 2025 10:23:10 +0000 (12:23 +0200)
First get the devtype_data then check quirks.

Fixes: bbdffb341498 ("can: rockchip_canfd: add quirk for broken CAN-FD support")
Signed-off-by: Weizhao Ouyang <o451686892@gmail.com>
Reviewed-by: Vincent Mailhol <mailhol.vincent@wanadoo.fr>
Link: https://patch.msgid.link/20250324114416.10160-1-o451686892@gmail.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/rockchip/rockchip_canfd-core.c

index 46201c126703ced892469aaaa17bf224d9905103..7107a37da36c7fe9d7da5d699d9c6b2238d6c510 100644 (file)
@@ -902,15 +902,16 @@ static int rkcanfd_probe(struct platform_device *pdev)
        priv->can.data_bittiming_const = &rkcanfd_data_bittiming_const;
        priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK |
                CAN_CTRLMODE_BERR_REPORTING;
-       if (!(priv->devtype_data.quirks & RKCANFD_QUIRK_CANFD_BROKEN))
-               priv->can.ctrlmode_supported |= CAN_CTRLMODE_FD;
        priv->can.do_set_mode = rkcanfd_set_mode;
        priv->can.do_get_berr_counter = rkcanfd_get_berr_counter;
        priv->ndev = ndev;
 
        match = device_get_match_data(&pdev->dev);
-       if (match)
+       if (match) {
                priv->devtype_data = *(struct rkcanfd_devtype_data *)match;
+               if (!(priv->devtype_data.quirks & RKCANFD_QUIRK_CANFD_BROKEN))
+                       priv->can.ctrlmode_supported |= CAN_CTRLMODE_FD;
+       }
 
        err = can_rx_offload_add_manual(ndev, &priv->offload,
                                        RKCANFD_NAPI_WEIGHT);