All of lore.kernel.org
 help / color / mirror / Atom feed
From: Matthieu CASTET <matthieu.castet@parrot.com>
To: Tuomas Tynkkynen <ttynkkynen@nvidia.com>
Cc: "balbi@ti.com" <balbi@ti.com>,
	"linux-tegra@vger.kernel.org" <linux-tegra@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"linux-usb@vger.kernel.org" <linux-usb@vger.kernel.org>,
	"swarren@wwwdotorg.org" <swarren@wwwdotorg.org>,
	"gregkh@linuxfoundation.org" <gregkh@linuxfoundation.org>,
	"stern@rowland.harvard.edu" <stern@rowland.harvard.edu>,
	Alexander Shishkin <alexander.shishkin@linux.intel.com>
Subject: Re: [PATCH 1/6] usb: host: add has_tdi_phy_lpm capability bit
Date: Thu, 1 Aug 2013 10:05:44 +0200	[thread overview]
Message-ID: <20130801100544.76233b42@parrot.com> (raw)
In-Reply-To: <1375292522-7855-2-git-send-email-ttynkkynen@nvidia.com>

Hi,

Le Wed, 31 Jul 2013 18:41:57 +0100,
Tuomas Tynkkynen <ttynkkynen@nvidia.com> a écrit :

> The has_hostpc capability bit indicates that the host controller has
> the HOSTPC register extensions, but at the same time enables clock
> disabling power saving features with the PHY Low Power Clock Disable
> (PHCD) bit.
> 
> However, some host controllers have the HOSTPC extensions but don't
> support the low-power feature, so the PHCD bit must not be set on
> those controllers. Add a separate capability bit for the low-power
> feature instead, and change all existing users of has_hostpc to use
> this new capability bit.
> 
> The idea for this commit is taken from an old 2012 commit that never
> got merged ("disociate chipidea PHY low power suspend control from
> hostpc")
Note that because of the different register layout (see "add phy low
power suspend for older chipidea core" commit in the same series), we
should not set has_tdi_phy_lpm if has_hostpc == 0 with the current code.

May be you should have change the ehci->has_hostpc to (ehci->has_hostpc
&& ehci->has_tdi_phy_lpm).

BTW Alan make some comment on the commit :
http://marc.info/?l=linux-usb&m=133701342028213&w=2

They may apply to your commit.

> 
> Inspired-by: Matthieu CASTET <matthieu.castet@parrot.com>
> Signed-off-by: Tuomas Tynkkynen <ttynkkynen@nvidia.com>
> ---
>  drivers/usb/chipidea/host.c |  1 +
>  drivers/usb/host/ehci-hub.c | 14 +++++++-------
>  drivers/usb/host/ehci.h     |  1 +
>  3 files changed, 9 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
> index 40d0fda..9b3aaf1 100644
> --- a/drivers/usb/chipidea/host.c
> +++ b/drivers/usb/chipidea/host.c
> @@ -63,6 +63,7 @@ static int host_start(struct ci_hdrc *ci)
>  	ehci = hcd_to_ehci(hcd);
>  	ehci->caps = ci->hw_bank.cap;
>  	ehci->has_hostpc = ci->hw_bank.lpm;
> +	ehci->has_tdi_phy_lpm = ci->hw_bank.lpm;
>  
>  	ret = usb_add_hcd(hcd, 0, 0);
>  	if (ret)
> diff --git a/drivers/usb/host/ehci-hub.c b/drivers/usb/host/ehci-hub.c
> index 2b70277..8044a74 100644
> --- a/drivers/usb/host/ehci-hub.c
> +++ b/drivers/usb/host/ehci-hub.c
> @@ -183,7 +183,7 @@ static void ehci_adjust_port_wakeup_flags(struct
> ehci_hcd *ehci, spin_lock_irq(&ehci->lock);
>  
>  	/* clear phy low-power mode before changing wakeup flags */
> -	if (ehci->has_hostpc) {
> +	if (ehci->has_tdi_phy_lpm) {
>  		port = HCS_N_PORTS(ehci->hcs_params);
>  		while (port--) {
>  			u32 __iomem	*hostpc_reg =
> &ehci->regs->hostpc[port]; @@ -217,7 +217,7 @@ static void
> ehci_adjust_port_wakeup_flags(struct ehci_hcd *ehci, }
>  
>  	/* enter phy low-power mode again */
> -	if (ehci->has_hostpc) {
> +	if (ehci->has_tdi_phy_lpm) {
>  		port = HCS_N_PORTS(ehci->hcs_params);
>  		while (port--) {
>  			u32 __iomem	*hostpc_reg =
> &ehci->regs->hostpc[port]; @@ -309,7 +309,7 @@ static int
> ehci_bus_suspend (struct usb_hcd *hcd) }
>  	}
>  
> -	if (changed && ehci->has_hostpc) {
> +	if (changed && ehci->has_tdi_phy_lpm) {
>  		spin_unlock_irq(&ehci->lock);
>  		msleep(5);	/* 5 ms for HCD to enter low-power
> mode */ spin_lock_irq(&ehci->lock);
> @@ -435,7 +435,7 @@ static int ehci_bus_resume (struct usb_hcd *hcd)
>  		goto shutdown;
>  
>  	/* clear phy low-power mode before resume */
> -	if (ehci->bus_suspended && ehci->has_hostpc) {
> +	if (ehci->bus_suspended && ehci->has_tdi_phy_lpm) {
>  		i = HCS_N_PORTS(ehci->hcs_params);
>  		while (i--) {
>  			if (test_bit(i, &ehci->bus_suspended)) {
> @@ -788,7 +788,7 @@ static int ehci_hub_control (
>  				goto error;
>  
>  			/* clear phy low-power mode before resume */
> -			if (ehci->has_hostpc) {
> +			if (ehci->has_tdi_phy_lpm) {
>  				temp1 = ehci_readl(ehci, hostpc_reg);
>  				ehci_writel(ehci, temp1 &
> ~HOSTPC_PHCD, hostpc_reg);
> @@ -1031,12 +1031,12 @@ static int ehci_hub_control (
>  
>  			/* After above check the port must be
> connected.
>  			 * Set appropriate bit thus could put phy
> into low power
> -			 * mode if we have hostpc feature
> +			 * mode if we have tdi_phy_lpm feature
>  			 */
>  			temp &= ~PORT_WKCONN_E;
>  			temp |= PORT_WKDISC_E | PORT_WKOC_E;
>  			ehci_writel(ehci, temp | PORT_SUSPEND,
> status_reg);
> -			if (ehci->has_hostpc) {
> +			if (ehci->has_tdi_phy_lpm) {
>  				spin_unlock_irqrestore(&ehci->lock,
> flags); msleep(5);/* 5ms for HCD enter low pwr mode */
>  				spin_lock_irqsave(&ehci->lock,
> flags); diff --git a/drivers/usb/host/ehci.h b/drivers/usb/host/ehci.h
> index 64f9a08..d034d94 100644
> --- a/drivers/usb/host/ehci.h
> +++ b/drivers/usb/host/ehci.h
> @@ -210,6 +210,7 @@ struct ehci_hcd {			/* one
> per controller */ #define OHCI_HCCTRL_LEN         0x4
>  	__hc32			*ohci_hcctrl_reg;
>  	unsigned		has_hostpc:1;
> +	unsigned		has_tdi_phy_lpm:1;
>  	unsigned		has_ppcd:1; /* support per-port
> change bits */ u8			sbrn;		/*
> packed release number */ 

  parent reply	other threads:[~2013-08-01  8:05 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-31 17:41 [PATCH 0/6] USB tree changes for Tegra30 and Tegra114 USB Host support Tuomas Tynkkynen
2013-07-31 17:41 ` Tuomas Tynkkynen
2013-07-31 17:41 ` [PATCH 2/6] usb: phy: tegra: Fix wrong PHY parameters Tuomas Tynkkynen
2013-07-31 17:41   ` Tuomas Tynkkynen
     [not found]   ` <1375292522-7855-3-git-send-email-ttynkkynen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-08-01 21:09     ` Stephen Warren
2013-08-01 21:09       ` Stephen Warren
     [not found]       ` <51FACE74.3070909-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-08-02 14:15         ` Tuomas Tynkkynen
2013-08-02 14:15           ` Tuomas Tynkkynen
2013-07-31 17:41 ` [PATCH 3/6] usb: phy: tegra: Tegra30 support Tuomas Tynkkynen
2013-07-31 17:41   ` Tuomas Tynkkynen
2013-07-31 17:42 ` [PATCH 4/6] usb: phy: tegra: Program new PHY parameters Tuomas Tynkkynen
2013-07-31 17:42   ` Tuomas Tynkkynen
2013-08-01 21:16   ` Stephen Warren
     [not found]     ` <51FAD020.8090306-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-08-02 14:05       ` Tuomas Tynkkynen
2013-08-02 14:05         ` Tuomas Tynkkynen
     [not found] ` <1375292522-7855-1-git-send-email-ttynkkynen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-07-31 17:41   ` [PATCH 1/6] usb: host: add has_tdi_phy_lpm capability bit Tuomas Tynkkynen
2013-07-31 17:41     ` Tuomas Tynkkynen
     [not found]     ` <1375292522-7855-2-git-send-email-ttynkkynen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-07-31 18:35       ` Alan Stern
2013-07-31 18:35         ` Alan Stern
2013-08-01  8:05     ` Matthieu CASTET [this message]
2013-08-02 15:42       ` Tuomas Tynkkynen
2013-07-31 17:42   ` [PATCH 5/6] Documentation: New DT parameters for tegra30-usb-phy Tuomas Tynkkynen
2013-07-31 17:42     ` Tuomas Tynkkynen
     [not found]     ` <1375292522-7855-6-git-send-email-ttynkkynen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-08-01 21:17       ` Stephen Warren
2013-08-01 21:17         ` Stephen Warren
2013-07-31 17:42 ` [PATCH 6/6] usb: host: tegra: Tegra30 support Tuomas Tynkkynen
2013-07-31 17:42   ` Tuomas Tynkkynen
     [not found]   ` <1375292522-7855-7-git-send-email-ttynkkynen-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-08-01 21:18     ` Stephen Warren
2013-08-01 21:18       ` Stephen Warren
2013-07-31 23:22 ` [PATCH 0/6] USB tree changes for Tegra30 and Tegra114 USB Host support Stephen Warren
2013-08-01 13:02   ` Tuomas Tynkkynen
     [not found]     ` <51FA5C5A.2080900-DDmLM1+adcrQT0dZR+AlfA@public.gmane.org>
2013-08-01 16:22       ` Stephen Warren
2013-08-01 16:22         ` Stephen Warren
     [not found]         ` <51FA8B3B.8070504-3lzwWm7+Weoh9ZMKESR00Q@public.gmane.org>
2013-08-02  7:52           ` Felipe Balbi
2013-08-02  7:52             ` Felipe Balbi

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=20130801100544.76233b42@parrot.com \
    --to=matthieu.castet@parrot.com \
    --cc=alexander.shishkin@linux.intel.com \
    --cc=balbi@ti.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tegra@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=stern@rowland.harvard.edu \
    --cc=swarren@wwwdotorg.org \
    --cc=ttynkkynen@nvidia.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.