From: Roger Quadros <rogerq@ti.com>
To: Peter Chen <peter.chen@freescale.com>
Cc: gregkh@linuxfoundation.org, balbi@ti.com,
stern@rowland.harvard.edu, dan.j.williams@intel.com,
jun.li@freescale.com, mathias.nyman@linux.intel.com,
tony@atomide.com, linux-usb@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-omap@vger.kernel.org
Subject: Re: [RFC][PATCH v2 01/13] usb: otg-fsm: Add documentation for struct otg_fsm
Date: Fri, 17 Apr 2015 11:45:09 +0300 [thread overview]
Message-ID: <5530C815.7070008@ti.com> (raw)
In-Reply-To: <20150416113231.GA3181@shlinux2>
On 16/04/15 14:32, Peter Chen wrote:
> On Tue, Apr 14, 2015 at 01:41:48PM +0300, Roger Quadros wrote:
>> struct otg_fsm is the interface to the OTG state machine.
>>
>> Document the input, output and internal state variables.
>> Definations are taken from Table 7-2 and Table 7-4 of
>> the USB OTG & EH Specification Rev.2.0
>>
>> Re-arrange some of the members as per use case for more
>> clarity.
>>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> ---
>> include/linux/usb/otg-fsm.h | 80 +++++++++++++++++++++++++++++++++++++++++----
>> 1 file changed, 73 insertions(+), 7 deletions(-)
>>
>> diff --git a/include/linux/usb/otg-fsm.h b/include/linux/usb/otg-fsm.h
>> index b6ba1bf..c5b74c5 100644
>> --- a/include/linux/usb/otg-fsm.h
>> +++ b/include/linux/usb/otg-fsm.h
>> @@ -57,37 +57,103 @@ enum otg_fsm_timer {
>> NUM_OTG_FSM_TIMERS,
>> };
>>
>> -/* OTG state machine according to the OTG spec */
>> +/**
>> + * struct otg_fsm - OTG state machine according to the OTG spec
>> + *
>> + * OTG hardware Inputs
>> + *
>> + * Common inputs for A and B device
>
> What's the intention you leave two spaces at above line?
It is just to indicate the subgroup. i.e.
1) common inputs
2) a-device inputs
3) b-device inputs, etc
>
>> + * @id: TRUE for B-device, FALSE for A-device.
>> + * @adp_change: TRUE when current ADP measurement (n) value, compared to the
>> + * ADP measurement taken at n-2, differs by more than CADP_THR
>> + * @power_up: TRUE when the OTG device first powers up its USB system and
>> + * ADP measurement taken if ADP capable
>> + *
>> + * A-Device state inputs
>> + * @a_srp_det: TRUE if the A-device detects SRP
>> + * @a_vbus_vld: TRUE when VBUS voltage is in regulation
>> + * @b_conn: TRUE if the A-device detects connection from the B-device
>> + * @a_bus_resume: TRUE when the B-device detects that the A-device is signaling
>> + * a resume (K state)
>> + * B-Device state inputs
>> + * @a_bus_suspend: TRUE when the B-device detects that the A-device has put the bus into suspend
>> + * @a_conn: TRUE if the B-device detects a connection from the A-device
>> + * @b_se0_srp: TRUE when the line has been at SE0 for more than the minimum
>> + * time before generating SRP
>> + * @b_ssend_srp: TRUE when the VBUS has been below VOTG_SESS_VLD for more than
>> + * the minimum time before generating SRP
>> + * @b_sess_vld: TRUE when the B-device detects that the voltage on VBUS is
>> + * above VOTG_SESS_VLD
>> + * @test_device: TRUE when the B-device switches to B-Host and detects an OTG test device
>> + * FIXME: must be set by host/hub driver
>
> Yes, according to pid/vid pair.
>
>> + *
>> + * Application inputs (A-Device)
>> + * @a_bus_drop: TRUE when A-device application needs to power down the bus
>> + * @a_bus_req: TRUE when A-device application wants to use the bus.
>> + * FALSE to suspend the bus
>> + *
>> + * Application inputs (B-Device)
>> + * @b_bus_req: TRUE during the time that the Application running on the
>> + * B-device wants to use the bus
>> + *
>> + * Auxilary inputs
>> + * @a_sess_vld: ??
>
> See OTG spec 1.3, and obsolete now.
OK. I will mark it obsolete.
>
>> + * @b_bus_suspend: ??
>> + * @b_bus_resume: ??
>
> They are used at current otg fsm, just for B-host.
These 2 are also present only in otg v1.3 spec and absent in v2.0 spec.
b_bus_suspend has been replaced by a_bidl_adis_tmout to transition from a_peripheral
to a_wait_bcon.
b_bus_resume has been replaced by a_bus_req to transition between a_suspend and a_host.
So I'll mark them as obsolete as well.
>
>> + *
>> + * OTG Output status. Read only for users. updated by otg_ops() helpers
>> + *
>> + * Outputs for Both A and B device
>> + * @drv_vbus: TRUE when A-device is driving VBUS
>> + * @loc_conn: TRUE when the local device has signaled that it is connected to the bus
>> + * @loc_sof: TRUE when the local device is generating activity on the bus
>> + * @adp_prb: TRUE when the local device is in the process of doing ADP probing
>> + *
>> + * Outputs for B-device state
>> + * @adp_sns: TRUE when the B-device is in the process of carrying out ADP sensing
>> + * @data_pulse: TRUE when the B-device is performing data line pulsing
>> + *
>> + * Internal Variables
>> + *
>> + * a_set_b_hnp_en: TRUE when the A-device has successfully set the b_hnp_enable bit in the B-device.
>> + * FIXME: OTG fsm uses otg->host->b_hnp_enable instead
>
> a_set_b_hnp_en is for otg 2.0 and it should instead of
> otg->host->b_hnp_enable at otg fsm.
both are the same thing. Just that there is no way for HCD drivers to directly access
otg_fsm data structure so we rely on otg->host->b_hnp_enable.
>
>> + * b_srp_done: TRUE when the B-device has completed initiating SRP
>> + * b_hnp_enable: TRUE when the B-device has accepted the SetFeature(b_hnp_enable) B-device
>> + * FIXME: OTG fsm uses otg->gadget->b_hnp_enable instead
>
> Yes
>
>> + * a_clr_err: Asserted (by application ?) to clear a_vbus_err due to an overcurrent condition
>> + * and causes the A-device to transition to a_wait_vfall
>> + */
>> struct otg_fsm {
>> /* Input */
>> int id;
>> int adp_change;
>> int power_up;
>> - int test_device;
>> - int a_bus_drop;
>> - int a_bus_req;
>> int a_srp_det;
>> int a_vbus_vld;
>> int b_conn;
>> int a_bus_resume;
>> int a_bus_suspend;
>> int a_conn;
>> - int b_bus_req;
>> int b_se0_srp;
>> int b_ssend_srp;
>> int b_sess_vld;
>> + int test_device;
>> + int a_bus_drop;
>> + int a_bus_req;
>> + int b_bus_req;
>> +
>> /* Auxilary inputs */
>> int a_sess_vld;
>> int b_bus_resume;
>> int b_bus_suspend;
>>
>> /* Output */
>> - int data_pulse;
>> int drv_vbus;
>> int loc_conn;
>> int loc_sof;
>> int adp_prb;
>> int adp_sns;
>> + int data_pulse;
>>
>> /* Internal variables */
>> int a_set_b_hnp_en;
>> @@ -95,7 +161,7 @@ struct otg_fsm {
>> int b_hnp_enable;
>> int a_clr_err;
>>
>> - /* Informative variables */
>> + /* Informative variables. All unused as of now */
>> int a_bus_drop_inf;
>> int a_bus_req_inf;
>> int a_clr_err_inf;
>> --
>> 2.1.0
>>
>
cheers,
-roger
WARNING: multiple messages have this Message-ID (diff)
From: Roger Quadros <rogerq@ti.com>
To: Peter Chen <peter.chen@freescale.com>
Cc: <gregkh@linuxfoundation.org>, <balbi@ti.com>,
<stern@rowland.harvard.edu>, <dan.j.williams@intel.com>,
<jun.li@freescale.com>, <mathias.nyman@linux.intel.com>,
<tony@atomide.com>, <linux-usb@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-omap@vger.kernel.org>
Subject: Re: [RFC][PATCH v2 01/13] usb: otg-fsm: Add documentation for struct otg_fsm
Date: Fri, 17 Apr 2015 11:45:09 +0300 [thread overview]
Message-ID: <5530C815.7070008@ti.com> (raw)
In-Reply-To: <20150416113231.GA3181@shlinux2>
On 16/04/15 14:32, Peter Chen wrote:
> On Tue, Apr 14, 2015 at 01:41:48PM +0300, Roger Quadros wrote:
>> struct otg_fsm is the interface to the OTG state machine.
>>
>> Document the input, output and internal state variables.
>> Definations are taken from Table 7-2 and Table 7-4 of
>> the USB OTG & EH Specification Rev.2.0
>>
>> Re-arrange some of the members as per use case for more
>> clarity.
>>
>> Signed-off-by: Roger Quadros <rogerq@ti.com>
>> ---
>> include/linux/usb/otg-fsm.h | 80 +++++++++++++++++++++++++++++++++++++++++----
>> 1 file changed, 73 insertions(+), 7 deletions(-)
>>
>> diff --git a/include/linux/usb/otg-fsm.h b/include/linux/usb/otg-fsm.h
>> index b6ba1bf..c5b74c5 100644
>> --- a/include/linux/usb/otg-fsm.h
>> +++ b/include/linux/usb/otg-fsm.h
>> @@ -57,37 +57,103 @@ enum otg_fsm_timer {
>> NUM_OTG_FSM_TIMERS,
>> };
>>
>> -/* OTG state machine according to the OTG spec */
>> +/**
>> + * struct otg_fsm - OTG state machine according to the OTG spec
>> + *
>> + * OTG hardware Inputs
>> + *
>> + * Common inputs for A and B device
>
> What's the intention you leave two spaces at above line?
It is just to indicate the subgroup. i.e.
1) common inputs
2) a-device inputs
3) b-device inputs, etc
>
>> + * @id: TRUE for B-device, FALSE for A-device.
>> + * @adp_change: TRUE when current ADP measurement (n) value, compared to the
>> + * ADP measurement taken at n-2, differs by more than CADP_THR
>> + * @power_up: TRUE when the OTG device first powers up its USB system and
>> + * ADP measurement taken if ADP capable
>> + *
>> + * A-Device state inputs
>> + * @a_srp_det: TRUE if the A-device detects SRP
>> + * @a_vbus_vld: TRUE when VBUS voltage is in regulation
>> + * @b_conn: TRUE if the A-device detects connection from the B-device
>> + * @a_bus_resume: TRUE when the B-device detects that the A-device is signaling
>> + * a resume (K state)
>> + * B-Device state inputs
>> + * @a_bus_suspend: TRUE when the B-device detects that the A-device has put the bus into suspend
>> + * @a_conn: TRUE if the B-device detects a connection from the A-device
>> + * @b_se0_srp: TRUE when the line has been at SE0 for more than the minimum
>> + * time before generating SRP
>> + * @b_ssend_srp: TRUE when the VBUS has been below VOTG_SESS_VLD for more than
>> + * the minimum time before generating SRP
>> + * @b_sess_vld: TRUE when the B-device detects that the voltage on VBUS is
>> + * above VOTG_SESS_VLD
>> + * @test_device: TRUE when the B-device switches to B-Host and detects an OTG test device
>> + * FIXME: must be set by host/hub driver
>
> Yes, according to pid/vid pair.
>
>> + *
>> + * Application inputs (A-Device)
>> + * @a_bus_drop: TRUE when A-device application needs to power down the bus
>> + * @a_bus_req: TRUE when A-device application wants to use the bus.
>> + * FALSE to suspend the bus
>> + *
>> + * Application inputs (B-Device)
>> + * @b_bus_req: TRUE during the time that the Application running on the
>> + * B-device wants to use the bus
>> + *
>> + * Auxilary inputs
>> + * @a_sess_vld: ??
>
> See OTG spec 1.3, and obsolete now.
OK. I will mark it obsolete.
>
>> + * @b_bus_suspend: ??
>> + * @b_bus_resume: ??
>
> They are used at current otg fsm, just for B-host.
These 2 are also present only in otg v1.3 spec and absent in v2.0 spec.
b_bus_suspend has been replaced by a_bidl_adis_tmout to transition from a_peripheral
to a_wait_bcon.
b_bus_resume has been replaced by a_bus_req to transition between a_suspend and a_host.
So I'll mark them as obsolete as well.
>
>> + *
>> + * OTG Output status. Read only for users. updated by otg_ops() helpers
>> + *
>> + * Outputs for Both A and B device
>> + * @drv_vbus: TRUE when A-device is driving VBUS
>> + * @loc_conn: TRUE when the local device has signaled that it is connected to the bus
>> + * @loc_sof: TRUE when the local device is generating activity on the bus
>> + * @adp_prb: TRUE when the local device is in the process of doing ADP probing
>> + *
>> + * Outputs for B-device state
>> + * @adp_sns: TRUE when the B-device is in the process of carrying out ADP sensing
>> + * @data_pulse: TRUE when the B-device is performing data line pulsing
>> + *
>> + * Internal Variables
>> + *
>> + * a_set_b_hnp_en: TRUE when the A-device has successfully set the b_hnp_enable bit in the B-device.
>> + * FIXME: OTG fsm uses otg->host->b_hnp_enable instead
>
> a_set_b_hnp_en is for otg 2.0 and it should instead of
> otg->host->b_hnp_enable at otg fsm.
both are the same thing. Just that there is no way for HCD drivers to directly access
otg_fsm data structure so we rely on otg->host->b_hnp_enable.
>
>> + * b_srp_done: TRUE when the B-device has completed initiating SRP
>> + * b_hnp_enable: TRUE when the B-device has accepted the SetFeature(b_hnp_enable) B-device
>> + * FIXME: OTG fsm uses otg->gadget->b_hnp_enable instead
>
> Yes
>
>> + * a_clr_err: Asserted (by application ?) to clear a_vbus_err due to an overcurrent condition
>> + * and causes the A-device to transition to a_wait_vfall
>> + */
>> struct otg_fsm {
>> /* Input */
>> int id;
>> int adp_change;
>> int power_up;
>> - int test_device;
>> - int a_bus_drop;
>> - int a_bus_req;
>> int a_srp_det;
>> int a_vbus_vld;
>> int b_conn;
>> int a_bus_resume;
>> int a_bus_suspend;
>> int a_conn;
>> - int b_bus_req;
>> int b_se0_srp;
>> int b_ssend_srp;
>> int b_sess_vld;
>> + int test_device;
>> + int a_bus_drop;
>> + int a_bus_req;
>> + int b_bus_req;
>> +
>> /* Auxilary inputs */
>> int a_sess_vld;
>> int b_bus_resume;
>> int b_bus_suspend;
>>
>> /* Output */
>> - int data_pulse;
>> int drv_vbus;
>> int loc_conn;
>> int loc_sof;
>> int adp_prb;
>> int adp_sns;
>> + int data_pulse;
>>
>> /* Internal variables */
>> int a_set_b_hnp_en;
>> @@ -95,7 +161,7 @@ struct otg_fsm {
>> int b_hnp_enable;
>> int a_clr_err;
>>
>> - /* Informative variables */
>> + /* Informative variables. All unused as of now */
>> int a_bus_drop_inf;
>> int a_bus_req_inf;
>> int a_clr_err_inf;
>> --
>> 2.1.0
>>
>
cheers,
-roger
next prev parent reply other threads:[~2015-04-17 8:45 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-14 10:41 [RFC][PATCH v2 00/13] USB: OTG/DRD Core functionality Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 01/13] usb: otg-fsm: Add documentation for struct otg_fsm Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-16 11:32 ` Peter Chen
2015-04-16 11:32 ` Peter Chen
2015-04-17 8:45 ` Roger Quadros [this message]
2015-04-17 8:45 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 03/13] usb: otg-fsm: Prevent build warning "VDBG" redefined Roger Quadros
2015-04-14 10:41 ` Roger Quadros
[not found] ` <1429008120-5395-4-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2015-04-16 11:41 ` Peter Chen
2015-04-16 11:41 ` Peter Chen
2015-04-16 11:59 ` Roger Quadros
2015-04-16 11:59 ` Roger Quadros
[not found] ` <552FA410.4030508-l0cyMroinI0@public.gmane.org>
2015-04-16 12:07 ` Peter Chen
2015-04-16 12:07 ` Peter Chen
2015-04-14 10:41 ` [RFC][PATCH v2 05/13] usb: otg: add OTG core Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-15 9:29 ` Paul Bolle
2015-04-15 13:24 ` Roger Quadros
2015-04-15 13:24 ` Roger Quadros
2015-04-16 12:02 ` Peter Chen
2015-04-16 12:02 ` Peter Chen
2015-04-16 13:04 ` Roger Quadros
2015-04-16 13:04 ` Roger Quadros
[not found] ` <1429008120-5395-1-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2015-04-14 10:41 ` [RFC][PATCH v2 02/13] usb: otg-fsm: support multiple instances Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-16 11:36 ` Peter Chen
2015-04-16 11:36 ` Peter Chen
2015-04-16 11:58 ` Roger Quadros
2015-04-16 11:58 ` Roger Quadros
2015-04-16 12:06 ` Peter Chen
2015-04-16 12:06 ` Peter Chen
2015-04-14 10:41 ` [RFC][PATCH v2 04/13] usb: gadget: add usb_gadget_start/stop() Roger Quadros
2015-04-14 10:41 ` Roger Quadros
[not found] ` <1429008120-5395-5-git-send-email-rogerq-l0cyMroinI0@public.gmane.org>
2015-04-16 11:48 ` Peter Chen
2015-04-16 11:48 ` Peter Chen
2015-04-16 12:07 ` Roger Quadros
2015-04-16 12:07 ` Roger Quadros
[not found] ` <552FA60D.5030707-l0cyMroinI0@public.gmane.org>
2015-04-16 12:12 ` Peter Chen
2015-04-16 12:12 ` Peter Chen
2015-04-14 10:41 ` [RFC][PATCH v2 06/13] usb: hcd: Add hcd add/remove functions for OTG use Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-17 2:18 ` Peter Chen
2015-04-17 2:18 ` Peter Chen
2015-04-17 7:21 ` Roger Quadros
2015-04-17 7:21 ` Roger Quadros
2015-04-17 14:03 ` Alan Stern
2015-04-17 14:03 ` Alan Stern
2015-04-20 7:00 ` Roger Quadros
2015-04-20 7:00 ` Roger Quadros
2015-04-20 13:56 ` Alan Stern
2015-04-20 13:56 ` Alan Stern
2015-04-21 7:02 ` Roger Quadros
2015-04-21 7:02 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 08/13] usb: otg: hub: Notify OTG fsm when A device sets b_hnp_enable Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-17 2:28 ` Peter Chen
2015-04-17 2:28 ` Peter Chen
2015-04-17 7:32 ` Roger Quadros
2015-04-17 7:32 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 07/13] usb: otg: Add dual-role device (DRD) support Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 09/13] usb: gadget: udc: adapt to OTG Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 10/13] udc-core: fix lock circular dependency on udc_lock Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 11/13] usb: add "dual-role" mode to dr_mode device tree helper Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:41 ` [RFC][PATCH v2 12/13] usb: dwc3: add dual-role support Roger Quadros
2015-04-14 10:41 ` Roger Quadros
2015-04-14 10:42 ` [RFC][PATCH v2 13/13] ARM: dts: dra7x-evm: Enable dual-role for usb1 Roger Quadros
2015-04-14 10:42 ` Roger Quadros
2015-04-20 3:05 ` [RFC][PATCH v2 00/13] USB: OTG/DRD Core functionality Peter Chen
2015-04-20 3:05 ` Peter Chen
2015-04-20 7:28 ` Roger Quadros
2015-04-20 7:28 ` Roger Quadros
[not found] ` <5534AA8C.1070400-l0cyMroinI0@public.gmane.org>
2015-04-21 6:04 ` Peter Chen
2015-04-21 6:04 ` Peter Chen
2015-04-21 7:34 ` Roger Quadros
2015-04-22 2:17 ` Peter Chen
2015-04-22 7:33 ` Roger Quadros
2015-04-22 7:33 ` Roger Quadros
2015-04-22 9:22 ` Peter Chen
2015-04-22 12:42 ` Roger Quadros
2015-04-23 1:52 ` Peter Chen
2015-04-23 6:35 ` Roger Quadros
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=5530C815.7070008@ti.com \
--to=rogerq@ti.com \
--cc=balbi@ti.com \
--cc=dan.j.williams@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=jun.li@freescale.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mathias.nyman@linux.intel.com \
--cc=peter.chen@freescale.com \
--cc=stern@rowland.harvard.edu \
--cc=tony@atomide.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 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.