Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp1559223pxb; Tue, 8 Feb 2022 22:16:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJyh6cNoIgCz/nPkQerpHyxOjhnVwcMj9NaYQdQ0lgo0pe0wMuTHyzfrR/Ep8gGlJCC96Tr5 X-Received: by 2002:a17:90b:1c8d:: with SMTP id oo13mr1727917pjb.201.1644387394524; Tue, 08 Feb 2022 22:16:34 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644387394; cv=none; d=google.com; s=arc-20160816; b=i47j1zIZ+yxnLn3SOoGc1kHrwQMA2F1dFMz/wn5TZU+X37zQlMH2GvyEK5F4Ds4DwZ OBoQo1KBZ/nQ2XCsPt28a6g7qqAg17kLoZQuF09FoY7uciB+NG2WcdlPefASJWodXF+6 9VA/IlHTG68Bu2bTy0yZ0KPuqEHqulLu5lj35U+sWFZbCaxuMYL2Jg5PR37pMFJ/E9TG x5lVVZTa4mYWjp4b4rigqg2jzyxzvQ2cC4XytK4CGDL5skVFwzvk7WMQWrytYod8n8vW qUQBkjgI9bCgd4wQHymrW7cm2i4q9rwr1OYD2tDtatG3y+crNq77UFlQcwXX0yGWtdRE l+Dw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version :dkim-signature; bh=CYVaXukRgUCEvFAm5Rvccoy4E4azJEZwAWMrVoUo60s=; b=nf2oTQNL/cIXQi6M94yXb8wR6BvvXCOPrdF/O3pS10CCdKgZLJqkUFZEXqoRTGq5QJ NTXy4oCzHCokxp8kH6p86xj/MBIl0QQi+wx3Vsi5JoISSfoeHwO9Ot2OC9AkVNb6d4qZ M0z4SkeM7JrRD7n2nIugBjomsMJHCxGtaKNI0bOQC2smSR7/kOerQ//sWf28lo8BCDCq AA3dkE4bV/d3Yy1ZzGXkEWG+L/OZe0Vo5YAghfbooDeRDt1MIvBXr2UyTSx3SrOwXl1f FE2uCzw1Xbpo9IivL4oSk5wR262O/PgakAGwWkmj08GIJL4McQQEyuD1vGJ5jNBI7MbH oTEg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=k7DIfwDI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [2620:137:e000::1:18]) by mx.google.com with ESMTPS id p10si14656744pfw.157.2022.02.08.22.16.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 08 Feb 2022 22:16:34 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) client-ip=2620:137:e000::1:18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b=k7DIfwDI; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 54524E0186C9; Tue, 8 Feb 2022 21:58:14 -0800 (PST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1354066AbiBHJWp (ORCPT + 99 others); Tue, 8 Feb 2022 04:22:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34092 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1347495AbiBHJWn (ORCPT ); Tue, 8 Feb 2022 04:22:43 -0500 Received: from mail-qv1-xf32.google.com (mail-qv1-xf32.google.com [IPv6:2607:f8b0:4864:20::f32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id CD0F8C0401F0; Tue, 8 Feb 2022 01:22:42 -0800 (PST) Received: by mail-qv1-xf32.google.com with SMTP id fh9so5700406qvb.1; Tue, 08 Feb 2022 01:22:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc:content-transfer-encoding; bh=CYVaXukRgUCEvFAm5Rvccoy4E4azJEZwAWMrVoUo60s=; b=k7DIfwDI7lJiplAzuKEv1ztD9Ak9R+8xzxXZwM2usNppLiqm5bdYqIWjxkDIV/hyth ohH/mlhrT+QZKqQQcL4CVOEUStEq97nRWHFMcuBpSGh8p21ytE+IJyOPEqHc9spG2xBW C2ygszJiPgi6KJkccRu5ROmtgEnrKUhGWEmUSxXbx+XquhltiVUwk007dTvR1zFvr1mg 4IKqahTBJrweYv7eF2lTvrY2L9Wf+Xlu2XxweOif/adWLK3ZobULps3DQMQXxzH5uHmr oeFKqTDxURrYQKIfoBjWfKCCmG6qhyEcL94CbAWjJjN24gAitBWghlsnh+R6+geClxmu t3Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=CYVaXukRgUCEvFAm5Rvccoy4E4azJEZwAWMrVoUo60s=; b=gDZkykNl6bFFXUwCsyJvQqDd9MDQXHUx8apA5RK+Xu0rjarQ5WQAqYVZKcC5LSbmeb Me307N6fZw/28hp4SlxFsRCKuUy8VmNe/J1Q4O5D80nfhQBhSXagkq0itZIzzfRSagSi PExFLAbXMBnFO9m4QdeIw1PseV/lxF7Tu1sL+o/P47fTQO/PSFXXFBiqr0beRdfYjTUj vuJFUwIZbuaXAoP34DnTF+f9ZRqybmMzGplevgnNhCZxS0oDSZSrNdxthN2ZQC0eOjqu /1I2l3M1QqSM7L6OfnvoVey3Fxw7VCqUAm2g6z3VEIU99GMuricWXMLbDv0ETGgrTijV 52gA== X-Gm-Message-State: AOAM533/M/ILzyAxyGhkXxuQwzECIBS3GZpEOiV5t5Xc8zIQb7zLmZiO SbmzMSkGZBSSUl+sdClrkDYyuuXn2ISG7MHV5CI= X-Received: by 2002:a05:6214:1cc7:: with SMTP id g7mr2490810qvd.124.1644312162002; Tue, 08 Feb 2022 01:22:42 -0800 (PST) MIME-Version: 1.0 References: <20220207063338.6570-1-warp5tw@gmail.com> <20220207063338.6570-7-warp5tw@gmail.com> In-Reply-To: <20220207063338.6570-7-warp5tw@gmail.com> From: Tali Perry Date: Tue, 8 Feb 2022 11:22:30 +0200 Message-ID: Subject: Re: [PATCH v1 6/6] i2c: npcm: Support NPCM845 To: Tyrone Ting Cc: avifishman70@gmail.com, Tomer Maimon , Patrick Venture , Nancy Yuen , Benjamin Fair , Rob Herring , Krzysztof Kozlowski , semen.protsenko@linaro.org, yangyicong@hisilicon.com, Wolfram Sang , jie.deng@intel.com, sven@svenpeter.dev, bence98@sch.bme.hu, lukas.bulwahn@gmail.com, arnd@arndb.de, olof@lixom.net, Andy Shevchenko , Tali Perry , Avi Fishman , tomer.maimon@nuvoton.com, KWLIU@nuvoton.com, JJLIU0@nuvoton.com, kfting@nuvoton.com, OpenBMC Maillist , Linux I2C , devicetree , Linux Kernel Mailing List Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-7.5 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_HI, SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org >On 08/02/2022 09:51, Tali Perry wrote: >>> On 08/02/2022 08:14, Tali Perry wrote: >>>>> Subject: Re: [PATCH v1 6/6] i2c: npcm: Support NPCM845 >>>>> >>>>> On 07/02/2022 13:00, Jonathan Neusch=C3=A4fer wrote: >>>>>> Hello, >>>>>> >>>>>> On Mon, Feb 07, 2022 at 02:33:38PM +0800, Tyrone Ting wrote: >>>>>>> From: Tyrone Ting >>>>>>> >>>>>>> NPCM8XX uses a similar i2c module as NPCM7XX. >>>>>>> The only difference is that the internal HW FIFO is larger. >>>>>>> >>>>>>> Related Makefile and Kconfig files are modified to support as well. >>>>>>> >>>>>>> Fixes: 56a1485b102e ("i2c: npcm7xx: Add Nuvoton NPCM I2C controller >>>>>>> driver") >>>>>> >>>>>> It's not really a bug fix, but rather an additional feature. >>>>>> Therefore, I suggest removing the Fixes tag from this patch. >>>>>> >>>>>>> Signed-off-by: Tyrone Ting >>>>>>> Signed-off-by: Tali Perry >>>>>>> --- >>>>>> [...] >>>>>>> /* init register and default value required to enable module */ >>>>>>> #define NPCM_I2CSEGCTL 0xE4 >>>>>>> +#ifdef CONFIG_ARCH_NPCM7XX >>>>>>> #define NPCM_I2CSEGCTL_INIT_VAL 0x0333F000 >>>>>>> +#else >>>>>>> +#define NPCM_I2CSEGCTL_INIT_VAL 0x9333F000 >>>>>>> +#endif >>>>>> >>>>>> This is going to cause problems when someone tries to compile a kern= el >>>>>> that runs on both NPCM7xx and NPCM8xx (because the driver will then >>>>>> only work on NPCM7xx). >>>>> >>>>> Yes, good catch. >>>>> >>>>> The NPCM7XX is multiplatform, I guess NPCM8xx will be as well, so thi= s looks like an invalid code. How such code is supposed to work on multipla= tform kernel? >>>>> >>>> >>>> NPCM7xx and NPCM8xx are very different devices. >>>> They share same driver sources for some of the modules but it's not AB= I. >>>> Users cannot compile a single kernel with two separate DTS. >>>> In case of the i2c controller, the npcm7xx has a 16 byte HW FIFO, >>>> and the NPCM8xx has 32 bytes HW FIFO. >>>> This also means that registers fields are slightly different. >>>> For init data we can move it to the DTS, but register field sizes >>>> can't be handled with this approach. >>>> >>> >>> What do you mean they cannot compile a kernel with different DTS? Of >>> course they can - when we talk about multiplatform sub-architectures! >>> Maybe there is something specific in NPCMxxx which stops it but then it >>> should not be marked multiplatform. >>> >> >> >> NCPM7xx is ARM32 bit (dual core Cortex A9) >> NPCM8xx is ARM64 bit (quad core Cortex A35) >> >> They have completely different architecture so not ABI compliant. >> I2C module is similar, but the devices are quite different and have >> separate architectures. > >OK, in such case usually you indeed can't have both. :) > >> Sorry for the confusion. >> This is the first patch we try to upstream for NPCM8xx. >> In the coming weeks we will upstream the architecture of NPCM8xx as well= . > >Still, ARCH_XXX should not be hard-coded in the drivers to change the >driver's behavior, even if driver won't be used simultaneously. It >breaks all design principles and prevents any further re-use if a new >use case appears. > >You can use "ifdef ARCH_XXX" to skip building of some parts of the >driver, but it's not the case here. > Correct, the main change is in FIFO size: +#ifdef CONFIG_ARCH_NPCM7XX #define I2C_HW_FIFO_SIZE 16 +#else +#define I2C_HW_FIFO_SIZE 32 +#endif /* CONFIG_ARCH_NPCM7XX */ NPCM7XX will always have 16 bytes, all the next gens will have 32. This impact some registers sizes, like this one: +#ifdef CONFIG_ARCH_NPCM7XX #define NPCM_I2CRXF_STS_RX_BYTES GENMASK(4, 0) +#else +#define NPCM_I2CRXF_STS_RX_BYTES GENMASK(5, 0) +#endif /*CONFIG_ARCH_NPCM7XX*/ For this, the FIFO size should be defined before compilation. I also don't want to let users select FIFO size per architecture. NPCM7XX has 16, NPCM8XX has 32. This is not a user selection. It's part of the arch. > >Best regards, >Krzysztof Thanks, Tali