From patchwork Thu Dec 28 09:39:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karel Balej X-Patchwork-Id: 183667 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp1900397dyb; Thu, 28 Dec 2023 02:02:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IHlxjYzxgfV2V+RoEBOuxZU4/cbQ33phPjFpfYg9nnEpkBe1U44KWvdu8qtUwChUNU6JCk5 X-Received: by 2002:a05:6358:6501:b0:175:b65:c8f1 with SMTP id v1-20020a056358650100b001750b65c8f1mr1597350rwg.37.1703757777458; Thu, 28 Dec 2023 02:02:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703757777; cv=none; d=google.com; s=arc-20160816; b=Zu8azacDX34xmonEyTQfrlTAE4FhLVpyzavZ7R7Y7NsybHjfupEgk2pvIO/ECRM69t zz4oeyM6hae/wBQu5X6tUGrfmzBXlZK26JzXiNkBWN1pRJuhnMxwIrq2iDiNEGTghxRX 87eD+81yiAH1DQZHKOcKO1cmfvS6LW0ZbnCW4QFLJ8FudzJmirc5no55o073Y2z2BFGb y45wPy4hlF5A3I6YxHkEPxNbXCwN2PYB7MG3ttJw2Hc4mwBiC+EZAhSbb//lYev4gTL2 i8JfblYXCMfnU8fDWKQntcoGj2YyIMaQTkqEVPXuJ82MTVUhXobVMD/78ZolsEYkB7lQ i6qw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=reD/I3eBv9lwzRcVumL6wA4HHqcgwCGXR849XP7JFqk=; fh=jTCjoJ+Y+apFiqJqgoUFlazJ2LdeNccwdUnBdvX3V30=; b=Wmvx/sjDh36aBlBXwLg6jVUfwUAe9VjdtpZkWLhjmQPh35atFkURFtyyRx3C3/0arS GTWsPjqfJObgwKICpWHPyrIKtsrUQY59SWlyUfli8ICpdWYhfgWEKR89WFLKurLgCoHP QYeGSbZxtQ6ppHGHN7buIuKJLd53PFkPD6R4jWBDlaaqfwSTOCrk1ojin+LoT8PeHppT 2PVIIDyLxauWrTE69n6io58QaWoQLwu4gLtn1t35uchbNuS65/GZEMPBI3Ut5vN9OWBr IVucqwaQbXyi8vg/hR6Mx3hTZg9pn4pgP7wE6UuHkCGqCSQbjy5AZWb7S4KaUdfRXrwB nB/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=NtB0Z3WX; spf=pass (google.com: domain of linux-kernel+bounces-12551-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12551-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id e5-20020a636905000000b005ce087e004dsi8191930pgc.799.2023.12.28.02.02.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 02:02:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12551-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=NtB0Z3WX; spf=pass (google.com: domain of linux-kernel+bounces-12551-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12551-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 2C77728562E for ; Thu, 28 Dec 2023 10:02:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 396FA7460; Thu, 28 Dec 2023 10:02:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gimli.ms.mff.cuni.cz header.i=@gimli.ms.mff.cuni.cz header.b="NtB0Z3WX" X-Original-To: linux-kernel@vger.kernel.org Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BBF7F63C6; Thu, 28 Dec 2023 10:02:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gimli.ms.mff.cuni.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gimli.ms.mff.cuni.cz Received: from gimli.ms.mff.cuni.cz (gimli.ms.mff.cuni.cz [195.113.20.176]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by nikam.ms.mff.cuni.cz (Postfix) with ESMTPS id EC6E628C556; Thu, 28 Dec 2023 11:02:23 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gimli.ms.mff.cuni.cz; s=gen1; t=1703757743; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=reD/I3eBv9lwzRcVumL6wA4HHqcgwCGXR849XP7JFqk=; b=NtB0Z3WXtMxwoAgv6bocv8Vo273oBsXVko1c5uru6XFjKos2fIN6Y0QEXBbsP2yeMduL5P n8RLKsCcDx6vJfVhMojAhszQEeM9TRazAWvzWcA6V9dz2EPKEEXPH0Qzj3oGeGK8c9ZKQ0 +DRSBUOFYPQ9mFL7obXKLYWIoOYj5HE= Received: from localhost (internet5.mraknet.com [185.200.108.250]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: karelb) by gimli.ms.mff.cuni.cz (Postfix) with ESMTPSA id CB00D4423CE; Thu, 28 Dec 2023 11:02:23 +0100 (CET) From: Karel Balej To: Karel Balej , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Duje_Mihanovi=C4=87?= , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org Subject: [RFC PATCH 1/5] mfd: 88pm88x: differences with respect to the PMIC RFC series Date: Thu, 28 Dec 2023 10:39:10 +0100 Message-ID: <20231228100208.2932-2-karelb@gimli.ms.mff.cuni.cz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> References: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786519515579505089 X-GMAIL-MSGID: 1786519515579505089 From: Karel Balej Signed-off-by: Karel Balej --- drivers/mfd/88pm88x.c | 14 ++++++++------ include/linux/mfd/88pm88x.h | 2 ++ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/drivers/mfd/88pm88x.c b/drivers/mfd/88pm88x.c index 5db6c65b667d..3424d88a58f6 100644 --- a/drivers/mfd/88pm88x.c +++ b/drivers/mfd/88pm88x.c @@ -57,16 +57,16 @@ static struct reg_sequence pm886_presets[] = { REG_SEQ0(PM88X_REG_BK_OSC_CTRL3, 0xc0), }; -static struct resource onkey_resources[] = { +static struct resource pm88x_onkey_resources[] = { DEFINE_RES_IRQ_NAMED(PM88X_IRQ_ONKEY, "88pm88x-onkey"), }; -static struct mfd_cell pm88x_devs[] = { +static struct mfd_cell pm886_devs[] = { { .name = "88pm88x-onkey", - .num_resources = ARRAY_SIZE(onkey_resources), - .resources = onkey_resources, - .id = -1, + .of_compatible = "marvell,88pm88x-onkey", + .num_resources = ARRAY_SIZE(pm88x_onkey_resources), + .resources = pm88x_onkey_resources, }, }; @@ -74,6 +74,8 @@ static struct pm88x_data pm886_a1_data = { .whoami = PM886_A1_WHOAMI, .presets = pm886_presets, .num_presets = ARRAY_SIZE(pm886_presets), + .devs = pm886_devs, + .num_devs = ARRAY_SIZE(pm886_devs), }; static const struct regmap_config pm88x_i2c_regmap = { @@ -157,7 +159,7 @@ static int pm88x_probe(struct i2c_client *client) if (ret) return ret; - ret = devm_mfd_add_devices(&client->dev, 0, pm88x_devs, ARRAY_SIZE(pm88x_devs), + ret = devm_mfd_add_devices(&client->dev, 0, chip->data->devs, chip->data->num_devs, NULL, 0, regmap_irq_get_domain(chip->irq_data)); if (ret) { dev_err(&client->dev, "Failed to add devices: %d\n", ret); diff --git a/include/linux/mfd/88pm88x.h b/include/linux/mfd/88pm88x.h index a34c57447827..9a335f6b9c07 100644 --- a/include/linux/mfd/88pm88x.h +++ b/include/linux/mfd/88pm88x.h @@ -49,6 +49,8 @@ struct pm88x_data { unsigned int whoami; struct reg_sequence *presets; unsigned int num_presets; + struct mfd_cell *devs; + unsigned int num_devs; }; struct pm88x_chip { From patchwork Thu Dec 28 09:39:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karel Balej X-Patchwork-Id: 183668 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp1900512dyb; Thu, 28 Dec 2023 02:03:16 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0jgy7BIQPbINyAsZAzq+cyyJ8lSIhD0YeY/BlZsLatLOTO6giPI/T6ephnMM+SfiJpBGb X-Received: by 2002:a05:620a:4ee:b0:77e:fba3:a204 with SMTP id b14-20020a05620a04ee00b0077efba3a204mr11601846qkh.94.1703757795903; Thu, 28 Dec 2023 02:03:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703757795; cv=none; d=google.com; s=arc-20160816; b=XNDOP5Z+Cwf1IvYQupJAqaGJAhLeSfCm1V6ht3OZWfKGBLt2lKPwOfRDIFagg23fEV ye9tYrE3mridxELIh7RhIdq0i6r9KhNc0qW7nl/miqnYgLySRBsQPtwPkNo3rLUBba+M y7c2F2qFTPdRiitXQX0FuthuBfHqhTmk/9MBC7mWSnqmtL/GVyNQ6APeZPTSYFS0ZK5U xDtESXcJZiKbjpQDO4qYy6mskqkdHWIwF85A+2YYjdK/598rIp5KsFYHaSwal7NVrUYi vjUGaiu0rqh/0X9anmi6NPwpMUpr/26ojf/n8qo71aFPP8A6qKcDJ1jL4D/r94uydYqe 7f0A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=bsD+Ig67rpZi8IXpGlEIkzXED2wjBoY8yOB7Th2FEqM=; fh=jTCjoJ+Y+apFiqJqgoUFlazJ2LdeNccwdUnBdvX3V30=; b=hh1vFTag+I5pa9/8tXs+TE1vdxOqSa6GCLBCYiWzrats+trT10sT2oM5FSnelNFO5x 0tN2/TXgtlalh/D3Ie3fmB2/nMfq+USYclm53sAZ1VVXR2edEmyMy4JMVC5RnznF/lLY ohOD56wELM2b/zRM3DMZZH8bX35F9lYpSzsCF+99oMLDj6667xePk0L9Qv0UEZTIjnlF o5hyOx/RRXpfVF/4L2wZu2FaKC98la9RAITRa4UoeOlYiv1HTYLFHtgkgDANgE/YcVsW lo1gDdpDZKa+3El+y8y4nkh8L6Yvp7Yu0LIBrcavYUh8bKRDm1246I+SgzGmHDFajwaF vpmg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=OdeYDjZG; spf=pass (google.com: domain of linux-kernel+bounces-12552-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12552-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [2604:1380:45d1:ec00::1]) by mx.google.com with ESMTPS id bn2-20020a05620a2ac200b0078166136e7fsi2197169qkb.598.2023.12.28.02.03.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 02:03:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12552-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) client-ip=2604:1380:45d1:ec00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=OdeYDjZG; spf=pass (google.com: domain of linux-kernel+bounces-12552-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45d1:ec00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12552-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id AFC981C231B7 for ; Thu, 28 Dec 2023 10:03:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 33F0D79C6; Thu, 28 Dec 2023 10:02:35 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gimli.ms.mff.cuni.cz header.i=@gimli.ms.mff.cuni.cz header.b="OdeYDjZG" X-Original-To: linux-kernel@vger.kernel.org Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4F876FAD; Thu, 28 Dec 2023 10:02:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gimli.ms.mff.cuni.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gimli.ms.mff.cuni.cz Received: from gimli.ms.mff.cuni.cz (gimli.ms.mff.cuni.cz [195.113.20.176]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by nikam.ms.mff.cuni.cz (Postfix) with ESMTPS id D5FCC28C558; Thu, 28 Dec 2023 11:02:27 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gimli.ms.mff.cuni.cz; s=gen1; t=1703757747; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=bsD+Ig67rpZi8IXpGlEIkzXED2wjBoY8yOB7Th2FEqM=; b=OdeYDjZGY5quFqORPPXshpQaLVLAyOjxSWI/DIIBTr8Llsx2Kn/q7yNVRLH9AJNxKLs0ch B3PK3el9M1wK4pu3bX8ikixmfJqiYohnPrFYZ6GYYdYimUyhCDLSQl2NKZYsCGeVDS3ICr cXN635as2m9Aw8WM63evuFFTCR7lASY= Received: from localhost (internet5.mraknet.com [185.200.108.250]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: karelb) by gimli.ms.mff.cuni.cz (Postfix) with ESMTPSA id B29D54423CE; Thu, 28 Dec 2023 11:02:27 +0100 (CET) From: Karel Balej To: Karel Balej , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Duje_Mihanovi=C4=87?= , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org Subject: [RFC PATCH 2/5] mfd: 88pm88x: initialize the regulators regmaps Date: Thu, 28 Dec 2023 10:39:11 +0100 Message-ID: <20231228100208.2932-3-karelb@gimli.ms.mff.cuni.cz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> References: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786519534732771847 X-GMAIL-MSGID: 1786519534732771847 From: Karel Balej The regulators registers are accessed via a different I2C address than the already implemented functionality. Initialize the new regmap for the regulator driver to use. For 88PM886 the buck regmap is the same as LDO regmap, however this is not the case for 88PM880. Signed-off-by: Karel Balej --- drivers/mfd/88pm88x.c | 33 +++++++++++++++++++++++++++++++++ include/linux/mfd/88pm88x.h | 4 ++++ 2 files changed, 37 insertions(+) diff --git a/drivers/mfd/88pm88x.c b/drivers/mfd/88pm88x.c index 3424d88a58f6..69a8e39d43b3 100644 --- a/drivers/mfd/88pm88x.c +++ b/drivers/mfd/88pm88x.c @@ -98,6 +98,35 @@ static int pm88x_power_off_handler(struct sys_off_data *data) return NOTIFY_DONE; } +static int pm88x_initialize_subregmaps(struct pm88x_chip *chip) +{ + struct i2c_client *page; + struct regmap *regmap; + int ret; + + /* LDO page */ + page = devm_i2c_new_dummy_device(&chip->client->dev, chip->client->adapter, + chip->client->addr + PM88X_PAGE_OFFSET_LDO); + if (IS_ERR(page)) { + ret = PTR_ERR(page); + dev_err(&chip->client->dev, "Failed to initialize LDO client: %d\n", + ret); + return ret; + } + regmap = devm_regmap_init_i2c(page, &pm88x_i2c_regmap); + if (IS_ERR(regmap)) { + ret = PTR_ERR(regmap); + dev_err(&chip->client->dev, "Failed to initialize LDO regmap: %d\n", + ret); + return ret; + } + chip->regmaps[PM88X_REGMAP_LDO] = regmap; + /* buck regmap is the same as LDO */ + chip->regmaps[PM88X_REGMAP_BUCK] = regmap; + + return 0; +} + static int pm88x_setup_irq(struct pm88x_chip *chip) { int ret; @@ -155,6 +184,10 @@ static int pm88x_probe(struct i2c_client *client) return -EINVAL; } + ret = pm88x_initialize_subregmaps(chip); + if (ret) + return ret; + ret = pm88x_setup_irq(chip); if (ret) return ret; diff --git a/include/linux/mfd/88pm88x.h b/include/linux/mfd/88pm88x.h index 9a335f6b9c07..703e6104c1d8 100644 --- a/include/linux/mfd/88pm88x.h +++ b/include/linux/mfd/88pm88x.h @@ -39,8 +39,12 @@ #define PM88X_REG_AON_CTRL2 0xe2 +#define PM88X_PAGE_OFFSET_LDO 1 + enum pm88x_regmap_index { PM88X_REGMAP_BASE, + PM88X_REGMAP_LDO, + PM88X_REGMAP_BUCK, PM88X_REGMAP_NR }; From patchwork Thu Dec 28 09:39:12 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karel Balej X-Patchwork-Id: 183670 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp1902626dyb; Thu, 28 Dec 2023 02:08:30 -0800 (PST) X-Google-Smtp-Source: AGHT+IEjURqhylGcocmfmEFJ+o1WmKUtFOk025oUaNdSlheQco++0IXGr2be0UkPCiwbMIJ16uCd X-Received: by 2002:a05:6a20:38a5:b0:187:67b0:73e with SMTP id n37-20020a056a2038a500b0018767b0073emr4148324pzf.14.1703758109856; Thu, 28 Dec 2023 02:08:29 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703758109; cv=none; d=google.com; s=arc-20160816; b=ZX+TOG0tBg/7vafKk0V6RP5WXOOyi353GRZoQDKFZQARnUPLZ+be/zyGTs1pAk9IK1 GNJnWMnJlm7oIXKoHOsu3WQ0ZoSHTN5fBGfirPXe2ykdkVFXK3OOHiODplRV2L7n2gUc i7u71dvk/KAjsy1DuIyzjdhdCBN/e5ePD2uKRdy5hPLe0Czc/o2ZyOBRanV8Zn5qaWBf Z4w9uHx0pSwsPhyZN3wC5ql4tNLmjvihvkl+qmI4wrjTbDQUpgDSffjLsQg0tgbBO79h tsWvn1Qr5nzNTQTseSScNhx/3gbZCQgzdmheKZ0LYR6N/lXQXNzXuP2OgLwQWczn0Hs2 e4hQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=6ulYHfJL4a5ktaQ0LB/F7mH1W93VxrEdW8tL9PPAz/s=; fh=jTCjoJ+Y+apFiqJqgoUFlazJ2LdeNccwdUnBdvX3V30=; b=fT6vM5dm9cgK9o41msMPvob7k23dNSAkfScpb3D+WdSacY0ywkMK02CXD/qgH4xgEB Pju01zkArfbICic0QoCAcv/iZvk616wYg7R2nnWsr7oEmXN5FaaoagNjYtiDyQJyh6Q2 VzWBrp1SzARq11CqpwiRS9LCJD+zkhtPSJfg8Q/0AKAOmodRB+6eHbbbzGKuA/h3xgTQ qqRBy5tj5iSKjSvMsRxQYL9wIAWeIgFMV8OobSt3yJLhS9lHwid4Gn44PR2ngpGG1Ziv sChJzwGk5miaS6nr2sA83TBdlz/G8QtX+5wSX5xhuxeigWQP3FolGRxXFH3+34/kG2SV I5HA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=GDVGVZqn; spf=pass (google.com: domain of linux-kernel+bounces-12553-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12553-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id x11-20020a1709027c0b00b001d457090852si6510643pll.598.2023.12.28.02.08.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 02:08:29 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12553-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=GDVGVZqn; spf=pass (google.com: domain of linux-kernel+bounces-12553-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12553-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 00422B23BBC for ; Thu, 28 Dec 2023 10:03:27 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 04D1E79FD; Thu, 28 Dec 2023 10:02:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gimli.ms.mff.cuni.cz header.i=@gimli.ms.mff.cuni.cz header.b="GDVGVZqn" X-Original-To: linux-kernel@vger.kernel.org Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8F6007466; Thu, 28 Dec 2023 10:02:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gimli.ms.mff.cuni.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gimli.ms.mff.cuni.cz Received: from gimli.ms.mff.cuni.cz (gimli.ms.mff.cuni.cz [195.113.20.176]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by nikam.ms.mff.cuni.cz (Postfix) with ESMTPS id EE47728C555; Thu, 28 Dec 2023 11:02:30 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gimli.ms.mff.cuni.cz; s=gen1; t=1703757750; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=6ulYHfJL4a5ktaQ0LB/F7mH1W93VxrEdW8tL9PPAz/s=; b=GDVGVZqn3z88bQUAkXgh9dHfS5mMVni/1i+u59lATKWgBy0g98G0DCbmRR3tc/mrp3d0DC K3dzg0a7Fkg3G3Y0fzH9LpJ+rnT4gOFV87BoDnmPgj6UicHrny3jxlu+hClzWra4cNDHx8 Yk9pyT/vqZgNyMqAPJjA4jojsc51NZw= Received: from localhost (internet5.mraknet.com [185.200.108.250]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: karelb) by gimli.ms.mff.cuni.cz (Postfix) with ESMTPSA id CC95E4423CE; Thu, 28 Dec 2023 11:02:30 +0100 (CET) From: Karel Balej To: Karel Balej , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Duje_Mihanovi=C4=87?= , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org Subject: [RFC PATCH 3/5] dt-bindings: regulator: add documentation entry for 88pm88x-regulator Date: Thu, 28 Dec 2023 10:39:12 +0100 Message-ID: <20231228100208.2932-4-karelb@gimli.ms.mff.cuni.cz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> References: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786519863640255056 X-GMAIL-MSGID: 1786519863640255056 From: Karel Balej The Marvell 88PM88X PMICs provide regulators among other things. Document how to use them. Signed-off-by: Karel Balej --- .../bindings/mfd/marvell,88pm88x.yaml | 17 +++++++++++ .../regulator/marvell,88pm88x-regulator.yaml | 28 +++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 Documentation/devicetree/bindings/regulator/marvell,88pm88x-regulator.yaml diff --git a/Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml b/Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml index 115b41c9f22c..e6944369fc5c 100644 --- a/Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml +++ b/Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml @@ -54,6 +54,23 @@ examples: onkey { compatible = "marvell,88pm88x-onkey"; }; + + regulators { + ldo2: ldo2 { + regulator-min-microvolt = <3100000>; + regulator-max-microvolt = <3300000>; + }; + + ldo15: ldo15 { + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + buck2: buck2 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + }; }; }; ... diff --git a/Documentation/devicetree/bindings/regulator/marvell,88pm88x-regulator.yaml b/Documentation/devicetree/bindings/regulator/marvell,88pm88x-regulator.yaml new file mode 100644 index 000000000000..c6ac17b113e7 --- /dev/null +++ b/Documentation/devicetree/bindings/regulator/marvell,88pm88x-regulator.yaml @@ -0,0 +1,28 @@ +# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/regulator/marvell,88pm88x-regulator.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Marvell 88PM88X PMICs regulators + +maintainers: + - Karel Balej + +description: | + This module is part of the Marvell 88PM88X MFD device. For more details + see Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml. + + The regulator controller is represented as a sub-node of the PMIC node + in the device tree. + + The valid names for 88PM886 regulator nodes are ldo[1-9], ldo1[0-6], buck[1-5]. + +patternProperties: + "^(ldo|buck)[0-9]+$": + type: object + description: + Properties for single regulator. + $ref: regulator.yaml# + +additionalProperties: false From patchwork Thu Dec 28 09:39:13 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karel Balej X-Patchwork-Id: 183671 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp1902727dyb; Thu, 28 Dec 2023 02:08:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IF6XI9fy57ME+O4Yzfw75tp46hrBbZAhxTXos6/C0127MDtLj0Fd1FNLZIya21hZ5vtc/3c X-Received: by 2002:a17:902:e809:b0:1d0:7844:5086 with SMTP id u9-20020a170902e80900b001d078445086mr12748441plg.7.1703758126308; Thu, 28 Dec 2023 02:08:46 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703758126; cv=none; d=google.com; s=arc-20160816; b=BwaPIEaaroPWStyEs0I4mzBLbZCyfBhntJTkh1vdPHt8NDF4NIoIJ94oNgRNJNBVR7 G7TE7tPgyHF7IH93H6uubk+HCgsHDouoPHAblhvJPEUjFYnLudMtjQbzIWWV+TP2hDoR xjN7nJt1XzOFNG2UadnJAgEzeQgiZLCpWknktP0hWlEBeaAnICcSRDZvcOozMFTosDBz d5iEGAUyH9sQC56DPnyW4zK/e0zjwQ8j1vKIsMW/o58OVn/YuLyL7FXrAFzC8ledPazj HB1PB566YW2t7IceDFdMMRXLptzr6xd6Lhu9X2toh8oU46q3rmW5HFTSxsUKsZLjIY9E fD9Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=55juLIzJETlAD2Iq4uSnuKyEBEzVTLSn40txIVsTBic=; fh=jTCjoJ+Y+apFiqJqgoUFlazJ2LdeNccwdUnBdvX3V30=; b=LKCR+X4KBslrjifaqRGIYTx+ySLmXozEZ0FjQO4uHdIGyZQqI6ONBALT6o/x6UF5Wg v7UygL9sowsLRDkYEdcCikyDnSsMyxzOAPdACqC9U5aYKUE6sLz9Adv0AdABUjwGB0o7 48dABjyvluR6W3aj5J615AkGMC8G61KAbenE2HJyr7B0979GO+dHKAbGU735eIqdSj21 P3IHjAXoWCNx65wpHQCSsdsaFekgacO6jvp/4zoGD5Dexdnk4K+3FUeqW4hsvOHD+vcH xIU7LdYz+62uAkj2Bv/LYPWE+MWbndRvz9Wh6rN12QqaHi4zwuiNYSpl4jmMHnk9t3ap SXVQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=ODPP343F; spf=pass (google.com: domain of linux-kernel+bounces-12554-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12554-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [147.75.48.161]) by mx.google.com with ESMTPS id m4-20020a170902db0400b001d487c84104si1806497plx.75.2023.12.28.02.08.45 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 02:08:46 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12554-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) client-ip=147.75.48.161; Authentication-Results: mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=ODPP343F; spf=pass (google.com: domain of linux-kernel+bounces-12554-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.48.161 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12554-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 5BA9BB23B5D for ; Thu, 28 Dec 2023 10:03:42 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 28008846F; Thu, 28 Dec 2023 10:02:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gimli.ms.mff.cuni.cz header.i=@gimli.ms.mff.cuni.cz header.b="ODPP343F" X-Original-To: linux-kernel@vger.kernel.org Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5370D8464; Thu, 28 Dec 2023 10:02:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gimli.ms.mff.cuni.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gimli.ms.mff.cuni.cz Received: from gimli.ms.mff.cuni.cz (gimli.ms.mff.cuni.cz [195.113.20.176]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by nikam.ms.mff.cuni.cz (Postfix) with ESMTPS id B1ADD28C555; Thu, 28 Dec 2023 11:02:35 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gimli.ms.mff.cuni.cz; s=gen1; t=1703757755; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=55juLIzJETlAD2Iq4uSnuKyEBEzVTLSn40txIVsTBic=; b=ODPP343FJe4z0PNypV3FeCEo0gUBBcaoNjsV33Mq5BtNXuOkdqfdJGinGTm949IjRtCPrx d6YVr/o43xxpGmwPHH/RfinviECfsbXAw87TXmS6OsaQe69Jyg+OQJVJMUj2lR3w5Bc9ZS P92X8kRaa/E/UcQZicZ1Swmxv5zHCPM= Received: from localhost (internet5.mraknet.com [185.200.108.250]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: karelb) by gimli.ms.mff.cuni.cz (Postfix) with ESMTPSA id 8CB134423CE; Thu, 28 Dec 2023 11:02:35 +0100 (CET) From: Karel Balej To: Karel Balej , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Duje_Mihanovi=C4=87?= , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org Subject: [RFC PATCH 4/5] regulator: add 88pm88x regulators driver Date: Thu, 28 Dec 2023 10:39:13 +0100 Message-ID: <20231228100208.2932-5-karelb@gimli.ms.mff.cuni.cz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> References: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786519881297243729 X-GMAIL-MSGID: 1786519881297243729 From: Karel Balej Support the LDO and buck regulators of the Marvell 88PM886 PMIC. Support for 88PM880 is not included but should be easy to implement being just a matter of defining the additional LDOs and all bucks and modifying the 88PM88X MFD driver appropriately. Signed-off-by: Karel Balej --- drivers/mfd/88pm88x.c | 15 ++ drivers/regulator/88pm88x-regulator.c | 214 ++++++++++++++++++++++++++ drivers/regulator/Kconfig | 6 + drivers/regulator/Makefile | 1 + include/linux/mfd/88pm88x.h | 11 ++ 5 files changed, 247 insertions(+) create mode 100644 drivers/regulator/88pm88x-regulator.c diff --git a/drivers/mfd/88pm88x.c b/drivers/mfd/88pm88x.c index 69a8e39d43b3..999d0539b720 100644 --- a/drivers/mfd/88pm88x.c +++ b/drivers/mfd/88pm88x.c @@ -68,6 +68,21 @@ static struct mfd_cell pm886_devs[] = { .num_resources = ARRAY_SIZE(pm88x_onkey_resources), .resources = pm88x_onkey_resources, }, + { + .name = "88pm88x-regulator", + .id = PM88X_REGULATOR_ID_LDO2, + .of_compatible = "marvell,88pm88x-regulator", + }, + { + .name = "88pm88x-regulator", + .id = PM88X_REGULATOR_ID_LDO15, + .of_compatible = "marvell,88pm88x-regulator", + }, + { + .name = "88pm88x-regulator", + .id = PM886_REGULATOR_ID_BUCK2, + .of_compatible = "marvell,88pm88x-regulator", + }, }; static struct pm88x_data pm886_a1_data = { diff --git a/drivers/regulator/88pm88x-regulator.c b/drivers/regulator/88pm88x-regulator.c new file mode 100644 index 000000000000..8b55e1365387 --- /dev/null +++ b/drivers/regulator/88pm88x-regulator.c @@ -0,0 +1,214 @@ +// SPDX-License-Identifier: GPL-2.0-only +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#define PM88X_REG_LDO_EN1 0x09 +#define PM88X_REG_LDO_EN2 0x0a + +#define PM88X_REG_BUCK_EN 0x08 + +#define PM88X_REG_LDO1_VOUT 0x20 +#define PM88X_REG_LDO2_VOUT 0x26 +#define PM88X_REG_LDO3_VOUT 0x2c +#define PM88X_REG_LDO4_VOUT 0x32 +#define PM88X_REG_LDO5_VOUT 0x38 +#define PM88X_REG_LDO6_VOUT 0x3e +#define PM88X_REG_LDO7_VOUT 0x44 +#define PM88X_REG_LDO8_VOUT 0x4a +#define PM88X_REG_LDO9_VOUT 0x50 +#define PM88X_REG_LDO10_VOUT 0x56 +#define PM88X_REG_LDO11_VOUT 0x5c +#define PM88X_REG_LDO12_VOUT 0x62 +#define PM88X_REG_LDO13_VOUT 0x68 +#define PM88X_REG_LDO14_VOUT 0x6e +#define PM88X_REG_LDO15_VOUT 0x74 +#define PM88X_REG_LDO16_VOUT 0x7a + +#define PM886_REG_BUCK1_VOUT 0xa5 +#define PM886_REG_BUCK2_VOUT 0xb3 +#define PM886_REG_BUCK3_VOUT 0xc1 +#define PM886_REG_BUCK4_VOUT 0xcf +#define PM886_REG_BUCK5_VOUT 0xdd + +#define PM88X_LDO_VSEL_MASK 0x0f +#define PM88X_BUCK_VSEL_MASK 0x7f + +struct pm88x_regulator { + struct regulator_desc desc; + int max_uA; +}; + +static int pm88x_regulator_get_ilim(struct regulator_dev *rdev) +{ + struct pm88x_regulator *data = rdev_get_drvdata(rdev); + + if (!data) { + dev_err(&rdev->dev, "Failed to get regulator data\n"); + return -EINVAL; + } + return data->max_uA; +} + +static const struct regulator_ops pm88x_ldo_ops = { + .list_voltage = regulator_list_voltage_table, + .map_voltage = regulator_map_voltage_iterate, + .set_voltage_sel = regulator_set_voltage_sel_regmap, + .get_voltage_sel = regulator_get_voltage_sel_regmap, + .enable = regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, + .get_current_limit = pm88x_regulator_get_ilim, +}; + +static const struct regulator_ops pm88x_buck_ops = { + .list_voltage = regulator_list_voltage_linear_range, + .map_voltage = regulator_map_voltage_linear_range, + .set_voltage_sel = regulator_set_voltage_sel_regmap, + .get_voltage_sel = regulator_get_voltage_sel_regmap, + .enable = regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, + .get_current_limit = pm88x_regulator_get_ilim, +}; + +static const unsigned int pm88x_ldo_volt_table1[] = { + 1700000, 1800000, 1900000, 2500000, 2800000, 2900000, 3100000, 3300000, +}; + +static const unsigned int pm88x_ldo_volt_table2[] = { + 1200000, 1250000, 1700000, 1800000, 1850000, 1900000, 2500000, 2600000, + 2700000, 2750000, 2800000, 2850000, 2900000, 3000000, 3100000, 3300000, +}; + +static const unsigned int pm88x_ldo_volt_table3[] = { + 1700000, 1800000, 1900000, 2000000, 2100000, 2500000, 2700000, 2800000, +}; + +static const struct linear_range pm88x_buck_volt_ranges1[] = { + REGULATOR_LINEAR_RANGE(600000, 0, 79, 12500), + REGULATOR_LINEAR_RANGE(1600000, 80, 84, 50000), +}; + +static const struct linear_range pm88x_buck_volt_ranges2[] = { + REGULATOR_LINEAR_RANGE(600000, 0, 79, 12500), + REGULATOR_LINEAR_RANGE(1600000, 80, 114, 50000), +}; + +static struct pm88x_regulator pm88x_ldo2 = { + .desc = { + .name = "LDO2", + .id = PM88X_REGULATOR_ID_LDO2, + .regulators_node = "regulators", + .of_match = "ldo2", + .ops = &pm88x_ldo_ops, + .type = REGULATOR_VOLTAGE, + .enable_reg = PM88X_REG_LDO_EN1, + .enable_mask = BIT(1), + .volt_table = pm88x_ldo_volt_table1, + .n_voltages = ARRAY_SIZE(pm88x_ldo_volt_table1), + .vsel_reg = PM88X_REG_LDO2_VOUT, + .vsel_mask = PM88X_LDO_VSEL_MASK, + }, + .max_uA = 100000, +}; + +static struct pm88x_regulator pm88x_ldo15 = { + .desc = { + .name = "LDO15", + .id = PM88X_REGULATOR_ID_LDO15, + .regulators_node = "regulators", + .of_match = "ldo15", + .ops = &pm88x_ldo_ops, + .type = REGULATOR_VOLTAGE, + .enable_reg = PM88X_REG_LDO_EN2, + .enable_mask = BIT(6), + .volt_table = pm88x_ldo_volt_table2, + .n_voltages = ARRAY_SIZE(pm88x_ldo_volt_table2), + .vsel_reg = PM88X_REG_LDO15_VOUT, + .vsel_mask = PM88X_LDO_VSEL_MASK, + }, + .max_uA = 200000, +}; + +static struct pm88x_regulator pm886_buck2 = { + .desc = { + .name = "buck2", + .id = PM886_REGULATOR_ID_BUCK2, + .regulators_node = "regulators", + .of_match = "buck2", + .ops = &pm88x_buck_ops, + .type = REGULATOR_VOLTAGE, + .n_voltages = 115, + .linear_ranges = pm88x_buck_volt_ranges2, + .n_linear_ranges = ARRAY_SIZE(pm88x_buck_volt_ranges2), + .vsel_reg = PM886_REG_BUCK2_VOUT, + .vsel_mask = PM88X_BUCK_VSEL_MASK, + .enable_reg = PM88X_REG_BUCK_EN, + .enable_mask = BIT(1), + }, + .max_uA = 1200000, +}; + +static struct pm88x_regulator *pm88x_regulators[] = { + [PM88X_REGULATOR_ID_LDO2] = &pm88x_ldo2, + [PM88X_REGULATOR_ID_LDO15] = &pm88x_ldo15, + [PM886_REGULATOR_ID_BUCK2] = &pm886_buck2, +}; + +static int pm88x_regulator_probe(struct platform_device *pdev) +{ + struct pm88x_chip *chip = dev_get_drvdata(pdev->dev.parent); + struct regulator_config rcfg = { }; + struct pm88x_regulator *regulator; + struct regulator_desc *rdesc; + struct regulator_dev *rdev; + int ret; + + if (pdev->id < 0 || pdev->id == PM88X_REGULATOR_ID_BUCKS + || pdev->id >= PM88X_REGULATOR_ID_SENTINEL) { + dev_err(&pdev->dev, "Invalid regulator ID: %d\n", pdev->id); + return -EINVAL; + } + + rcfg.dev = pdev->dev.parent; + regulator = pm88x_regulators[pdev->id]; + rdesc = ®ulator->desc; + rcfg.driver_data = regulator; + rcfg.regmap = chip->regmaps[rdesc->id > PM88X_REGULATOR_ID_BUCKS ? + PM88X_REGMAP_BUCK : PM88X_REGMAP_LDO]; + rdev = devm_regulator_register(&pdev->dev, rdesc, &rcfg); + if (IS_ERR(rdev)) { + ret = PTR_ERR(rdev); + dev_err(&pdev->dev, "Failed to register %s: %d", + rdesc->name, ret); + return ret; + } + + return 0; +} + +const struct of_device_id pm88x_regulator_of_match[] = { + { .compatible = "marvell,88pm88x-regulator", }, + { }, +}; + +static struct platform_driver pm88x_regulator_driver = { + .driver = { + .name = "88pm88x-regulator", + .of_match_table = of_match_ptr(pm88x_regulator_of_match), + }, + .probe = pm88x_regulator_probe, +}; +module_platform_driver(pm88x_regulator_driver); + +MODULE_DESCRIPTION("Marvell 88PM88X PMIC regulator driver"); +MODULE_AUTHOR("Karel Balej "); +MODULE_LICENSE("GPL"); diff --git a/drivers/regulator/Kconfig b/drivers/regulator/Kconfig index f3ec24691378..e3fffae60b4c 100644 --- a/drivers/regulator/Kconfig +++ b/drivers/regulator/Kconfig @@ -81,6 +81,12 @@ config REGULATOR_88PM8607 help This driver supports 88PM8607 voltage regulator chips. +config REGULATOR_88PM88X + tristate "Marvell 88PM88X voltage regulators" + depends on MFD_88PM88X + help + This driver implements support for Marvell 88PM88X voltage regulators. + config REGULATOR_ACT8865 tristate "Active-semi act8865 voltage regulator" depends on I2C diff --git a/drivers/regulator/Makefile b/drivers/regulator/Makefile index b2b059b5ee56..9c8a85b21699 100644 --- a/drivers/regulator/Makefile +++ b/drivers/regulator/Makefile @@ -13,6 +13,7 @@ obj-$(CONFIG_REGULATOR_USERSPACE_CONSUMER) += userspace-consumer.o obj-$(CONFIG_REGULATOR_88PG86X) += 88pg86x.o obj-$(CONFIG_REGULATOR_88PM800) += 88pm800-regulator.o obj-$(CONFIG_REGULATOR_88PM8607) += 88pm8607.o +obj-$(CONFIG_REGULATOR_88PM88X) += 88pm88x-regulator.o obj-$(CONFIG_REGULATOR_CROS_EC) += cros-ec-regulator.o obj-$(CONFIG_REGULATOR_CPCAP) += cpcap-regulator.o obj-$(CONFIG_REGULATOR_AAT2870) += aat2870-regulator.o diff --git a/include/linux/mfd/88pm88x.h b/include/linux/mfd/88pm88x.h index 703e6104c1d8..edb871cc1d47 100644 --- a/include/linux/mfd/88pm88x.h +++ b/include/linux/mfd/88pm88x.h @@ -41,6 +41,17 @@ #define PM88X_PAGE_OFFSET_LDO 1 +enum pm88x_regulator_id { + PM88X_REGULATOR_ID_LDO2, + PM88X_REGULATOR_ID_LDO15, + + PM88X_REGULATOR_ID_BUCKS, + + PM886_REGULATOR_ID_BUCK2, + + PM88X_REGULATOR_ID_SENTINEL +}; + enum pm88x_regmap_index { PM88X_REGMAP_BASE, PM88X_REGMAP_LDO, From patchwork Thu Dec 28 09:39:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Karel Balej X-Patchwork-Id: 183669 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp1900822dyb; Thu, 28 Dec 2023 02:03:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IFFSfvVSvcEaIeVpy/sCKW3sEUwb0WqFsdJG1BCICbHudbMGgVtzigJRCEsC7eAT7VHsWjA X-Received: by 2002:a17:906:4554:b0:a26:d98d:74d7 with SMTP id s20-20020a170906455400b00a26d98d74d7mr7135563ejq.33.1703757837811; Thu, 28 Dec 2023 02:03:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703757837; cv=none; d=google.com; s=arc-20160816; b=Gq1g9N//ZAZ0lrxTaC1fNe7u2IZDxVuR6GvznCF2F5XAbjgUV9aLB+/pMMh30cH18q bMlq74pJdzKLEcThn1AbA+jHx7ycvzcriIsQKKMvDFEDrjFuERCIupkpxrJbRuMSc3wG ZNVhHJlXmQRYWFJz9XN7uvBm61qoKxgj3h+QgKWwaQiOoIAJjFe1jNXqY1Xta4EH6JPm 2BJbTG+osfyOC0IyhW7TW8eLPYplbt6TKmzTbyamM8kZEv4EVNcK4jFOA84W10z0Vi/f xW0GUF+DTHyz9SXeIbXkF/Rn8vm2mbRz7hcsb97l9bSEsWDXHg7DXXhgIA0yHl9Uvx81 H5MA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=YVSEF+bVjS3Qq3ykpL6+CxTXTvvWWKuDoro8ix+FW6c=; fh=jTCjoJ+Y+apFiqJqgoUFlazJ2LdeNccwdUnBdvX3V30=; b=NtOeBKdAKBNY9hvwZsGZbhVLNOzFtL64+JlP4fGF5IGEyGfB7LOaPoJ7y9GDbNTmNu HQUCcmH0x/ducuwuaG1/4J5Y9AZOnuCxOVgFPzs/xLoZ2xKtya8gTIW/EPGiFoq6Ogfz /Q52qumLfxRlOngs2KMGlGYkgchDI6EUDCB9uE8dCS9nsye9ZHWmpCr6m24njgOIgJ5C xRrZq7anDmC+W0oXwr+1hYpR9sSquPSUn4yV+mM/QFcg9C36koJzjyfPG1WyNfxzw/hU rE50qEPKVLAg3Hgjd99booC/T0eDSS0fO506t6q9SiGwts7uZ902yzx6oRqB3bbowv24 9VIw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=f8X8Mcbw; spf=pass (google.com: domain of linux-kernel+bounces-12555-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12555-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [147.75.80.249]) by mx.google.com with ESMTPS id t18-20020a17090605d200b00a26e35354casi3892115ejt.142.2023.12.28.02.03.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 02:03:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12555-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) client-ip=147.75.80.249; Authentication-Results: mx.google.com; dkim=pass header.i=@gimli.ms.mff.cuni.cz header.s=gen1 header.b=f8X8Mcbw; spf=pass (google.com: domain of linux-kernel+bounces-12555-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.80.249 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12555-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=gimli.ms.mff.cuni.cz Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 6D6CD1F24137 for ; Thu, 28 Dec 2023 10:03:57 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D41E18838; Thu, 28 Dec 2023 10:02:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=gimli.ms.mff.cuni.cz header.i=@gimli.ms.mff.cuni.cz header.b="f8X8Mcbw" X-Original-To: linux-kernel@vger.kernel.org Received: from nikam.ms.mff.cuni.cz (nikam.ms.mff.cuni.cz [195.113.20.16]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id CF16C881E; Thu, 28 Dec 2023 10:02:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gimli.ms.mff.cuni.cz Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gimli.ms.mff.cuni.cz Received: from gimli.ms.mff.cuni.cz (gimli.ms.mff.cuni.cz [195.113.20.176]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by nikam.ms.mff.cuni.cz (Postfix) with ESMTPS id 5103428C556; Thu, 28 Dec 2023 11:02:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gimli.ms.mff.cuni.cz; s=gen1; t=1703757762; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=YVSEF+bVjS3Qq3ykpL6+CxTXTvvWWKuDoro8ix+FW6c=; b=f8X8McbwyJtNecPhdNm9LZB1pqb0LQLcr2EBJa68rO9Chd0wgZXYopNteKeOQYuIJ7ODx3 3KfU4eMXG9S/DibeXat59cY9sExUuAO6mhTfvRZQHK1XjtmpFujXcC4FUeKTgtmkzgzwqk O7kp1z591a8xmLPOtnqBMMEaFNc8k+M= Received: from localhost (internet5.mraknet.com [185.200.108.250]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) (Authenticated sender: karelb) by gimli.ms.mff.cuni.cz (Postfix) with ESMTPSA id 2CFAF4423CE; Thu, 28 Dec 2023 11:02:42 +0100 (CET) From: Karel Balej To: Karel Balej , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Liam Girdwood , Mark Brown , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Duje_Mihanovi=C4=87?= , ~postmarketos/upstreaming@lists.sr.ht, phone-devel@vger.kernel.org Subject: [RFC PATCH 5/5] MAINTAINERS: add entries for the 88pm88x regulators driver Date: Thu, 28 Dec 2023 10:39:14 +0100 Message-ID: <20231228100208.2932-6-karelb@gimli.ms.mff.cuni.cz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> References: <20231228100208.2932-1-karelb@gimli.ms.mff.cuni.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786519578254791495 X-GMAIL-MSGID: 1786519578254791495 From: Karel Balej List the related files under the Marvell 88PM88X PMICs entry. Signed-off-by: Karel Balej --- MAINTAINERS | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index f35ec0f186a9..f9676aec7397 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -12743,8 +12743,10 @@ M: Karel Balej S: Maintained F: Documentation/devicetree/bindings/input/marvell,88pm88x-onkey.yaml F: Documentation/devicetree/bindings/mfd/marvell,88pm88x.yaml +F: Documentation/devicetree/bindings/regulator/marvell,88pm88x-regulator.yaml F: drivers/input/misc/88pm88x-onkey.c F: drivers/mfd/88pm88x.c +F: drivers/regulators/88pm88x-regulator.c F: include/linux/mfd/88pm88x.h MARVELL ARMADA 3700 PHY DRIVERS