* Peter Kögel peter.koegel@web.de [021220 11:40]:
In sis_activate it seems that address 0x51 of the virtual kernel address space is accessed.
pci_dummy[1]=readb(0x51); .. writeb(pci_dummy[1] & 0x7f, 0x51); ..
// sis deactivate(): .. writeb(pci_dummy[1], 0x51); ..
This leads to an segmantation fault in my case. Can someone explain me what this code should do? The comment says: /* disable cache */
It should probably either read from the physical address or rather do an inb/outb. I don't have the specs available and I cannot recall exactly where this code comes from.
The next thing I noticed is that the ATMEL29C010A doesn't like the flash_program_atmel() code. When I use the flash_program -code everything is fine.
void flash_program (void) { flash_command(0xa0); }
void flash_program_atmel (void) { flash_command(0x80); flash_command(0x20); }
The AT29C010A data sheet says that: the code in flash_program() is used: 1. to activate data protection 2. ac "program"-command when data protection is activated
the flash_program_atmel() code does switch of the data protection.
I dont know why the flash_program_atmel() code doesn't work for me since it agrees with the data sheet.
The problem is that after the write access no more flash commands can be executed. That means that every other write to the bios does fail and when I rmmod bios insmod bios.o then the kernel module doesn't detect the flashrom until next reboot (the identification command does not work).
so we probably have to reset to data protection after every write by calling command 0xa0?
I tried this with the EON29F002NT-flashrom which belongs to the board, but did not write on that, and the ATMEL.
have you tried CVS or 0.3.2? CVS should support some EON chips. What does /proc/bios say?
Best regards, Stefan