From: Lan Tianyu <tianyu.lan@intel.com>
To: Greg KH <gregkh@linuxfoundation.org>
Cc: lenb@kernel.org, sarah.a.sharp@linux.intel.com,
linux-usb@vger.kernel.org, linux-acpi@vger.kernel.org,
stern@rowland.harvard.edu
Subject: Re: [PATCH 2/3] USB/ACPI: Add usb port's acpi power control in the xhci PORT_POWER feature request process.
Date: Fri, 15 Jun 2012 15:05:28 +0800 [thread overview]
Message-ID: <4FDADEB8.6080609@intel.com> (raw)
In-Reply-To: <20120614154445.GE17140@kroah.com>
On 2012年06月14日 23:44, Greg KH wrote:
> On Thu, Jun 14, 2012 at 03:22:42PM +0800, Lan Tianyu wrote:
>> On 2012年06月14日 03:30, Greg KH wrote:
>>> On Mon, Jun 11, 2012 at 10:24:33AM +0800, Lan Tianyu wrote:
>>>> On our developping machine, bios can provide usb port's power control via
>>>> acpi. This patch is to provide usb port's power control way through setting
>>>> or clearing PORT_POWER feature requests. Add two functions usb_acpi_power_manageable()
>>>> and usb_acpi_set_power_state(). The first one is used to find whether the
>>>> usb port has acpi power resource and the second is to set the power state.
>>>> They are invoked in the xhci_hub_control() where clearing or setting PORT_POWER
>>>> feature requests are processed.
>>>>
>>>> Signed-off-by: Lan Tianyu<tianyu.lan@intel.com>
>>>> ---
>>>> drivers/usb/core/usb-acpi.c | 28 ++++++++++++++++++++++++++++
>>>> drivers/usb/host/xhci-hub.c | 10 ++++++++++
>>>> include/linux/usb.h | 10 ++++++++++
>>>> 3 files changed, 48 insertions(+), 0 deletions(-)
>>>>
>>>> diff --git a/drivers/usb/core/usb-acpi.c b/drivers/usb/core/usb-acpi.c
>>>> index 82c90d0..e95f26f 100644
>>>> --- a/drivers/usb/core/usb-acpi.c
>>>> +++ b/drivers/usb/core/usb-acpi.c
>>>> @@ -19,6 +19,34 @@
>>>>
>>>> #include "usb.h"
>>>>
>>>> +bool usb_acpi_power_manageable(struct usb_device *hdev, int port1)
>>>> +{
>>>> + acpi_handle port_handle;
>>>> +
>>>> + port_handle = usb_get_hub_port_acpi_handle(hdev,
>>>> + port1);
>>>> + return port_handle ? acpi_bus_power_manageable(port_handle) : false;
>>>
>>> Ick, I _really_ hate the ? : usage in C, please use real if statements
>>> so that everyone can read and understand them easier. You do that a lot
>>> here, please fix them all.
>>>
>> Ok. But in some places, for example
>> dev_dbg(&hdev->dev, "The power of hub port %d was set to %s\n",
>> port1, enable ? "enable" : "disable");
>> try to print two result. ?: is more convenient. If I use "if" statement,
>> that will be
>> if (enable)
>> result = "enable";
>> else
>> result = "disable";
>> dev_dbg(&hdev->dev, "The power of hub port %d was set to %s\n",
>> port1, result);
>>
>> This just looks a little complex.
>
> I understand that, which is why I didn't complain about that. But even
> then, you could just change the line to:
> dev_dbg(&hdev->dev, "The power of hub port %d was set to %d\n", port1, enable);
> and you would be able to tell what is going on.
>
Ok. I get it.
>
>>>> +}
>>>> +EXPORT_SYMBOL_GPL(usb_acpi_power_manageable);
>>>> +
>>>> +int usb_acpi_set_power_state(struct usb_device *hdev, int port1, bool enable)
>>>> +{
>>>> + acpi_handle port_handle;
>>>> + unsigned char state;
>>>> + int error = -EINVAL;
>>>> +
>>>> + port_handle = (acpi_handle)usb_get_hub_port_acpi_handle(hdev,
>>>> + port1);
>>>> + state = enable ? ACPI_STATE_D0 : ACPI_STATE_D3_COLD;
>>>> + error = acpi_bus_set_power(port_handle, state);
>>>
>>> You forgot to check port_handle here.
>>>
>>> Why not call usb_acpi_power_manageable() to ensure that you can do this?
>>
>> In my code, usb_acpi_power_manageable() is invoked before
>> usb_acpi_set_power_state().
>
> Are you sure that all future callers will always do this?
>
>> Do you mean I should call usb_acpi_power_manageable() in the
>> usb_acpi_set_power_state()?
>
> Maybe, if it makes sense to. But don't fail, like you currently do, if
> someone doesn't do that, as you aren't telling the caller that they are
> required to do so.
How about to add kernel-doc to make future user notice it? On the other side,
I check the acpi_bus_set_power and if the port didn't have acpi power resource,
it would return error and no harm.
>
> thanks,
>
> greg k-h
--
Best Regards
Tianyu Lan
linux kernel enabling team
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2012-06-15 7:12 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-11 2:24 [PATCH 0/3] USB/ACPI: Add usb port power off mechanism Lan Tianyu
[not found] ` <1339381474-17413-1-git-send-email-tianyu.lan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2012-06-11 2:24 ` [PATCH 1/3] xhci: Add clear PORT_POWER feature process in the xhci_hub_control() Lan Tianyu
2012-06-11 2:24 ` [PATCH 2/3] USB/ACPI: Add usb port's acpi power control in the xhci PORT_POWER feature request process Lan Tianyu
2012-06-13 19:30 ` Greg KH
2012-06-13 20:53 ` Sarah Sharp
2012-06-13 21:00 ` Greg KH
[not found] ` <20120613193038.GA6312-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2012-06-13 21:10 ` Alan Stern
2012-06-13 21:35 ` Sarah Sharp
2012-06-14 7:22 ` Lan Tianyu
2012-06-14 15:44 ` Greg KH
2012-06-15 7:05 ` Lan Tianyu [this message]
2012-06-11 2:24 ` [PATCH 3/3] usb : Add sysfs files to control usb port's power Lan Tianyu
2012-06-11 14:12 ` Alan Stern
[not found] ` <1339381474-17413-4-git-send-email-tianyu.lan-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2012-06-13 19:33 ` Greg KH
[not found] ` <20120613193323.GB6312-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2012-06-13 21:15 ` Alan Stern
2012-06-13 21:46 ` Greg KH
2012-06-14 13:57 ` Alan Stern
2012-06-14 14:35 ` Greg KH
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=4FDADEB8.6080609@intel.com \
--to=tianyu.lan@intel.com \
--cc=gregkh@linuxfoundation.org \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=sarah.a.sharp@linux.intel.com \
--cc=stern@rowland.harvard.edu \
/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.