On Mon, Apr 30, 2007 at 10:50:07AM +0700, Darmawan Salihun wrote:
- The kernel mode code a.k.a kernel mode device driver is as
simple as possible and only provides "raw" functionality, i.e. capability to map the physical address space in which the BIOS chip is mapped into the requesting user mode code.
This would be OK, but there's a constant race between making the window large enough and new flash chips.
- The kernel mode driver implements the majority of the flashrom
code and the usermode code is merely a "front-end" to the kernel mode device driver which provides all of the chip related logic.
I like this a bit better.
Anyway, I'm also thinking about a quite "universal" interface between the user mode code and the kernel mode code. Perhaps a well defined interface
This requires a lot of extra work but has the benefit of only one generic algorithm being implemented in the kernel, thus the kernel driver will not have to be updated to support new flash chips. It could however have to be updated when a new driver supporting all SPI flash is released. (But not every time a new flash chip is added.)
After having identified the chip the app would download the appropriate microcode to the kernel driver; a set of rather high-level instructions to be executed by the driver.
1. or 2. will be a lot less work though. Maybe start there.
I like 2.
//Peter