Re: How to populate Battery information through ACPI tables

From: Westerberg, Mika
Date: Tue Feb 19 2013 - 13:00:18 EST


On Tue, Feb 19, 2013 at 07:45:38PM +0200, Pallala, Ramakrishna wrote:
> > > > On Tue, Feb 19, 2013 at 03:07:57PM +0000, Pallala, Ramakrishna wrote:
> > > > > I am trying to populate battery related information through ACPI
> > > > > tables and do battery management through non acpi drivers. Can
> > > > > you tell or point me on how to populate the ACPI tables in FW/BIOS
> > > > > and get them in OS? I am new to ACPI world.
> > > >
> > > > You should start by reading Documentation/acpi/enumeration.txt.
> > > >
> > > > Also can you describe with bit more details, what you are trying to
> > > > do? A new battery driver that is enumerated from ACPI namespace, perhaps?
> > > >
> > > > Do you have a DSDT table in hand which we could take a peek?
> > >
> > > Thanks Mika for the pointers. I have looked at the documentation.
> > >
> > > we already have i2c driver for battery monitoring but the chip needs
> > > initialized with characterization data. We wanted to populate/pass
> > > this data through ACPI table to the i2c slave driver.
> > >
> > > How can I do that? Can I pass characterization data through ACPI table
> > > to the i2c slave device?
> >
> > Is the characterization data available in DSDT (or SSDT) table? If yes, then you
> > can just use the fact that ACPI_HANDLE(&i2c_client->dev) returns a valid ACPI
> > handle for your device. You can use this handle to call some ACPI method or
> > whaterver is needed to extract that information.
>
> As of now this data is not there in any table. I want to put this data in DSDT table.
> The data I want to put is specific to the device and will be around 1K bytes.
>
> One question, How the table and device are linked? Is it by device name/id?

In principle, yes. We create devices based on the IDs on the DSDT table.

> Next, how to put this characterization data into the DSDT table?

Typically this is done by BIOS team but you can experiment yourself just by
taking an existing DSDT, disassembling it with iasl, do the changes and
reassembling it again. You can then include this with your kernel or initrd
image.

I have no idea how that data is supposed to look like or be represented in
the DSDT.

You should also familiarize yourself with ACPI by reading the ACPI 5.0 spec
from acpi.info.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/