From: Rich Townsend <rhdt-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
To: Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
Subject: Re: Re: Smart Battery System driver
Date: Mon, 17 Jan 2005 22:03:25 -0500 [thread overview]
Message-ID: <41EC7C7D.1070003@bartol.udel.edu> (raw)
In-Reply-To: <41EA2C1D.3030909-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
Hi all --
I've just uploaded a new version of the Smart Battery driver:
http://shayol.bartol.udel.edu/~rhdt/download/acpi_sbs-20050117.tar.gz
Changes include
*) A slightly more-methodical use of mutexes (probably still broken, though)
*) An 'alarm' interface file in each SB? Smart Battery subdirectory (see
the README file for usage instructions)
*) An 'alarm' interface file in each BAT? legacy battery subdirectory
The alarm functionality is read-write, so you can change the capacity &
time-left levels at which the Smart Battery begins to generate alarm events.
HOWEVER, here's the rub: I haven't yet found a way of detecting when
these alarm events are issued. Reading through chapter 12.12 of the ACPI
spec, it appears that all Alarm Notify messages from EC-based SMBus
should trigger a query method (_QXX), with the query value XX being set
by the _EC named object.
For instance, on my system (TM4502):
Device (SMBC)
{
Name (_HID, "ACPI0001")
Name (_EC, 0x1820)
Device (SBS0)
{
Name (_HID, "ACPI0002")
Name (_SBS, 0x02)
}
}
...means that the SMBus has a base address of 0x18 within embedded
controller space, and all SMBus events are handled by query method _Q20.
Looking at the definition of _Q20 on my system, we have:
Method (_Q20, 0, NotSerialized)
{
If (And (SMST, 0x40))
{
Store (SMAA, Local0)
If (LEqual (Local0, 0x14))
{
And (SMST, 0xBF, SMST)
}
}
}
This I think I can understand: if the SMBus Alarm Notify bit is set (bit
14 of the SMST register), and the alarm was triggered by the device with
shifted address 0x14, then reset the alarm bit.
Now what corresponds to shifted address 0x14? Well, shift it one bit to
the right to get the 'true' SMBus slave address, and we find the value
0x0a -- which corresponds (see sec. 10 of the ACPI spec.) to a Smart
Battery System Manager (SBSM) or Smart Battery Selector (SBSEL, which
I've got on my system). So, the _Q20 method listens for alarms coming
from the SBSM/SBSEL, but takes no specific action when it receives one,
beyond resetting it.
Spurred on by a post by a very helpful post by Karol Kozimor, I tried
adding code to the _Q20 method, to fire off a notifcation to the driver
(well, in fact I just used a Store(XXXXX, debug) to get some output).
With this code in place, I found that my SBSEL was generating alarms
when the AC power cord was plugged in and removed. Likewise, events were
generated when the battery was removed and re-inserted.
Hurrah, I thought -- we can get the 'backend' for alarms to work
(although we'll need to do some DSDT hacking). But here now is the
problem: using the new driver, I set the alarm trigger levels to
crazy-high values, to get the Smart Battery to fire off alarm events.
But these events seem to be getting lost somewhere, or they're not being
generated in the first place, because I don't get a peep from my hacked
_Q20 method.
I don't know why this is the case, but its worth noting that section
10.1.1 of the spec states "The Smart Battery System Manager, the Smart
Battery Selector, and the Smart Battery Charger each have an optional
mechanism for notifying the system that the battery configuration or AC
status has changed. ACPI requires that this interrupt mechanism be
through the SMBus Alarm Notify mechanism." Important note: no mention
whatsoever of alarms generated by the Smart Battery itself!
But where, then, do the Smart Battery alarms end up? Reading sec.
5.6.2.2.2 of the spec. gave me hope: "Similarly, for an SMBus driver, if
no driver registers for SMBus alarms, the SMBus driver will queue
control methods to handle these. Methods must be placed under the SMBus
device with the name _QXX, where XX is the hex format of the SMBus
address of the device sending the alarm". So I went added _QXX methods
for SMBus slave address 0x0b (Smart Battery) and its shifted equivalent
0x16. Unfortunately, again not a peep from the battery.
What could be going wrong? Some thoughts:
*) maybe there is already a driver registered for SMBus alarms, that
prevents them from getting through?
*) I'm assuming its already there, but maybe the functionality described
in 5.6.2.2.2 actually needs to be implemented in the i2c-acpi-ec code?
*) perhaps the battery simply isn't generating the alarms?
*) maybe I just don't know enough about what I'm doing?
Well, that's enough rambling for me -- I just wanted to share how far
I'd got in working out what is what. I'd really like to get the alarm
issue resolved, since it is the most important feature to me, but at the
moment I need to do some Real Work to keep my boss happy. It would be
great if eveyone interested in Smart Battery support could have a shot
at playing around like I have -- seriously, you don't need to know a
whole lot!
cheers,
Rich
-------------------------------------------------------
The SF.Net email is sponsored by: Beat the post-holiday blues
Get a FREE limited edition SourceForge.net t-shirt from ThinkGeek.
It's fun and FREE -- well, almost....http://www.thinkgeek.com/sfshirt
next prev parent reply other threads:[~2005-01-18 3:03 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-01-14 19:23 Smart Battery System driver Rich Townsend
[not found] ` <41E81C2C.8010809-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-15 0:06 ` David Gómez
2005-01-15 0:12 ` Pedro Venda
2005-01-15 0:13 ` Matthew Garrett
2005-01-15 3:03 ` Johannes Kuhlmann
[not found] ` <47e0449d05011419037877f931-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2005-01-15 10:57 ` Johan Vromans
[not found] ` <m2fz13x8mw.fsf-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-15 14:24 ` Johannes Kuhlmann
2005-01-16 8:55 ` Rich Townsend
[not found] ` <41EA2C1D.3030909-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-16 10:48 ` François Valenduc
[not found] ` <41EA4661.4000304-IWqWACnzNjyZIoH1IeqzKA@public.gmane.org>
2005-01-16 14:36 ` François Valenduc
2005-01-16 10:49 ` Karol Kozimor
2005-01-17 11:41 ` Bruno Ducrot
2005-01-17 16:27 ` Pedro Venda
[not found] ` <41EBE769.7050107-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-18 1:36 ` Rich Townsend
[not found] ` <41EC6829.1070901-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-18 11:11 ` Matthew Garrett
2005-01-18 11:23 ` Zdzisław A. Kaleta
[not found] ` <200501181223.22954.sanskryt-FWhLrETftxM@public.gmane.org>
2005-01-18 12:20 ` Zdzisław A. Kaleta
2005-01-18 15:46 ` Rich Townsend
2005-01-18 3:03 ` Rich Townsend [this message]
[not found] ` <41EC7C7D.1070003-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-18 4:39 ` Rich Townsend
[not found] ` <41EC9316.80109-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-18 13:00 ` Pedro Venda
2005-01-19 4:32 ` Rich Townsend
[not found] ` <41EDE2EA.7090404-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-19 9:36 ` Johan Vromans
[not found] ` <m2u0pdn4js.fsf-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-19 13:31 ` Rich Townsend
2005-01-19 14:11 ` Johan Vromans
2005-01-19 18:49 ` Jeroen Wijnhout
[not found] ` <200501191949.03558.Jeroen.Wijnhout-sVbgdUKTYbrR7s880joybQ@public.gmane.org>
2005-01-19 19:10 ` Olaf Jansen-Olliges
[not found] ` <200501192010.25975.o.jansen-n+qsWun7DryELgA04lAiVw@public.gmane.org>
2005-01-19 21:55 ` Johan Vromans
[not found] ` <m28y6pytgs.fsf-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-19 22:24 ` Rich Townsend
2005-01-20 8:36 ` Olaf Jansen-Olliges
[not found] ` <200501200936.21831.o.jansen-n+qsWun7DryELgA04lAiVw@public.gmane.org>
2005-01-20 9:22 ` Johan Vromans
2005-01-20 9:10 ` Jeroen Wijnhout
2005-01-20 3:03 ` Rich Townsend
[not found] ` <41EF1F6A.5000807-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-20 15:12 ` Pedro Venda
[not found] ` <41EFCA59.6040100-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-20 16:04 ` Rich Townsend
[not found] ` <41EFD672.2040308-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-20 21:10 ` Stefan Seyfried
[not found] ` <20050120211044.GA27543-l0tNAEGuAhhzZ8+rp42Dbp9+tswZ0GTaehPwdyo5hKaELgA04lAiVw@public.gmane.org>
2005-01-21 13:16 ` Pedro Venda
[not found] ` <41F1009C.30201-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-21 17:48 ` Stefan Seyfried
2005-09-06 3:25 ` Antoni Villalonga
[not found] ` <75eeb70e05090520257be89afa-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2005-09-06 6:19 ` Olaf Jansen-Olliges
[not found] ` <200509060819.13292.o.jansen-n+qsWun7DryELgA04lAiVw@public.gmane.org>
2005-09-06 6:48 ` Yu Luming
[not found] ` <200509061448.12234.luming.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2005-09-06 6:54 ` Olaf Jansen-Olliges
[not found] ` <200509060854.14417.o.jansen-n+qsWun7DryELgA04lAiVw@public.gmane.org>
2005-09-06 6:57 ` Yu Luming
[not found] ` <200509061457.23947.luming.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2005-09-06 7:05 ` Olaf Jansen-Olliges
2005-09-06 8:41 ` Olaf Jansen-Olliges
[not found] ` <200509061041.21722.o.jansen-n+qsWun7DryELgA04lAiVw@public.gmane.org>
2005-09-06 9:34 ` Yu Luming
[not found] ` <200509061734.11182.luming.yu-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2005-09-06 11:57 ` Olaf Jansen-Olliges
2005-09-08 9:04 ` Olaf Jansen-Olliges
2005-09-06 6:38 ` Yu Luming
2005-09-06 19:53 ` Antoni Villalonga
[not found] ` <75eeb70e050906125344c326ad-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2005-09-06 20:38 ` François Valenduc
2005-09-09 21:59 ` Antoni Villalonga
2005-09-07 7:51 ` David Gómez
2005-01-20 20:38 ` Johan Vromans
[not found] ` <m2wtu74yzq.fsf-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-20 20:48 ` Rich Townsend
[not found] ` <41F01923.1000503-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-20 21:31 ` Johan Vromans
[not found] ` <m2sm4v4wk7.fsf-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-21 2:57 ` Bernard Blackham
2005-01-21 13:20 ` Pedro Venda
2005-01-21 13:24 ` Johan Vromans
[not found] ` <16881.652.864369.5956-KjnUIgV0B0bak1Ioo/c9IoRWq/SkRNHw@public.gmane.org>
2005-01-21 13:34 ` Pedro Venda
[not found] ` <41F10180.60008-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-21 13:26 ` Rich Townsend
[not found] ` <41F1031E.60507-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-21 13:42 ` Pedro Venda
[not found] ` <41F106C9.5020404-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-21 15:01 ` Rich Townsend
[not found] ` <41F11940.5010101-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-21 20:16 ` Pedro Venda
[not found] ` <41F1631C.1030701-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-21 20:31 ` Rich Townsend
2005-01-21 14:17 ` Zdzisław A. Kaleta
2005-01-23 16:02 ` Pavel Machek
[not found] ` <20050123160244.GA1364-I/5MKhXcvmPrBKCeMvbIDA@public.gmane.org>
2005-01-23 17:36 ` Pedro Venda
[not found] ` <41F3E095.6060805-pQd4kjVL+REh2FBCd0jGRA@public.gmane.org>
2005-01-24 11:50 ` Stefan Seyfried
2005-01-21 0:31 ` ultrakorne
[not found] ` <41F04D5A.8060304-XtQPfPCVGG7srOwW+9ziJQ@public.gmane.org>
2005-01-25 4:54 ` Rich Townsend
2005-01-18 10:26 ` Bruno Ducrot
[not found] ` <20050118102635.GV19199-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2005-01-18 15:39 ` Rich Townsend
[not found] ` <41ED2DB8.70707-OBnUx95tOyn10jlvfTC4gA@public.gmane.org>
2005-01-19 11:09 ` Bruno Ducrot
2005-01-15 6:38 ` Rich Townsend
2005-01-17 13:20 ` Bruno Ducrot
[not found] ` <20050117132023.GT19199-kk6yZipjEM5g9hUCZPvPmw@public.gmane.org>
2005-01-17 14:21 ` Hendrik Jürgens
2005-01-17 11:33 ` Bruno Ducrot
2005-01-17 21:11 ` Zdzisław A. Kaleta
[not found] ` <200501172211.37583.sanskryt-FWhLrETftxM@public.gmane.org>
2005-01-17 23:58 ` Zdzisław A. Kaleta
2005-01-17 22:40 ` ultrakorne
-- strict thread matches above, loose matches on Subject: below --
2005-01-20 22:04 Grover, Andrew
[not found] ` <F760B14C9561B941B89469F59BA3A84708CBB988-sBd4vmA9Se6krb+BlOpmy7fspsVTdybXVpNB7YpNyf8@public.gmane.org>
2005-01-20 22:12 ` Karol Kozimor
2005-01-21 0:03 ` Matthew Garrett
2005-01-21 12:02 ` Paul Ionescu
2005-01-21 10:06 ` Simon Fowler
[not found] ` <20050121100618.GA3945-Ji7FXtOmRLs@public.gmane.org>
2005-01-21 13:22 ` Rich Townsend
2005-01-21 14:14 ` Stefan Seyfried
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=41EC7C7D.1070003@bartol.udel.edu \
--to=rhdt-obnux95toyn10jlvftc4ga@public.gmane.org \
--cc=Acpi-devel-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org \
/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