Commit Graph

53 Commits (9b639299747342a39b3fad2c67bccc103e0c248c)

Author SHA1 Message Date
Marc Kleine-Budde 9b63929974 can-calc-bit-timing: mark several structs and members as const
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2022-01-16 12:24:04 +01:00
Marc Kleine-Budde 258ea5a9ba can-calc-bit-timing: fix whitespace
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2022-01-15 15:10:19 +01:00
Marc Kleine-Budde e03f3e1049 can-calc-bit-timing: can_fixup_bittiming(): change type of tseg1 and alltseg to unsigned int
All timing calculation is done with unsigned integers, so change type
of tseg1 and alltseg to unsigned int, too.

Link: https://lore.kernel.org/all/20211013130653.1513627-1-mkl@pengutronix.de
Link: https://github.com/linux-can/can-utils/pull/314
Reported-by: Gary Bisson <bisson.gary@gmail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-10-13 15:21:56 +02:00
Kurt Van Dijck 37f316ebc3 can-calc-bittiming: add mcan
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
2021-06-24 14:16:22 +02:00
Kurt Van Dijck e9a298ec21 can-calc-bittiming: add c_can
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
2021-06-24 05:19:15 +02:00
Kurt Van Dijck e19b5abb5c can-calc-bittiming: add stm32 bxcan
Signed-off-by: Kurt Van Dijck <dev.kurt@vandijck-laurijssen.be>
2021-06-24 05:19:11 +02:00
Kristian Sloth Lauszus f11949b7d8 Use the name member to clarify the OSC clock connected to the mcp251x 2021-03-23 00:35:38 +01:00
Kristian Sloth Lauszus b1312a03f0 Added OSC with a clock of 8 MHz to the mcp251x reference clocks 2021-03-23 00:20:19 +01:00
Kristian Sloth Lauszus 890dcc4735 Added comment to clarify that the mcp251x uses half of the external OSC clock as the base clock 2021-03-23 00:19:56 +01:00
Marc Kleine-Budde 913311fc15 can-calc-bit-timing: add support to decode user supplied bit timing parameters
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Marc Kleine-Budde ef8cea79f0 can-calc-bit-timing: move bit rate calculation and print loop into separate function
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Marc Kleine-Budde d72438243a can-calc-bit-timing: add support for mcp251xfd
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Marc Kleine-Budde 3fc6c05ce2 can-calc-bit-timing: mcp251x: replace 16MHz refclock by 10MHz
The mcp251x uses half of the external OSC rate as CAN clock. In real world
applications external OSC with a clock of 16MHz or 20MHz are used. Adjust the
example ref clocks accordingly.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Marc Kleine-Budde dd315316d8 can-calc-bit-timing: mscan: remove printf_btr_sja1000
It makes no sense to print the mscan bit timing register values using the
sja1000 printf function.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Marc Kleine-Budde 84bc52d6ff can-calc-bit-timing: make btc->printf_btr callback optional
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2021-02-10 17:25:08 +01:00
Rosen Penev b153fe3f35
clang-tidy: sort includes alphabetically
Found with llvm-include-order

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-10-12 23:28:58 -07:00
Rosen Penev 3e85fc5422
clang-tidy: fix cmp function usage
Found with bugprone-suspicious-string-compare

Signed-off-by: Rosen Penev <rosenp@gmail.com>
2020-10-12 23:28:58 -07:00
Marc Kleine-Budde 0f9c69c193 can-calc-bit-timing: fix warning
although it looks like a false positive:

/home/travis/build/linux-can/can-utils/can-calc-bit-timing.c: In function ‘print_bit_timing.isra.6’:
/home/travis/build/linux-can/can-utils/can-calc-bit-timing.c:447:42: warning: ‘tseg2’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  unsigned int brp, tsegall, tseg, tseg1, tseg2;
                                          ^
/home/travis/build/linux-can/can-utils/can-calc-bit-timing.c:447:35: warning: ‘tseg1’ may be used uninitialized in this function [-Wmaybe-uninitialized]
  unsigned int brp, tsegall, tseg, tseg1, tseg2;
                                   ^

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2020-06-22 12:41:48 +02:00
Oliver Hartkopp 1665abf46f can-utils: fix missing include of libgen.h
The basename() function needs libgen.h to be included as otherwise this
will fail to compile in some environments.

