Latitude E6400 Coreboot port

Porting Coreboot (and hopefully Libreboot) to the Dell Latitude E6400

Similar projects worth following
As the title says, I am working on a port of Coreboot to the Dell Latitude E6400. It is very similar to the Lenovo Thinkpad T400, which already has a Coreboot/Libreboot port, which should make this easier.

The main differences between the E6400 and the T400 are the SuperIO, the EC, and the use of DDR2 RAM instead of DDR3. The SuperIO is supported by coreboot, so it should just be a matter of including it in one of the files, but I may have to write new code for the EC (if there even is one, I haven't found conclusive evidence that there is one).

DDR2 is supported for the GM45 chipset in coreboot, and looking through the code, there doesn't seem to be any mainboard specific code for the RAM, so it likely does not matter.

update: Apparently I read the page on the coreboot wiki wrong, support for DDR2 is not implemented. So I will have to write that code to get coreboot working on this laptop. Luckily there are other chipsets that have support for DDR2, so I may be able to use some of that code)

This is my first coreboot port, so I will be learning how things work as I go along.

My code will be mirrored on my github, under the e6400Port branch.

  • More work...

    Nicholas Chin04/03/2019 at 05:37 0 comments

    Well, I made a mistake. Coreboot does not (yet) support DDR2 on GM45. So I will have to implement DDR2 before I can continue the motherboard specific code for the E6400. This will be much more work, but I embrace the challenge and will go ahead in my attempt to port this machine. Hopefully I will learn a lot doing this, making it easier to port future boards. DDR2 is not completely absent from coreboot, so I should be able to turn to other chipsets to get a grasp of how to add support on this chipset.

  • GPIO done (probably)

    Nicholas Chin02/26/2019 at 06:36 0 comments

    According to the old wiki, the first bit of code you can change is the GPIO config using the output of a tool called inteltool. However, it states that the config is in mainboard.c, but in the case of the T400 code, it was moved to the gpio.c file.

    Looking at the code initially, I could figure out how the configuration file was set up and what each line did, but I could not correlate the hexadecimal output of inteltool with the lines of code. Upon closer inspection, I realized that each binary bit in the hex numbers corresponded to a certain GPIO pin that could be configured. The value of each bit position indicated things such as whether it was used as a GPIO, signal direction, output state, and inverted inputs . Soon I had the file edited to match the GPIO config for the E6400.

    I later found this information somewhere on the web, but by then I had already figured it out.

    I did try flashing it after this, (and I had to desolder the chip, as it seems that using a SOIC-8 clip to to ISP may be activating other parts on the board and interfering with the SPI communications) and unsurprisingly, it did not boot. More work still needs to be done.

View all 2 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates