0

I have extracted acpidump in Ubuntu and trying to understand what the device or BIOS has provided to Linux host.

Besides IO port which is not working, I can only see resource of Memeory32Fixed() which has base address of 0x0 with a valid length on _Y06.

I have tried to read/write with virtual address obtained from ioremap(0x0, 0x10000) (in kernel space) but that doesn't seem to work.

So what does this stand for and how can I use it to communicate to the hardware if it's useful at all?

Device (SOMETHING)
    {
        ......
        Name (RBUF, ResourceTemplate ()
        {
            Memory32Fixed (ReadWrite,
                0x00000000,         // Address Base
                0x00010000,         // Address Length
                _Y06)
        }
        .......
keye
  • 135
  • 1
  • 14
  • Somewhere else is the code (ASL code), which adds an offset. – 0andriy Apr 10 '19 at 10:00
  • To answer to your question, you need to register a platform driver which will call `platform_get_resource(pdev, IORESOURCE_MEM, 0);` to get the actual values. – 0andriy Apr 10 '19 at 16:21
  • @0andriy I just tried `platform_get_resource()` and it returns same physical address obtained from `acpi_dev_get_resources()` which I used earlier, but writing to those address (after using `ioremap()` to convert them to virtual address of course) doesn't work.. I am able to find this address already being reserved in `/proc/iomem` but they are NOT present in `DSDT.dsl` extracted from acpidump. Any idea what might still be wrong? Is it possible BIOS/EFI didn't assign those addresses properly? – keye Apr 10 '19 at 23:29
  • Read my comments above, it’s hard to say when you didn’t provide enough context (full ASL for that device node, source code of the probe part of the driver, etc) and debug information (printed values of *struct resource*, etc). – 0andriy Apr 11 '19 at 06:29

0 Answers0