All of lore.kernel.org
 help / color / mirror / Atom feed
From: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>
To: t-kristo-l0cyMroinI0@public.gmane.org
Cc: Samuel Ortiz <sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org>,
	Felipe Balbi <balbi-l0cyMroinI0@public.gmane.org>,
	Grazvydas Ignotas
	<notasas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>,
	Greg Kroah-Hartman
	<gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org>,
	linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
	linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Subject: Re: [PATCH 4/6] twl4030_charger: Allow charger to control the regulator that feeds it.
Date: Tue, 1 May 2012 11:01:56 +1000	[thread overview]
Message-ID: <20120501110156.730de36d@notabene.brown> (raw)
In-Reply-To: <1335780872.2149.181.camel@sokoban>

[-- Attachment #1: Type: text/plain, Size: 4874 bytes --]

On Mon, 30 Apr 2012 13:14:32 +0300 Tero Kristo <t-kristo-l0cyMroinI0@public.gmane.org> wrote:

> Hi Neil,
> 
> As I am supposed to be acting as a maintainer for the drivers/mfd/twl-*,
> you can add an ack from me for the twl-core.c part. It looks kind of
> okay, even if I would eventually like to remove/fix the ugly regulator
> init from twl-core.

Thanks.

> 
> Just a question, who is going to merge all this seeing it is touching
> stuff all over the place?

Good question.  I'll try Anton Vorontsov as he seems to handle drivers/power/
stuff.  Maybe with your ack he will take it.  Otherwise apkm seems to be the
default if no-one else cares :-)

Thanks,
NeilBrown


