linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Tc, Jenny" <jenny.tc@intel.com>
To: "myungjoo.ham@samsung.com" <myungjoo.ham@samsung.com>,
	??? <cw00.choi@samsung.com>
Cc: "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	anish kumar <anish198519851985@gmail.com>
Subject: RE: RE: [PATCH] extcon : callback function to read cable property
Date: Thu, 25 Oct 2012 09:24:32 +0000	[thread overview]
Message-ID: <20ADAB092842284E95860F279283C5643E68A6@BGSMSX101.gar.corp.intel.com> (raw)
In-Reply-To: <16192195.128621351154225389.JavaMail.weblogic@epml11>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain; charset="ks_c_5601-1987", Size: 4735 bytes --]

> Subject: Re: RE: [PATCH] extcon : callback function to read cable property
> > For charger cable the current each cable can provide will be common.
> > But may not be relevant for other cables.
> >
> > I understand your point on extcon role. But my concern is, when the
> > consumer driver gets a notification on cable state change, how does
> > the consumer query the cable properties in a generic way. Do you have any
> suggestions for this?
> >
> > A use case can be as below
> >
> > When a USB host cable (SDP) connected to the platform, without USB
> > enumeration it can support only up to 100mA(USB2.)/150mA(USB 3.0) (As
> per USB charging spec).
> > Once the enumeration is done this can be 500mA/950mA. If the consumer
> > charger driver need to configure the charger chip, it need to know the
> charger cable capabilities.
> > For example a platform PLAT1 may have charger driver CHRGR1 and OTG
> driver OTG1.
> > But platform PLAT2 may have CHGR1 but different OTG driver OTG2. How
> > CHGR1 driver can detect  the cable properties without having any
> > platform layer hooks? The platform layer hooks (using platform
> > data)will work only if the consumer is a platform driver. What if it's a
> framework which will have the same flow in all platforms?
> 
> In general,
> an extcon user (extcon notifee) knows who's the extcon notifier; the user is
> supposed to know the name of the notifier.
> 
> Thus, the extcon user should be able to get the appropriate object; i.e., a
> regulator struct in this case. Then, according to the USB state, the current
> limit of the USB can be changed by the notifier; which may notify (regulator
> subsystem has one) the extcon user to react (change current limit of
> charger?)

The flow we have is "notifier (OTG driver/cable notifier driver) -> extcon->
charging framework->charger driver"

When the framework gets notification from the extcon, it just know cable is connected/disconnected

For a USB charging the state machine can be 

For USB2.0
1) CONNECT (100mA)->UPDATE(500mA)->DISCONNECT(0mA)
2)CONNECT (100mA)->UPDATE(500mA)->HOST SUSPEND(2.5mA/500mA)->DISCONNECT(0mA)
3) CONNECT (100mA)->UPDATE(500mA)->HOST SUSPEND(2.5mA/500mA)->HOST RESUME(500mA)->DISCONNECT(0mA)

For USB 3.0
4) CONNECT (150mA)->UPDATE(900mA)->DISCONNECT(0mA)
5) CONNECT (150mA)->UPDATE(900mA)-> HOST SUSPEND(2.5mA/900mA)->DISCONNECT(0mA)
6) CONNECT (100mA)->UPDATE(900mA)->HOST SUSPEND(2.5mA/900mA)->HOST RESUME(900mA)->DISCONNECT(0mA)

> 
> Anyway, in your case of PLAT2, doesn't CHGR1 has (or is) a regulator
> controlling the charger current and if the OTG2 regulator affects the behavior
> of CHGR1, (the current of OTG2-reg goes to CHGR1-reg) the consumer-
> supplier chain should be setup (if the BSP is ideal).
> 
> OR
> 
> If it is impossible to have any objects of OTG2 (looks strange, but..), you may
> have two cables, USB (data) and Fast-charger.04 (add +400mA to USB),
> where Fast-charger.04 is enabled when USB2 enumeration is done with 5

I got your point. It's not just 2 cables we may need 4 cables to support USB2.0 and USB3.0 since
the charge current can be 100/500 for USB2.0 and 150/900 for USB 3.0. But what about the states?

.
> 
> 
> 
> However, the following callback might be considered if there are cases
> where an extcon user has information of extcon_name and cable_name
> while the user CANNOT get any information on which device or object is
> related with the specific cable; in struct extcon, with optional user initializing
> data section:
> 
> +	struct device **cable_device;
> OR
> +	char **cable_device_name;
> 
> With any relevant changes in the status with cable_device, we may notify
> any notifier-block that are interested in the specific cable. Then, the notifier-
> block (for register_interest) is going to handle extcon-state changes and
> cable_device notifications.
> 
> Currently, the user's nb is for cable attach/detach events with true/false
> value in the place of 32bit value (val). However, if we add the third possible
> value for that parameter
> (0: cable detached, 1: cable attached, 2: cable status changed; go find out
> what's going on), it is still compatible.
> 
> I considered using a void pointer instead of cable_device, too.
> However, that would spoil the subsystem too much; we'll be creating a total
> chaos: "USB-A driver uses struct regulator", "USB-B driver uses struct
> device", "USB-C driver uses true/false", and so on.

But just by getting the device instance how do we extract the cable properties like
cable state and the charge current in a generic way?


ÿôèº{.nÇ+‰·Ÿ®‰­†+%ŠËÿ±éݶ\x17¥Šwÿº{.nÇ+‰·¥Š{±þG«éÿŠ{ayº\x1dʇڙë,j\a­¢f£¢·hšïêÿ‘êçz_è®\x03(­éšŽŠÝ¢j"ú\x1a¶^[m§ÿÿ¾\a«þG«éÿ¢¸?™¨è­Ú&£ø§~á¶iO•æ¬z·švØ^\x14\x04\x1a¶^[m§ÿÿÃ\fÿ¶ìÿ¢¸?–I¥

  reply	other threads:[~2012-10-25  9:24 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-25  8:37 RE: [PATCH] extcon : callback function to read cable property MyungJoo Ham
2012-10-25  9:24 ` Tc, Jenny [this message]
2012-11-03  2:57   ` Tc, Jenny
  -- strict thread matches above, loose matches on Subject: below --
2012-11-20 11:05 MyungJoo Ham
2012-11-22 13:00 ` Tc, Jenny
2012-11-22 20:03   ` Anton Vorontsov
2012-11-20  3:45 MyungJoo Ham
2012-10-17  7:08 MyungJoo Ham
2012-10-19  3:13 ` Tc, Jenny

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=20ADAB092842284E95860F279283C5643E68A6@BGSMSX101.gar.corp.intel.com \
    --to=jenny.tc@intel.com \
    --cc=anish198519851985@gmail.com \
    --cc=cw00.choi@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=myungjoo.ham@samsung.com \
    /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).