mirror of
https://github.com/linux-can/can-utils.git
synced 2026-08-05 06:20:00 +02:00
can-calc-bit-timing: add can_fixup_bittiming to alg
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
This commit is contained in:
@@ -143,6 +143,8 @@ struct calc_bittiming_const {
|
||||
struct alg {
|
||||
int (*calc_bittiming)(struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc);
|
||||
int (*fixup_bittiming)(struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc);
|
||||
const char *name;
|
||||
};
|
||||
|
||||
@@ -1472,17 +1474,6 @@ static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt,
|
||||
#undef can_calc_bittiming
|
||||
#undef can_update_spt
|
||||
|
||||
static const struct alg alg_list[] = {
|
||||
/* 1st will be default */
|
||||
{
|
||||
.calc_bittiming = can_calc_bittiming_v4_8,
|
||||
.name = "v4.8",
|
||||
}, {
|
||||
.calc_bittiming = can_calc_bittiming_v3_18,
|
||||
.name = "v3.18",
|
||||
},
|
||||
};
|
||||
|
||||
static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt,
|
||||
const struct can_bittiming_const *btc)
|
||||
{
|
||||
@@ -1523,6 +1514,19 @@ static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const struct alg alg_list[] = {
|
||||
/* 1st will be default */
|
||||
{
|
||||
.calc_bittiming = can_calc_bittiming_v4_8,
|
||||
.fixup_bittiming = can_fixup_bittiming,
|
||||
.name = "v4.8",
|
||||
}, {
|
||||
.calc_bittiming = can_calc_bittiming_v3_18,
|
||||
.fixup_bittiming = can_fixup_bittiming,
|
||||
.name = "v3.18",
|
||||
},
|
||||
};
|
||||
|
||||
static __u32 get_cia_sample_point(__u32 bitrate)
|
||||
{
|
||||
__u32 sampl_pt;
|
||||
@@ -1575,7 +1579,7 @@ static void print_bittiming_one(const struct alg *alg,
|
||||
if (ref_bt) {
|
||||
bt = *ref_bt;
|
||||
|
||||
if (can_fixup_bittiming(&dev, &bt, bittiming_const)) {
|
||||
if (alg->fixup_bittiming(&dev, &bt, bittiming_const)) {
|
||||
printf("%8d ***parameters exceed controller's range***\n", bitrate_nominal);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user