From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=DKIM_INVALID,DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9133AC433DF for ; Tue, 30 Jun 2020 16:21:17 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id EB9CC206BE for ; Tue, 30 Jun 2020 16:21:16 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=hartkopp.net header.i=@hartkopp.net header.b="jk5DchAp" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387434AbgF3QVP (ORCPT ); Tue, 30 Jun 2020 12:21:15 -0400 Received: from mo4-p01-ob.smtp.rzone.de ([85.215.255.51]:20704 "EHLO mo4-p01-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726736AbgF3QVP (ORCPT ); Tue, 30 Jun 2020 12:21:15 -0400 X-Greylist: delayed 356 seconds by postgrey-1.27 at vger.kernel.org; Tue, 30 Jun 2020 12:21:13 EDT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1593534072; s=strato-dkim-0002; d=hartkopp.net; h=In-Reply-To:Date:Message-ID:From:References:Cc:To:Subject: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=UQbMuL5GteFYcEkQVqGEO+2ozDFITfnMDX6You1TvZU=; b=jk5DchApm8GpDQjKpzBfcfoN1S9ys3DkJE8UgDhBZdE6Qn78RmZxNQNd43APAVTNuE HjcjbCQskPG1lKUQxeZBIDzu4SZUntJRm2oL4UScwRJpem2Oq6mxatb9I21/viCqLi03 XrY3/GSi/0Glh11CeATcP9CRNFj4b2DY9AkAOBHYPEbXa2BmnDluWRxu4Ioial7vPQDr 6a7caZBG8SUi8WMB3zbJmi86NOpR6e7or1Y5ZpMwgUh5hmizrNLSs7tcYhs8UyVLtPT4 Nn4HZ2j9+//NpYViUpoZLguzu6E4/QQ7GJoPV1Ly/sp+PnzE8i0dp/RIeLonf4C+kUG+ EvhA== X-RZG-AUTH: ":P2MHfkW8eP4Mre39l357AZT/I7AY/7nT2yrDxb8mjG14FZxedJy6qgO1o3PMaViOoLMJV8h7kyA=" X-RZG-CLASS-ID: mo00 Received: from [192.168.50.177] by smtp.strato.de (RZmta 46.10.5 DYNA|AUTH) with ESMTPSA id R09ac6w5UGF6I1A (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Tue, 30 Jun 2020 18:15:06 +0200 (CEST) Subject: Re: [PATCH 2/2] can: flexcan: add support for ISO CAN-FD To: Michael Walle , Joakim Zhang Cc: linux-can@vger.kernel.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Wolfgang Grandegger , Marc Kleine-Budde , "David S . Miller" , Jakub Kicinski , dl-linux-imx References: <20200629181809.25338-1-michael@walle.cc> <20200629181809.25338-3-michael@walle.cc> From: Oliver Hartkopp Message-ID: <5f6e0843-8504-e941-b6a3-1dc8599db39e@hartkopp.net> Date: Tue, 30 Jun 2020 18:15:01 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.9.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On 30.06.20 07:53, Michael Walle wrote: > [+ Oliver] > > Hi Joakim, > > Am 2020-06-30 04:42, schrieb Joakim Zhang: >>> -----Original Message----- >>> From: Michael Walle >>> Sent: 2020年6月30日 2:18 >>> To: linux-can@vger.kernel.org; netdev@vger.kernel.org; >>> linux-kernel@vger.kernel.org >>> Cc: Wolfgang Grandegger ; Marc Kleine-Budde >>> ; David S . Miller ; Jakub >>> Kicinski ; Joakim Zhang ; >>> dl-linux-imx ; Michael Walle >>> Subject: [PATCH 2/2] can: flexcan: add support for ISO CAN-FD >>> >>> Up until now, the controller used non-ISO CAN-FD mode, although it >>> supports it. >>> Add support for ISO mode, too. By default the hardware is in non-ISO >>> mode and >>> an enable bit has to be explicitly set. >>> >>> Signed-off-by: Michael Walle >>> --- >>>  drivers/net/can/flexcan.c | 19 ++++++++++++++++--- >>>  1 file changed, 16 insertions(+), 3 deletions(-) >>> >>> diff --git a/drivers/net/can/flexcan.c b/drivers/net/can/flexcan.c index >>> 183e094f8d66..a92d3cdf4195 100644 >>> --- a/drivers/net/can/flexcan.c >>> +++ b/drivers/net/can/flexcan.c >>> @@ -94,6 +94,7 @@ >>>  #define FLEXCAN_CTRL2_MRP        BIT(18) >>>  #define FLEXCAN_CTRL2_RRS        BIT(17) >>>  #define FLEXCAN_CTRL2_EACEN        BIT(16) >>> +#define FLEXCAN_CTRL2_ISOCANFDEN    BIT(12) >>> >>>  /* FLEXCAN memory error control register (MECR) bits */ >>>  #define FLEXCAN_MECR_ECRWRDIS        BIT(31) >>> @@ -1344,14 +1345,25 @@ static int flexcan_chip_start(struct net_device >>> *dev) >>>      else >>>          reg_mcr |= FLEXCAN_MCR_SRX_DIS; >>> >>> -    /* MCR - CAN-FD */ >>> -    if (priv->can.ctrlmode & CAN_CTRLMODE_FD) >>> +    /* MCR, CTRL2 >>> +     * >>> +     * CAN-FD mode >>> +     * ISO CAN-FD mode >>> +     */ >>> +    reg_ctrl2 = priv->read(®s->ctrl2); >>> +    if (priv->can.ctrlmode & CAN_CTRLMODE_FD) { >>>          reg_mcr |= FLEXCAN_MCR_FDEN; >>> -    else >>> +        reg_ctrl2 |= FLEXCAN_CTRL2_ISOCANFDEN; >>> +    } else { >>>          reg_mcr &= ~FLEXCAN_MCR_FDEN; >>> +    } >>> + >>> +    if (priv->can.ctrlmode & CAN_CTRLMODE_FD_NON_ISO) >>> +        reg_ctrl2 &= ~FLEXCAN_CTRL2_ISOCANFDEN; >> >> > > [..] >> ip link set can0 up type can bitrate 1000000 dbitrate 5000000 fd on >> ip link set can0 up type can bitrate 1000000 dbitrate 5000000 fd on \ >>    fd-non-iso on > > vs. > >> ip link set can0 up type can bitrate 1000000 dbitrate 5000000 >> fd-non-iso on > > I haven't found anything if CAN_CTRLMODE_FD_NON_ISO depends on > CAN_CTRLMODE_FD. I.e. wether CAN_CTRLMODE_FD_NON_ISO can only be set if > CAN_CTRLMODE_FD is also set. > > Only the following piece of code, which might be a hint that you > have to set CAN_CTRLMODE_FD if you wan't to use CAN_CTRLMODE_FD_NON_ISO: > > drivers/net/can/dev.c: >   /* do not check for static fd-non-iso if 'fd' is disabled */ >   if (!(maskedflags & CAN_CTRLMODE_FD)) >           ctrlstatic &= ~CAN_CTRLMODE_FD_NON_ISO; > > If CAN_CTRLMODE_FD_NON_ISO can be set without CAN_CTRLMODE_FD, what > should be the mode if both are set at the same time? CAN_CTRLMODE_FD_NON_ISO is only relevant when CAN_CTRLMODE_FD is set. So in the example from above ip link set can0 up type can bitrate 1000000 dbitrate 5000000 fd-non-iso on either the setting of 'dbitrate 5000000' and 'fd-non-iso on' is pointless. When switching to FD-mode with 'fd on' the FD relevant settings need to be applied. FD ISO is the default. Did this help or did I get anything wrong? Best, Oliver