From: Matti Vaittinen <mazziesaccount@gmail.com>
To: "Andreas Kemnade,,," <andreas@kemnade.info>,
Lee Jones <lee@kernel.org>, Sebastian Reichel <sre@kernel.org>
Cc: linux-kernel@vger.kernel.org, linux-pm@vger.kernel.org
Subject: Re: [PATCH 1/2] mfd: bd71828, bd71815 prepare for power-supply support
Date: Mon, 18 Aug 2025 08:49:27 +0300 [thread overview]
Message-ID: <6ebcdc8b-0b8e-489b-9f93-ebfd2d850432@gmail.com> (raw)
In-Reply-To: <20250816-bd71828-charger-v1-1-71b11bde5c73@kemnade.info>
Thanks a ton for picking up from where I left it Andreas! :) I _really_
do love seeing this proceeding. This has haunted me and I actually still
have a JIRA item pending for this work - although that's one of those
items which might never get done - I just couldn't delete it after
putting quite bit of effort to this :(
I hope that effort benefits someone!
Just one comment:
On 16/08/2025 22:19, Andreas Kemnade,,, wrote:
> From: Matti Vaittinen <mazziesaccount@gmail.com>
>
> Add core support for ROHM BD718(15/28/78) PMIC's charger blocks.
>
> Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
> Signed-off-by: Andreas Kemnade <andreas@kemnade.info>
> ---
> drivers/mfd/rohm-bd71828.c | 44 +++++++++++++++++++++------
> include/linux/mfd/rohm-bd71828.h | 65 ++++++++++++++++++++++++++++++++++++++++
> include/linux/mfd/rohm-generic.h | 2 ++
> 3 files changed, 102 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/mfd/rohm-bd71828.c b/drivers/mfd/rohm-bd71828.c
> index a14b7aa69c3c61d51f2aeeae9afdf222310d63e3..84a64c3b9c9f52e663855c89ed78ede9a7c21f55 100644
> --- a/drivers/mfd/rohm-bd71828.c
> +++ b/drivers/mfd/rohm-bd71828.c
> @@ -45,8 +45,8 @@ static const struct resource bd71828_rtc_irqs[] = {
>
> static const struct resource bd71815_power_irqs[] = {
> DEFINE_RES_IRQ_NAMED(BD71815_INT_DCIN_RMV, "bd71815-dcin-rmv"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_CLPS_OUT, "bd71815-clps-out"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_CLPS_IN, "bd71815-clps-in"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_CLPS_OUT, "bd71815-dcin-clps-out"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_CLPS_IN, "bd71815-dcin-clps-in"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_DCIN_OVP_RES, "bd71815-dcin-ovp-res"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_DCIN_OVP_DET, "bd71815-dcin-ovp-det"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_DCIN_MON_RES, "bd71815-dcin-mon-res"),
> @@ -56,7 +56,7 @@ static const struct resource bd71815_power_irqs[] = {
> DEFINE_RES_IRQ_NAMED(BD71815_INT_VSYS_LOW_RES, "bd71815-vsys-low-res"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_VSYS_LOW_DET, "bd71815-vsys-low-det"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_VSYS_MON_RES, "bd71815-vsys-mon-res"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_VSYS_MON_RES, "bd71815-vsys-mon-det"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_VSYS_MON_DET, "bd71815-vsys-mon-det"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_CHG_WDG_TEMP, "bd71815-chg-wdg-temp"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_CHG_WDG_TIME, "bd71815-chg-wdg"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_CHG_RECHARGE_RES, "bd71815-rechg-res"),
> @@ -87,10 +87,10 @@ static const struct resource bd71815_power_irqs[] = {
> DEFINE_RES_IRQ_NAMED(BD71815_INT_BAT_OVER_CURR_2_DET, "bd71815-bat-oc2-det"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_BAT_OVER_CURR_3_RES, "bd71815-bat-oc3-res"),
> DEFINE_RES_IRQ_NAMED(BD71815_INT_BAT_OVER_CURR_3_DET, "bd71815-bat-oc3-det"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_LOW_RES, "bd71815-bat-low-res"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_LOW_DET, "bd71815-bat-low-det"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_HI_RES, "bd71815-bat-hi-res"),
> - DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_HI_DET, "bd71815-bat-hi-det"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_LOW_RES, "bd71815-temp-bat-low-res"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_LOW_DET, "bd71815-temp-bat-low-det"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_HI_RES, "bd71815-temp-bat-hi-res"),
> + DEFINE_RES_IRQ_NAMED(BD71815_INT_TEMP_BAT_HI_DET, "bd71815-temp-bat-hi-det"),
> };
>
> static const struct mfd_cell bd71815_mfd_cells[] = {
> @@ -109,7 +109,30 @@ static const struct mfd_cell bd71815_mfd_cells[] = {
> },
> };
>
> -static const struct mfd_cell bd71828_mfd_cells[] = {
> +static const struct resource bd71828_power_irqs[] = {
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_CHG_TOPOFF_TO_DONE,
> + "bd71828-chg-done"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_DCIN_DET, "bd71828-pwr-dcin-in"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_DCIN_RMV, "bd71828-pwr-dcin-out"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_BAT_LOW_VOLT_RES,
> + "bd71828-vbat-normal"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_BAT_LOW_VOLT_DET, "bd71828-vbat-low"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_BAT_HI_DET, "bd71828-btemp-hi"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_BAT_HI_RES, "bd71828-btemp-cool"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_BAT_LOW_DET, "bd71828-btemp-lo"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_BAT_LOW_RES,
> + "bd71828-btemp-warm"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_CHIP_OVER_VF_DET,
> + "bd71828-temp-hi"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_CHIP_OVER_VF_RES,
> + "bd71828-temp-norm"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_CHIP_OVER_125_DET,
> + "bd71828-temp-125-over"),
> + DEFINE_RES_IRQ_NAMED(BD71828_INT_TEMP_CHIP_OVER_125_RES,
> + "bd71828-temp-125-under"),
> +};
> +
> +static struct mfd_cell bd71828_mfd_cells[] = {
> { .name = "bd71828-pmic", },
> { .name = "bd71828-gpio", },
> { .name = "bd71828-led", .of_compatible = "rohm,bd71828-leds" },
> @@ -118,8 +141,11 @@ static const struct mfd_cell bd71828_mfd_cells[] = {
> * BD70528 clock gate are the register address and mask.
> */
> { .name = "bd71828-clk", },
> - { .name = "bd71827-power", },
> {
> + .name = "bd71828-power",
> + .resources = bd71828_power_irqs,
> + .num_resources = ARRAY_SIZE(bd71828_power_irqs),
> + }, {
> .name = "bd71828-rtc",
> .resources = bd71828_rtc_irqs,
> .num_resources = ARRAY_SIZE(bd71828_rtc_irqs),
> diff --git a/include/linux/mfd/rohm-bd71828.h b/include/linux/mfd/rohm-bd71828.h
> index ce786c96404a3dc9d5124ffbbd507df89ca0e5ba..a34991984caa8724e925f1c59de4bcfa543ae411 100644
> --- a/include/linux/mfd/rohm-bd71828.h
> +++ b/include/linux/mfd/rohm-bd71828.h
> @@ -189,6 +189,71 @@ enum {
> /* Charger/Battey */
> #define BD71828_REG_CHG_STATE 0x65
> #define BD71828_REG_CHG_FULL 0xd2
> +#define BD71828_REG_CHG_EN 0x6F
> +#define BD71828_REG_DCIN_STAT 0x68
> +#define BD71828_MASK_DCIN_DET 0x01
> +#define BD71828_REG_VDCIN_U 0x9c
> +#define BD71828_MASK_CHG_EN 0x01
> +#define BD71828_CHG_MASK_DCIN_U 0x0f
> +#define BD71828_REG_BAT_STAT 0x67
> +#define BD71828_REG_BAT_TEMP 0x6c
> +#define BD71828_MASK_BAT_TEMP 0x07
> +#define BD71828_BAT_TEMP_OPEN 0x07
> +#define BD71828_MASK_BAT_DET 0x20
> +#define BD71828_MASK_BAT_DET_DONE 0x10
> +#define BD71828_REG_CHG_STATE 0x65
> +#define BD71828_REG_VBAT_U 0x8c
> +#define BD71828_MASK_VBAT_U 0x0f
> +#define BD71828_REG_VBAT_REX_AVG_U 0x92
> +
> +#define BD71828_REG_OCV_PWRON_U 0x8A
> +
> +#define BD71828_REG_VBAT_MIN_AVG_U 0x8e
> +#define BD71828_REG_VBAT_MIN_AVG_L 0x8f
> +
> +#define BD71828_REG_CC_CNT3 0xb5
> +#define BD71828_REG_CC_CNT2 0xb6
> +#define BD71828_REG_CC_CNT1 0xb7
> +#define BD71828_REG_CC_CNT0 0xb8
> +#define BD71828_REG_CC_CURCD_AVG_U 0xb2
> +#define BD71828_MASK_CC_CURCD_AVG_U 0x3f
> +#define BD71828_MASK_CC_CUR_DIR 0x80
> +#define BD71828_REG_VM_BTMP_U 0xa1
> +#define BD71828_REG_VM_BTMP_L 0xa2
> +#define BD71828_MASK_VM_BTMP_U 0x0f
> +#define BD71828_REG_COULOMB_CTRL 0xc4
> +#define BD71828_REG_COULOMB_CTRL2 0xd2
> +#define BD71828_MASK_REX_CC_CLR 0x01
> +#define BD71828_MASK_FULL_CC_CLR 0x10
> +#define BD71828_REG_CC_CNT_FULL3 0xbd
> +#define BD71828_REG_CC_CNT_CHG3 0xc1
> +
> +#define BD71828_REG_VBAT_INITIAL1_U 0x86
> +#define BD71828_REG_VBAT_INITIAL1_L 0x87
> +
> +#define BD71828_REG_VBAT_INITIAL2_U 0x88
> +#define BD71828_REG_VBAT_INITIAL2_L 0x89
> +
> +#define BD71828_REG_IBAT_U 0xb0
> +#define BD71828_REG_IBAT_L 0xb1
> +
> +#define BD71828_REG_IBAT_AVG_U 0xb2
> +#define BD71828_REG_IBAT_AVG_L 0xb3
> +
> +#define BD71828_REG_VSYS_AVG_U 0x96
> +#define BD71828_REG_VSYS_AVG_L 0x97
> +#define BD71828_REG_VSYS_MIN_AVG_U 0x98
> +#define BD71828_REG_VSYS_MIN_AVG_L 0x99
> +#define BD71828_REG_CHG_SET1 0x75
> +#define BD71828_REG_ALM_VBAT_LIMIT_U 0xaa
> +#define BD71828_REG_BATCAP_MON_LIMIT_U 0xcc
> +#define BD71828_REG_CONF 0x64
> +
> +#define BD71828_REG_DCIN_CLPS 0x71
> +
> +#define BD71828_REG_MEAS_CLEAR 0xaf
> +
> +
>
> /* LEDs */
> #define BD71828_REG_LED_CTRL 0x4A
> diff --git a/include/linux/mfd/rohm-generic.h b/include/linux/mfd/rohm-generic.h
> index 579e8dcfcca41d2680283819684a1014617d0d4b..5e9d0da380ec0fc3245bee998c791a162a34e3fa 100644
> --- a/include/linux/mfd/rohm-generic.h
> +++ b/include/linux/mfd/rohm-generic.h
> @@ -13,9 +13,11 @@ enum rohm_chip_type {
> ROHM_CHIP_TYPE_BD9574,
> ROHM_CHIP_TYPE_BD9576,
> ROHM_CHIP_TYPE_BD71815,
> + ROHM_CHIP_TYPE_BD71827,
Reading you drop the BD71827 support (which sounds like the right thing
to do) - do we still need this?
> ROHM_CHIP_TYPE_BD71828,
> ROHM_CHIP_TYPE_BD71837,
> ROHM_CHIP_TYPE_BD71847,
> + ROHM_CHIP_TYPE_BD71878,
> ROHM_CHIP_TYPE_BD96801,
> ROHM_CHIP_TYPE_BD96802,
> ROHM_CHIP_TYPE_BD96805,
>
Yours,
-- Matti
next prev parent reply other threads:[~2025-08-18 5:49 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-16 19:19 [PATCH 0/2] power: supply: add charger for BD71828 Andreas Kemnade,,,
2025-08-16 19:19 ` [PATCH 1/2] mfd: bd71828, bd71815 prepare for power-supply support Andreas Kemnade,,,
2025-08-18 5:49 ` Matti Vaittinen [this message]
2025-08-18 6:44 ` Andreas Kemnade
2025-08-16 19:19 ` [PATCH 2/2] power: supply: Add bd718(15/28/78) charger driver Andreas Kemnade
2025-08-17 5:58 ` Krzysztof Kozlowski
2025-08-17 8:11 ` Andreas Kemnade
2025-08-17 8:13 ` Krzysztof Kozlowski
2025-08-18 6:34 ` Matti Vaittinen
2025-08-18 8:36 ` Andreas Kemnade
2025-08-18 9:32 ` Matti Vaittinen
2025-08-20 16:05 ` Andreas Kemnade
2025-08-21 5:31 ` Matti Vaittinen
2025-08-21 8:10 ` Andreas Kemnade
2025-08-18 10:09 ` Matti Vaittinen
2025-08-17 21:33 ` kernel test robot
2025-08-18 10:33 ` Matti Vaittinen
2025-08-18 15:07 ` Andreas Kemnade
-- strict thread matches above, loose matches on Subject: below --
2025-08-19 5:46 kernel test robot
2025-08-19 6:14 ` Dan Carpenter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6ebcdc8b-0b8e-489b-9f93-ebfd2d850432@gmail.com \
--to=mazziesaccount@gmail.com \
--cc=andreas@kemnade.info \
--cc=lee@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pm@vger.kernel.org \
--cc=sre@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.