struct rcar_canfd_hw_info {
        enum rcanfd_chip_id chip_id;
        u8 max_channels;
+       u8 postdiv;
        /* hardware features */
        unsigned shared_global_irqs:1;  /* Has shared global irqs */
 };
 static const struct rcar_canfd_hw_info rcar_gen3_hw_info = {
        .chip_id = RENESAS_RCAR_GEN3,
        .max_channels = 2,
+       .postdiv = 2,
        .shared_global_irqs = 1,
 };
 
 static const struct rcar_canfd_hw_info rzg2l_hw_info = {
        .chip_id = RENESAS_RZG2L,
+       .postdiv = 1,
        .max_channels = 2,
 };
 
 static const struct rcar_canfd_hw_info r8a779a0_hw_info = {
        .chip_id = RENESAS_R8A779A0,
        .max_channels = 8,
+       .postdiv = 2,
        .shared_global_irqs = 1,
 };
 
        }
        fcan_freq = clk_get_rate(gpriv->can_clk);
 
-       if (gpriv->fcan == RCANFD_CANFDCLK && info->chip_id != RENESAS_RZG2L)
+       if (gpriv->fcan == RCANFD_CANFDCLK)
                /* CANFD clock is further divided by (1/2) within the IP */
-               fcan_freq /= 2;
+               fcan_freq /= info->postdiv;
 
        addr = devm_platform_ioremap_resource(pdev, 0);
        if (IS_ERR(addr)) {