Reported-by: Robert Schwebel <r.schwebel@pengutronix.de>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2020-04-28 19:14:52 +02:00
Alexander GQ Gerasiov 211c5cea49 can-calc-bit-timing.c: Reformat help/usage output to be compatible with help2man.
Gbp-Pq: Name 0020-can-calc-bit-timing.c-Reformat-help-usage-output-to-.patch
2020-04-27 08:20:09 +03:00
Alexander Gerasiov f4a9e5b57d can-calc-bit-timing.c: Reformat help/usage output to be compatible with help2man.
Signed-off-by: Alexander Gerasiov <gq@debian.org>

Gbp-Pq: Name 0003-can-calc-bit-timing.c-Reformat-help-usage-output-to-.patch
2020-04-27 08:20:08 +03:00
Yegor Yefremov 59f92965b9 Relicense GPL-2.0-or-later files to GPL-2.0-only
This way all licenses in the project will be homogenised.

Acked-by: Marc Kleine-Budde <mkl@pengutronix.de>
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Acked-by: Sven Schmitt <sven.schmitt@gmx.net>
Acked-by: Oleksij Rempel <ore@pengutronix.de>
Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Acked-by: Brennan Ashton <bashton@brennanashton.com>
Acked-By: IOhannes m zmölnig <zmoelnig@iem.at>
Acked-by: Frank Theile <ftheile@grundfos.com>
Acked-by: Wolfgang Grandegger <wg@grandegger.com>
Acked-by: Jeremiah Mahler <jmmahler@gmail.com>
Acked-by: Jonathan Challinger <mr.challinger@gmail.com>
Acked-by: Cheng-Lung Lee <chenglung@gmail.com>
Acked-by: Ramesh Shanmugasundaram <rashanmu@gmail.com>
Acked-by: Mans Rullgard <mans@mansr.com>
Acked-by: Søren Holm <sgh@sgh.dk>
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
2019-07-10 14:01:23 +02:00
Yegor Yefremov 7b7331976a Add SPDX identifiers
Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
2019-06-19 12:24:24 +02:00
Marc Kleine-Budde b70a76670d can-calc-bit-timing: fix getopt typo: p -> q
Reported-by: Jon Neal <reportingsjr@gmail.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-05-24 08:34:44 +02:00
Marc Kleine-Budde 2920d41731 can-calc-bit-timing: add name parameter to ref clock
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-15 12:05:56 +02:00
Marc Kleine-Budde 588a19c95d can-calc-bit-timing: make it possible to have several ref clocks per bit timing definition
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-15 12:04:43 +02:00
Marc Kleine-Budde 6265825182 can-calc-bit-timint: rename bitrate -> bitrate_nominal
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-15 12:03:28 +02:00
Marc Kleine-Budde 798afd077a can-calc-bit-timint: rename spt_target, sample_point -> spt_nominal
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-15 12:02:18 +02:00
Marc Kleine-Budde 44a2900bd8 can-calc-bit-timing: better sample point calculation
This patch tries to optimize the calculation of the sample point. To
understand what it does have a look at the original implementation.

If there is a combination of timing parameters where both the bitrate
and sample point error are 0 the current implementation will find it.

However if the reference clock doesn't allow an optimal bitrate (this
means the bitrate error is always != 0) there might be several timing
parameter combinations having the same bitrate error. The original
implementation will allways choose the one with the highest brp. The
actual sample point error isn't taken into account.

This patch changes the algorithm to minimize the sample point error,
too. Now a brp/tseg combination is accepted as better if one of these
condition are fulfilled:
1) the bit rate error must be smaller, or
2) the bit rate error must be equal and
   the sample point error must be equal or smaller

