Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp364834pxb; Mon, 16 Aug 2021 07:13:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy2GHJS4IHGTktbpeVAqZ5FgP5N1zhGhOpIwRqmV8Eqxylbcejia0DsoInVof6oVdWZLAlL X-Received: by 2002:a92:ab0f:: with SMTP id v15mr10891799ilh.286.1629123207870; Mon, 16 Aug 2021 07:13:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629123207; cv=none; d=google.com; s=arc-20160816; b=F6eWERmwDVpiRNpGOlOCb6bZI0QGkfr+SlnhlQrOc1cTDkMXBb+wM1UeAxAmEH50TN FlLhYXnLNKUuzFXIMzgFbB9nh5ALsygXQhhp2psV1X6hdar5pAXkeWntEosejtgNaM8w BNQh0w5J+0M/Y1MqyGEEzy01lxlj2L0EF8HNNt7qbKQPj+zespiXRCh0gEGmeS5pDLBd Hxlaph48Dt+SXwueEKF7kAq/OHMRUDGvb63W1JFDvYqW/vNOP3SgXbCDauYtDGYg+bG1 Yt6dBM7a8KzBerHhovQURQXTby3pt6CHuVXbKM/i19RI/T0sLOA3TyH+OO8yJo5Wg70i cw9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version; bh=WBogRPOPppta5F1L9M+H6FLMAUp3xVfVteZhfXnb2q4=; b=Rwbm8YI9++l5Wvo/OM7x/ERqb5r/ZldkGMsy8fuDe4Mmx6t6HAnPHNdgpa9ihbomK4 AajhVT02+s2j7XKJLtMjxJ0DRuDv+hYcfHJbyWHLCX8lQbnWJmHDnlNRAj1PUpq3i/2k ikLkxd2ZcPP7HaKQ/gBUXp+Odd1VU0P2aNTNFhWFWdlHobXEXOk5LEX1RhZkNTMjRowb zmoTB1gankzZCk9pEPU7crw8gbSRYVE1/aJAheTBRuFgAfeLeDhvNuWgwpQN+KOEPSu3 ZjYlArgo/fzDs9SZRrZB62etRUJbityOcjReyV6h2YC9nWE6tiMMkFxt9NgPknIyukVE l4Ug== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e9si11795722ios.63.2021.08.16.07.13.14; Mon, 16 Aug 2021 07:13:27 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229517AbhHPOLP (ORCPT + 99 others); Mon, 16 Aug 2021 10:11:15 -0400 Received: from mail-lf1-f45.google.com ([209.85.167.45]:34340 "EHLO mail-lf1-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231910AbhHPOLN (ORCPT ); Mon, 16 Aug 2021 10:11:13 -0400 Received: by mail-lf1-f45.google.com with SMTP id z2so34783990lft.1; Mon, 16 Aug 2021 07:10:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=WBogRPOPppta5F1L9M+H6FLMAUp3xVfVteZhfXnb2q4=; b=jmfA9S/+JpJkExV6dS5M+3f/qiMnegC/hhp1Q3SjjiUAdij/ukN67eu55WFl3IuNJw OjX8QjRHiTGBY+yhoVxHacqG5FDBpL2Cy0yNucJek8iuHcSL9aFy8Ej/JhTaDvRVBqIb Fv4dMlKNkoHHRnqPRygHhVbHb6Or5bxgf1WyRGr8mlPjprtel3w+9LNy4WH2gWy5+7tO CCrPEBpLFwYkXwqbInlXMuRt4I0R1tc9UDXeQw1ECfmIBYwOKYp9eaHxLtyhShrZvBSK HSVa0K/J8iyzzPpWT7W6pyV2w5tfwuexudFy+pUJKkE3nIdXb9K1jgcn6c9Q2xu64bpK INmQ== X-Gm-Message-State: AOAM531FARdRjpy+WiOVc0k3Z3QwmWogNAGYTy3Po3GERhPBch+X4vQx sQ3p6WL5OB1kn5ZRuhegZti5NN3ZHfz8QFiXhcs= X-Received: by 2002:a19:c112:: with SMTP id r18mr11227013lff.531.1629123040998; Mon, 16 Aug 2021 07:10:40 -0700 (PDT) MIME-Version: 1.0 References: <20210815033248.98111-1-mailhol.vincent@wanadoo.fr> <20210815033248.98111-3-mailhol.vincent@wanadoo.fr> <20210816084235.fr7fzau2ce7zl4d4@pengutronix.de> <20210816122519.mme272z6tqrkyc6x@pengutronix.de> <20210816123309.pfa57tke5hrycqae@pengutronix.de> In-Reply-To: <20210816123309.pfa57tke5hrycqae@pengutronix.de> From: Vincent MAILHOL Date: Mon, 16 Aug 2021 23:10:29 +0900 Message-ID: Subject: Re: [PATCH v5 2/7] can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min To: Marc Kleine-Budde Cc: linux-can , =?UTF-8?Q?Stefan_M=C3=A4tje?= , netdev , open list Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Mon. 16 Aug 2021 at 21:33, Marc Kleine-Budde wrote: > On 16.08.2021 14:25:19, Marc Kleine-Budde wrote: > > > > I'm not sure, if we talked about the mcp251xfd's tcdo, valid values are > > > > -64...63. > > > > > > Yes! Stefan shed some light on this. The mcp251xfd uses a tdco > > > value which is relative to the sample point. > > > > I don't read the documentation this way.... > > > > > | SSP = TDCV + absolute TDCO > > > | = TDCV + SP + relative TDCO > > > > > > Consequently: > > > | relative TDCO = absolute TDCO - SP > > > > In the mcp15xxfd family manual > > (http://ww1.microchip.com/downloads/en/DeviceDoc/MCP251XXFD-CAN-FD-Controller-Module-Family-Reference-Manual-20005678B.pdf) > > in the 2mbit/s data bit rate example in table 3-5 (page 21) it says: > > > > | DTSEG1 15 DTQ > > | DTSEG2 4 DTQ > > | TDCO 15 DTQ > > > > The mcp251xfd driver uses 15, the framework calculates 16 (== Sync Seg+ > > tseg1, which is correct), and relative tdco would be 0: > > > > | mcp251xfd_set_bittiming: tdco=15, priv->tdc.tdc=16, relative_tdco=0 > > > > Here the output with the patched ip tool: > > Sorry, the previous output was not using the sample points of the > example in the data sheet, this is the fixed output: > > | 6: mcp251xfd0: mtu 72 qdisc pfifo_fast state UP mode DEFAULT group default qlen 10 > | link/can promiscuity 0 minmtu 0 maxmtu 0 > | can state ERROR-ACTIVE (berr-counter tx 0 rx 0) restart-ms 100 > | bitrate 500000 sample-point 0.800 > | tq 25 prop-seg 31 phase-seg1 32 phase-seg2 16 sjw 1 brp 1 > | mcp251xfd: tseg1 2..256 tseg2 1..128 sjw 1..128 brp 1..256 brp_inc 1 > | dbitrate 2000000 dsample-point 0.800 > | dtq 25 dprop-seg 7 dphase-seg1 8 dphase-seg2 4 dsjw 1 dbrp 1 > | tdco 16 > | mcp251xfd: dtseg1 1..32 dtseg2 1..16 dsjw 1..16 dbrp 1..256 dbrp_inc 1 > | tdco 0..127 > | clock 40000000 numtxqueues 1 numrxqueues 1 gso_max_size 65536 gso_max_segs 65535 parentbus spi parentdev spi0.0 After the discussion I had with Stefan, I assumed mcp251xxfd also used relative TDCO. However, in the mcp15xxfd family manual, Equation 3-10: "Secondary Sample Point" on page 18 states that: | SSP = TDCV + TDCO As I commented above, this is the formula of the absolute TDCO. Furthermore, in the example you shared, TDCO is 16 (absolute), not 0 (relative). *BUT*, if this is the absolute TDCO, I just do not get how it can be negative (I already elaborated on this in the past: if you subtract from TDCV, you are measuring the previous bit...) Another thing which is misleading to me is that the mcp15xxfd family manual lists the min and max values for most of the bittiming parameters but not for TDCO. Finally, I did a bit of research and found that: http://ww1.microchip.com/downloads/en/DeviceDoc/Section_56_Controller_Area_Network_with_Flexible_Data_rate_DS60001549A.pdf This is *not* the mcp25xxfd datasheet but it is still from Microship and as you will see, it is mostly similar to the mcp25xxfd except for, you guessed it, the TDCO. It reads: | TDCMOD<1:0>: Transmitter Delay Compensation Mode bits | Secondary Sample Point (SSP). | 10 = Auto; measure delay and add CFDxDBTCFG.TSEG1; add TDCO | 11 = Auto; measure delay and add CFDxDBTCFG.TSEG1; add TDCO | 01 = Manual; Do not measure, use TDCV plus TDCO from the register | 00 = Disable | TDCO<6:0>: Transmitter Delay Compensation Offset bits | Secondary Sample Point (SSP). Two's complement; offset can be positive, zero, or negative. | 1111111 = -64 x SYSCLK | . | . | . | 0111111 = 63 x SYSCLK | . | . | . | 0000000 = 0 x SYSCLK Here, you can clearly see that the TDCO has the exact same range as the one of the mcp25xxfd but the description of TDCMOD changes, telling us that: | SSP = TDCV (measured delay) + CFDxDBTCFG.TSEG1 (sample point) + TDCO Which means this is a relative TDCO. I just do not get how two documents from Microchip can have the TDCO relative range of -64..63 but use a different formula. I am sorry but at that point, I just do not understand what is going on with your controller...