> 
> -Tero
> 
> 
> On Wed, 2012-04-25 at 17:33 +1000, NeilBrown wrote:
> > The charger needs usb3v1 to be running, so add a new consumer to
> > keep it running.
> > 
> > This allows the charger to draw current even when the USB driver has
> > powered down.
> > 
> > Signed-off-by: NeilBrown <neilb-l3A5Bk7waGM@public.gmane.org>
> > ---
> > 
> >  drivers/mfd/twl-core.c          |    9 +++++----
> >  drivers/power/twl4030_charger.c |   15 +++++++++++++++
> >  2 files changed, 20 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
> > index 7c2267e..4cbf285 100644
> > --- a/drivers/mfd/twl-core.c
> > +++ b/drivers/mfd/twl-core.c
> > @@ -723,8 +723,9 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  		static struct regulator_consumer_supply usb1v8 = {
> >  			.supply =	"usb1v8",
> >  		};
> > -		static struct regulator_consumer_supply usb3v1 = {
> > -			.supply =	"usb3v1",
> > +		static struct regulator_consumer_supply usb3v1[] = {
> > +			{ .supply =	"usb3v1" },
> > +			{ .supply =	"bci3v1" },
> >  		};
> >  
> >  	/* First add the regulators so that they can be used by transceiver */
> > @@ -752,7 +753,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  				return PTR_ERR(child);
> >  
> >  			child = add_regulator_linked(TWL4030_REG_VUSB3V1,
> > -						      &usb_fixed, &usb3v1, 1,
> > +						      &usb_fixed, usb3v1, 2,
> >  						      features);
> >  			if (IS_ERR(child))
> >  				return PTR_ERR(child);
> > @@ -773,7 +774,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  		if (twl_has_regulator() && child) {
> >  			usb1v5.dev_name = dev_name(child);
> >  			usb1v8.dev_name = dev_name(child);
> > -			usb3v1.dev_name = dev_name(child);
> > +			usb3v1[0].dev_name = dev_name(child);
> >  		}
> >  	}
> >  	if (twl_has_usb() && pdata->usb && twl_class_is_6030()) {
> > diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c
> > index 684662a..d9d8e4a 100644
> > --- a/drivers/power/twl4030_charger.c
> > +++ b/drivers/power/twl4030_charger.c
> > @@ -21,6 +21,7 @@
> >  #include <linux/power_supply.h>
> >  #include <linux/notifier.h>
> >  #include <linux/usb/otg.h>
> > +#include <linux/regulator/machine.h>
> >  
> >  #define TWL4030_BCIMSTATEC	0x02
> >  #define TWL4030_BCIICHG		0x08
> > @@ -86,6 +87,8 @@ struct twl4030_bci {
> >  	struct work_struct	work;
> >  	int			irq_chg;
> >  	int			irq_bci;
> > +	struct regulator	*usb_reg;
> > +	int			usb_enabled;
> >  
> >  	unsigned long		event;
> >  };
> > @@ -179,6 +182,12 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
> >  			return -EACCES;
> >  		}
> >  
> > +		/* Need to keep regulator on */
> > +		if (!bci->usb_enabled) {
> > +			regulator_enable(bci->usb_reg);
> > +			bci->usb_enabled = 1;
> > +		}
> > +
> >  		/* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */
> >  		ret = twl4030_clear_set_boot_bci(0, TWL4030_BCIAUTOUSB);
> >  		if (ret < 0)
> > @@ -189,6 +198,10 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
> >  			TWL4030_USBFASTMCHG, TWL4030_BCIMFSTS4);
> >  	} else {
> >  		ret = twl4030_clear_set_boot_bci(TWL4030_BCIAUTOUSB, 0);
> > +		if (bci->usb_enabled) {
> > +			regulator_disable(bci->usb_reg);
> > +			bci->usb_enabled = 0;
> > +		}
> >  	}
> >  
> >  	return ret;
> > @@ -507,6 +520,8 @@ static int __init twl4030_bci_probe(struct platform_device *pdev)
> >  	bci->usb.num_properties = ARRAY_SIZE(twl4030_charger_props);
> >  	bci->usb.get_property = twl4030_bci_get_property;
> >  
> > +	bci->usb_reg = regulator_get(bci->dev, "bci3v1");
> > +
> >  	ret = power_supply_register(&pdev->dev, &bci->usb);
> >  	if (ret) {
> >  		dev_err(&pdev->dev, "failed to register usb: %d\n", ret);
> > 
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> > the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

WARNING: multiple messages have this Message-ID (diff)
From: NeilBrown <neilb@suse.de>
To: <t-kristo@ti.com>
Cc: Samuel Ortiz <sameo@linux.intel.com>, Felipe Balbi <balbi@ti.com>,
	Grazvydas Ignotas <notasas@gmail.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	<linux-kernel@vger.kernel.org>, <linux-usb@vger.kernel.org>,
	<linux-omap@vger.kernel.org>
Subject: Re: [PATCH 4/6] twl4030_charger: Allow charger to control the regulator that feeds it.
Date: Tue, 1 May 2012 11:01:56 +1000	[thread overview]
Message-ID: <20120501110156.730de36d@notabene.brown> (raw)
In-Reply-To: <1335780872.2149.181.camel@sokoban>

[-- Attachment #1: Type: text/plain, Size: 4807 bytes --]

On Mon, 30 Apr 2012 13:14:32 +0300 Tero Kristo <t-kristo@ti.com> wrote:

> Hi Neil,
> 
> As I am supposed to be acting as a maintainer for the drivers/mfd/twl-*,
> you can add an ack from me for the twl-core.c part. It looks kind of
> okay, even if I would eventually like to remove/fix the ugly regulator
> init from twl-core.

Thanks.

> 
> Just a question, who is going to merge all this seeing it is touching
> stuff all over the place?

Good question.  I'll try Anton Vorontsov as he seems to handle drivers/power/
stuff.  Maybe with your ack he will take it.  Otherwise apkm seems to be the
default if no-one else cares :-)

Thanks,
NeilBrown


> 
> -Tero
> 
> 
> On Wed, 2012-04-25 at 17:33 +1000, NeilBrown wrote:
> > The charger needs usb3v1 to be running, so add a new consumer to
> > keep it running.
> > 
> > This allows the charger to draw current even when the USB driver has
> > powered down.
> > 
> > Signed-off-by: NeilBrown <neilb@suse.de>
> > ---
> > 
> >  drivers/mfd/twl-core.c          |    9 +++++----
> >  drivers/power/twl4030_charger.c |   15 +++++++++++++++
> >  2 files changed, 20 insertions(+), 4 deletions(-)
> > 
> > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c
> > index 7c2267e..4cbf285 100644
> > --- a/drivers/mfd/twl-core.c
> > +++ b/drivers/mfd/twl-core.c
> > @@ -723,8 +723,9 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  		static struct regulator_consumer_supply usb1v8 = {
> >  			.supply =	"usb1v8",
> >  		};
> > -		static struct regulator_consumer_supply usb3v1 = {
> > -			.supply =	"usb3v1",
> > +		static struct regulator_consumer_supply usb3v1[] = {
> > +			{ .supply =	"usb3v1" },
> > +			{ .supply =	"bci3v1" },
> >  		};
> >  
> >  	/* First add the regulators so that they can be used by transceiver */
> > @@ -752,7 +753,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  				return PTR_ERR(child);
> >  
> >  			child = add_regulator_linked(TWL4030_REG_VUSB3V1,
> > -						      &usb_fixed, &usb3v1, 1,
> > +						      &usb_fixed, usb3v1, 2,
> >  						      features);
> >  			if (IS_ERR(child))
> >  				return PTR_ERR(child);
> > @@ -773,7 +774,7 @@ add_children(struct twl4030_platform_data *pdata, unsigned irq_base,
> >  		if (twl_has_regulator() && child) {
> >  			usb1v5.dev_name = dev_name(child);
> >  			usb1v8.dev_name = dev_name(child);
> > -			usb3v1.dev_name = dev_name(child);
> > +			usb3v1[0].dev_name = dev_name(child);
> >  		}
> >  	}
> >  	if (twl_has_usb() && pdata->usb && twl_class_is_6030()) {
> > diff --git a/drivers/power/twl4030_charger.c b/drivers/power/twl4030_charger.c
> > index 684662a..d9d8e4a 100644
> > --- a/drivers/power/twl4030_charger.c
> > +++ b/drivers/power/twl4030_charger.c
> > @@ -21,6 +21,7 @@
> >  #include <linux/power_supply.h>
> >  #include <linux/notifier.h>
> >  #include <linux/usb/otg.h>
> > +#include <linux/regulator/machine.h>
> >  
> >  #define TWL4030_BCIMSTATEC	0x02
> >  #define TWL4030_BCIICHG		0x08
> > @@ -86,6 +87,8 @@ struct twl4030_bci {
> >  	struct work_struct	work;
> >  	int			irq_chg;
> >  	int			irq_bci;
> > +	struct regulator	*usb_reg;
> > +	int			usb_enabled;
> >  
> >  	unsigned long		event;
> >  };
> > @@ -179,6 +182,12 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
> >  			return -EACCES;
> >  		}
> >  
> > +		/* Need to keep regulator on */
> > +		if (!bci->usb_enabled) {
> > +			regulator_enable(bci->usb_reg);
> > +			bci->usb_enabled = 1;
> > +		}
> > +
> >  		/* forcing the field BCIAUTOUSB (BOOT_BCI[1]) to 1 */
> >  		ret = twl4030_clear_set_boot_bci(0, TWL4030_BCIAUTOUSB);
> >  		if (ret < 0)
> > @@ -189,6 +198,10 @@ static int twl4030_charger_enable_usb(struct twl4030_bci *bci, bool enable)
> >  			TWL4030_USBFASTMCHG, TWL4030_BCIMFSTS4);
> >  	} else {
> >  		ret = twl4030_clear_set_boot_bci(TWL4030_BCIAUTOUSB, 0);
> > +		if (bci->usb_enabled) {
> > +			regulator_disable(bci->usb_reg);
> > +			bci->usb_enabled = 0;
> > +		}
> >  	}
> >  
> >  	return ret;
> > @@ -507,6 +520,8 @@ static int __init twl4030_bci_probe(struct platform_device *pdev)
> >  	bci->usb.num_properties = ARRAY_SIZE(twl4030_charger_props);
> >  	bci->usb.get_property = twl4030_bci_get_property;
> >  
> > +	bci->usb_reg = regulator_get(bci->dev, "bci3v1");
> > +
> >  	ret = power_supply_register(&pdev->dev, &bci->usb);
> >  	if (ret) {
> >  		dev_err(&pdev->dev, "failed to register usb: %d\n", ret);
> > 
> > 
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-omap" in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]

  reply	other threads:[~2012-05-01  1:01 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-25  7:33 [PATCH 0/6] twl4030: Various fixes for charing-from-USB NeilBrown
2012-04-25  7:33 ` [PATCH 1/6] twl4030_charger: Fix some typos NeilBrown
2012-04-25  7:33 ` [PATCH 3/6] twl4030_charger: allow charging whenever VBUS is present NeilBrown
     [not found]   ` <20120425073310.20124.15112.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2012-04-25 11:33     ` Grazvydas Ignotas
2012-04-25 11:33       ` Grazvydas Ignotas
2012-04-29 23:34       ` NeilBrown
2012-04-25  7:33 ` [PATCH 2/6] twl4030_charger: add backup-battery charging NeilBrown
2012-04-25  7:33 ` [PATCH 5/6] twl4030-usb: Don't power down phy when it is in-use by charger NeilBrown
2012-04-25  7:33 ` [PATCH 6/6] twl4030-usb: Don't report EVENT_ID when there is VBUS NeilBrown
2012-04-25  8:05   ` Felipe Balbi
2012-04-25 10:29     ` NeilBrown
2012-04-25 11:44   ` Grazvydas Ignotas
2012-04-25  7:33 ` [PATCH 4/6] twl4030_charger: Allow charger to control the regulator that feeds it NeilBrown
2012-04-30 10:14   ` Tero Kristo
2012-04-30 10:14     ` Tero Kristo
2012-05-01  1:01     ` NeilBrown [this message]
2012-05-01  1:01       ` NeilBrown
2012-05-09 16:06   ` Samuel Ortiz
2012-04-25 11:31 ` [PATCH 0/6] twl4030: Various fixes for charing-from-USB Grazvydas Ignotas
     [not found]   ` <CANOLnOOQDxu-P=yTN6159XJANq-_FSCtZ4rBt69NSCPjLz1Rjw-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2012-04-29 23:30     ` NeilBrown
2012-04-29 23:30       ` NeilBrown
     [not found]       ` <20120430093002.472dfdde-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2012-05-05 10:49         ` Anton Vorontsov
2012-05-05 10:49           ` Anton Vorontsov
2012-05-05 10:52           ` Anton Vorontsov
2012-05-05 10:52             ` Anton Vorontsov
2012-05-10  1:24 ` Peter Chen
2012-05-10  1:24   ` Peter Chen
2012-05-10  2:37   ` NeilBrown
2012-05-10  2:37     ` NeilBrown
2012-05-10  6:46     ` Chen Peter-B29397
2012-05-10 14:45     ` Alan Stern
2012-05-10 14:45       ` Alan Stern

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=20120501110156.730de36d@notabene.brown \
    --to=neilb-l3a5bk7wagm@public.gmane.org \
    --cc=balbi-l0cyMroinI0@public.gmane.org \
    --cc=gregkh-hQyY1W1yCW8ekmWlsbkhG0B+6BGkLq7r@public.gmane.org \
    --cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-omap-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=linux-usb-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
    --cc=notasas-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org \
    --cc=sameo-VuQAYsv1563Yd54FQh9/CA@public.gmane.org \
    --cc=t-kristo-l0cyMroinI0@public.gmane.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.