If a smaller bit rate error is found the sample point error is reset.
This ensures that we first optimize for small bit rate error and then
for small sample point errors.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:01 +02:00
Marc Kleine-Budde e36391c7d9 can-calc-bit-timing: introduce CAN_CALC_SYNC_SEG
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:01 +02:00
Marc Kleine-Budde 94e40d3c2d can-calc-bit-timing: fix checkpatch warnings
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:01 +02:00
Marc Kleine-Budde 197700d26e can-calc-bit-timing: import current can_calc_bittiming() from kernel
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:01 +02:00
Marc Kleine-Budde 95f62518d1 can-calc-bit-timing: import helper macros from kernel
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:01 +02:00
Marc Kleine-Budde 9ae9e7da02 can-calc-bit-timing: use "struct can_bittiming_const" from uapi headers
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:13:00 +02:00
Marc Kleine-Budde bc41784773 can-calc-bit-timing: make use of bool
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:12:16 +02:00
Marc Kleine-Budde a31b27f420 can-calc-bit-timing: fix checkpatch warnings
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:12:16 +02:00
Marc Kleine-Budde 8c703db361 can-calc-bit-timing: add support flexcan with 30MHz refclock
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-04-13 13:11:53 +02:00
Ramesh Shanmugasundaram c689803204 can-calc-bit-timing: add support for rcar_can
Signed-off-by: Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2016-02-29 11:27:05 +01:00
Marc Kleine-Budde 58716c1c29 can-calc-bit-timing: add some more timings for mscan and flexcan
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2015-06-30 21:04:13 +02:00
Wolfgang Grandegger 67a2bdcd33 can-calc-bit-timing: add a proper GNU license agreement
Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-02-27 22:08:04 +01:00
Brennan Ashton 31936b5a17 can-calc-bit-timing: fix MCP251x bit rate calculation
This patch adds the missing -1 to "bt->brp", as correctly used in the kernel
driver.

Signed-off-by: Brennan Ashton <bashton@brennanashton.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2014-01-06 10:35:45 +01:00
Uwe Kleine-König 03c1bacfde can-utils: trivial: fix typos concerning "separation" and "useful"
Signed-off-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de>
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2013-08-15 21:09:27 +02:00
Marc Kleine-Budde ddef031408 can-calc-bit-timing: add support for ti_hecc
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2012-11-26 21:57:57 +01:00
Marc Kleine-Budde 423f018b30 can-calc-bit-timing: add 66.66 MHz mscan refclock
Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2012-11-26 21:57:54 +01:00
Marc Kleine-Budde 3c89d3ab55 can-calc-bit-timing: add 24 and 66 MHz flexcan ref clock
as found on some imx boards.

Acked-by: Oliver Hartkopp <socketcan@hartkopp.net>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2012-11-26 21:57:52 +01:00
Oliver Hartkopp 589fa16c27 removed unused variable warnings by removing the variables
Signed-off-by: Oliver Hartkopp <socketcan@hartkopp.net>
2012-11-14 20:43:55 +01:00
Marc Kleine-Budde f5576a9833 can-calc-bit-timing: remove rtcantl1
No one can verify the timing parameters to be correct.

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2010-07-20 14:10:38 +00:00
Marc Kleine-Budde 5c74d8d806 can-calc-bit-timing: add more can controller definitions and ref clocks
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2010-07-20 13:43:20 +00:00
Marc Kleine-Budde b9f9cd0c62 can-calc-bit-timing: calculate bit timings for all known controllers by default
When testing or improving the bit timing algorithm, you're probably
interested in the values of all can controllers. Further you might not
know the all reference clocks of the controllers.

This patch add a "ref_clock" member to the "struct can_bittiming_const"
that holds the reference clock of the controller in Hz.

By default now the bit timing is calculated for all known can
controllers with the default ref_clock defined in "can_bittiming_const".

It's still possible to overwrite the ref clock with the command line
option "-c".

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2010-07-20 13:43:16 +00:00
Marc Kleine-Budde 26488b16e6 can-calc-bit-timing: improve printing of bit timing parameters
This patch adds additional fields when printing the bit timing
parameters. Now the real bitrate the nominal and the real sample point
as well as the error of the sample point is displayed.

The output now looks like this:

Bit timing parameters for at91 with 100.000000 MHz ref clock
nominal                                 real Bitrt   nom  real SampP
Bitrate TQ[ns] PrS PhS1 PhS2 SJW BRP Bitrate Error SampP SampP Error     CAN_BR
1000000     50   7    7    5   1   5 1000000  0.0% 75.0% 75.0%  0.0% 0x00040664
 800000     50   8    8    8   1   5  800000  0.0% 80.0% 68.0% 15.0% 0x00040777
 500000    100   8    8    3   1  10  500000  0.0% 87.5% 85.0%  2.9% 0x00090772
 250000    250   6    7    2   1  25  250000  0.0% 87.5% 87.5%  0.0% 0x00180561
 125000    500   6    7    2   1  50  125000  0.0% 87.5% 87.5%  0.0% 0x00310561
 100000    500   8    8    3   1  50  100000  0.0% 87.5% 85.0%  2.9% 0x00310772
  50000   1250   6    7    2   1 125   50000  0.0% 87.5% 87.5%  0.0% 0x007c0561
  20000 ***bitrate not possible***
  10000 ***bitrate not possible***

Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
2010-07-20 13:43:12 +00:00