From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-f42.google.com (mail-wm1-f42.google.com [209.85.128.42]) (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 EEC3636E471 for ; Sat, 21 Mar 2026 06:25:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.42 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774074359; cv=none; b=V54pfCkni40ABOXsXnjCL/Q4f4rmgE+CwuA+fwN89kyGRIxwGJTYpwV8JngYINOnQ8D0yHL4r94rfHUctEWOk85bI5MZmvaKRIcpPU272qU9F3tfbfMpn/JlHRhwUzKnK8csJZPAT4+aYrBt7xZ6hMWBKZNOod4HMus5Jb6WrpQ= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774074359; c=relaxed/simple; bh=hP9KjRTOx51/rsABzXdt4bE317SW3ZEjY//9LNjWJUo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=npAY6djd+iUmNmbpIsVcx5XE3+drCakAyoNSG3xC5R1BqsHdyFI1unoTmweLpp/045GOTaRm0TeWZRgVSvyy+yiSSAK3CEoNTNPtLE1Rlen+pT7QbOy3MBWz2TSokl7pXvkVKaB7ErEEc39Nnrx+Tbown7jOoTFUVJK4S3l8d6A= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=b/mg1Uzm; arc=none smtp.client-ip=209.85.128.42 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="b/mg1Uzm" Received: by mail-wm1-f42.google.com with SMTP id 5b1f17b1804b1-48704db565eso1625755e9.1 for ; Fri, 20 Mar 2026 23:25:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1774074355; x=1774679155; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=86rxJ6I1HclXmsMsUSngqWJ6Y7ZulHBC1Vt2o/znntU=; b=b/mg1Uzm00Wor+orQgad6c5XjALNckFki1QO3e8WY8YX6HgKxbQmblGQrAzsiFbKEk v/V0oSoEt0vJfQTREGlPjweVIH/BnhHJ37TVIMyhd77ivtO6DH2048kULrCMswXuldXW URTkMLtlt2c0k1KfM8TFa8FWe6TgpMsBIlX92oR9UyQSHr4SyJkEPCmPr1jx7lRm1wa4 akNFeTa2rHHtQ9KFC9qip0YT3hB6gQUiI7Eaa3t/FS6e5UZ+Kwp170M7VkGzCKG2TOOc uVeGKnOaoSUjMnLKLFZMopatsUU2isf7+ENn2Y40BFrpuW1jR8zEVjIBhpGsUeRV83M5 lhiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774074355; x=1774679155; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=86rxJ6I1HclXmsMsUSngqWJ6Y7ZulHBC1Vt2o/znntU=; b=BJOj4QIlkstQR5WQQxQqjztOaC9saJ0muvWvmDb2T/omOrcqW5nmY28hwkIo0/Lmu3 Fw5q0Qcsz3x3EPlCaV4dJvFubCyfk1gBW4CXv+5C9/yp0WdxQffosdkDk86RJF0usGyP cRx+oy6GlxZ4hgToFp9qt6TyA9LOI8V4zjUDfbwiaZr9nBP5CKChoZAmaShbEvFpln0p rAJu4zGNzxOL95p3Eu8flzTFAUurXmoaP0kiwIkM0hotAkkrQqSvAdvN2VhBlbh2fxll Lj8yw3C2olZcOjY33ExVWjN6tuNep/GysWWF151Lkc5VZMR3e1KLlSdWdvr86Qr24/tz GOwA== X-Gm-Message-State: AOJu0Yw/ZUtb8yFSZsmvSmpLtRXJEaRTcsdgcmKmh2ESmKv1+6T+pVJv 6TE/Qqfj2brAWbY0rFVUAh1KTjjm1hPUBfv20zZJ9ARHsEY1OasXfRoB X-Gm-Gg: ATEYQzzquNi7DEnKh8DaWPZe3K3efxR+PAVL3oh97lJzenUfp272WkwiHSSqhKHGs9B WTkVLBxqjGWrdeX8CXeNJRBi4WQDsOfuFAJDaX/w7NNMWo9ZDPDV70t2ZtyPaXSEU7wazS0CTsg yNxn1mXcazTBcNuF//3xwoKIcU9S2yY87Cdf+0sYfMu7CBby1uLmzD0tKaH070TvUNwDh1dsFio oRZlTSlAl7LO0kOH5Ne/wrUs5uEtdePMK3VBianl2OtNYFPqb0Z4cImpZdT+FEQi2aPur+K2x9Q HidNMxxd6UUKMVEe+u8ieSphafzHx/KrxcwjP5f11IFg0WMDmGP4olm2AcgHT+njLE5uFhbYLB6 vfytTN/VDALhLzYjJwKRKr40ssFSpZq56yx23GaK08OhbDLI9yFRnKUoWwplPp38lfLVKjiu+ul aidKAK/yZZsHPziI2R6bDo5Bf9uz9eDhpxeEGtfaaR4Lbs X-Received: by 2002:a05:600c:8483:b0:485:531d:28b9 with SMTP id 5b1f17b1804b1-486fedc0070mr78285625e9.14.1774074354821; Fri, 20 Mar 2026 23:25:54 -0700 (PDT) Received: from jernej-laptop.localnet ([188.159.248.16]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-487031790fdsm56551135e9.3.2026.03.20.23.25.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 20 Mar 2026 23:25:54 -0700 (PDT) From: Jernej =?UTF-8?B?xaBrcmFiZWM=?= To: linux-sunxi@lists.linux.dev, =?UTF-8?B?T25kxZllag==?= Jirman Cc: linux-kernel@vger.kernel.org, Ondrej Jirman , Lee Jones , Chen-Yu Tsai Subject: Re: [PATCH] mfd: axp20x: Change volatile ranges on axp803 Date: Sat, 21 Mar 2026 07:25:49 +0100 Message-ID: <5084920.31r3eYUQgx@jernej-laptop> In-Reply-To: <20260315124932.3669260-1-megi@xff.cz> References: <20260315124932.3669260-1-megi@xff.cz> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Dne nedelja, 15. marec 2026 ob 13:49:31 Srednjeevropski standardni =C4=8Das= je Ond=C5=99ej Jirman napisal(a): > From: Ondrej Jirman >=20 > Regulator control registers can be cached. They don't update by > themselves. Enable cache on them, to speed up voltage changes, > particularly DCDC2 which needs to be handled quickly due to being used > for CPUX cores and is changed very frequently by some cpufreq schedulers. That's not really the case, DCDC2-DCDC6 registers have DVM finished status bit, which is volatile and it is right to have them in volatile range. However, it is true that other registers are non-volatile, so that range can be considerably shrinked. It seems that AXP288 have same register layout but I can't say for sure (I only found datasheet for AXP288C), so it's best to leave it alone and apply changes only to AXP803.=20 Best regards, Jernej >=20 > This shrinks register access over RSB bus to one write per voltage > change (down from 4 or so). >=20 > Signed-off-by: Ondrej Jirman > --- > drivers/mfd/axp20x.c | 28 +++++++++++++++++++++++++++- > 1 file changed, 27 insertions(+), 1 deletion(-) >=20 > diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c > index 0d0d40972eb8..2ea409029d2f 100644 > --- a/drivers/mfd/axp20x.c > +++ b/drivers/mfd/axp20x.c > @@ -172,6 +172,18 @@ static const struct regmap_range axp288_volatile_ran= ges[] =3D { > regmap_reg_range(AXP20X_FG_RES, AXP288_FG_CC_CAP_REG), > }; > =20 > +static const struct regmap_range axp803_volatile_ranges[] =3D { > + regmap_reg_range(AXP20X_PWR_INPUT_STATUS, AXP288_POWER_REASON), > + regmap_reg_range(AXP288_BC_GLOBAL, AXP288_BC_GLOBAL), > + regmap_reg_range(AXP288_BC_DET_STAT, AXP20X_VBUS_IPSOUT_MGMT), > + regmap_reg_range(AXP20X_CHRG_BAK_CTRL, AXP20X_CHRG_BAK_CTRL), > + regmap_reg_range(AXP20X_IRQ1_EN, AXP20X_IPSOUT_V_HIGH_L), > + regmap_reg_range(AXP20X_TIMER_CTRL, AXP20X_TIMER_CTRL), > + regmap_reg_range(AXP20X_GPIO1_CTRL, AXP22X_GPIO_STATE), > + regmap_reg_range(AXP288_RT_BATT_V_H, AXP288_RT_BATT_V_L), > + regmap_reg_range(AXP20X_FG_RES, AXP288_FG_CC_CAP_REG), > +}; > + > static const struct regmap_access_table axp288_writeable_table =3D { > .yes_ranges =3D axp288_writeable_ranges, > .n_yes_ranges =3D ARRAY_SIZE(axp288_writeable_ranges), > @@ -182,6 +194,11 @@ static const struct regmap_access_table axp288_volat= ile_table =3D { > .n_yes_ranges =3D ARRAY_SIZE(axp288_volatile_ranges), > }; > =20 > +static const struct regmap_access_table axp803_volatile_table =3D { > + .yes_ranges =3D axp803_volatile_ranges, > + .n_yes_ranges =3D ARRAY_SIZE(axp803_volatile_ranges), > +}; > + > static const struct regmap_range axp806_writeable_ranges[] =3D { > regmap_reg_range(AXP20X_DATACACHE(0), AXP20X_DATACACHE(3)), > regmap_reg_range(AXP806_PWR_OUT_CTRL1, AXP806_CLDO3_V_CTRL), > @@ -456,6 +473,15 @@ static const struct regmap_config axp22x_regmap_conf= ig =3D { > .cache_type =3D REGCACHE_MAPLE, > }; > =20 > +static const struct regmap_config axp803_regmap_config =3D { > + .reg_bits =3D 8, > + .val_bits =3D 8, > + .wr_table =3D &axp288_writeable_table, > + .volatile_table =3D &axp803_volatile_table, > + .max_register =3D AXP288_FG_TUNE5, > + .cache_type =3D REGCACHE_MAPLE, > +}; > + > static const struct regmap_config axp288_regmap_config =3D { > .reg_bits =3D 8, > .val_bits =3D 8, > @@ -1368,7 +1394,7 @@ int axp20x_match_device(struct axp20x_dev *axp20x) > case AXP803_ID: > axp20x->nr_cells =3D ARRAY_SIZE(axp803_cells); > axp20x->cells =3D axp803_cells; > - axp20x->regmap_cfg =3D &axp288_regmap_config; > + axp20x->regmap_cfg =3D &axp803_regmap_config; > axp20x->regmap_irq_chip =3D &axp803_regmap_irq_chip; > break; > case AXP806_ID: >=20