From patchwork Thu Sep 24 04:34:09 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pratyush Yadav X-Patchwork-Id: 1370260 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de (client-ip=2a01:238:438b:c500:173d:9f52:ddab:ee01; helo=phobos.denx.de; envelope-from=u-boot-bounces@lists.denx.de; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=ti.com header.i=@ti.com header.a=rsa-sha256 header.s=ti-com-17Q1 header.b=HiIn/jnY; dkim-atps=neutral Received: from phobos.denx.de (phobos.denx.de [IPv6:2a01:238:438b:c500:173d:9f52:ddab:ee01]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4BxhzB3cMzz9sS8 for ; Thu, 24 Sep 2020 14:34:40 +1000 (AEST) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id A1632824E8; Thu, 24 Sep 2020 06:34:30 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=ti.com header.i=@ti.com header.b="HiIn/jnY"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id D3982824EF; Thu, 24 Sep 2020 06:34:28 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.2 Received: from fllv0016.ext.ti.com (fllv0016.ext.ti.com [198.47.19.142]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 555A482442 for ; Thu, 24 Sep 2020 06:34:24 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=quarantine dis=none) header.from=ti.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=p.yadav@ti.com Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0016.ext.ti.com (8.15.2/8.15.2) with ESMTP id 08O4YLx7075590; Wed, 23 Sep 2020 23:34:21 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1600922061; bh=6eP8KzT0n0qJZ/erXjrdYcMHMs9HQcOxT31jgg8qdZc=; h=From:To:CC:Subject:Date; b=HiIn/jnYJPQg3tnzJ4gMQKeB90zdS6MVBPIxaiRG16fAOimKTr7FAL+/FxIXx/T/6 2taIV5XRrDfE+XI3IUXF14l+uCHQsEaOZA1MTQ2r8SZeiXZEZXls2FW09rOTfAuNvn T71TxB4kW+OxzoC9pDz4JKB2fF7dtzEsQzmDicf4= Received: from DFLE108.ent.ti.com (dfle108.ent.ti.com [10.64.6.29]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTP id 08O4YL5b089835; Wed, 23 Sep 2020 23:34:21 -0500 Received: from DFLE113.ent.ti.com (10.64.6.34) by DFLE108.ent.ti.com (10.64.6.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3; Wed, 23 Sep 2020 23:34:21 -0500 Received: from lelv0326.itg.ti.com (10.180.67.84) by DFLE113.ent.ti.com (10.64.6.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1979.3 via Frontend Transport; Wed, 23 Sep 2020 23:34:21 -0500 Received: from pratyush-OptiPlex-790.dhcp.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by lelv0326.itg.ti.com (8.15.2/8.15.2) with ESMTP id 08O4YInj065200; Wed, 23 Sep 2020 23:34:19 -0500 From: Pratyush Yadav To: Tom Rini CC: Pratyush Yadav , , Simon Glass , Vignesh Raghavendra Subject: [PATCH v3 0/9] regmap: Add managed API, regmap fields, regmap config Date: Thu, 24 Sep 2020 10:04:09 +0530 Message-ID: <20200924043418.5355-1-p.yadav@ti.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.34 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.102.3 at phobos.denx.de X-Virus-Status: Clean Hi, This series is a re-spin of Jean-Jacques' earlier effort [0], the goal of which was to facilitate porting drivers from the Linux kernel. It adds the managed API, using the same API as Linux. It also adds support for regmap fields. Jean-Jacques' series added support for custom regmap read/write callbacks. The design was argued against by Simon [1]. He argued that using the driver model was a better idea instead of the custom functions. That would mean slightly more memory usage and a more involved change. The main aim of adding the custom functions is to support the Cadence Sierra PHY driver from Linux [2]. The driver's custom functions aren't very complicated, so they can be replaced by some simple formatting options. So, add the struct regmap_config which contains fields to alter the behaviour of the regmap. This includes specifying the size of the read/write operations via 'width', specifying the start and size of range from code instead of device tree via 'r_start' and 'r_size', and specifying a left shift of the register offset before access via 'reg_offset_shift'. The driver can't be ported verbatim now, but this allows the changes to be very isolated and minimal. These config options allow us to avoid converting to driver model until we really need it. The Travis CI run can be found at [3]. [0] https://patchwork.ozlabs.org/project/uboot/cover/20191105114700.24989-1-jjhiblot@ti.com/ [1] https://patchwork.ozlabs.org/comment/2426186/ [2] https://elixir.bootlin.com/linux/latest/source/drivers/phy/cadence/phy-cadence-sierra.c [3] https://travis-ci.org/github/prati0100/uboot/builds/729588518 Changes in v3 (also mentioned in individual patches): - Allow multi-digit index in in_tree(). Fixes test failures in test/bind.py - s/DM_TESTF/UT_TESTF/g - Fix merge conflicts in test.dts - Rebase on latest master. Changes in v2: - Add comments explaining the need for regmap_field. - Set regmap->width to a default of REGMAP_SIZE_32 in regmap_alloc() to avoid the checks in regmap_{read,write}(). - Use calloc() instead of using malloc() and memset() to initialize a regmap to zero. - Update comments on regmap_{read,write}() and regmap_raw_{read,write}(). - Drop comments explaining two non-existent fields in struct reg_field. - Add a comment with example explaining REG_FIELD(). - Add Simon's Reviewed-by trailers. Jean-Jacques Hiblot (3): regmap: Add devm_regmap_init() regmap: Add support for regmap fields test: dm: Add tests for regmap managed API and regmap fields Pratyush Yadav (6): regmap: zero out the regmap on allocation regmap: Allow specifying read/write width regmap: Allow left shifting register offset before access regmap: Add regmap_init_mem_range() regmap: Allow devices to specify regmap range start and size in config test/py: allow multi-digit index in in_tree() arch/sandbox/dts/test.dts | 13 +++ drivers/core/regmap.c | 163 ++++++++++++++++++++++++++++- include/regmap.h | 205 ++++++++++++++++++++++++++++++++++--- test/dm/regmap.c | 198 +++++++++++++++++++++++++++++++++++ test/py/tests/test_bind.py | 2 +- 5 files changed, 563 insertions(+), 18 deletions(-) --- 2.28.0