Re: Queries on CAN frame work

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 18.03.2022 06:12:30, Srinivas Neeli wrote:
> > Are you using the mainline xilinx_can driver? The "ip" command says, you're
> > using:
> 
> Yes , mainline and internal drivers are same.

No, you are not. As explained in my last mail, there's no struct
can_bittiming_const in the mainline driver that matches your "ip"
output.

> Xilinx maintains common driver for multiple CAN and CANFD  IP's.
> Xilinx supports below CAN IP's:
> xlnx,zynq-can-1.0 (zynq platform & zynqmp platform)
> xlnx,axi-can-1.00.a ( Soft IP version 1.00)
> xlnx,canfd-1.0 (Soft canfd ip version 1.0)
> xlnx,canfd-2.0(Soft canfd ip Version 2.0)
> xlnx,canfd2.0 equal to versal canfd ip, so using same compatible string for both.
> 
> For each ip sjw_max and brp values are different.
> Due to this reason created multiple bit timing structures.

ACK. But your driver is obviously different to the mainline driver (see
above).

> > >  sjw 1..128  brp 1..256
> > > dsjw 1..16  dbrp 1..256
> > 
> > Looking at the mainline xilinx driver, we have:
> > 
> > | /* CAN Bittiming constants as per Xilinx CAN specs */ static const
> > | struct can_bittiming_const xcan_bittiming_const = {
> > | 	.name = DRIVER_NAME,
> > | 	.tseg1_min = 1,
> > | 	.tseg1_max = 16,
> > | 	.tseg2_min = 1,
> > | 	.tseg2_max = 8,
> > | 	.sjw_max = 4,
> >                    ^
> > Does not match due to "sjw 1..128".
> > 
> > | 	.brp_min = 1,
> > | 	.brp_max = 256,
> > | 	.brp_inc = 1,
> > | };
> > |
> > | /* AXI CANFD Arbitration Bittiming constants as per AXI CANFD 1.0 spec
> > | */ static const struct can_bittiming_const xcan_bittiming_const_canfd = {
> > | 	.name = DRIVER_NAME,
> > | 	.tseg1_min = 1,
> > | 	.tseg1_max = 64,
> > | 	.tseg2_min = 1,
> > | 	.tseg2_max = 16,
> > | 	.sjw_max = 16,
> >                    ^^
> > Does not match due to "sjw 1..128".
> > 
> > | 	.brp_min = 1,
> > | 	.brp_max = 256,
> > | 	.brp_inc = 1,
> > | };
> > |
> > | /* AXI CANFD Data Bittiming constants as per AXI CANFD 1.0 specs */
> > | static struct can_bittiming_const xcan_data_bittiming_const_canfd = {
> > | 	.name = DRIVER_NAME,
> > | 	.tseg1_min = 1,
> > | 	.tseg1_max = 16,
> > | 	.tseg2_min = 1,
> > | 	.tseg2_max = 8,
> > | 	.sjw_max = 8,
> >                    ^
> > Does not match due to "dsjw 1..16"
> > 
> > | 	.brp_min = 1,
> > | 	.brp_max = 256,
> > | 	.brp_inc = 1,
> > | };
> > |
> > | /* AXI CANFD 2.0 Arbitration Bittiming constants as per AXI CANFD 2.0
> > | spec */ static const struct can_bittiming_const
> > xcan_bittiming_const_canfd2 = {
> > | 	.name = DRIVER_NAME,
> > | 	.tseg1_min = 1,
> > | 	.tseg1_max = 256,
> > | 	.tseg2_min = 1,
> > | 	.tseg2_max = 128,
> > | 	.sjw_max = 128,
> > | 	.brp_min = 2,
> >                    ^
> > Does not match due to "brp 1..256".
> > 
> > | 	.brp_max = 256,
> > | 	.brp_inc = 1,
> > | };
> > |
> > | /* AXI CANFD 2.0 Data Bittiming constants as per AXI CANFD 2.0 spec */
> > | static struct can_bittiming_const xcan_data_bittiming_const_canfd2 = {
> > | 	.name = DRIVER_NAME,
> > | 	.tseg1_min = 1,
> > | 	.tseg1_max = 32,
> > | 	.tseg2_min = 1,
> > | 	.tseg2_max = 16,
> > | 	.sjw_max = 16,
> > | 	.brp_min = 2,
> >                    ^
> > Does not match due to "dbrp 1..256".
> 
> Versal early silicon we observed bit enlarging issue with brp  =1 in
> side IP using simulaitons(Not observed on software side) , but it
> fixed in production silicon.
> 
> Plan to revert this patch to support TDC feature(To support higher
> baud rates we need brp =1).

Ok.

regards,
Marc

-- 
Pengutronix e.K.                 | Marc Kleine-Budde           |
Embedded Linux                   | https://www.pengutronix.de  |
Vertretung West/Dortmund         | Phone: +49-231-2826-924     |
Amtsgericht Hildesheim, HRA 2686 | Fax:   +49-5121-206917-5555 |

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Automotive Discussions]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]     [CAN Bus]

  Powered by Linux