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 Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B6C4DC433EF for ; Mon, 16 May 2022 23:51:13 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 5385D8421D; Tue, 17 May 2022 01:51:11 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.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=samsung.com header.i=@samsung.com header.b="Xnn/ZGvH"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 47BA48419A; Tue, 17 May 2022 01:51:09 +0200 (CEST) Received: from mailout3.samsung.com (mailout3.samsung.com [203.254.224.33]) (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 40B3C840ED for ; Tue, 17 May 2022 01:51:03 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=samsung.com Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=jh80.chung@samsung.com Received: from epcas1p3.samsung.com (unknown [182.195.41.47]) by mailout3.samsung.com (KnoxPortal) with ESMTP id 20220516235058epoutp034600439f4892aafa3f0bb54e3c97cd51~vut-TGm9n0502905029epoutp03V for ; Mon, 16 May 2022 23:50:58 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 mailout3.samsung.com 20220516235058epoutp034600439f4892aafa3f0bb54e3c97cd51~vut-TGm9n0502905029epoutp03V DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=samsung.com; s=mail20170921; t=1652745058; bh=RWKVD5F/yfTl7fPECS2WYzfWTZRb/KQQ8umWuJ/Ldjk=; h=Date:Subject:To:Cc:From:In-Reply-To:References:From; b=Xnn/ZGvH3pVOyFrBaJ+vuEFRlpRcUtT49u4+OAk6keknuE7LncCYTDx09LCj75xPT BNGJbDyPz6sY7cVXUCLhyDrSshtlFvTfhPBbh93U1R/B2uykPJfcZMo/BmlJ69JcuN YUeOvjpXCKhE98PaCk1zzaXE26wgL5LS9tmqT+DM= Received: from epsnrtp4.localdomain (unknown [182.195.42.165]) by epcas1p3.samsung.com (KnoxPortal) with ESMTP id 20220516235058epcas1p3f547bb9136e0877679d414f5de3b13d3~vut-DIBN91311513115epcas1p3W; Mon, 16 May 2022 23:50:58 +0000 (GMT) Received: from epsmges1p2.samsung.com (unknown [182.195.38.237]) by epsnrtp4.localdomain (Postfix) with ESMTP id 4L2GGn1B2zz4x9Pw; Mon, 16 May 2022 23:50:57 +0000 (GMT) Received: from epcas1p1.samsung.com ( [182.195.41.45]) by epsmges1p2.samsung.com (Symantec Messaging Gateway) with SMTP id 18.52.09785.163E2826; Tue, 17 May 2022 08:50:57 +0900 (KST) Received: from epsmtrp2.samsung.com (unknown [182.195.40.14]) by epcas1p3.samsung.com (KnoxPortal) with ESMTPA id 20220516235056epcas1p348d2b445ce5d48805016f2aee4f716ee~vut9jJeJD1311513115epcas1p3Q; Mon, 16 May 2022 23:50:56 +0000 (GMT) Received: from epsmgms1p1new.samsung.com (unknown [182.195.42.41]) by epsmtrp2.samsung.com (KnoxPortal) with ESMTP id 20220516235056epsmtrp24cba5663ec9cbdfd2fee98c010a67135~vut9fkPML3072830728epsmtrp2s; Mon, 16 May 2022 23:50:56 +0000 (GMT) X-AuditID: b6c32a36-c9dff70000002639-f2-6282e3618f23 Received: from epsmtip2.samsung.com ( [182.195.34.31]) by epsmgms1p1new.samsung.com (Symantec Messaging Gateway) with SMTP id EC.FA.11276.063E2826; Tue, 17 May 2022 08:50:56 +0900 (KST) Received: from [10.113.113.235] (unknown [10.113.113.235]) by epsmtip2.samsung.com (KnoxPortal) with ESMTPA id 20220516235056epsmtip22e8758fd7420d9383c19a50f2cb3c4e2~vut9MSoVi2610926109epsmtip2F; Mon, 16 May 2022 23:50:56 +0000 (GMT) Message-ID: <79fd7272-6d9d-0372-e22c-24bb2cca56ec@samsung.com> Date: Tue, 17 May 2022 08:50:56 +0900 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Subject: Re: [PATCH 1/4] power: add driver for the TPS65219 PMIC Content-Language: en-US To: Neil Armstrong , d-gerlach@ti.com Cc: u-boot@lists.denx.de, khilman@baylibre.com From: Jaehoon Chung In-Reply-To: <20220427112812.2991816-2-narmstrong@baylibre.com> Content-Transfer-Encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFvrHKsWRmVeSWpSXmKPExsWy7bCmrm7i46YkgzXL2C1ufu1gtfjZvoXJ 4lBftMXbvZ3sDiwe72+0snucvbOD0eP4je1MAcxR2TYZqYkpqUUKqXnJ+SmZeem2St7B8c7x pmYGhrqGlhbmSgp5ibmptkouPgG6bpk5QNuUFMoSc0qBQgGJxcVK+nY2RfmlJakKGfnFJbZK qQUpOQWmBXrFibnFpXnpenmpJVaGBgZGpkCFCdkZS2afYyl4ql/xrOstSwPjS7UuRk4OCQET iberj7N1MXJxCAnsYJR48/kClPOJUeLgkUtsIFVCAt8YJeasK4fp+LNgLjNE0V5GiQ0ti6Cc 94wSD3ftBuvgFbCTuDn7LSOIzSKgKjFj+2MmiLigxMmZT1hAbFGBCIlps84A1XNwCAs4SFw/ qw0SZhYQl7j1ZD5YuQjQmMa9j9kh4noS2yYtYAax2QR0JLZ/O84E0sopYC9x+lEaRIm8xPa3 c8DOkRB4yS7RNWcBE8TRLhKfH91hhLCFJV4d38IOYUtJfH63lw2ioZlRYumSg6wQTg+jxL+G 62wQVcYS+5dOBtvGLKApsX6XPkRYUWLn77mMEJv5JN597WEFKZEQ4JXoaBOCKFGRuPT6JRPM rrtP/rNC2B4Sr7ftYJrAqDgLKVRmIXl/FpJ/ZiEsXsDIsopRLLWgODc9tdiwwAge2cn5uZsY wQlRy2wH46S3H/QOMTJxMB5ilOBgVhLhNahoSBLiTUmsrEotyo8vKs1JLT7EaAqMm4nMUqLJ +cCUnFcSb2hiaWBiZmRsYmFoZqgkzrtq2ulEIYH0xJLU7NTUgtQimD4mDk6pBia5kG1clkmz xVkXSCWdn9qc1iZ2jclMRqdgwgNt5XOH/GaX76hcdW5d+tYVU1bE1R+y/8C1dEFvYVJ4X+U3 Pnn35wcrqwLnbrl47k605v3GA082vlb4uvDU71M7rjeklTJuP8ex7NCMRmXD0+LPz2958FfX VCPda1rF3Rs51rzXNJ5srbvz5ndo/rtz4tGfNFa+1Nlz6lH7mqmGb26al/S8k+F5+2mX0pk7 zucWvd11psaYy608v21y9OS0fhZm8UcVBbYzej6a9RWY7xW9fG2ihqveIj7VL5e/6lf2Z+7u 4z7/bV9dwBbtN31+c5jPbFwa+d/0VXmBtngTI5fCp+SwS49Y99+Vrdm6P8ZE4ZqeEktxRqKh FnNRcSIAk5RvxhEEAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrFLMWRmVeSWpSXmKPExsWy7bCSvG7C46Ykg3nN2hY3v3awWvxs38Jk cagv2uLt3k52BxaP9zda2T3O3tnB6HH8xnamAOYoLpuU1JzMstQifbsErowls8+xFDzVr3jW 9ZalgfGlWhcjJ4eEgInEnwVzmbsYuTiEBHYzSuz8/podIiEl8fnpVLYuRg4gW1ji8OFiiJq3 jBIXpq1iA6nhFbCTuDn7LSOIzSKgKjFj+2MmiLigxMmZT1hAbFGBCIkHu8+ygswRFnCQuH5W GyTMLCAucevJfLByEaAxjXsfs0PE9SS2TVoAdc9xRom116aygiTYBHQktn87zgQyh1PAXuL0 ozQQk1lAXWL9PCGIVnmJ7W/nME9gFJqF5IhZSLbNQuiYhaRjASPLKkbJ1ILi3PTcYsMCw7zU cr3ixNzi0rx0veT83E2M4ODX0tzBuH3VB71DjEwcjIcYJTiYlUR4DSoakoR4UxIrq1KL8uOL SnNSiw8xSnOwKInzXug6GS8kkJ5YkpqdmlqQWgSTZeLglGpgKit4xKMkO+N/Q32XkHzA17ml 995NX1V89OUmretbz53TlefIuqzK/vXVt08X5krtU2X4mPBbq9tqU0t4pYje8lw3TyXLvdtE JrR57T+9y2jR7D3CVU6MMwOvGPL+9djEFPN30ynWP4vZjt9YfiEjX1KE+ZTNh39zVMXWil6p u9RbYvo5vUl83uGbrw/w3rL0UTJ+fFMmO5Hpx7vkc/XrzlZOOPVNdtvlf/klh1kznbMPScc8 n2/6IJb1R4BV/NuiH/v+mkd7WuepTZ026/6HKIHg5Ear7bMU/llfWlDI5LB7s9LWE7rz5eX3 tnB9FZM+o6L6na0tcZ7wwuUXntyfsGCbrmJWNuM9rsKNGVGOX5VYijMSDbWYi4oTAezdEWHt AgAA X-CMS-MailID: 20220516235056epcas1p348d2b445ce5d48805016f2aee4f716ee X-Msg-Generator: CA Content-Type: text/plain; charset="utf-8" X-Sendblock-Type: SVC_REQ_APPROVE CMS-TYPE: 101P DLP-Filter: Pass X-CFilter-Loop: Reflected X-CMS-RootMailID: 20220427112828epcas1p49c5f8ef2bc6f27993bd59e351ab0cc64 References: <20220427112812.2991816-1-narmstrong@baylibre.com> <20220427112812.2991816-2-narmstrong@baylibre.com> X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 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.103.5 at phobos.denx.de X-Virus-Status: Clean On 4/27/22 20:28, Neil Armstrong wrote: > The TPS65219 I2S PMIC features 3 Buck converters and 4 linear regulators, > 2 GPOs, 1 GPIO, and 3 multi-function-pin. > > This adds the PMIC driver, loading the regulator sub-nodes. > > Signed-off-by: Neil Armstrong > --- > drivers/power/pmic/Kconfig | 6 +++ > drivers/power/pmic/Makefile | 1 + > drivers/power/pmic/tps65219.c | 88 +++++++++++++++++++++++++++++++++++ > include/power/tps65219.h | 46 ++++++++++++++++++ > 4 files changed, 141 insertions(+) > create mode 100644 drivers/power/pmic/tps65219.c > create mode 100644 include/power/tps65219.h > > diff --git a/drivers/power/pmic/Kconfig b/drivers/power/pmic/Kconfig > index 953c92e212..bb3960020d 100644 > --- a/drivers/power/pmic/Kconfig > +++ b/drivers/power/pmic/Kconfig > @@ -367,6 +367,12 @@ config PMIC_TPS65941 > The TPS65941 is a PMIC containing a bunch of SMPS & LDOs. > This driver binds the pmic children. > > +config PMIC_TPS65219 > + bool "Enable driver for Texas Instruments TPS65219 PMIC" > + depends on DM_PMIC > + help > + The TPS65219 is a PMIC containing a bunch of SMPS & LDOs. > + This driver binds the pmic children. > endif > > config PMIC_TPS65217 > diff --git a/drivers/power/pmic/Makefile b/drivers/power/pmic/Makefile > index 584d6e0e78..f73b326255 100644 > --- a/drivers/power/pmic/Makefile > +++ b/drivers/power/pmic/Makefile > @@ -43,3 +43,4 @@ obj-$(CONFIG_POWER_TPS65910) += pmic_tps65910.o > obj-$(CONFIG_POWER_HI6553) += pmic_hi6553.o > obj-$(CONFIG_POWER_MC34VR500) += pmic_mc34vr500.o > obj-$(CONFIG_PMIC_TPS65941) += tps65941.o > +obj-$(CONFIG_PMIC_TPS65219) += tps65219.o > diff --git a/drivers/power/pmic/tps65219.c b/drivers/power/pmic/tps65219.c > new file mode 100644 > index 0000000000..9462afee77 > --- /dev/null > +++ b/drivers/power/pmic/tps65219.c > @@ -0,0 +1,88 @@ > +// SPDX-License-Identifier: GPL-2.0+ > +/* > + * (C) Copyright 2022 BayLibre, SAS > + * Author: Neil Armstrong > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +static const struct pmic_child_info pmic_children_info[] = { > + { .prefix = "ldo", .driver = TPS65219_LDO_DRIVER }, > + { .prefix = "buck", .driver = TPS65219_BUCK_DRIVER }, > + { }, > +}; > + > +static int tps65219_reg_count(struct udevice *dev) > +{ > + return 0x41; > +} > + > +static int tps65219_write(struct udevice *dev, uint reg, const uint8_t *buff, > + int len) > +{ > + if (dm_i2c_write(dev, reg, buff, len)) { > + pr_err("write error to device: %p register: %#x!\n", dev, reg); > + return -EIO; > + } > + > + return 0; > +} > + > +static int tps65219_read(struct udevice *dev, uint reg, uint8_t *buff, int len) > +{ > + if (dm_i2c_read(dev, reg, buff, len)) { > + pr_err("read error from device: %p register: %#x!\n", dev, reg); > + return -EIO; > + } > + > + return 0; > +} > + > +static int tps65219_bind(struct udevice *dev) > +{ > + ofnode regulators_node; > + int children; > + > + regulators_node = dev_read_subnode(dev, "regulators"); > + if (!ofnode_valid(regulators_node)) { > + debug("%s: %s regulators subnode not found!\n", __func__, > + dev->name); > + } > + > + debug("%s: '%s' - found regulators subnode\n", __func__, dev->name); Its sequence is strange. If ofnode_valid is not valid, it should be displayed.. "regulator subnode not found" "found regulator subnode" It can be confused. > + > + children = pmic_bind_children(dev, regulators_node, pmic_children_info); > + if (!children) > + printf("%s: %s - no child found\n", __func__, dev->name); Is there any reason to use "printf" ? Best Regards, Jaehoon Chung > + > + /* Probe all the child devices */ > + return dm_scan_fdt_dev(dev); > +} > + > +static struct dm_pmic_ops tps65219_ops = { > + .reg_count = tps65219_reg_count, > + .read = tps65219_read, > + .write = tps65219_write, > +}; > + > +static const struct udevice_id tps65219_ids[] = { > + { .compatible = "ti,tps65219" }, > + { } > +}; > + > +U_BOOT_DRIVER(pmic_tps65219) = { > + .name = "tps65219_pmic", > + .id = UCLASS_PMIC, > + .of_match = tps65219_ids, > + .bind = tps65219_bind, > + .ops = &tps65219_ops, > +}; > diff --git a/include/power/tps65219.h b/include/power/tps65219.h > new file mode 100644 > index 0000000000..aa81b92266 > --- /dev/null > +++ b/include/power/tps65219.h > @@ -0,0 +1,46 @@ > +/* SPDX-License-Identifier: GPL-2.0+ */ > +/* > + * (C) Copyright 2022 BayLibre, SAS > + * Author: Neil Armstrong > + */ > + > +#ifndef TPS65219_H > +#define TPS65219_H > + > +/* I2C device address for pmic tps65219 */ > +#define TPS65219_I2C_ADDR 0x30 > +#define TPS65219_LDO_NUM 4 > +#define TPS65219_BUCK_NUM 3 > + > +/* Drivers name */ > +#define TPS65219_LDO_DRIVER "tps65219_ldo" > +#define TPS65219_BUCK_DRIVER "tps65219_buck" > + > +#define TPS65219_VOLT_MASK 0x3F > +#define TPS65219_BUCK_VOLT_MAX 3400000 > + > +#define TPS65219_ENABLE_CTRL_REG 0x2 > + > +#define TPS65219_BUCK1_VOUT_REG 0xa > +#define TPS65219_BUCK2_VOUT_REG 0x9 > +#define TPS65219_BUCK3_VOUT_REG 0x8 > + > +#define TPS65219_LDO1_VOUT_REG 0x7 > +#define TPS65219_LDO2_VOUT_REG 0x6 > + > +#define TPS65219_LDO12_BYP_CONFIG 6 > + > +#define TPS65219_LDO3_VOUT_REG 0x5 > +#define TPS65219_LDO4_VOUT_REG 0x4 > + > +#define TPS65219_LDO12_VOLT_BYP_MIN 1500000 > +#define TPS65219_LDO12_VOLT_MIN 600000 > +#define TPS65219_LDO12_VOLT_MAX 3400000 > +#define TPS65219_LDO12_VOLT_REG_MIN 0 > +#define TPS65219_LDO12_VOLT_REG_MAX 0x56 > +#define TPS65219_LDO34_VOLT_MIN 1200000 > +#define TPS65219_LDO34_VOLT_MAX 3300000 > +#define TPS65219_LDO34_VOLT_REG_MIN 0x12 > +#define TPS65219_LDO34_VOLT_REG_MAX 0x54 > + > +#endif /* TPS65219_H */