From patchwork Thu Sep 10 09:31:08 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 3261 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114]) by mxe881.netcup.net (Postfix) with ESMTPS id 1F7F21C010F for ; Thu, 10 Sep 2026 11:40:57 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=baylibre.com; spf=pass (sender IP is 172.105.105.114) smtp.mailfrom=linux-sunxi+bounces-25768-noreply=patchwork.local@lists.linux.dev smtp.helo=tor.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.105.105.114 as permitted sender) client-ip=172.105.105.114; envelope-from=linux-sunxi+bounces-25768-noreply=patchwork.local@lists.linux.dev; helo=tor.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id A96CD3194F for ; Thu, 10 Sep 2026 09:31:50 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 90F483D9035; Thu, 10 Sep 2026 09:31:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="MKcPClDz" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wr1-f41.google.com (mail-wr1-f41.google.com [209.85.221.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8FB893DE448 for ; Thu, 10 Sep 2026 09:31:42 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.41 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032707; cv=none; b=bAPz9A/Z9+K500KjDUiI4mTbb0dl7pN4nww5xiEprob92ZC1DswcHII17mlxSURMVqdonWM4CVLdiZTFWnjWYwNvphpgNIZRhWf2VtDQ5O6ORPdAL4dZXznCiw5nxlmj+Rp95esbM9Sj2mK1URz3z4SxWsJLa2XzcPNij+OGCLw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032707; c=relaxed/simple; bh=6WS2gG4eQGvXIRMEkRovIFW0AaWwhRZ2tj+ICuFq6Q8=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=l/uztKqe06Jfrfosp1OMtS8Ee6/PD1CIKO8okgq08BhOOkHdhFfxfF15nK+AK9em7EesP1nLtQ5TMvNwkUeOCAZpKiRqilg46vuL8bPrSm1uDqenLmhhlGqIG92IybV7royb8oeVifKu/1JHAnSyUiAogyYC9cSfkn+n2g4ZBc8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=MKcPClDz; arc=none smtp.client-ip=209.85.221.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Received: by mail-wr1-f41.google.com with SMTP id ffacd0b85a97d-4843f205a5bso4560276f8f.1 for ; Thu, 10 Sep 2026 02:31:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789032698; x=1789637498; darn=lists.linux.dev; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=eC2Iu7WVN9Kv8E55jimB5I9lAFW6apWINO+cxwm+DSo=; b=MKcPClDz3SehN3dXWTAe0MsaQpRAZrP9gtvXlIL8ObZos6URhE+jkoeokA0FTgZnUv dNVWPDcT3YLua4h1AiToDJivftRnf5rPNeO6Ap+hicKM1Cv3rStn/tNOPpZJgoqzTQWC 2h5zilUWux+CNQSvVxcLJUF5Aq7Tk8Ob3r5PY00Ej8noWoWgixOQkxQmcaBEXQz04kNw Mq/xGgkX4w4f11KYhSMVGVhgFNw2TF7Ypz/lt4NsDV1pxkyvV1OYVJIkFxup2iHcyJCW 5rdO3dITjWJOO50/tTpFGBqk19sMV1ZTPeVlTKHrwuVq1rdRFzkwfDMwyBJOuoIzux7B AJNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789032698; x=1789637498; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=eC2Iu7WVN9Kv8E55jimB5I9lAFW6apWINO+cxwm+DSo=; b=EyXaBlJNSzM9tUSH49UB7mH7msvNICFzKNUxuYqY9H2ihnHXO4laBBig0ETWgIhOSh Su1J9rDtCuBxfMx3VNOAxfGsZ7Y6lSm9yxyPHSdGW7s08VOKz/P7l/QCcCAlYDKgg7fq UbeLqQWFU5QxKJi6GgZLKXrQdEybPWhy1n7dTOpJHKeVCDTWuNEfWOGIWhqY8r4cEvTv RUhElSOnzZSARdAaZQU5N3kG0cJX8O9l4B7pLlFrrcx50rPwzlHZFw4Dqcff0nneo/7N tglfAFYzDIxCWqSWttCX4Fuj1LLsszKLK8DDz7mmqBKoqko1o1vn9UBOUijIs9P9+PLo 8x7g== X-Forwarded-Encrypted: i=1; AKwUvByoHp1ZNSzc6LAtBS4XLUJYtvyFvOoLJeNcNk1Z+THspUg7P19I90vYBWVoH555kJe7sBvOC8RnzLCsEQ==@lists.linux.dev X-Gm-Message-State: AFuF++nRtAAE59XL/kBC1sNx03B7PWCrNQbCLKQZrBPsI/rPIHmIg8i3 Ilu/dXlUhxHbdO8U68anxG8QlRsr68u0dj9VgVL3kCvEj0sejnAV23L4DlH6Y0ogHXc= X-Gm-Gg: AYBFou0+lk71yHC4hG5aHWsPx30Mr942vjQ8+k9yp/3VsxukJKZBUOVDBQQzLxZSoK1 poRLCeFYh71tffCQQrYKCom3Y8dkXkvAfQq9dtx+6BOm3wuFoD3CR40oKmTU5l4p8VaWtBCl/ec U1JQqkoUttVnIwk61sFBbEw1nvFIl6gNif7LGbU/ZdLEklJl6LPAdl2/dtAZcpEEPe+72C/yK/S rkQjDJ/aDv0ySqN77vK7hezK2+03NADJN6A2b+CJSqFFycnGAtBJyuyJNhdlsRtZP+PQfGOgrhU hG7n2WlizzdddpbXW6V38NUSMc0N1n529aMBgabCEPPsMEnYs9v8R4xQivs5tdsOlnMXH/4rHHB RdgwqKjVtL6egLmccCU20AmgipAd3803JIqlxDJtFM9dJR0hVzhL2Le8AQuEQUT88u/zvu/E8q5 UHcdKnBqAhZKgnV3bi3UxFcDt6hw0l3GqZhfVeEWv5Hfbau69u5Ul9/0z8fnWjmNt160cTECuql 0H+Bj60He0x2n6XBhgjSvyI0Knb X-Received: by 2002:a05:6000:491c:b0:486:e727:d4a9 with SMTP id ffacd0b85a97d-486e727d4bamr267531f8f.55.1789032698493; Thu, 10 Sep 2026 02:31:38 -0700 (PDT) Received: from localhost (82-67-6-57.subs.proxad.net. [82.67.6.57]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4858dd90e1fsm54098918f8f.28.2026.09.10.02.31.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 02:31:37 -0700 (PDT) From: Jerome Brunet Date: Thu, 10 Sep 2026 11:31:08 +0200 Subject: [PATCH v7 1/5] mfd: axp20x: Constify axp313 and axp717 cells Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20260910-axp318-regulator-v7-1-de720ceb9bac@baylibre.com> References: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> In-Reply-To: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> To: Andre Przywara , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Hans de Goede Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mfd@lists.linux.dev, linux-sunxi@lists.linux.dev, Jerome Brunet X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=1161; i=jbrunet@baylibre.com; h=from:subject:message-id; bh=6WS2gG4eQGvXIRMEkRovIFW0AaWwhRZ2tj+ICuFq6Q8=; b=owEBbQKS/ZANAwAKAeb8Dxw38tqFAcsmYgBqonjuqKxu8UNJHq0DCQAWeUf5/7Y3PNX51fj8j RwHioty2leJAjMEAAEKAB0WIQT04VmuGPP1bV8btxvm/A8cN/LahQUCaqJ47gAKCRDm/A8cN/La hfhdD/9PQSp8YB79F9eYZ31MRivxo7VTk8yHo2WHgTfXaGtRTfjp9JvsSb/KXSnXm1mkXgSDKF/ 1qKGGwWOg2SDh+0/gc195UoHaT7SBPOGUOS7WuyIuXdLAIEURQpsUjuNlmK2aKITGtlSXu7IlfK 6EZZapEDo5HMn7h07BKKCdaraVW0Dnkw3Q29VHrnU4Vt+2Y1fL4IhwK+mVvjYtrzmwL+Cj89hcn 8BziLEW2Id7SUD3TNpb/t+kfqdQ507IKS3Zh4y1Sx2zmS/R7MggQQjm5jVmL5KHLM4DTTKIJnLK GcdngZL14h1BzQRc6VyJjoD4iJnShD7BkcnFE9LnFq4HdHxP83iC0ki1E28iApVmmD843/Pr+ud XyNn5mTkpyjSvMFsUdpJwu/S8/5FpSiHTbHqxM4AXEtmsvHYvraEj0GsTBrUtmduGL2w6ncFW6I 5gMOWdniEQXZRDBNUR74eBZG5yJKAjHdzl7YWazuo8IyVtcRVgFpKQmZxI7UgLK0MONTR2RSDrE q/U03CaNG7XBfU2Y/p+vZWek4zxBiATbJksSPsb6I2bOlURjlc2BPa7YUAD7woYaGVIR8qfxue5 o2TYBOrh6ODPkxuTU+VwqGvFc3h6K7iq9HL2NdzIFs4SPtpgwW42j/OF5vhkjLuOpjufjyR4Ume LVznEVirXAmuMUg== X-Developer-Key: i=jbrunet@baylibre.com; a=openpgp; fpr=F29F26CF27BAE1A9719AE6BDC3C92AAF3E60AED9 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= mfd_cells array should generally be const and there does not seem to be anything against it for the axp313 and axp717. Constify the mfd_cells array for the axp313 and axp717 to be consistent with the other supported chips Acked-by: Chen-Yu Tsai Signed-off-by: Jerome Brunet --- drivers/mfd/axp20x.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c index 50df66de24e0..4d770e718716 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c @@ -1055,13 +1055,13 @@ static const struct mfd_cell axp152_cells[] = { }, }; -static struct mfd_cell axp313a_cells[] = { +static const struct mfd_cell axp313a_cells[] = { /* AXP323 is sometimes paired with AXP717 as sub-PMIC */ MFD_CELL_BASIC("axp20x-regulator", NULL, NULL, 0, 1), MFD_CELL_RES("axp313a-pek", axp313a_pek_resources), }; -static struct mfd_cell axp717_cells[] = { +static const struct mfd_cell axp717_cells[] = { MFD_CELL_NAME("axp20x-regulator"), MFD_CELL_RES("axp20x-pek", axp717_pek_resources), MFD_CELL_OF("axp717-adc", From patchwork Thu Sep 10 09:31:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 3262 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114]) by mxe881.netcup.net (Postfix) with ESMTPS id AF51B1C584A for ; Thu, 10 Sep 2026 11:40:57 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=baylibre.com; spf=pass (sender IP is 172.105.105.114) smtp.mailfrom=linux-sunxi+bounces-25769-noreply=patchwork.local@lists.linux.dev smtp.helo=tor.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.105.105.114 as permitted sender) client-ip=172.105.105.114; envelope-from=linux-sunxi+bounces-25769-noreply=patchwork.local@lists.linux.dev; helo=tor.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id 6A9BF327A0 for ; Thu, 10 Sep 2026 09:31:51 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 60D123E0C55; Thu, 10 Sep 2026 09:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="Sdi2+75o" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E23F3C277B for ; Thu, 10 Sep 2026 09:31:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032709; cv=none; b=IZyB8LSBR7T5WokZ5l6PSZx99DTHveM/qEl7pWE3ubpWznhTbG3MiS/e7j8oeuR/rDFJcnbU/buwqQdNx4gFpl8ipEJGtpNMvpyxSAi6MgZPMktYmwO2lvX0EvY3T58kzPSEBtD3BuJcSVldovPA9HG5ZXbkpUTFiolsZb/KU5s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032709; c=relaxed/simple; bh=je4IU/IAiNq5H5O0okakTCOl1tHQPQzrOgxF5PvigMM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=GErffI8kEg6wJj10vE5vNohvLqPyPAiuZ+VJTkh4JuLgT0MFmOIFbIogew889F9YpWWxbcEGzECtqTOeK9J+3NAQaE0yAfXsQZ95Nj5/qxfiLNC8ok88z5ZXjlO2jmQdIMfoRrFkwdjRJR3OORuAFv8Fi7Wh5TwNCG+Ogxajfjw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=Sdi2+75o; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49d0e19300cso5902495e9.1 for ; Thu, 10 Sep 2026 02:31:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789032702; x=1789637502; darn=lists.linux.dev; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=oFwgLyL207NuimkwPEL2xJQg2+Ohyu6vwh5w42Gzx6g=; b=Sdi2+75o0Q1BI5xjEwgy7v5g9YXNBdVKcnMDivbe6GCKm5zSvd2uK7UXhu7rcfbxCR VbFC53cESpg+y/XoBoIJt2X4KoBeruB27btVGrs/E6pPsZUDAHsDyL3KWmeLs68e2izY Gj3QEqUfvm7LdGMCG9T+nMs0Y6FICX5KAYGhFzNP04bYKuhgLS5Jbohyz+bALSzQBm5m EZoVMu6ZWenqrNWvX74bCPMfjO6G29wOvRO0YfHxsxvJ2qcTLcAk8KaxsSsugUggMdqR QuOfrqkZnKKqNtW+Tc4+OVW1020pIrs1X6r+BzkunA8XowV2f3MemDPsAAnD3+BtUst9 lgfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789032702; x=1789637502; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oFwgLyL207NuimkwPEL2xJQg2+Ohyu6vwh5w42Gzx6g=; b=C8SuQLGEhbK7UvwG2hpjDP+EteiCNJe1RtZ/+LWewcfpgC76h6pQIEiLuTpI+okass dB3tuuFq3vWl2KhUohbPTaEF2hUBjIrysPLo+Oy7mhQ8JdLha4w+gyz0qE5Ls2AFb/3S Mm+WVnmdpDqOZfs6VZXL+Cp1wzoASF/BRwOJmWPtQFO1dzYTLcViEz5+eS70gBtu9OVG geRUWWe0yowAMSGwrFZ6t1F2Hz/NMqsx+io9hEDWfyeUngvasFCQGaHeLDI7hTViGViB eluM7YLqlqQdmEvwAdwPNMiEcPzcocbGSYSBGh0PzzZZEUkQNP49MaIJ0mX5tJ28qZoY Ny8g== X-Forwarded-Encrypted: i=1; AKwUvBw+ojH+W+Bs7fkSmUdNlWNRmvNFLc7cwKZ1dVTULNqiFHQ1einLK1leY4BbsSy+WDdi1dJtB8K/QC4ftw==@lists.linux.dev X-Gm-Message-State: AFuF++kqXQE35LIGAiDF8O7MPu+EWWZ11khibs8Bj5MKVBCFBQROVg6i Ffny6yTCfnBqquswsyLm/0CFT4Xwu7wYl299WmZ8txYFM4xzWDpB8hcUaktdTjSOGPI= X-Gm-Gg: AYBFou15928HunajpVu/Fly+dW+w78odmtOf7CmTRFMQm3tZfRRxoR9RrZ7aUk4NsoW Fn61BXjrup1t9D9RdRsRHDU+G3wBP0EKiFanyRGmF8Qrpw+ynmyBolzsmTk30xwERoD0v52mwar 1vjq2lsCNFyqxF+bmv5DuoaKMpmthm72jgX2zPa5qvv5Gj07viAhdQLWb6qjmGdwGO6maoYONzz KEGWYBUBsOPbJky/u5dlywtsYRlSKgj0q+uWINq1gQR84lku/I9cJj63GwWUbBLgsgyCG6q4qpU loK+Ak20hf1xKwLQ/DkUmYQ8q8213tuVVAkoNcb4F3KVth150CDAGUGQJclU6n+YSli89Y5pFIi eg7fFAqWvwBKtkcXNzsywvRWCznqQThlnkT8IOre5cyCG51PqnOr3k2ea3/eFEJyye3rqRlqJQr sZxlMca9ioz2itcZMswP3cT9EhBxdH7uUDNLXM8hP6AbZZphiaQytlpYw5lMvEjOPqqyllg/V9X PYnh+H9OZXtB/v9gQ== X-Received: by 2002:a05:600c:4695:b0:499:9240:9a1c with SMTP id 5b1f17b1804b1-49d258e3ce3mr54932335e9.15.1789032701888; Thu, 10 Sep 2026 02:31:41 -0700 (PDT) Received: from localhost (82-67-6-57.subs.proxad.net. [82.67.6.57]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d1fb02bffsm85117265e9.0.2026.09.10.02.31.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 02:31:40 -0700 (PDT) From: Jerome Brunet Date: Thu, 10 Sep 2026 11:31:09 +0200 Subject: [PATCH v7 2/5] mfd: axp20x-i2c: Fix i2c instantiation Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20260910-axp318-regulator-v7-2-de720ceb9bac@baylibre.com> References: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> In-Reply-To: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> To: Andre Przywara , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Hans de Goede Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mfd@lists.linux.dev, linux-sunxi@lists.linux.dev, Sashiko , Jerome Brunet X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3852; i=jbrunet@baylibre.com; h=from:subject:message-id; bh=je4IU/IAiNq5H5O0okakTCOl1tHQPQzrOgxF5PvigMM=; b=owEBbQKS/ZANAwAKAeb8Dxw38tqFAcsmYgBqonjvRKinlEcCy4A0ri5MNpxfQ4L3yuLTNOmma AZwFQfELm6JAjMEAAEKAB0WIQT04VmuGPP1bV8btxvm/A8cN/LahQUCaqJ47wAKCRDm/A8cN/La hbHOD/9/LdCt1jO5+h/A3gefSQM7t6pVQOmanJ47AAd5LkCxiW4JLGe0jPxDa5BCqD8F3Vr1++E 6k7SoMfIXGbch9uX96UfYaZkCoTCoD2CSl5I5brpbTPPTRIyNu/pApaqduNWvPxZD7EwTNFFOem gQWGNzonSdfP8+yk26GvQLda64r2Z22tNw1nQZMms7240xIxY2fRIONOgh98rR/WVZUgNgcqfa7 CPl3ROEFUgyxDxeHEEPpyFYFa2s7XcST0PjUWQXt9znjRB2wAVFv2SIAK2CcH+kBJJvHHqn2pn6 /IbCVNrxcKuIJgT5QMa3u2yfloJTsSitfZIV9w3D5WckqN7vsPDzBp7ApJW2BrDO9I/MFnrHuyP oJIzosn5xhDVPUgki6MepZumeiR+/KvJe6wBD/dklHZIa20tv166OGH3Dyx/dgvkkRu8+C23ouI /r1Fl38URbNHGdh9IDCaqODrWi5OiN/Vei9G3F6/3NPXAtqJagRhADCzXSmRCgcE55spOnSJi8j CyjVbZpbEF9m8VbBeC7ZkOaA1oA1+hvkrf0MGRGKcEczKtuF2KAcaPy2xlxo7Z+RuYpa/2r2g/P ervHbrYQIDdZJDRuMc8zdhaEp7vK4HE3sgf1TqcadnDNwXeRlAAFcGAFnQ7FLmLjlDOTfJ3RbQj Dw2CEPWme0N8LtQ== X-Developer-Key: i=jbrunet@baylibre.com; a=openpgp; fpr=F29F26CF27BAE1A9719AE6BDC3C92AAF3E60AED9 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= Apparently this device never really supported i2c instantiation via sysfs, because the driver does not even look at the i2c device data, which are not set. It would only probe if the device matched through DT. Fix that for correctness, even-though it is probably useless. Add the missing AXP323 while at it. Reported-by: Sashiko Closes: https://lore.kernel.org/r/20260717090209.2A09B1F000E9@smtp.kernel.org Fixes: 41751b033aaa ("mfd: axp20x-i2c: Add i2c-ids to fix module auto-loading") Acked-by: Chen-Yu Tsai Signed-off-by: Jerome Brunet --- drivers/mfd/axp20x-i2c.c | 24 +++++++++++++----------- drivers/mfd/axp20x-rsb.c | 1 + drivers/mfd/axp20x.c | 1 - include/linux/mfd/axp20x.h | 3 +-- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c index 5c93136f977e..a76bec5604c4 100644 --- a/drivers/mfd/axp20x-i2c.c +++ b/drivers/mfd/axp20x-i2c.c @@ -35,6 +35,7 @@ static int axp20x_i2c_probe(struct i2c_client *i2c) axp20x->irq = i2c->irq; dev_set_drvdata(axp20x->dev, axp20x); + axp20x->variant = (kernel_ulong_t)i2c_get_match_data(i2c); ret = axp20x_match_device(axp20x); if (ret) return ret; @@ -76,17 +77,18 @@ MODULE_DEVICE_TABLE(of, axp20x_i2c_of_match); #endif static const struct i2c_device_id axp20x_i2c_id[] = { - { "axp152" }, - { "axp192" }, - { "axp202" }, - { "axp209" }, - { "axp221" }, - { "axp223" }, - { "axp313a" }, - { "axp717" }, - { "axp803" }, - { "axp806" }, - { "axp15060" }, + { .name = "axp152", .driver_data = AXP152_ID }, + { .name = "axp192", .driver_data = AXP192_ID }, + { .name = "axp202", .driver_data = AXP202_ID }, + { .name = "axp209", .driver_data = AXP209_ID }, + { .name = "axp221", .driver_data = AXP221_ID }, + { .name = "axp223", .driver_data = AXP223_ID }, + { .name = "axp313a", .driver_data = AXP313A_ID }, + { .name = "axp323", .driver_data = AXP323_ID }, + { .name = "axp717", .driver_data = AXP717_ID }, + { .name = "axp803", .driver_data = AXP803_ID }, + { .name = "axp806", .driver_data = AXP806_ID }, + { .name = "axp15060", .driver_data = AXP15060_ID }, { } }; MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id); diff --git a/drivers/mfd/axp20x-rsb.c b/drivers/mfd/axp20x-rsb.c index 059656f2a1bd..8fdc870c1fe4 100644 --- a/drivers/mfd/axp20x-rsb.c +++ b/drivers/mfd/axp20x-rsb.c @@ -35,6 +35,7 @@ static int axp20x_rsb_probe(struct sunxi_rsb_device *rdev) axp20x->irq = rdev->irq; dev_set_drvdata(&rdev->dev, axp20x); + axp20x->variant = (kernel_ulong_t)device_get_match_data(axp20x->dev); ret = axp20x_match_device(axp20x); if (ret) return ret; diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c index 4d770e718716..de6946d4bb13 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c @@ -1267,7 +1267,6 @@ int axp20x_match_device(struct axp20x_dev *axp20x) const struct mfd_cell *cells_no_irq = NULL; int nr_cells_no_irq = 0; - axp20x->variant = (long)device_get_match_data(dev); switch (axp20x->variant) { case AXP152_ID: axp20x->nr_cells = ARRAY_SIZE(axp152_cells); diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h index b352661d99a1..1badb4868d17 100644 --- a/include/linux/mfd/axp20x.h +++ b/include/linux/mfd/axp20x.h @@ -997,8 +997,7 @@ static inline int axp20x_read_variable_width(struct regmap *regmap, /** * axp20x_match_device(): Setup axp20x variant related fields * - * @axp20x: axp20x device to setup (.dev field must be set) - * @dev: device associated with this axp20x device + * @axp20x: axp20x device to setup (.dev and variant fields must be set) * * This lets the axp20x core configure the mfd cells and register maps * for later use. From patchwork Thu Sep 10 09:31:10 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 3264 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10]) by mxe881.netcup.net (Postfix) with ESMTPS id C3A901C010F for ; Thu, 10 Sep 2026 12:12:30 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=baylibre.com; spf=pass (sender IP is 172.234.253.10) smtp.mailfrom=linux-sunxi+bounces-25770-noreply=patchwork.local@lists.linux.dev smtp.helo=sea.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.234.253.10 as permitted sender) client-ip=172.234.253.10; envelope-from=linux-sunxi+bounces-25770-noreply=patchwork.local@lists.linux.dev; helo=sea.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sea.lore.kernel.org (Postfix) with ESMTP id 60D44A4A94 for ; Thu, 10 Sep 2026 09:31:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 27E573C3F6F; Thu, 10 Sep 2026 09:31:51 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="hwN3LHXB" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm2-f12.google.com (mail-wm2-f12.google.com [74.125.225.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 636A13E0C4C for ; Thu, 10 Sep 2026 09:31:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.225.140 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032710; cv=none; b=piqVoTygrpCydGedVNnXnUkG8hURF376zgbk16fE2Rr7YDVwBCZ4EBwoN2XNxwrwAVqQsAsZ2uSqodLgQSrTbqCQAL8V5yGGQs9wQMrMhjoBoPYEsQM09ntECvvkAPraAS4gKiR10D2HC9l//uHU3tGKrtx3L2DAjtuhkELFv4g= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032710; c=relaxed/simple; bh=27AUzsKR9CssdEaQkSlsPLqzbRGUpmaiIW0xyEpwgkM=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=MyP0vD+OV+I1YvItgEEBTEyD1QJgrKsNuaPKl3bsK0hG4f3Bj3y56uWtOMQs2GHLvn8v09QvKtscVQ6M9REzxGllGX7nKhQzSxOjfDBhDfwCph/hmHrpWCxRrR4+BeKHjLf6lTRmviBGZ+L9XL32nvmAVfBdaJ441luUyI2n8yM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=hwN3LHXB; arc=none smtp.client-ip=74.125.225.140 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Received: by mail-wm2-f12.google.com with SMTP id 5b1f17b1804b1-49d0e19300cso5902755e9.1 for ; Thu, 10 Sep 2026 02:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789032704; x=1789637504; darn=lists.linux.dev; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=6SzfhZfkD1FSheSAa+udFpbhKZgNVoMqgCB2AIjzHwc=; b=hwN3LHXBUBq1WKkRi5s1rSV90VvNlHrC4BNi1V8JKX5M5q/D7n+A46kUjA5ko4aoP9 iz/RcEtLS3++x0m+cONA1RBJ8/7IYHF4L54ltc5X75uH64dukMz9QG1wd2Ds2ik57nJ3 4gwHKgGJfwLWTcCxKE5qCPNWR6xtbqb+c6Xx1/FKJotWTUTEsrvpzj51e1sq5nkU5daA EpV4md74Djzy2MsNloLfXGxszqrPGHvRtNr9N1Jx/TUVVf12L7BETQUjDAmrmZ17UHS6 9NJI6W/IgF8BJjUUqJB0t1iw2tqnZ6X+TOY3/Y5/XJBc0T9IPyfTAsziOK0SQCNWEt4C OUBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789032704; x=1789637504; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6SzfhZfkD1FSheSAa+udFpbhKZgNVoMqgCB2AIjzHwc=; b=Erc0hbWsZRrOS12v9Mz+Y0XkXRPomaV0zZonUlwPosdauqUtTtj0TRr5Rpp/4YNvo6 Lq5I7EVSgEUffESgT+rVG759fWvaBDh48mxVW8y6/oxunIPiEg6EbQbKhRnFf11/Iahu CBUQxjhwnZbioFnvmAQrgWgMslfdsyNTE+o2lXCNgvzMSmso90zgjEuueL0kKS+/eA66 ZeXTftAXmG03koRoiotp8XM7QiAv/JNZjK+/yt6U3OomtLIV/S1X8trigJOMX0fxh8IW e0uCgcPzIu4YjEQWNN3GRF74+xjofC7Rrjup/ooqBiG5j7ssrCHeHC7JHgEANZL+tXhh o78A== X-Forwarded-Encrypted: i=1; AKwUvBweGofnPItZt2ywLZ6IanyFEisQT5d8LTtxK5dv8ue3d90sj4ZN/1l+eXXULUgFa+RmDdYAhxVYfiWvgg==@lists.linux.dev X-Gm-Message-State: AFuF++ko4CKO+wMwcM8SQXYdGpWPQX0LH5iJxXuZ17fNIITscIncMLq4 Es7FwsAG7xkBppJgh255mzuUqR8MgZfDUlvcRQotSmzfME3qlKOXDKzkucVlxG89ZOg= X-Gm-Gg: AYBFou2Qy37CpvAplKt4BzmzIUKj6cB1Iib0yqh4iKVGLVTMKx7pHhSZv3D/z/2Pe+q FImkffxSvSNGv5M7sWVJ1Cf8x7ADTwH81rXq7AM0xF2wSo95FZjh90evy2VFO1VpeXxP72LUgC3 +hIM3vsB/BFmuOyYfE9o68gWdWHdyBzzsNtdgWuKZj4Z4BxQHRbfuQ2xYKKJ4sTFnaK47JvzpXM lnidc+xNnmjoFD2AIQTnf6QSmvL38+UfzE5Q2PAjYxDTCjotwqHDrX0Q9GLUFUf9bpKPa9Ly62Q yJ0r8+/nwMDpizJCNtmB6nkGhXaFmoy4Pz1pGj1Vg5TAhWO7Tg+EJ0bx729f4a2IQSis7ZBKbdB eOErxDr2FHERdbu3UnnBL0nVggCRfYMF8NkWMs1ocZ9u6oPQCW7+tZwp9yg+laJmUPQRN5jQCYC g0gy33Pc0cSISDF6xV7wDGcxnYiSBfSdmDJ8Og6cI+2SDqh8FtM/SnxJAp0bKlgFL4/PiKb9O7P ZDZpRwu7CznuySFxQ== X-Received: by 2002:a05:600c:c48f:b0:499:4e47:eaf2 with SMTP id 5b1f17b1804b1-49d258cda4emr58183465e9.6.1789032704515; Thu, 10 Sep 2026 02:31:44 -0700 (PDT) Received: from localhost (82-67-6-57.subs.proxad.net. [82.67.6.57]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d26bf332esm54965505e9.8.2026.09.10.02.31.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 02:31:43 -0700 (PDT) From: Jerome Brunet Date: Thu, 10 Sep 2026 11:31:10 +0200 Subject: [PATCH v7 3/5] dt-bindings: mfd: x-powers,axp152: Document AXP318W Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20260910-axp318-regulator-v7-3-de720ceb9bac@baylibre.com> References: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> In-Reply-To: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> To: Andre Przywara , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Hans de Goede Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mfd@lists.linux.dev, linux-sunxi@lists.linux.dev, Conor Dooley , Jerome Brunet X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=3753; i=jbrunet@baylibre.com; h=from:subject:message-id; bh=6eSLEgss9n7JCsvVnaFzT4hYnTeTkd6TBh6eqWPLl0E=; b=owEBbQKS/ZANAwAKAeb8Dxw38tqFAcsmYgBqonjwMfjSAPRNpZoCxaIrK3onAQOeCgr2fiRTu ejAQpLKhbCJAjMEAAEKAB0WIQT04VmuGPP1bV8btxvm/A8cN/LahQUCaqJ48AAKCRDm/A8cN/La he5CD/0ZJJKGnyLNZ+C4njPLmH4FrE2JTONJCh6Q2ouaK6jRE1+pKnhUOJ5/b9ZA8VUJX1ehb9Q VJEGB4+eQNZG9vKc4z0EsBnQgj2s9HIG5v5GyvSskGy1yqQ6PTyoOdWGKvN+6ZlCT2LRmJkqYxf qvV3vH2H79OvEBGTGWZgjFmJEYOyjpAITKCcfNsD4gVAkohoVLbOMa90BVA1LH8MeRUyxFMDNC1 PXfKfC1rvi2Mh1x2wC6qp7Kc/iGMzLweL8MmkOSzEOvDUHSNeoNqrqQS4u9N+jJRssKjXxGlU2S 4Zdc/aHaFkKBTJoOXpc6B6bhBp0du2h+opFJURQTpHXo6sx2J0MpnVQ3ZX9yHCDDdLkIHdqWMq6 MRySKTofNx592rOO2KYXplXC2bTsKcvXhfM7KQ/EKu9LrgAa+bqTlGx4S+k1cVjz3+kSCMQRjX1 ZwQGK8t/oUOB68lyiJNEYCYGpiyVqLxEKqHbsNzP02paU9t5bN35DjhIcuqTNlCGSEuIDKnC+9Z DuVZSwRcUftsAF2WKl8q62wJ85l4RdFXUhWPN9GWR9LC+DJO0B4/5n4iVwTTNJog715QSMjws/A ErzwlN7r1+IKfRJbZGUpGOoSyu6FbWGyh2YZ/bSa153RVVr9np3Yo7/paNDGW7c4854M7dtgDg/ qslxEgM3551cxww== X-Developer-Key: i=jbrunet@baylibre.com; a=openpgp; fpr=F29F26CF27BAE1A9719AE6BDC3C92AAF3E60AED9 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Andre Przywara The X-Powers AXP318W is a PMIC used on some newer Allwinner devices. Among a large number of both DCDC and LDO regulators it features the usual ADC/IRQ/power key parts. Like other recent PMICs, it lacks the DC/DC converter PWM frequency control register, that rate is fixed here (1.5MHz on DCDC1, 3 MHz on the others). Add the new compatible string, and add that to the list of PMICs without the PWM frequency property. Also add more input supply properties, for the split DCDC and ALDO supplies. The PMIC features *two* switched outputs, hanging of DCDC1, and the manual calls them swout1 and swout2, so follow suit here and add those names to the pattern for matching the node names. Signed-off-by: Andre Przywara Reviewed-by: Chen-Yu Tsai Acked-by: Conor Dooley Signed-off-by: Jerome Brunet --- .../devicetree/bindings/mfd/x-powers,axp152.yaml | 28 +++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml index 45f015d63df1..38556c32417b 100644 --- a/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml +++ b/Documentation/devicetree/bindings/mfd/x-powers,axp152.yaml @@ -83,6 +83,7 @@ allOf: contains: enum: - x-powers,axp313a + - x-powers,axp318w - x-powers,axp323 - x-powers,axp15060 - x-powers,axp717 @@ -102,6 +103,7 @@ properties: - x-powers,axp221 - x-powers,axp223 - x-powers,axp313a + - x-powers,axp318w - x-powers,axp323 - x-powers,axp717 - x-powers,axp803 @@ -156,10 +158,18 @@ properties: description: > DCDC1 power supply node, if present. + vin19-supply: + description: > + Combined DCDC1/DCDC9 power supply node, if present. + vin2-supply: description: > DCDC2 power supply node, if present. + vin23-supply: + description: > + Combined DCDC2/DCDC3 power supply node, if present. + vin3-supply: description: > DCDC3 power supply node, if present. @@ -168,6 +178,10 @@ properties: description: > DCDC4 power supply node, if present. + vin45-supply: + description: > + Combined DCDC4/DCDC5 power supply node, if present. + vin5-supply: description: > DCDC5 power supply node, if present. @@ -176,6 +190,10 @@ properties: description: > DCDC6 power supply node, if present. + vin678-supply: + description: > + Combined DCDC6/DCDC7/DCDC8 power supply node, if present. + vin7-supply: description: > DCDC7 power supply node, if present. @@ -220,6 +238,14 @@ properties: description: > ALDO* power supply node, if present. + aldo156in-supply: + description: > + ALDO* power supply node, if present. + + aldo234in-supply: + description: > + ALDO* power supply node, if present. + bldoin-supply: description: > BLDO* power supply node, if present. @@ -277,7 +303,7 @@ properties: Defines the work frequency of DC-DC in kHz. patternProperties: - "^(([a-f])?ldo[0-9]|dcdc[0-7a-e]|ldo(_|-)io(0|1)|(dc1)?sw|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo|boost)$": + "^(([a-f])?ldo[0-9]|dcdc[0-9a-e]|ldo(_|-)io(0|1)|(dc1)?sw|swout[1-2]|rtc(_|-)ldo|cpusldo|drivevbus|dc5ldo|boost)$": $ref: /schemas/regulator/regulator.yaml# type: object unevaluatedProperties: false From patchwork Thu Sep 10 09:31:11 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 3260 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from sto.lore.kernel.org (sto.lore.kernel.org [172.232.135.74]) by mxe881.netcup.net (Postfix) with ESMTPS id D07061C5858 for ; Thu, 10 Sep 2026 11:36:29 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=baylibre.com; spf=pass (sender IP is 172.232.135.74) smtp.mailfrom=linux-sunxi+bounces-25771-noreply=patchwork.local@lists.linux.dev smtp.helo=sto.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.232.135.74 as permitted sender) client-ip=172.232.135.74; envelope-from=linux-sunxi+bounces-25771-noreply=patchwork.local@lists.linux.dev; helo=sto.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by sto.lore.kernel.org (Postfix) with ESMTP id 342D660CF0B for ; Thu, 10 Sep 2026 09:32:04 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 217183E1D1A; Thu, 10 Sep 2026 09:31:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="G+1FHZia" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wm1-f43.google.com (mail-wm1-f43.google.com [209.85.128.43]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id ADB253E1218 for ; Thu, 10 Sep 2026 09:31:49 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032713; cv=none; b=XXY5fHQewXc+vssddRto5Hc033j991FHlOL1oLUDeUXetq+vV8c8jQfIcckhOYaKhEY1smXfAMNiFS1r02g8aTb3RnXnxZgyXzH5Dx9NHnn6oBNJtfZWGUXPp1W4WM0vw0CFp0eUv0AogiEulkW8ieRt6mZVASjN+iRSprlzWWI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032713; c=relaxed/simple; bh=GJPDThOnszeiZ3vt9KH8FW9Eaxz3tFiR4MX/ju/T7HQ=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=ZQ3iWipDSCw/RexyCaORNxn4uld2VLuwrCUIOAduv7XD36wy4wFVj2ZmtwGdcNswPicXTaAx4jpGWVcTuDimXrYZQLf7pkqurFQY6xU6kfU3aMLaWU9X0cFHrviddhER6yemi+Yhu1cNJIQZsCUBxi26r/eL/p0xsFUe7UZ6ePs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=G+1FHZia; arc=none smtp.client-ip=209.85.128.43 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Received: by mail-wm1-f43.google.com with SMTP id 5b1f17b1804b1-49cf4f81d86so53003805e9.2 for ; Thu, 10 Sep 2026 02:31:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789032707; x=1789637507; darn=lists.linux.dev; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=4df3jNNf+SwA47LnnMoTuv12BdxZ5QKPK9X6Eu1aAJA=; b=G+1FHZiarttX+b3ga5Dyu6+VWaO+U/ZeljBYuUN7PrYdNR+pLER+1LGPbXB3QHOmqd IKqFJVha7Ni5gKN9YvaFIKRUiNkALgzcSOpLgX0SicP17oOQZv2HYBiPVtOEsN4DjREv 5m2A1+NJ1jLcja2ohxlFlBWts9oEKkmr7mi8RY0gcpZL5la6wPIWHlexo01zCdBh6rpT MNQFX1Es0xzAJKx0ytLWUF/hlxjkknEM0YinIiF8UonZ+Y+1VosjQ2AZSLmtvv6vw1i9 HNX/TSITmrgrU/JhKPRyC1kNR3H1vmxKc+3gmGs3iOjYPklcAFKBHCxPKTRURaJDBHWi dnDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789032707; x=1789637507; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=4df3jNNf+SwA47LnnMoTuv12BdxZ5QKPK9X6Eu1aAJA=; b=PBqJmjaAOCw71jImpRHAPsETz/7wdP+TgjdlJwMmF6sg/UDhuIYuZCKFmioKRW/dk0 9eZkrJrmnwxEhoawLEM+yOuOse11g75l4Xla+bk7CcGahJAG7zmDAPyvWi7n1Bn9MSNd FqI8wh+soM2z0wD3rUswgZPi5ZRvACgkXbkJcw0Lvb4WIWjraf7CmT1dKH14wrUmiPux WCfjOcmh9FBKdzAyASfhPmZD+3+NmQWrY2FnwtcTWyFWTWzOa0pdQCssMig/rjB6qRHs 158ND7Ld/64k+qRfHeTKYe5qehJIOJvw0mL/ydE8wemwmZjtM4dyYmpmXYMHxbAZckVt QfEw== X-Forwarded-Encrypted: i=1; AKwUvBy4r+UG68h78MCGsxkw9XFUDrJhMcfsWkwksgGkuwtlIhrL7u9KY9IRNvNFePAbpAdA4ipyXfd9fczkLg==@lists.linux.dev X-Gm-Message-State: AFuF++kmb9uL+r8fdia7YIEdVhiBzIkGt1cqJi2ptnvL16BjNq6XPQkM ofrRn9Go+NlkazPfxKro/kmd2o0Z514lrxyr52wmWzMdj86QwFeB3zXbe954BI6qOXE= X-Gm-Gg: AYBFou1UWvXsD81OH15uV/EUBo1ndzG1v3AcWbEuf3VpkIXH3z3SXOZFgJFDPNidw0l 0txZJ2f+Zc1diafqBtHiUeNSAco6Xi6xuidgari3X3cS7K0okQjAJFWq1SlivtVH6xwaPSb+aLo K615a/mnqEWkNdN21qDX5DAgWlrXQwX2dG7VFffDDl+byrTf3gEP/BvbO0UZSHIidXG6oa7m8BS y3OL2Ks15NrV1lu2zcKATPmGR2twaeR0Aa3D/9SBeCybMy9falM9KwEWLqpw2q+5oEyBJR6w4Yw ox0XkZR3C7sfHeWwW13g6ScJLmAVwJ1VFTPtbO5gqgsj/IuYgbWk4e/FuK+HGB/wdQmodm0Bnl7 KGiTaNdD1yxOygpKYchWyW3HqQQtlBsLoSAlrhRrqYnC5IoFHVrCmStdfCO4w/ef75KBeWlqVi0 iBDCw4dRL0CZKMyHD+NuKeCiwvGq2FACNZOd1atm9+6ARV5/CXH/8OrR4CCQ+Pbkgia7736/nb6 A9r4VKwkTbgKHXzMg== X-Received: by 2002:a05:600c:4e8e:b0:49c:dada:f57f with SMTP id 5b1f17b1804b1-49cf823cd42mr365171785e9.7.1789032707100; Thu, 10 Sep 2026 02:31:47 -0700 (PDT) Received: from localhost (82-67-6-57.subs.proxad.net. [82.67.6.57]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-49d26d4e3f3sm66104675e9.15.2026.09.10.02.31.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 02:31:46 -0700 (PDT) From: Jerome Brunet Date: Thu, 10 Sep 2026 11:31:11 +0200 Subject: [PATCH v7 4/5] mfd: axp20x: Add support for AXP318W PMIC Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20260910-axp318-regulator-v7-4-de720ceb9bac@baylibre.com> References: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> In-Reply-To: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> To: Andre Przywara , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Hans de Goede Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mfd@lists.linux.dev, linux-sunxi@lists.linux.dev, Jerome Brunet X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=12979; i=jbrunet@baylibre.com; h=from:subject:message-id; bh=8KErW1FkPZKKzrIm6143ej3q+jSd6lOTIZxIGTzIMGo=; b=owEBbQKS/ZANAwAKAeb8Dxw38tqFAcsmYgBqonjx2UXs1OWZ+WsHxwThGCv73hu6gejpU9sMj pphJU3/xkCJAjMEAAEKAB0WIQT04VmuGPP1bV8btxvm/A8cN/LahQUCaqJ48QAKCRDm/A8cN/La hbP6EACRm+z1cgnQO8JNLRfXST8PwW1Ea5k+GEAHwOWWi+PVvMhQ44Vh05GaUSjcsrj0fgT37ly 0Pl9QPGlA5eYLtC7KcN7FIoQ3yINXIDLWYAAexyMdqwwWtG11Jeom5kWnN5RmpyL5FeCkV4JixN c6w8gx2rOaswxxZ8tgCkb94SLFXA8/kH5t4RvX5j92pFdfyr5LpxXNJ1GLgKpkrWDdZZisMS3fg KTObJenktwj2VSn4BzFbZZ5hcPdRotnLVwYaovqjJWnKA3P0EEGEH61H2+fpgant4lu+Wx2Gghp XYsHiZfp3G4lpmokXVTAICTt88bDF+gh7GWzL+uiHdEIxbYcS6h9JaZI6bYTKWfK/KombYF16EC 9cr2xHL89rgfEEdR39uIL0UoBuwTVFmdoukHWgS4ATfnQO2DNGFFGhKmoQjk+J0MJHsg/RnIf0d Jre218XAKaMCaeVaXRfK5D3DrVG7yDlcim5R5IkQrbwGBBigj4TRK69DEOufvCkkWyietzSUU1v tjBqsvSCA2N9vMVaubUn8CShY2AgkZCaAQNINf0ZbuqtA2donWz+Torixcojjwiw1EPrU9k7o3L fgkWznxQgqO8CVk82N/iVWMUbqB3k/1uKhR3x70yyszyrY+IplBZYgB6rJtGNwaubeiFy6LuoNC 4IRo94oHJ2ggKbg== X-Developer-Key: i=jbrunet@baylibre.com; a=openpgp; fpr=F29F26CF27BAE1A9719AE6BDC3C92AAF3E60AED9 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [3.34 / 15.00]; RBL_SENDERSCORE(2.00)[172.232.135.74:from]; SUSPICIOUS_RECIPS(1.50)[]; MAILLIST(-0.15)[generic]; BAD_REP_POLICIES(0.10)[]; MIME_GOOD(-0.10)[text/plain]; HAS_LIST_UNSUB(-0.01)[]; PRECEDENCE_BULK(0.00)[]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; TAGGED_RCPT(0.00)[dt]; RCVD_VIA_SMTP_AUTH(0.00)[]; RCPT_COUNT_TWELVE(0.00)[14]; DMARC_NA(0.00)[baylibre.com]; FORGED_SENDER_MAILLIST(0.00)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[arm.com:email,sto.lore.kernel.org:rdns,sto.lore.kernel.org:helo,baylibre.com:email]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_FIVE(0.00)[6]; ASN(0.00)[asn:63949, ipnet:172.232.128.0/19, country:SG]; R_SPF_ALLOW(0.00)[+ip4:172.232.135.74]; FREEMAIL_TO(0.00)[arm.com,kernel.org,gmail.com]; TO_DN_SOME(0.00)[]; RECEIVED_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[82.67.6.57:received,100.90.174.1:received,209.85.128.43:received]; FROM_NEQ_ENVFROM(0.00)[jbrunet@baylibre.com,linux-sunxi@lists.linux.dev]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; RCVD_TLS_LAST(0.00)[]; MIME_TRACE(0.00)[0:+]; TAGGED_FROM(0.00)[bounces-25771-noreply=patchwork.local]; MID_RHS_MATCH_FROM(0.00)[]; RBL_SPAMHAUS_BLOCKED_OPENRESOLVER(0.00)[172.232.135.74:from] X-Rspamd-Queue-Id: D07061C5858 X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Andre Przywara The AXP318W is a PMIC chip produced by X-Powers, it can be connected to an I2C bus. It has a large number of regulators: 9(!) DCDC buck converters, and 28 LDOs, also some ADCs, interrupts, and a power key. Describe the regmap and the MFD bits, along with the registers exposed via I2C only. This covers the regulators and interrupts for now. Advertise the device using the new compatible string. We use just "318" for the internal identifiers, for easier typing and less churn, but use "318W" for anything externally visible. If something else other than the "AXP318W" shows up, that's an easy change then. Reviewed-by: Chen-Yu Tsai Signed-off-by: Andre Przywara Co-developed-by: Jerome Brunet Signed-off-by: Jerome Brunet --- drivers/mfd/axp20x-i2c.c | 2 + drivers/mfd/axp20x.c | 88 +++++++++++++++++++++++++++ include/linux/mfd/axp20x.h | 145 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 235 insertions(+) diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c index a76bec5604c4..64c212b76e5e 100644 --- a/drivers/mfd/axp20x-i2c.c +++ b/drivers/mfd/axp20x-i2c.c @@ -66,6 +66,7 @@ static const struct of_device_id axp20x_i2c_of_match[] = { { .compatible = "x-powers,axp221", .data = (void *)AXP221_ID }, { .compatible = "x-powers,axp223", .data = (void *)AXP223_ID }, { .compatible = "x-powers,axp313a", .data = (void *)AXP313A_ID }, + { .compatible = "x-powers,axp318w", .data = (void *)AXP318_ID }, { .compatible = "x-powers,axp323", .data = (void *)AXP323_ID }, { .compatible = "x-powers,axp717", .data = (void *)AXP717_ID }, { .compatible = "x-powers,axp803", .data = (void *)AXP803_ID }, @@ -84,6 +85,7 @@ static const struct i2c_device_id axp20x_i2c_id[] = { { .name = "axp221", .driver_data = AXP221_ID }, { .name = "axp223", .driver_data = AXP223_ID }, { .name = "axp313a", .driver_data = AXP313A_ID }, + { .name = "axp318w", .driver_data = AXP318_ID }, { .name = "axp323", .driver_data = AXP323_ID }, { .name = "axp717", .driver_data = AXP717_ID }, { .name = "axp803", .driver_data = AXP803_ID }, diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c index de6946d4bb13..67ab529ebd2c 100644 --- a/drivers/mfd/axp20x.c +++ b/drivers/mfd/axp20x.c @@ -42,6 +42,7 @@ static const char * const axp20x_model_names[] = { [AXP223_ID] = "AXP223", [AXP288_ID] = "AXP288", [AXP313A_ID] = "AXP313a", + [AXP318_ID] = "AXP318W", [AXP323_ID] = "AXP323", [AXP717_ID] = "AXP717", [AXP803_ID] = "AXP803", @@ -218,6 +219,38 @@ static const struct regmap_access_table axp313a_volatile_table = { .n_yes_ranges = ARRAY_SIZE(axp313a_volatile_ranges), }; +static const struct regmap_range axp318_writeable_ranges[] = { + regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_DATACACHE(3)), + regmap_reg_range(AXP318_DCDC_OUTPUT_CONTROL1, AXP318_DCDC_MODE_CTRL1), + regmap_reg_range(AXP318_DCDC_MODE_CTRL3, AXP318_DCDC_MODE_CTRL3), + regmap_reg_range(AXP318_LDO_OUTPUT_CONTROL1, AXP318_IRQ_EN4), + regmap_reg_range(AXP318_IRQ_STATE1, AXP318_IRQ_STATE4), + regmap_reg_range(AXP318_SHUTDOWN_SRC_CTRL1, AXP318_POK_CTRL), + regmap_reg_range(AXP318_WAKEUP_PWROK_PIN_CFG, AXP318_WAKEUP_PWROK_PIN_CFG), + regmap_reg_range(AXP318_TS_PIN_CFG, AXP318_TS_PIN_CFG), + regmap_reg_range(AXP318_TEMP_ADC_H_EN, AXP318_TEMP_ADC_H_EN), + regmap_reg_range(AXP318_DIE_TEMP_ADC_H_EN, AXP318_DIE_TEMP_ADC_H_EN), + regmap_reg_range(AXP318_GPADC_H_EN, AXP318_GPADC_H_EN), + regmap_reg_range(AXP318_GPIO_CTRL, AXP318_WDOG_CTRL), +}; + +static const struct regmap_range axp318_volatile_ranges[] = { + regmap_reg_range(AXP318_IRQ_STATE1, AXP318_IRQ_STATE4), + regmap_reg_range(AXP318_POWER_REASON, AXP318_SHUTDOWN_SOURCE), + regmap_reg_range(AXP318_TEMP_ADC_H_EN, AXP318_GPADC_L), + regmap_reg_range(AXP318_GPIO_INPUT, AXP318_GPIO_INPUT), +}; + +static const struct regmap_access_table axp318_writeable_table = { + .yes_ranges = axp318_writeable_ranges, + .n_yes_ranges = ARRAY_SIZE(axp318_writeable_ranges), +}; + +static const struct regmap_access_table axp318_volatile_table = { + .yes_ranges = axp318_volatile_ranges, + .n_yes_ranges = ARRAY_SIZE(axp318_volatile_ranges), +}; + static const struct regmap_range axp717_writeable_ranges[] = { regmap_reg_range(AXP717_PMU_FAULT, AXP717_MODULE_EN_CONTROL_1), regmap_reg_range(AXP717_MIN_SYS_V_CONTROL, AXP717_BOOST_CONTROL), @@ -447,6 +480,15 @@ static const struct regmap_config axp313a_regmap_config = { .cache_type = REGCACHE_MAPLE, }; +static const struct regmap_config axp318_regmap_config = { + .reg_bits = 8, + .val_bits = 8, + .wr_table = &axp318_writeable_table, + .volatile_table = &axp318_volatile_table, + .max_register = AXP318_WDOG_CTRL, + .cache_type = REGCACHE_MAPLE, +}; + static const struct regmap_config axp323_regmap_config = { .reg_bits = 8, .val_bits = 8, @@ -663,6 +705,28 @@ static const struct regmap_irq axp313a_regmap_irqs[] = { INIT_REGMAP_IRQ(AXP313A, DIE_TEMP_HIGH, 0, 0), }; +static const struct regmap_irq axp318_regmap_irqs[] = { + INIT_REGMAP_IRQ(AXP318, DCDC8_V_LOW, 0, 7), + INIT_REGMAP_IRQ(AXP318, DCDC7_V_LOW, 0, 6), + INIT_REGMAP_IRQ(AXP318, DCDC6_V_LOW, 0, 5), + INIT_REGMAP_IRQ(AXP318, DCDC5_V_LOW, 0, 4), + INIT_REGMAP_IRQ(AXP318, DCDC4_V_LOW, 0, 3), + INIT_REGMAP_IRQ(AXP318, DCDC3_V_LOW, 0, 2), + INIT_REGMAP_IRQ(AXP318, DCDC2_V_LOW, 0, 1), + INIT_REGMAP_IRQ(AXP318, DCDC1_V_LOW, 0, 0), + INIT_REGMAP_IRQ(AXP318, PEK_RIS_EDGE, 1, 6), + INIT_REGMAP_IRQ(AXP318, PEK_FAL_EDGE, 1, 5), + INIT_REGMAP_IRQ(AXP318, PEK_SHORT, 1, 4), + INIT_REGMAP_IRQ(AXP318, PEK_LONG, 1, 3), + INIT_REGMAP_IRQ(AXP318, DIE_TEMP_HIGH_LV2, 1, 2), + INIT_REGMAP_IRQ(AXP318, DIE_TEMP_HIGH_LV1, 1, 1), + INIT_REGMAP_IRQ(AXP318, DCDC9_V_LOW, 1, 0), + INIT_REGMAP_IRQ(AXP318, GPIO3_INPUT, 2, 6), + INIT_REGMAP_IRQ(AXP318, GPIO2_INPUT, 2, 5), + INIT_REGMAP_IRQ(AXP318, GPIO1_INPUT, 2, 4), + INIT_REGMAP_IRQ(AXP318, WDOG_EXPIRE, 3, 0), +}; + static const struct regmap_irq axp717_regmap_irqs[] = { INIT_REGMAP_IRQ(AXP717, SOC_DROP_LVL2, 0, 7), INIT_REGMAP_IRQ(AXP717, SOC_DROP_LVL1, 0, 6), @@ -884,6 +948,17 @@ static const struct regmap_irq_chip axp313a_regmap_irq_chip = { .num_regs = 1, }; +static const struct regmap_irq_chip axp318_regmap_irq_chip = { + .name = "axp318w_irq_chip", + .status_base = AXP318_IRQ_STATE1, + .ack_base = AXP318_IRQ_STATE1, + .unmask_base = AXP318_IRQ_EN1, + .init_ack_masked = true, + .irqs = axp318_regmap_irqs, + .num_irqs = ARRAY_SIZE(axp318_regmap_irqs), + .num_regs = 4, +}; + static const struct regmap_irq_chip axp717_regmap_irq_chip = { .name = "axp717_irq_chip", .status_base = AXP717_IRQ0_STATE, @@ -1061,6 +1136,10 @@ static const struct mfd_cell axp313a_cells[] = { MFD_CELL_RES("axp313a-pek", axp313a_pek_resources), }; +static const struct mfd_cell axp318_cells[] = { + MFD_CELL_NAME("axp20x-regulator"), +}; + static const struct mfd_cell axp717_cells[] = { MFD_CELL_NAME("axp20x-regulator"), MFD_CELL_RES("axp20x-pek", axp717_pek_resources), @@ -1248,6 +1327,9 @@ static int axp20x_power_off(struct sys_off_data *data) case AXP313A_ID: shutdown_reg = AXP313A_SHUTDOWN_CTRL; break; + case AXP318_ID: + shutdown_reg = AXP318_SHUTDOWN_CTRL; + break; default: shutdown_reg = AXP20X_OFF_CTRL; break; @@ -1312,6 +1394,12 @@ int axp20x_match_device(struct axp20x_dev *axp20x) axp20x->regmap_cfg = &axp313a_regmap_config; axp20x->regmap_irq_chip = &axp313a_regmap_irq_chip; break; + case AXP318_ID: + axp20x->nr_cells = ARRAY_SIZE(axp318_cells); + axp20x->cells = axp318_cells; + axp20x->regmap_cfg = &axp318_regmap_config; + axp20x->regmap_irq_chip = &axp318_regmap_irq_chip; + break; case AXP323_ID: axp20x->nr_cells = ARRAY_SIZE(axp313a_cells); axp20x->cells = axp313a_cells; diff --git a/include/linux/mfd/axp20x.h b/include/linux/mfd/axp20x.h index 1badb4868d17..5c307f41a31f 100644 --- a/include/linux/mfd/axp20x.h +++ b/include/linux/mfd/axp20x.h @@ -19,6 +19,7 @@ enum axp20x_variants { AXP223_ID, AXP288_ID, AXP313A_ID, + AXP318_ID, AXP323_ID, AXP717_ID, AXP803_ID, @@ -116,6 +117,84 @@ enum axp20x_variants { #define AXP313A_IRQ_STATE 0x21 #define AXP323_DCDC_MODE_CTRL2 0x22 +#define AXP318_DCDC_OUTPUT_CONTROL1 0x10 +#define AXP318_DCDC_OUTPUT_CONTROL2 0x11 +#define AXP318_DCDC1_CONTROL 0x12 +#define AXP318_DCDC2_CONTROL 0x13 +#define AXP318_DCDC3_CONTROL 0x14 +#define AXP318_DCDC4_CONTROL 0x15 +#define AXP318_DCDC5_CONTROL 0x16 +#define AXP318_DCDC6_CONTROL 0x17 +#define AXP318_DCDC7_CONTROL 0x18 +#define AXP318_DCDC8_CONTROL 0x19 +#define AXP318_DCDC9_CONTROL 0x1a +#define AXP318_DCDC_MODE_CTRL1 0x1b +#define AXP318_DCDC_MODE_CTRL3 0x1d +#define AXP318_LDO_OUTPUT_CONTROL1 0x20 +#define AXP318_LDO_OUTPUT_CONTROL2 0x21 +#define AXP318_LDO_OUTPUT_CONTROL3 0x22 +#define AXP318_LDO_OUTPUT_CONTROL4 0x23 +#define AXP318_ALDO1_CONTROL 0x24 +#define AXP318_ALDO2_CONTROL 0x25 +#define AXP318_ALDO3_CONTROL 0x26 +#define AXP318_ALDO4_CONTROL 0x27 +#define AXP318_ALDO5_CONTROL 0x28 +#define AXP318_ALDO6_CONTROL 0x29 +#define AXP318_BLDO1_CONTROL 0x2a +#define AXP318_BLDO2_CONTROL 0x2b +#define AXP318_BLDO3_CONTROL 0x2c +#define AXP318_BLDO4_CONTROL 0x2d +#define AXP318_BLDO5_CONTROL 0x2e +#define AXP318_CLDO1_CONTROL 0x2f +#define AXP318_CLDO2_CONTROL 0x30 +#define AXP318_CLDO3_CONTROL 0x31 +#define AXP318_CLDO4_CONTROL 0x32 +#define AXP318_CLDO5_CONTROL 0x33 +#define AXP318_DLDO1_CONTROL 0x34 +#define AXP318_DLDO2_CONTROL 0x35 +#define AXP318_DLDO3_CONTROL 0x36 +#define AXP318_DLDO4_CONTROL 0x37 +#define AXP318_DLDO5_CONTROL 0x38 +#define AXP318_DLDO6_CONTROL 0x39 +#define AXP318_ELDO1_CONTROL 0x3a +#define AXP318_ELDO2_CONTROL 0x3b +#define AXP318_ELDO3_CONTROL 0x3c +#define AXP318_ELDO4_CONTROL 0x3d +#define AXP318_ELDO5_CONTROL 0x3e +#define AXP318_ELDO6_CONTROL 0x3f +#define AXP318_IRQ_EN1 0x40 +#define AXP318_IRQ_EN2 0x41 +#define AXP318_IRQ_EN3 0x42 +#define AXP318_IRQ_EN4 0x43 +#define AXP318_IRQ_STATE1 0x48 +#define AXP318_IRQ_STATE2 0x49 +#define AXP318_IRQ_STATE3 0x4a +#define AXP318_IRQ_STATE4 0x4b +#define AXP318_POWER_REASON 0x50 +#define AXP318_SHUTDOWN_SOURCE 0x51 +#define AXP318_SHUTDOWN_SRC_CTRL1 0x52 +#define AXP318_SHUTDOWN_SRC_CTRL2 0x53 +#define AXP318_DISCHARGE_OVERTEMP_CTRL 0x54 +#define AXP318_SHUTDOWN_CTRL 0x55 +#define AXP318_WAKEUP_VOFF_CTRL 0x56 +#define AXP318_POK_CTRL 0x57 +#define AXP318_WAKEUP_PWROK_PIN_CFG 0x5d +#define AXP318_TS_PIN_CFG 0x60 +#define AXP318_TEMP_ADC_H_EN 0x65 +#define AXP318_TEMP_ADC_L 0x66 +#define AXP318_DIE_TEMP_ADC_H_EN 0x67 +#define AXP318_DIE_TEMP_ADC_L 0x68 +#define AXP318_GPADC_H_EN 0x69 +#define AXP318_GPADC_L 0x6a +#define AXP318_GPIO_CTRL 0x70 +#define AXP318_GPIO_INPUT 0x71 +#define AXP318_GPIO_OUTPUT 0x72 +#define AXP318_PWM_CTRL1 0x73 +#define AXP318_PWM_CTRL2 0x74 +#define AXP318_PWM_CTRL3 0x75 +#define AXP318_BACKUP_BATTERY_CTRL 0x76 +#define AXP318_WDOG_CTRL 0x77 + #define AXP717_ON_INDICATE 0x00 #define AXP717_PMU_STATUS_2 0x01 #define AXP717_BC_DETECT 0x05 @@ -498,6 +577,50 @@ enum { AXP313A_REG_ID_MAX, }; +enum { + AXP318_DCDC1 = 0, + AXP318_DCDC2, + AXP318_DCDC3, + AXP318_DCDC4, + AXP318_DCDC5, + AXP318_DCDC6, + AXP318_DCDC7, + AXP318_DCDC8, + AXP318_DCDC9, + AXP318_ALDO1, + AXP318_ALDO2, + AXP318_ALDO3, + AXP318_ALDO4, + AXP318_ALDO5, + AXP318_ALDO6, + AXP318_BLDO1, + AXP318_BLDO2, + AXP318_BLDO3, + AXP318_BLDO4, + AXP318_BLDO5, + AXP318_CLDO1, + AXP318_CLDO2, + AXP318_CLDO3, + AXP318_CLDO4, + AXP318_CLDO5, + AXP318_DLDO1, + AXP318_DLDO2, + AXP318_DLDO3, + AXP318_DLDO4, + AXP318_DLDO5, + AXP318_DLDO6, + AXP318_ELDO1, + AXP318_ELDO2, + AXP318_ELDO3, + AXP318_ELDO4, + AXP318_ELDO5, + AXP318_ELDO6, + AXP318_SWOUT1, + AXP318_SWOUT2, + AXP318_RTC_LDO, + AXP318_REG_ID_MAX, +}; + enum { AXP717_DCDC1 = 0, AXP717_DCDC2, @@ -819,6 +942,28 @@ enum axp313a_irqs { AXP313A_IRQ_PEK_RIS_EDGE, }; +enum axp318_irqs { + AXP318_IRQ_DCDC1_V_LOW, + AXP318_IRQ_DCDC2_V_LOW, + AXP318_IRQ_DCDC3_V_LOW, + AXP318_IRQ_DCDC4_V_LOW, + AXP318_IRQ_DCDC5_V_LOW, + AXP318_IRQ_DCDC6_V_LOW, + AXP318_IRQ_DCDC7_V_LOW, + AXP318_IRQ_DCDC8_V_LOW, + AXP318_IRQ_DCDC9_V_LOW, + AXP318_IRQ_DIE_TEMP_HIGH_LV1, + AXP318_IRQ_DIE_TEMP_HIGH_LV2, + AXP318_IRQ_PEK_LONG, + AXP318_IRQ_PEK_SHORT, + AXP318_IRQ_PEK_FAL_EDGE, + AXP318_IRQ_PEK_RIS_EDGE, + AXP318_IRQ_GPIO1_INPUT = 20, + AXP318_IRQ_GPIO2_INPUT, + AXP318_IRQ_GPIO3_INPUT, + AXP318_IRQ_WDOG_EXPIRE = 24, +}; + enum axp717_irqs { AXP717_IRQ_VBUS_FAULT, AXP717_IRQ_VBUS_OVER_V, From patchwork Thu Sep 10 09:31:12 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerome Brunet X-Patchwork-Id: 3263 Return-Path: X-Original-To: noreply@patchwork.local Delivered-To: noreply@patchwork.local Received: from tor.lore.kernel.org (tor.lore.kernel.org [172.105.105.114]) by mxe881.netcup.net (Postfix) with ESMTPS id DEA921C010F for ; Thu, 10 Sep 2026 11:41:49 +0200 (CEST) Authentication-Results: mxe881; dkim=pass header.d=baylibre.com; spf=pass (sender IP is 172.105.105.114) smtp.mailfrom=linux-sunxi+bounces-25772-noreply=patchwork.local@lists.linux.dev smtp.helo=tor.lore.kernel.org Received-SPF: pass (mxe881: domain of lists.linux.dev designates 172.105.105.114 as permitted sender) client-ip=172.105.105.114; envelope-from=linux-sunxi+bounces-25772-noreply=patchwork.local@lists.linux.dev; helo=tor.lore.kernel.org; Received: from smtp.subspace.kernel.org (conduit.subspace.kernel.org [100.90.174.1]) by tor.lore.kernel.org (Postfix) with ESMTP id 33E6626B0D for ; Thu, 10 Sep 2026 09:32:21 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CA88B39A803; Thu, 10 Sep 2026 09:31:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b="ZyyixaM4" X-Original-To: linux-sunxi@lists.linux.dev Received: from mail-wr1-f48.google.com (mail-wr1-f48.google.com [209.85.221.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8B21E3E1CE8 for ; Thu, 10 Sep 2026 09:31:52 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032718; cv=none; b=NEUDfPct9r7DpgFvReRwYNx7a8GRh9SQCN1hZ9DF03/babaioS0CZrKxTSoPZAUtNbMJW7iMcb/dEtrDOW0Fiv4s3uODyoa4eTOEzwPD3g8k6Hx6GV37H0SEJ5u7zFrWFYI1+auTTpjw0wZ7X3N1dyVw2Gj20SJvHAd8LaMWg1c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1789032718; c=relaxed/simple; bh=HxfOQgxeNC2M/0FZuUE7U8uVbNE1FfEV8GtT6PXgiCc=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=e++Vn+5kWUsw7llv+dxGltZbkrxWt3F+Cicd5z3RGXm1pYDil6LRLO0EVUDE8SxtPzfaaKCRmIC+GZW3KsCp0WcLZQUiGdpwAAPxOtsix2ax+bi2Gpsauc7qBCEPlqOfnRehDRHG7fRQv/XziqLNVeCFQTNobOwHN9dHqwOsnYo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com; spf=pass smtp.mailfrom=baylibre.com; dkim=pass (2048-bit key) header.d=baylibre.com header.i=@baylibre.com header.b=ZyyixaM4; arc=none smtp.client-ip=209.85.221.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=baylibre.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=baylibre.com Received: by mail-wr1-f48.google.com with SMTP id ffacd0b85a97d-485850cf499so4850304f8f.3 for ; Thu, 10 Sep 2026 02:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=baylibre.com; s=google; t=1789032709; x=1789637509; darn=lists.linux.dev; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=9frimrJtum7yK2qZWoLc4swbgstoZT3xwJT/qEIOZUI=; b=ZyyixaM4bdDUsZqewX7gtYvt7o4egthXIXFi93xSwFRySrVRsAIfoanbLkFZ1AcdgT cd4f9snuNSyvqkWn5xnsKXNAauevK7xpxOFB4zT7uoimdmLq+uy05U4TJs5LmvybuVXu zkYypx4yQNNadwwOyQCOeDv5eT5cEEj7Do3Fkhv2uK6t7D8J4kR1gxC8iBYggRlcTSbt x4Uiyg8MzqNuSS6/RxLRuG+LQ4453P58tpzzpOtDEaYTeBELysGV7k4cb6iag7M2N78i 741uKwN4Ly4PcJ6ECbMKPE8WLptxOY4a8T5/OwzAAWfGExKEoaJNJL6A0vu6T5TzsPJC oldQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1789032709; x=1789637509; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=9frimrJtum7yK2qZWoLc4swbgstoZT3xwJT/qEIOZUI=; b=ONxoCUIq+KKy3MMLW+XHSlCybUlqtU9jDG0qtby+k0PMX/xh/xRQuwSX5bpS7stLBi rvJDT7ymOda+vB3tYh4TDdVObLWe476TnmNio6Aplj+SrGBy05Ou2AwWf1dQg3pxbgpU A+1r6tfDPXDqLEjvxplGwGxUbPGAGPSj6GQg1eG9IhqItiCEB9G1/0rYpPBtkLWfwpQo jDEoGpmSgbuq1mWYyvElUPXtDa939Azch8XAjcQ0B1+IlLNtS7u5tpM05Omypq+2GFIQ 4q6mSJYnMJyp+31iJxdydOJFx7qeWs8k0t4k8NdtKWUOnSoK6qzgOb2LnVZku/elbPfJ H1Dg== X-Forwarded-Encrypted: i=1; AKwUvBy2niegtD0C5vaYfcno/q/e9/y5xUzoVtTSYZAp8ErZKsXJ42HAvcVZxEobEM+dwQAmFjwPyuOBl6b5hg==@lists.linux.dev X-Gm-Message-State: AFuF++lB1I75XP7f6kijq+At7h+v2Gh84uxQ5bm1G9qe/RSGdaRMGgeC Mk9pYbgBqFki0Q5P+ephi+F3JqJrb18dnOJCh+g92RmTQ/dzP1lmQrs7fB03f2e8aR5Dn/0ejLg tFuC9r4w= X-Gm-Gg: AYBFou3QPSpAkb9RJSsIoUmxKB/GEqMdCShNxDMZX/O3sxVinpCPXOCAHNRzcG5gzv4 F84rO/50i5d3ExLqm/o7Plz5+f9HP5SfvG8YxJeC5pAz8H4hSUoiUdleO5XCZCXUk5KErJhVPSN Im66y8V2EF3FWIFjvAK1XcCTRY8hYvnWz2XrEqAhHwWlOF52PJwb5ONESfGrVkxvUaqrfZJk1Vs jWu7PToayGon4oQcQxh/5QgTnfCX56cgxHjcZVRTzhDk3cD2y1pBre4ICvED5KsANvbgiTiUTw6 5LeDfQ6yiFw03dovpFtSCxh1UXQciNQd5bhgogKitz4K7qbHRG4wIO5hQ6SKDgEK4sDXO9ySu96 bEv42VR9A/BTE5YxqKKl+Rz7X3vgpQ+VOGLSxudDo+iZN5eNqdFoKrQ//YUKuFq759JKWkGjJJs D811XkUQHJrvLImnLshE8nQz+tk9Pqb6JSx2hm6BC9t/7PJIbkJ3A/RMvjztIVwP6AGv4wqDL+r zsXsakOvab6m7rMdg== X-Received: by 2002:a05:6000:2c05:b0:485:8c17:9771 with SMTP id ffacd0b85a97d-4858c179a47mr40370756f8f.51.1789032709443; Thu, 10 Sep 2026 02:31:49 -0700 (PDT) Received: from localhost (82-67-6-57.subs.proxad.net. [82.67.6.57]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4859162f354sm42339016f8f.20.2026.09.10.02.31.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 10 Sep 2026 02:31:48 -0700 (PDT) From: Jerome Brunet Date: Thu, 10 Sep 2026 11:31:12 +0200 Subject: [PATCH v7 5/5] regulator: axp20x: add support for the AXP318W Precedence: bulk X-Mailing-List: linux-sunxi@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Message-Id: <20260910-axp318-regulator-v7-5-de720ceb9bac@baylibre.com> References: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> In-Reply-To: <20260910-axp318-regulator-v7-0-de720ceb9bac@baylibre.com> To: Andre Przywara , Lee Jones , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Chen-Yu Tsai , Liam Girdwood , Mark Brown , Hans de Goede Cc: devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, mfd@lists.linux.dev, linux-sunxi@lists.linux.dev, Jerome Brunet X-Mailer: b4 0.16.0 X-Developer-Signature: v=1; a=openpgp-sha256; l=19549; i=jbrunet@baylibre.com; h=from:subject:message-id; bh=mM00w2khOQ1luc9sLRr+7THG50AYVfTw02Km56a/ykA=; b=owEBbQKS/ZANAwAKAeb8Dxw38tqFAcsmYgBqonjyzK8YooQxvGh5ffpuS1D0GKs2VsT5w1170 3EcWZbOmxKJAjMEAAEKAB0WIQT04VmuGPP1bV8btxvm/A8cN/LahQUCaqJ48gAKCRDm/A8cN/La hTg1EACUi4VpmXau1Q/jsRpfpXEYUfE3+QQ2mZ9cdX1h8C0ctwb2IzAsuqlZoyLVNCyCsg4uL0/ ujgNiJalaDFdjsheGl1LBKTyV9FYBXRPnJMN/lWDcOi5LWw2U3UXQ/YXBTAoE7uxfEVrinLCfHK gCW2QfNslbhSUld7viGNu0hotE5FUe/hP1tnv5smeScFJdVfx0zaytcoI6lJbVPczKHff98tS4B BNRjuB1H/3B21W49JL/EXTT7eA5VQleRbAgOdKncjg5BdZC8HapVrmdNhYQuAMF1Av6QHgn2pf9 AGAANaaTmpiaVWThwSQNaPlSsD29AlUa993qprQUTwsdun7byavU05QEFckg8cmomMpHdGAEas5 R8rbTFwJHyVdm9l1RKvCAoOViT7awUyW8vmCicRICeblpIZyLCYkoYS33eciKb+YWVqxygPcY68 pN0bGVhQNKdLAw0qAUTZ1l454S77kO5CBtIovFkeL5Gdku5AR8KzrTlNaf4vBUJ9PuxAGaze3RJ DcuvNyIWJMMNfk2RFI0j9EYj/nyce81fiEDw4mpKzBdNHdcg8+IIDeK2g9MWR8bM5DkpNOqKyWZ +6W8vdDjHEgFdr/S2b4XEKw2zasbUR5liakmGCJ5B/jgWJGDkwxmHem2ZRIiz/d94FJp6ZoLhn9 IsnjdQIRZmxycZw== X-Developer-Key: i=jbrunet@baylibre.com; a=openpgp; fpr=F29F26CF27BAE1A9719AE6BDC3C92AAF3E60AED9 X-Rspamd-Server: rspamd-worker-8404 X-Spamd-Result: default: False [-2.16 / 15.00]; BAYES_HAM(-5.50)[100.00%]; RBL_SENDERSCORE(2.00)[172.105.105.114:from]; SUSPICIOUS_RECIPS(1.50)[]; MAILLIST(-0.15)[generic]; MIME_GOOD(-0.10)[text/plain]; BAD_REP_POLICIES(0.10)[]; HAS_LIST_UNSUB(-0.01)[]; DBL_BLOCKED_OPENRESOLVER(0.00)[baylibre.com:email,tor.lore.kernel.org:rdns,tor.lore.kernel.org:helo,arm.com:email]; TAGGED_RCPT(0.00)[dt]; PRECEDENCE_BULK(0.00)[]; RCPT_COUNT_TWELVE(0.00)[14]; TO_DN_SOME(0.00)[]; ARC_ALLOW(0.00)[subspace.kernel.org:s=arc-20240116:i=1]; DMARC_NA(0.00)[baylibre.com]; R_SPF_ALLOW(0.00)[+ip4:172.105.105.114]; FROM_HAS_DN(0.00)[]; RCVD_COUNT_FIVE(0.00)[6]; MIME_TRACE(0.00)[0:+]; FORGED_RECIPIENTS_MAILLIST(0.00)[]; FREEMAIL_TO(0.00)[arm.com,kernel.org,gmail.com]; FORGED_SENDER_MAILLIST(0.00)[]; RCVD_TLS_LAST(0.00)[]; TAGGED_FROM(0.00)[bounces-25772-noreply=patchwork.local]; MID_RHS_MATCH_FROM(0.00)[]; FROM_NEQ_ENVFROM(0.00)[jbrunet@baylibre.com,linux-sunxi@lists.linux.dev]; ASN(0.00)[asn:63949, ipnet:172.105.96.0/20, country:SG]; RCVD_VIA_SMTP_AUTH(0.00)[] X-Rspamd-Queue-Id: DEA921C010F X-MORS-Enabled: yes X-MORS-DOMAIN: patchwork.local X-MORS-HOSTING: hosting172546 X-MORS-USER: hosting172546 X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= From: Andre Przywara The X-Powers AXP318W is a typical PMIC from X-Powers, featuring nine DC/DC converters and 28 LDOs, on the regulator side. Describe the chip's voltage settings and switch registers, how the voltages are encoded, and connect this to the MFD device via its regulator ID. We use just "318" for the internal identifiers, for easier typing and less churn. If something else other than the "AXP318W" shows up, that's an easy change, externally visible strings carry the additional letter already. Reviewed-by: Chen-Yu Tsai Reviewed-by: Mark Brown Signed-off-by: Andre Przywara Co-developed-by: Jerome Brunet Signed-off-by: Jerome Brunet --- drivers/regulator/axp20x-regulator.c | 319 ++++++++++++++++++++++++++++++++++- 1 file changed, 310 insertions(+), 9 deletions(-) diff --git a/drivers/regulator/axp20x-regulator.c b/drivers/regulator/axp20x-regulator.c index da891415efc0..732541ee619e 100644 --- a/drivers/regulator/axp20x-regulator.c +++ b/drivers/regulator/axp20x-regulator.c @@ -138,6 +138,29 @@ #define AXP313A_DCDC_V_OUT_MASK GENMASK(6, 0) #define AXP313A_LDO_V_OUT_MASK GENMASK(4, 0) +#define AXP318_DCDC1_PFM_PWM_CTRL BIT(7) +#define AXP318_DCDC23_POLYPHASE_CTRL BIT(6) +#define AXP318_DCDC45_POLYPHASE_CTRL BIT(7) +#define AXP318_DCDC1_V_OUT_MASK GENMASK(4, 0) +#define AXP318_DCDC2_V_OUT_MASK GENMASK(6, 0) +#define AXP318_LDO_V_OUT_MASK GENMASK(4, 0) +#define AXP318_ELDO_V_OUT_MASK GENMASK(5, 0) +#define AXP318_THRESHOLD_VOLTAGE 1540000 +/* + * FIXME: + * Some LDOs of the AXP318 may be fed by different supplies and + * the documentation repeatedly warns that output voltage must + * be less than the supply, which is the case for any LDO really. + * + * The best way to let the framework handle this is to set the + * min_dropout_uV field. However the AXP318 documentation + * does not provide any information about this. + * + * Realistically, it can't be less than 1uV so use this + * for all LDOs until we know more. + */ +#define AXP318_LDO_MIN_DROPOUT 1 /* uV */ + #define AXP717_DCDC1_NUM_VOLTAGES 88 #define AXP717_DCDC2_NUM_VOLTAGES 107 #define AXP717_DCDC3_NUM_VOLTAGES 103 @@ -371,8 +394,8 @@ .ops = &axp20x_ops, \ } -#define AXP_DESC(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ - _vmask, _ereg, _emask) \ +#define AXP_DESC_EXT(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask, _ops, _bpreg, _bpmask, _dropout) \ [_family##_##_id] = { \ .name = (_match), \ .supply_name = (_supply), \ @@ -384,13 +407,32 @@ .owner = THIS_MODULE, \ .min_uV = (_min) * 1000, \ .uV_step = (_step) * 1000, \ + .min_dropout_uV = (_dropout), \ .vsel_reg = (_vreg), \ .vsel_mask = (_vmask), \ .enable_reg = (_ereg), \ .enable_mask = (_emask), \ - .ops = &axp20x_ops, \ + .bypass_reg = (_bpreg), \ + .bypass_mask = (_bpmask), \ + .ops = (_ops), \ } +#define AXP_DESC(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask) \ + AXP_DESC_EXT(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask, &axp20x_ops, 0, 0, 0) + +#define AXP_DESC_DO(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask, _dropout) \ + AXP_DESC_EXT(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask, &axp20x_ops, 0, 0, _dropout) + +#define AXP_DESC_BYPASS(_family, _id, _match, _supply, _min, _max, _step, _vreg,\ + _vmask, _ereg, _emask, _bpreg, _bpmask, _dropout) \ + AXP_DESC_EXT(_family, _id, _match, _supply, _min, _max, _step, _vreg, \ + _vmask, _ereg, _emask, &axp20x_bypass_ops, _bpreg, \ + _bpmask, _dropout) + #define AXP_DESC_SW(_family, _id, _match, _supply, _ereg, _emask) \ [_family##_##_id] = { \ .name = (_match), \ @@ -419,8 +461,9 @@ .ops = &axp20x_ops_fixed \ } -#define AXP_DESC_RANGES_DELAY(_family, _id, _match, _supply, _ranges, _n_voltages, \ - _vreg, _vmask, _ereg, _emask, _ramp_delay) \ +#define AXP_DESC_RANGES_DELAY_OPS(_family, _id, _match, _supply, _ranges, \ + _n_voltages, _vreg, _vmask, _ereg, _emask, \ + _ramp_delay, _ops) \ [_family##_##_id] = { \ .name = (_match), \ .supply_name = (_supply), \ @@ -436,10 +479,23 @@ .enable_mask = (_emask), \ .linear_ranges = (_ranges), \ .n_linear_ranges = ARRAY_SIZE(_ranges), \ - .ramp_delay = (_ramp_delay), \ - .ops = &axp20x_ops_range, \ + .ramp_delay = (_ramp_delay), \ + .ops = (_ops), \ } +#define AXP_DESC_RANGES_THRESHOLD(_family, _id, _match, _supply, _ranges, \ + _n_voltages, _vreg, _vmask, _ereg, _emask) \ + AXP_DESC_RANGES_DELAY_OPS(_family, _id, _match, _supply, _ranges, \ + _n_voltages, _vreg, _vmask, _ereg, _emask, \ + 0, &axp318_threshold_ops_range) + +#define AXP_DESC_RANGES_DELAY(_family, _id, _match, _supply, _ranges, \ + _n_voltages, _vreg, _vmask, _ereg, _emask, \ + _ramp_delay) \ + AXP_DESC_RANGES_DELAY_OPS(_family, _id, _match, _supply, _ranges, \ + _n_voltages, _vreg, _vmask, _ereg, _emask, \ + _ramp_delay, &axp20x_ops_range) + #define AXP_DESC_RANGES(_family, _id, _match, _supply, _ranges, _n_voltages, \ _vreg, _vmask, _ereg, _emask) \ AXP_DESC_RANGES_DELAY(_family, _id, _match, _supply, _ranges, \ @@ -567,6 +623,50 @@ static int axp20x_regulator_enable_regmap(struct regulator_dev *rdev) return regulator_enable_regmap(rdev); }; +static int axp318_threshold_check(struct regulator_dev *rdev, + unsigned int sel) +{ + int old_sel, old_uV, new_uV, enabled; + + /* Only applicable if the regulator is enabled */ + enabled = rdev->desc->ops->is_enabled(rdev); + if (enabled <= 0) + return enabled; + + old_sel = rdev->desc->ops->get_voltage_sel(rdev); + if (old_sel < 0) + return old_sel; + + old_uV = rdev->desc->ops->list_voltage(rdev, old_sel); + if (old_uV < 0) + return old_uV; + + new_uV = rdev->desc->ops->list_voltage(rdev, sel); + if (new_uV < 0) + return new_uV; + + /* Crossing the threshold ? */ + if ((old_uV <= AXP318_THRESHOLD_VOLTAGE && + new_uV > AXP318_THRESHOLD_VOLTAGE) || + (new_uV <= AXP318_THRESHOLD_VOLTAGE && + old_uV > AXP318_THRESHOLD_VOLTAGE)) + return -EBUSY; + + return 0; +} + +static int axp318_threshold_set_voltage_sel(struct regulator_dev *rdev, + unsigned int sel) +{ + int ret; + + ret = axp318_threshold_check(rdev, sel); + if (ret < 0) + return ret; + + return regulator_set_voltage_sel_regmap(rdev, sel); +} + static const struct regulator_ops axp20x_ops_fixed = { .list_voltage = regulator_list_voltage_linear, }; @@ -580,6 +680,15 @@ static const struct regulator_ops axp20x_ops_range = { .is_enabled = regulator_is_enabled_regmap, }; +static const struct regulator_ops axp318_threshold_ops_range = { + .set_voltage_sel = axp318_threshold_set_voltage_sel, + .get_voltage_sel = regulator_get_voltage_sel_regmap, + .list_voltage = regulator_list_voltage_linear_range, + .enable = regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, +}; + static const struct regulator_ops axp20x_ops = { .set_voltage_sel = regulator_set_voltage_sel_regmap, .get_voltage_sel = regulator_get_voltage_sel_regmap, @@ -590,6 +699,18 @@ static const struct regulator_ops axp20x_ops = { .set_ramp_delay = axp20x_set_ramp_delay, }; +static const struct regulator_ops axp20x_bypass_ops = { + .set_voltage_sel = regulator_set_voltage_sel_regmap, + .get_voltage_sel = regulator_get_voltage_sel_regmap, + .list_voltage = regulator_list_voltage_linear, + .enable = axp20x_regulator_enable_regmap, + .disable = regulator_disable_regmap, + .is_enabled = regulator_is_enabled_regmap, + .set_ramp_delay = axp20x_set_ramp_delay, + .get_bypass = regulator_get_bypass_regmap, + .set_bypass = regulator_set_bypass_regmap, +}; + static const struct regulator_ops axp20x_ops_sw = { .enable = regulator_enable_regmap, .disable = regulator_disable_regmap, @@ -765,6 +886,158 @@ static const struct regulator_desc axp313a_regulators[] = { AXP_DESC_FIXED(AXP313A, RTC_LDO, "rtc-ldo", "vin1", 1800), }; +static const struct linear_range axp318_dcdc2_ranges[] = { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), +}; + +static const struct linear_range axp318_dcdc6_ranges[] = { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), + REGULATOR_LINEAR_RANGE(1800000, 88, 118, 20000), + REGULATOR_LINEAR_RANGE(2440000, 119, 127, 40000), +}; + +static const struct linear_range axp318_dcdc7_ranges[] = { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000), +}; + +static const struct linear_range axp318_dcdc8_ranges[] = { + REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), + REGULATOR_LINEAR_RANGE(1220000, 71, 102, 20000), + REGULATOR_LINEAR_RANGE(1900000, 103, 118, 100000), +}; + +static const struct regulator_desc axp318_regulators[] = { + AXP_DESC(AXP318, DCDC1, "dcdc1", "vin19", 1000, 3400, 100, + AXP318_DCDC1_CONTROL, AXP318_DCDC1_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(0)), + AXP_DESC_RANGES(AXP318, DCDC2, "dcdc2", "vin23", + axp318_dcdc2_ranges, 88, + AXP318_DCDC2_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(1)), + AXP_DESC_RANGES(AXP318, DCDC3, "dcdc3", "vin23", + axp318_dcdc2_ranges, 88, + AXP318_DCDC3_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(2)), + AXP_DESC_RANGES(AXP318, DCDC4, "dcdc4", "vin45", + axp318_dcdc2_ranges, 88, + AXP318_DCDC4_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(3)), + AXP_DESC_RANGES(AXP318, DCDC5, "dcdc5", "vin45", + axp318_dcdc2_ranges, 88, + AXP318_DCDC5_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(4)), + AXP_DESC_RANGES_THRESHOLD(AXP318, DCDC6, "dcdc6", "vin678", + axp318_dcdc6_ranges, 128, + AXP318_DCDC6_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(5)), + AXP_DESC_RANGES_THRESHOLD(AXP318, DCDC7, "dcdc7", "vin678", + axp318_dcdc7_ranges, 103, + AXP318_DCDC7_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(6)), + AXP_DESC_RANGES_THRESHOLD(AXP318, DCDC8, "dcdc8", "vin678", + axp318_dcdc8_ranges, 119, + AXP318_DCDC8_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL1, BIT(7)), + AXP_DESC_RANGES_THRESHOLD(AXP318, DCDC9, "dcdc9", "vin19", + axp318_dcdc8_ranges, 119, + AXP318_DCDC9_CONTROL, AXP318_DCDC2_V_OUT_MASK, + AXP318_DCDC_OUTPUT_CONTROL2, BIT(0)), + AXP_DESC_SW(AXP318, SWOUT1, "swout1", NULL, + AXP318_DCDC_OUTPUT_CONTROL2, BIT(3)), + AXP_DESC_SW(AXP318, SWOUT2, "swout2", NULL, + AXP318_DCDC_OUTPUT_CONTROL2, BIT(4)), + AXP_DESC_DO(AXP318, ALDO1, "aldo1", "aldo156in", 500, 3400, 100, + AXP318_ALDO1_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(0), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ALDO2, "aldo2", "aldo234in", 500, 3400, 100, + AXP318_ALDO2_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(1), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ALDO3, "aldo3", "aldo234in", 500, 3400, 100, + AXP318_ALDO3_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(2), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ALDO4, "aldo4", "aldo234in", 500, 3400, 100, + AXP318_ALDO4_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(3), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ALDO5, "aldo5", "aldo156in", 500, 3400, 100, + AXP318_ALDO5_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(4), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ALDO6, "aldo6", "aldo156in", 500, 3400, 100, + AXP318_ALDO6_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(5), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, BLDO1, "bldo1", "bldoin", 500, 3400, 100, + AXP318_BLDO1_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(6), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, BLDO2, "bldo2", "bldoin", 500, 3400, 100, + AXP318_BLDO2_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL1, BIT(7), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, BLDO3, "bldo3", "bldoin", 500, 3400, 100, + AXP318_BLDO3_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(0), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, BLDO4, "bldo4", "bldoin", 500, 3400, 100, + AXP318_BLDO4_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(1), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, BLDO5, "bldo5", "bldoin", 500, 3400, 100, + AXP318_BLDO5_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(2), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, CLDO1, "cldo1", "cldoin", 500, 3400, 100, + AXP318_CLDO1_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(3), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, CLDO2, "cldo2", "cldoin", 500, 3400, 100, + AXP318_CLDO2_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(4), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, CLDO3, "cldo3", "cldoin", 500, 3400, 100, + AXP318_CLDO3_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(5), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, CLDO4, "cldo4", "cldoin", 500, 3400, 100, + AXP318_CLDO4_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(6), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, CLDO5, "cldo5", "cldoin", 500, 3400, 100, + AXP318_CLDO5_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL2, BIT(7), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO1, "dldo1", "dldoin", 500, 3400, 100, + AXP318_DLDO1_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(0), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO2, "dldo2", "dldoin", 500, 3400, 100, + AXP318_DLDO2_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(1), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO3, "dldo3", "dldoin", 500, 3400, 100, + AXP318_DLDO3_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(2), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO4, "dldo4", "dldoin", 500, 3400, 100, + AXP318_DLDO4_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(3), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO5, "dldo5", "dldoin", 500, 3400, 100, + AXP318_DLDO5_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(4), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, DLDO6, "dldo6", "dldoin", 500, 3400, 100, + AXP318_DLDO6_CONTROL, AXP318_LDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(5), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ELDO1, "eldo1", "eldoin", 500, 1500, 25, + AXP318_ELDO1_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(6), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ELDO2, "eldo2", "eldoin", 500, 1500, 25, + AXP318_ELDO2_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL3, BIT(7), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ELDO3, "eldo3", "eldoin", 500, 1500, 25, + AXP318_ELDO3_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL4, BIT(0), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_BYPASS(AXP318, ELDO4, "eldo4", "eldoin", 500, 1500, 25, + AXP318_ELDO4_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL4, BIT(1), + AXP318_ELDO4_CONTROL, BIT(6), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_BYPASS(AXP318, ELDO5, "eldo5", "eldoin", 500, 1500, 25, + AXP318_ELDO5_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL4, BIT(2), + AXP318_ELDO5_CONTROL, BIT(6), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_DO(AXP318, ELDO6, "eldo6", "eldoin", 500, 1500, 25, + AXP318_ELDO6_CONTROL, AXP318_ELDO_V_OUT_MASK, + AXP318_LDO_OUTPUT_CONTROL4, BIT(3), AXP318_LDO_MIN_DROPOUT), + AXP_DESC_FIXED(AXP318, RTC_LDO, "rtc-ldo", "ips", 1800), +}; + static const struct linear_range axp717_dcdc1_ranges[] = { REGULATOR_LINEAR_RANGE(500000, 0, 70, 10000), REGULATOR_LINEAR_RANGE(1220000, 71, 87, 20000), @@ -1347,6 +1620,7 @@ static int axp20x_set_dcdc_freq(struct platform_device *pdev, u32 dcdcfreq) step = 150; break; case AXP313A_ID: + case AXP318_ID: case AXP323_ID: case AXP717_ID: case AXP15060_ID: @@ -1430,6 +1704,15 @@ static int axp20x_set_dcdc_workmode(struct regulator_dev *rdev, int id, u32 work workmode <<= ffs(mask) - 1; break; + case AXP318_ID: + /* Only DCDC1 has PWM control on the AXP318 */ + if (id != AXP318_DCDC1) + return -EINVAL; + reg = AXP318_DCDC1_CONTROL; + mask = AXP318_DCDC1_PFM_PWM_CTRL; + workmode <<= ffs(mask) - 1; + break; + case AXP806_ID: /* * AXP806 DCDC regulator IDs have the same range as AXP22X. @@ -1543,6 +1826,17 @@ static bool axp20x_is_polyphase_slave(struct axp20x_dev *axp20x, int id) } break; + case AXP318_ID: + regmap_read(axp20x->regmap, AXP318_DCDC_MODE_CTRL1, ®); + + switch (id) { + case AXP318_DCDC3: + return !!(reg & AXP318_DCDC23_POLYPHASE_CTRL); + case AXP318_DCDC5: + return !!(reg & AXP318_DCDC45_POLYPHASE_CTRL); + } + break; + default: return false; } @@ -1585,6 +1879,10 @@ static int axp20x_regulator_probe(struct platform_device *pdev) regulators = axp313a_regulators; nregulators = AXP313A_REG_ID_MAX; break; + case AXP318_ID: + regulators = axp318_regulators; + nregulators = AXP318_REG_ID_MAX; + break; case AXP717_ID: regulators = axp717_regulators; nregulators = AXP717_REG_ID_MAX; @@ -1651,7 +1949,9 @@ static int axp20x_regulator_probe(struct platform_device *pdev) if ((regulators == axp22x_regulators && i == AXP22X_DC1SW) || (regulators == axp803_regulators && i == AXP803_DC1SW) || (regulators == axp809_regulators && i == AXP809_DC1SW) || - (regulators == axp15060_regulators && i == AXP15060_SW)) { + (regulators == axp15060_regulators && i == AXP15060_SW) || + (regulators == axp318_regulators && i == AXP318_SWOUT1) || + (regulators == axp318_regulators && i == AXP318_SWOUT2)) { new_desc = devm_kzalloc(&pdev->dev, sizeof(*desc), GFP_KERNEL); if (!new_desc) @@ -1709,7 +2009,8 @@ static int axp20x_regulator_probe(struct platform_device *pdev) */ if ((regulators == axp22x_regulators && i == AXP22X_DCDC1) || (regulators == axp809_regulators && i == AXP809_DCDC1) || - (regulators == axp15060_regulators && i == AXP15060_DCDC1)) + (regulators == axp15060_regulators && i == AXP15060_DCDC1) || + (regulators == axp318_regulators && i == AXP318_DCDC1)) of_property_read_string(rdev->dev.of_node, "regulator-name", &dcdc1_name);