From: "xavier.gnata@gmail.com" <xavier.gnata@gmail.com>
To: Lan Tianyu <lantianyu1986@gmail.com>,
Matthew Garrett <matthew.garrett@nebula.com>
Cc: "linux-acpi@vger.kernel.org" <linux-acpi@vger.kernel.org>,
"linux-kernel@vger kernel org" <linux-kernel@vger.kernel.org>,
Len Brown <lenb@kernel.org>,
"Rafael J. Wysocki" <rjw@rjwysocki.net>
Subject: Re: [PATCH 3/3] ACPI: Don't re-select SBS battery if it's already selected
Date: Mon, 11 Aug 2014 13:14:44 +0200 [thread overview]
Message-ID: <53E8A5A4.5000405@gmail.com> (raw)
In-Reply-To: <CAOLK0pwEzWNHT+yyqKiFMc05iVjTYk4wjLDOb=g=kOm7zttT=A@mail.gmail.com>
On 14/03/2014 06:39, Lan Tianyu wrote:
> 2014-03-12 6:20 GMT+08:00 Matthew Garrett <matthew.garrett@nebula.com>:
>> The existing SBS code explicitly sets the selected battery in the SBS
>> manager regardless of whether the battery in question is already selected.
>> This causes bus timeouts on Apple hardware. Check for this case and avoid
>> it.
>>
> Hi Matthew:
> This patch is to avoid a redundant battery select operation when
> the battery is selected. But the symptom "bus timeouts" is a bus transaction
> issue, right? Will this happen during other SBS write/read operations? Do we
> need to increase the wait time of SMBUS transaction?
Well, the patch does the job and is needed on a macbook air.
What should we test to make it potentially better?
>
>> Signed-off-by: Matthew Garrett <matthew.garrett@nebula.com>
>> ---
>> drivers/acpi/sbs.c | 18 +++++++++++++-----
>> 1 file changed, 13 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
>> index dbd4849..c386505 100644
>> --- a/drivers/acpi/sbs.c
>> +++ b/drivers/acpi/sbs.c
>> @@ -470,17 +470,25 @@ static struct device_attribute alarm_attr = {
>> static int acpi_battery_read(struct acpi_battery *battery)
>> {
>> int result = 0, saved_present = battery->present;
>> - u16 state;
>> + u16 state, selected, desired;
>>
>> if (battery->sbs->manager_present) {
>> result = acpi_smbus_read(battery->sbs->hc, SMBUS_READ_WORD,
>> ACPI_SBS_MANAGER, 0x01, (u8 *)&state);
>> if (!result)
>> battery->present = state & (1 << battery->id);
>> - state &= 0x0fff;
>> - state |= 1 << (battery->id + 12);
>> - acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD,
>> - ACPI_SBS_MANAGER, 0x01, (u8 *)&state, 2);
>> + /*
>> + * Don't switch battery if the correct one is already selected
>> + */
>> + selected = state & 0xf000;
>> + desired = 1 << (battery->id + 12);
>> + if (selected != desired) {
>> + state &= 0x0fff;
>> + state |= desired;
>> + acpi_smbus_write(battery->sbs->hc, SMBUS_WRITE_WORD,
>> + ACPI_SBS_MANAGER, 0x01,
>> + (u8 *)&state, 2);
>> + }
>> } else if (battery->id == 0)
>> battery->present = 1;
>> if (result || !battery->present)
>> --
>> 1.8.5.3
>>
>> --
>> 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
>
>
prev parent reply other threads:[~2014-08-11 11:14 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-03-11 22:19 Improve ACPI support for Apple hardware Matthew Garrett
2014-03-11 22:20 ` [PATCH 1/3] ACPI: Support _OSI("Darwin") correctly Matthew Garrett
2014-03-11 22:20 ` [PATCH 2/3] ACPI: Don't call PCI OSC on Apple hardware when claiming to be Darwin Matthew Garrett
2014-03-11 22:20 ` [PATCH 3/3] ACPI: Don't re-select SBS battery if it's already selected Matthew Garrett
2014-03-14 5:39 ` Lan Tianyu
2014-08-11 11:14 ` xavier.gnata [this message]
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=53E8A5A4.5000405@gmail.com \
--to=xavier.gnata@gmail.com \
--cc=lantianyu1986@gmail.com \
--cc=lenb@kernel.org \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=matthew.garrett@nebula.com \
--cc=rjw@rjwysocki.net \
/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.