[LinuxBIOS] Winflashrom -- Current Status
Darmawan Salihun
darmawan.salihun at gmail.com
Sat Jul 14 04:06:43 CEST 2007
Peter Stuge wrote:
> On Thu, Jul 12, 2007 at 05:13:38PM +0700, Darmawan Salihun wrote:
>
>>> As for the EPIA board, well, where is that base specified? In a
>>> PCI config register or where?
>>>
>> The base is in a PCI config register. Relevant code as follows:
>>
>> base = pci_read_word(dev, 0x88) & 0xFF80;
>>
>> val = inb(base + 0x4D);
>> val |= 0x80;
>> outb(val, base + 0x4D);
>>
>
> Ok! Put all of board_enable.c in the kernel driver and add some way
> for the app to call any function in the board_pciid_enables list, in
> the kernel driver. Sort of RPC but over a app/kernel split instead of
> over a network.
>
> Then compile board_enable.c also into the app, but not to call any of
> the functions (which would fail anyway) but only to get the same
> board_pciid_enables list. The struct may have to be extended to have
> a unique index for each entry so that the driver and app can agree on
> which function is which.
>
> All of the device detection should be done where it is easiest to do
> it. Since the driver will need to do safe PCI accesses for board
> enables perhaps it makes sense to contain all PCI accesses in the
> driver.
>
After reading through majority of flashrom code, I found out that the
direct I/O port accesses reside in two files, as follows:
- board_enable.c
- chipset_enable.c
I'll try find a way to "move" the routine in these files into
the kernel driver and provide a way to call them indirectly through
the driver interface (the so-called I/O Request Packet).
Everything else other than the direct I/O port accesses are
accomplished through memory-mapped I/O (MMIO) R/W transactions.
Because the current code is already capable of mapping MMIO ranges
that we need to the app, we can consider this problem solved.
--Darmawan Salihun
More information about the coreboot
mailing list