linux-pm.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lee Jones <lee@kernel.org>
To: Jakob Hauser <jahau@rocketmail.com>
Cc: Sebastian Reichel <sre@kernel.org>,
	Liam Girdwood <lgirdwood@gmail.com>,
	Mark Brown <broonie@kernel.org>, Rob Herring <robh+dt@kernel.org>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Beomho Seo <beomho.seo@samsung.com>,
	Chanwoo Choi <cw00.choi@samsung.com>,
	Stephan Gerhold <stephan@gerhold.net>,
	Raymond Hackley <raymondhackley@protonmail.com>,
	Pavel Machek <pavel@ucw.cz>, Axel Lin <axel.lin@ingics.com>,
	ChiYuan Huang <cy_huang@richtek.com>,
	Linus Walleij <linus.walleij@linaro.org>,
	Henrik Grimler <henrik@grimler.se>,
	Christophe Jaillet <christophe.jaillet@wanadoo.fr>,
	linux-pm@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, phone-devel@vger.kernel.org,
	~postmarketos/upstreaming@lists.sr.ht
Subject: Re: [PATCH v6 04/10 RESEND] mfd: rt5033: Apply preparatory changes before adding rt5033-charger driver
Date: Thu, 25 May 2023 11:44:34 +0100	[thread overview]
Message-ID: <20230525104434.GD9691@google.com> (raw)
In-Reply-To: <31c750ae13a1c1896b51d8f0a0d9869f8b85624f.1684182964.git.jahau@rocketmail.com>

On Mon, 15 May 2023, Jakob Hauser wrote:

> Order the register blocks to have the masks in descending manner.
> 
> Add new defines for constant voltage shift (RT5033_CHGCTRL2_CV_SHIFT),
> MIVR mask (RT5033_CHGCTRL4_MIVR_MASK), pre-charge current shift
> (RT5033_CHGCTRL4_IPREC_SHIFT), internal timer disable
> (RT5033_INT_TIMER_DISABLE), termination disable (RT5033_TE_DISABLE),
> CFO disable (RT5033_CFO_DISABLE), UUG disable (RT5033_CHARGER_UUG_DISABLE).
> 
> The fast charge timer type needs to be written on mask 0x38
> (RT5033_CHGCTRL3_TIMER_MASK). To avoid a bit shift on application, change the
> values of the timer types to fit the mask. Added the timout duration as a
> comment. And the timer between TIMER8 and TIMER12 is most likely TIMER10, see
> e.g. RT5036 [1] page 28 bottom.
> 
> Add value options for MIVR (Minimum Input Voltage Regulation).
> 
> Move RT5033_TE_ENABLE_MASK to the block "RT5033 CHGCTRL1 register", in order
> to have the masks of the register collected there. To fit the naming scheme,
> rename it to RT5033_CHGCTRL1_TE_EN_MASK.
> 
> Move RT5033_CHG_MAX_CURRENT to the block "RT5033 charger fast-charge current".
> 
> Add new defines RT5033_CV_MAX_VOLTAGE and RT5033_CHG_MAX_PRE_CURRENT to the
> blocks "RT5033 charger constant charge voltage" and "RT5033 charger pre-charge
> current limits".
> 
> In include/linux/mfd/rt5033.h, turn power_supply "psy" into a pointer in order
> to use it in devm_power_supply_register().
> 
> [1] https://media.digikey.com/pdf/Data%20Sheets/Richtek%20PDF/RT5036%20%20Preliminary.pdf
> 
> Signed-off-by: Jakob Hauser <jahau@rocketmail.com>
> ---
>  include/linux/mfd/rt5033-private.h | 53 ++++++++++++++++++++----------
>  include/linux/mfd/rt5033.h         |  2 +-
>  2 files changed, 36 insertions(+), 19 deletions(-)
> 
> diff --git a/include/linux/mfd/rt5033-private.h b/include/linux/mfd/rt5033-private.h
> index b6773ebf4e6b..0221f806d139 100644
> --- a/include/linux/mfd/rt5033-private.h
> +++ b/include/linux/mfd/rt5033-private.h
> @@ -55,22 +55,24 @@ enum rt5033_reg {
>  };
>  
>  /* RT5033 Charger state register */
> +#define RT5033_CHG_STAT_TYPE_MASK	0x60
> +#define RT5033_CHG_STAT_TYPE_PRE	0x20
> +#define RT5033_CHG_STAT_TYPE_FAST	0x60
>  #define RT5033_CHG_STAT_MASK		0x30
>  #define RT5033_CHG_STAT_DISCHARGING	0x00
>  #define RT5033_CHG_STAT_FULL		0x10
>  #define RT5033_CHG_STAT_CHARGING	0x20
>  #define RT5033_CHG_STAT_NOT_CHARGING	0x30
> -#define RT5033_CHG_STAT_TYPE_MASK	0x60
> -#define RT5033_CHG_STAT_TYPE_PRE	0x20
> -#define RT5033_CHG_STAT_TYPE_FAST	0x60
>  
>  /* RT5033 CHGCTRL1 register */
>  #define RT5033_CHGCTRL1_IAICR_MASK	0xe0
> -#define RT5033_CHGCTRL1_MODE_MASK	0x01
> +#define RT5033_CHGCTRL1_TE_EN_MASK	0x08
>  #define RT5033_CHGCTRL1_HZ_MASK		0x02
> +#define RT5033_CHGCTRL1_MODE_MASK	0x01
>  
>  /* RT5033 CHGCTRL2 register */
>  #define RT5033_CHGCTRL2_CV_MASK		0xfc
> +#define RT5033_CHGCTRL2_CV_SHIFT	0x02
>  
>  /* RT5033 DEVICE_ID register */
>  #define RT5033_VENDOR_ID_MASK		0xf0
> @@ -82,14 +84,15 @@ enum rt5033_reg {
>  #define RT5033_CHGCTRL3_TIMER_EN_MASK	0x01
>  
>  /* RT5033 CHGCTRL4 register */
> -#define RT5033_CHGCTRL4_EOC_MASK	0x07
> +#define RT5033_CHGCTRL4_MIVR_MASK	0xe0
>  #define RT5033_CHGCTRL4_IPREC_MASK	0x18
> +#define RT5033_CHGCTRL4_IPREC_SHIFT	0x03
> +#define RT5033_CHGCTRL4_EOC_MASK	0x07
>  
>  /* RT5033 CHGCTRL5 register */
> -#define RT5033_CHGCTRL5_VPREC_MASK	0x0f
>  #define RT5033_CHGCTRL5_ICHG_MASK	0xf0
>  #define RT5033_CHGCTRL5_ICHG_SHIFT	0x04
> -#define RT5033_CHG_MAX_CURRENT		0x0d
> +#define RT5033_CHGCTRL5_VPREC_MASK	0x0f
>  
>  /* RT5033 RT CTRL1 register */
>  #define RT5033_RT_CTRL1_UUG_MASK	0x02
> @@ -128,20 +131,28 @@ enum rt5033_reg {
>  #define RT5033_AICR_1500_MODE			0xc0
>  #define RT5033_AICR_2000_MODE			0xe0
>  
> -/* RT5033 use internal timer need to set time */
> -#define RT5033_FAST_CHARGE_TIMER4		0x00
> -#define RT5033_FAST_CHARGE_TIMER6		0x01
> -#define RT5033_FAST_CHARGE_TIMER8		0x02
> -#define RT5033_FAST_CHARGE_TIMER9		0x03
> -#define RT5033_FAST_CHARGE_TIMER12		0x04
> -#define RT5033_FAST_CHARGE_TIMER14		0x05
> -#define RT5033_FAST_CHARGE_TIMER16		0x06
> +/* RT5033 charger minimum input voltage regulation */
> +#define RT5033_CHARGER_MIVR_DISABLE		0x00
> +#define RT5033_CHARGER_MIVR_4200MV		0x20
> +#define RT5033_CHARGER_MIVR_4300MV		0x40
> +#define RT5033_CHARGER_MIVR_4400MV		0x60
> +#define RT5033_CHARGER_MIVR_4500MV		0x80
> +#define RT5033_CHARGER_MIVR_4600MV		0xa0
> +#define RT5033_CHARGER_MIVR_4700MV		0xc0
> +#define RT5033_CHARGER_MIVR_4800MV		0xe0
>  
> +/* RT5033 use internal timer need to set time */
> +#define RT5033_FAST_CHARGE_TIMER4		0x00 /*  4 hrs */
> +#define RT5033_FAST_CHARGE_TIMER6		0x08 /*  6 hrs */
> +#define RT5033_FAST_CHARGE_TIMER8		0x10 /*  8 hrs */
> +#define RT5033_FAST_CHARGE_TIMER10		0x18 /* 10 hrs */
> +#define RT5033_FAST_CHARGE_TIMER12		0x20 /* 12 hrs */
> +#define RT5033_FAST_CHARGE_TIMER14		0x28 /* 14 hrs */
> +#define RT5033_FAST_CHARGE_TIMER16		0x30 /* 16 hrs */
> +
> +#define RT5033_INT_TIMER_DISABLE		0x00
>  #define RT5033_INT_TIMER_ENABLE			0x01
>  
> -/* RT5033 charger termination enable mask */
> -#define RT5033_TE_ENABLE_MASK			0x08
> -
>  /*
>   * RT5033 charger opa mode. RT5033 has two opa modes for OTG: charger mode
>   * and boost mode.
> @@ -150,25 +161,30 @@ enum rt5033_reg {
>  #define RT5033_BOOST_MODE			0x01
>  
>  /* RT5033 charger termination enable */
> +#define RT5033_TE_DISABLE			0x00
>  #define RT5033_TE_ENABLE			0x08
>  
>  /* RT5033 charger CFO enable */
> +#define RT5033_CFO_DISABLE			0x00
>  #define RT5033_CFO_ENABLE			0x40
>  
>  /* RT5033 charger constant charge voltage (as in CHGCTRL2 register), uV */
>  #define RT5033_CHARGER_CONST_VOLTAGE_LIMIT_MIN	3650000U
>  #define RT5033_CHARGER_CONST_VOLTAGE_STEP_NUM   25000U
>  #define RT5033_CHARGER_CONST_VOLTAGE_LIMIT_MAX	4400000U
> +#define RT5033_CV_MAX_VOLTAGE			0x1e
>  
>  /* RT5033 charger pre-charge current limits (as in CHGCTRL4 register), uA */
>  #define RT5033_CHARGER_PRE_CURRENT_LIMIT_MIN	350000U
>  #define RT5033_CHARGER_PRE_CURRENT_STEP_NUM	100000U
>  #define RT5033_CHARGER_PRE_CURRENT_LIMIT_MAX	650000U
> +#define RT5033_CHG_MAX_PRE_CURRENT		0x03
>  
>  /* RT5033 charger fast-charge current (as in CHGCTRL5 register), uA */
>  #define RT5033_CHARGER_FAST_CURRENT_MIN		700000U
>  #define RT5033_CHARGER_FAST_CURRENT_STEP_NUM	100000U
>  #define RT5033_CHARGER_FAST_CURRENT_MAX		2000000U
> +#define RT5033_CHG_MAX_CURRENT			0x0d
>  
>  /*
>   * RT5033 charger const-charge end of charger current (
> @@ -192,6 +208,7 @@ enum rt5033_reg {
>   * RT5033 charger UUG. It enables MOS auto control by H/W charger
>   * circuit.
>   */
> +#define RT5033_CHARGER_UUG_DISABLE		0x00
>  #define RT5033_CHARGER_UUG_ENABLE		0x02
>  
>  /* RT5033 charger high impedance mode */
> diff --git a/include/linux/mfd/rt5033.h b/include/linux/mfd/rt5033.h
> index 8f306ac15a27..e99e2ab0c1c1 100644
> --- a/include/linux/mfd/rt5033.h
> +++ b/include/linux/mfd/rt5033.h
> @@ -51,7 +51,7 @@ struct rt5033_charger_data {
>  struct rt5033_charger {
>  	struct device			*dev;
>  	struct rt5033_dev		*rt5033;
> -	struct power_supply		psy;
> +	struct power_supply		*psy;

Is this current unused?

>  	struct rt5033_charger_data	*chg;
>  };
>  
> -- 
> 2.39.2
> 

-- 
Lee Jones [李琼斯]

  reply	other threads:[~2023-05-25 10:45 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <cover.1684182964.git.jahau.ref@rocketmail.com>
2023-05-15 20:57 ` [PATCH v6 00/10 RESEND] Add RT5033 charger device driver Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 01/10 RESEND] mfd: rt5033: Drop rt5033-battery sub-device Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 02/10 RESEND] mfd: rt5033: Fix chip revision readout Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 03/10 RESEND] mfd: rt5033: Fix STAT_MASK, HZ_MASK and AICR defines Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 04/10 RESEND] mfd: rt5033: Apply preparatory changes before adding rt5033-charger driver Jakob Hauser
2023-05-25 10:44     ` Lee Jones [this message]
2023-05-25 17:16       ` Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 05/10 RESEND] power: supply: rt5033_charger: Add RT5033 charger device driver Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 06/10 RESEND] power: supply: rt5033_charger: Add cable detection and USB OTG supply Jakob Hauser
2023-08-17  9:38     ` (subset) " Lee Jones
2023-08-22  7:07       ` Lee Jones
2023-08-22 21:29         ` Sebastian Reichel
2023-09-03 12:43           ` Jakob Hauser
2023-09-04 14:27             ` Lee Jones
2023-09-14 15:33               ` Sebastian Reichel
2023-05-15 20:57   ` [PATCH v6 07/10 RESEND] power: supply: rt5033_battery: Move struct rt5033_battery to battery driver Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 08/10 RESEND] power: supply: rt5033_battery: Adopt status property from charger Jakob Hauser
2023-05-15 20:57   ` [PATCH v6 09/10 RESEND] dt-bindings: power: supply: rt5033-battery: Apply unevaluatedProperties Jakob Hauser
2023-05-15 21:30     ` Sebastian Reichel
2023-05-16 21:28     ` Conor Dooley
2023-05-15 20:57   ` [PATCH v6 10/10 RESEND] dt-bindings: Add rt5033 mfd, regulator and charger Jakob Hauser
     [not found]   ` <a308cd6f-0f72-6a12-aa34-ce06290ce0bb@rocketmail.com>
2023-06-01 14:00     ` [PATCH v6 00/10 RESEND] Add RT5033 charger device driver Lee Jones
2023-06-08 17:19   ` Lee Jones
2023-06-09  6:47   ` [GIT PULL] Immutable branch between MFD and Power due for the v6.5 merge window Lee Jones
2023-06-16 20:02     ` Jakob Hauser
2023-06-19 10:35       ` Lee Jones
2023-07-30 17:58         ` Jakob Hauser

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=20230525104434.GD9691@google.com \
    --to=lee@kernel.org \
    --cc=axel.lin@ingics.com \
    --cc=beomho.seo@samsung.com \
    --cc=broonie@kernel.org \
    --cc=christophe.jaillet@wanadoo.fr \
    --cc=cw00.choi@samsung.com \
    --cc=cy_huang@richtek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=henrik@grimler.se \
    --cc=jahau@rocketmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=lgirdwood@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pm@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=phone-devel@vger.kernel.org \
    --cc=raymondhackley@protonmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sre@kernel.org \
    --cc=stephan@gerhold.net \
    --cc=~postmarketos/upstreaming@lists.sr.ht \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).