}
}
-static void printf_btr_rtcantl1(struct can_bittiming *bt, int hdr)
+static void printf_btr_ti_hecc(struct can_bittiming *bt, int hdr)
{
- uint16_t bcr0, bcr1;
-
if (hdr) {
- printf("__BCR0 __BCR1");
+ printf("%10s", "CANBTC");
} else {
- bcr1 = ((((bt->prop_seg + bt->phase_seg1 - 1) & 0x0F) << 12) |
- (((bt->phase_seg2 - 1) & 0x07) << 8) |
- (((bt->sjw - 1) & 0x03) << 4));
- bcr0 = ((bt->brp - 1) & 0xFF);
- printf("0x%04x 0x%04x", bcr0, bcr1);
+ uint32_t can_btc;
+
+ can_btc = (bt->phase_seg2 - 1) & 0x7;
+ can_btc |= ((bt->phase_seg1 + bt->prop_seg - 1)
+ & 0xF) << 3;
+ can_btc |= ((bt->sjw - 1) & 0x3) << 8;
+ can_btc |= ((bt->brp - 1) & 0xFF) << 16;
+
+ printf("0x%08x", can_btc);
}
}
.ref_clk = 33333333,
.printf_btr = printf_btr_sja1000,
},
+ {
+ .name = "mscan",
+ .tseg1_min = 4,
+ .tseg1_max = 16,
+ .tseg2_min = 2,
+ .tseg2_max = 8,
+ .sjw_max = 4,
+ .brp_min = 1,
+ .brp_max = 64,
+ .brp_inc = 1,
+
+ .ref_clk = 66660000, /* mpc5121 */
+ .printf_btr = printf_btr_sja1000,
+ },
{
.name = "at91",
.tseg1_min = 4,
.brp_max = 256,
.brp_inc = 1,
+ .ref_clk = 24000000, /* mx28 */
+ .printf_btr = printf_btr_flexcan,
+ },
+ {
+ .name = "flexcan",
+ .tseg1_min = 4,
+ .tseg1_max = 16,
+ .tseg2_min = 2,
+ .tseg2_max = 8,
+ .sjw_max = 4,
+ .brp_min = 1,
+ .brp_max = 256,
+ .brp_inc = 1,
+
.ref_clk = 49875000,
.printf_btr = printf_btr_flexcan,
},
.brp_max = 256,
.brp_inc = 1,
+ .ref_clk = 66000000,
+ .printf_btr = printf_btr_flexcan,
+ },
+ {
+ .name = "flexcan",
+ .tseg1_min = 4,
+ .tseg1_max = 16,
+ .tseg2_min = 2,
+ .tseg2_max = 8,
+ .sjw_max = 4,
+ .brp_min = 1,
+ .brp_max = 256,
+ .brp_inc = 1,
+
.ref_clk = 66500000,
.printf_btr = printf_btr_flexcan,
},
.printf_btr = printf_btr_mcp251x,
},
{
- .name = "rtcantl1",
- .tseg1_min = 4,
+ .name = "ti_hecc",
+ .tseg1_min = 1,
.tseg1_max = 16,
- .tseg2_min = 2,
+ .tseg2_min = 1,
.tseg2_max = 8,
.sjw_max = 4,
.brp_min = 1,
.brp_max = 256,
.brp_inc = 1,
- .ref_clk = 8000000,
- .printf_btr = printf_btr_rtcantl1,
- },
+ .ref_clk = 13000000,
+ .printf_btr = printf_btr_ti_hecc,
+ }
};
static long common_bitrates[] = {
{
struct can_priv *priv = netdev_priv(dev);
const struct can_bittiming_const *btc = priv->bittiming_const;
- long rate, best_rate = 0;
+ long rate = 0;
long best_error = 1000000000, error = 0;
int best_tseg = 0, best_brp = 0, brp = 0;
int tsegall, tseg = 0, tseg1 = 0, tseg2 = 0;
}
best_tseg = tseg / 2;
best_brp = brp;
- best_rate = rate;
if (error == 0)
break;
}