Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id BAC21C636CC for ; Sun, 29 Jan 2023 07:31:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231752AbjA2HXC (ORCPT ); Sun, 29 Jan 2023 02:23:02 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48426 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230413AbjA2HW7 (ORCPT ); Sun, 29 Jan 2023 02:22:59 -0500 Received: from sender4-op-o14.zoho.com (sender4-op-o14.zoho.com [136.143.188.14]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B145D6A55 for ; Sat, 28 Jan 2023 23:22:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1674976938; cv=none; d=zohomail.com; s=zohoarc; b=SbuaVPs5muL+1IcJNZ3cOS7aT1nLCknhQim3ZxqklXlS3f5tZw8LQgZTuU4Ma7RfGxVUEM3FGxXl5Hz3m6Ks3c8TgzNRn/YXeyFc8DZTVc3mhJAb22G6Rh1wh3aS6wjxtu2XTBs891830IpB81wa3GwwMRsJMCG9x+9XqTE11l0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1674976938; h=Content-Type:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To; bh=Wi6EVcjoZsMaB6/umatkP/TY7y+0TqR+26k4xlpikbg=; b=llxeGAuh06R6afTHGsEWSxPS3jAm9RN2iTfjLpJNaK00jhQImHNaVEUDvnfGAz0jPP/YV8JJmgegpmP2tX1s426fj1EI1+4RzlM6rnCjVr8LANbDguXRXfyHL9jbaXqKN3yLKGtBnweOHnu9NdP1AUCRAqkuOxvB68ZTlV0FJWw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass header.i=linux.beauty; spf=pass smtp.mailfrom=me@linux.beauty; dmarc=pass header.from= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1674976938; s=zmail; d=linux.beauty; i=me@linux.beauty; h=Date:Date:Message-ID:From:From:To:To:Cc:Cc:Subject:Subject:In-Reply-To:References:MIME-Version:Content-Type:Message-Id:Reply-To; bh=Wi6EVcjoZsMaB6/umatkP/TY7y+0TqR+26k4xlpikbg=; b=CQQ11mDfCfD1TmTB1vy0z6lQGD9xS+bQFqstF4QH2agyduc/IquNvon/PQYffdHK iFgL7DfGpuTwx0/7XiwMDnPdZSPp2T1ZpEjPhklL95sjA3Gl5iPOZavsM1RVU6JBxOJ KSHOBIKUOOZ5S4SCAnz2Kbjxyj2pKA4hQm9BLAe8= Received: from sh-lchen.linux.beauty (180.169.129.130 [180.169.129.130]) by mx.zohomail.com with SMTPS id 167497693659554.08413761409781; Sat, 28 Jan 2023 23:22:16 -0800 (PST) Date: Sun, 29 Jan 2023 15:21:51 +0800 Message-ID: <877cx59568.wl-me@linux.beauty> From: Li Chen To: "Arnd Bergmann" Cc: Heiko =?ISO-8859-1?Q?St=FCbner?= , "Lubomir Rintel" , "Conor.Dooley" , "Robert Jarzmik" , "Sven Peter" , "Yinbo Zhu" , "Brian Norris" , "Hitomi Hasegawa" , "open list" , "moderated list:ARM/Ambarella SoC support" Subject: Re: [PATCH 06/15] soc: add Ambarella driver In-Reply-To: <8e404cef-52fb-49a2-a91b-8e3c60407ddd@app.fastmail.com> References: <20230123073305.149940-1-lchen@ambarella.com> <20230123073305.149940-7-lchen@ambarella.com> <85b86d06-c63c-4481-a3dd-16b72572a5ee@app.fastmail.com> <871qnkicsi.wl-me@linux.beauty> <8e404cef-52fb-49a2-a91b-8e3c60407ddd@app.fastmail.com> User-Agent: Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (=?ISO-8859-4?Q?Goj=F2?=) APEL-LB/10.8 EasyPG/1.0.0 Emacs/28.2 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-ZohoMailClient: External Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Arnd, Sorry for late reply. On Tue, 24 Jan 2023 23:46:06 +0800, Arnd Bergmann wrote: > > On Tue, Jan 24, 2023, at 08:58, Li Chen wrote: > > On Mon, 23 Jan 2023 16:29:06 +0800, > > Arnd Bergmann wrote: > >> On Mon, Jan 23, 2023, at 08:32, Li Chen wrote: > >> > +static struct ambarella_soc_id { > >> > + unsigned int id; > >> > + const char *name; > >> > + const char *family; > >> > +} soc_ids[] = { > >> > + { 0x00483245, "s6lm", "10nm", }, > >> > +}; > >> > >> I would suggest something more descriptive in the "family" > >> field to let users know they are on an Ambarella SoC. > >> > >> Maybe just "Ambarella 10nm". > > > > There is a "pr_info("Ambarella SoC %s detected\n", > > soc_dev_attr->soc_id);" in this file, > > I think this should be enough, right? > > The pr_info() can probably be removed here, or reworded > based on the changed contents, those are just meant for > humans reading through the log rather than parsed by > software. > > The soc_id fields on the other hand need to be parsable > by scripts looking at the sysfs files, in a way that lets > them identify the system. Usually the script would look > at the "family" as the primary key before looking up the > "name", so you have to make sure that the family uniquely > identifies this as one of yours rather than a 10nm chip > from some other company. Ok, I will add "Ambarella" prefix to ->family. > >> If there are other unrelated registers in there, the compatible > >> string should probably be changed to better describe the > >> entire area based on the name in the datasheet. > > > > Yeah, this block is only used for identification bits. In datasheet, > > it is also named "CPU ID". > > ok. > > > Other than cpuid_regmap, this driver also looks for "model" name as soc > > machine name: > > of_property_read_string(np, "model", &soc_dev_attr->machine); > > > > So I think it is not a good idea to conver it to into a platform driver. > I don't understand what you mean. A lot of soc_id drivers put > the model string into soc_dev_attr->machine, this makes no > difference here. Ok, I will switch to builtin platform driver. Which compatible do you prefer? compatible = "ambarella,cpuid" or compatible = "ambarella,-cpuid" > > As for "syscon", I think it is still very helpful to get regmap easily. > > Generally speaking, > > I prefer regmap over void*, because it has debugfs support, so I can > > get its value more easily. > > What value would you get through debugfs that is not already in > the soc_device? Agree with you. > >> > +static unsigned int ambsys_config; > >> > + > >> > +unsigned int ambarella_sys_config(void) > >> > +{ > >> > + return ambsys_config; > >> > +} > >> > +EXPORT_SYMBOL(ambarella_sys_config); > >> > >> Which drivers use this bit? Can they be changed to > >> use soc_device_match() instead to avoid the export? > > > > sys_config is used by our nand and sd drivers. I also don't want to export, > > but struct soc_device_attribute/soc_device don't have private data to store it, > > I think there is no better way. > > The nand and sd drivers should not rely on any private data > from another driver. Agree. > What information do they actually > need here that is not already in their own DT nodes or > in the soc_device_attributes? sys_config from rct_regmap is not available for sd/nand node neither soc_device_attribute. But given that I will switch dts model to(see https://www.spinics.net/lists/arm-kernel/msg1043684.html): rct | nand | sd | ... Then I can easily and naturally get sys_config via syscon_node_to_regmap(of_get_parent(nand_np/sd_np)). So this is not a problem anymore and I will switch to builtin platform driver in v2. > >> > +static int __init ambarella_soc_init(void) > >> > +{ > >> > + struct regmap *rct_regmap; > >> > + int ret; > >> > + > >> > + rct_regmap = syscon_regmap_lookup_by_compatible("ambarella,rct"); > >> > + if (IS_ERR(rct_regmap)) { > >> > + pr_err("failed to get ambarella rct regmap\n"); > >> > + return PTR_ERR(rct_regmap); > >> > + } > >> ... > >> > +arch_initcall(ambarella_soc_init); > >> > >> It is not an error to use a chip from another manufacturer, > >> please drop the pr_err() and return success here. > > > > Ok, good to know, thanks. But we don't have other manufacturers at > > least for now, > > I care a lot about supporting multiple SoC vendors, it would seem > very rude to assume that we stop supporting everything else after > merging Ambarella support. > > > and rct_regmap is need to be updated here, like sys_config and soft > > reboot. So I think this rct regmap is still needed. > > It is certainly only needed on Ambarella SoCs, no other one > has this device at the moment. I'm really sorry that I forgot that this builtin arch_initcall code would run on SoCs other than Ambarella. I will remove the err output in v2. Regards, Li