Commit b4fe6648 authored by Stefan Reinauer's avatar Stefan Reinauer Committed by Stefan Reinauer
Browse files

Use MSR abstraction in all board enables


This was forgotten in flashrom svn r677 where some handcrafted MSR accesses
were still found in board-specific code.

Corresponding to flashrom svn r683.
Signed-off-by: default avatarStefan Reinauer <stepan@coresystems.de>
Acked-by: default avatarStefan Reinauer <stepan@coresystems.de>
parent 4eeb713e
......@@ -495,51 +495,29 @@ static int board_artecgroup_dbe6x(const char *name)
#define DBE6x_BOOT_LOC_FLASH (2)
#define DBE6x_BOOT_LOC_FWHUB (3)
unsigned long msr[2];
int msr_fd;
msr_t msr;
unsigned long boot_loc;
msr_fd = open("/dev/cpu/0/msr", O_RDWR);
if (msr_fd == -1) {
perror("open /dev/cpu/0/msr");
/* Geode only has a single core */
if (setup_cpu_msr(0))
return -1;
}
if (lseek(msr_fd, DBE6x_MSR_DIVIL_BALL_OPTS, SEEK_SET) == -1) {
perror("lseek");
close(msr_fd);
return -1;
}
if (read(msr_fd, (void *)msr, 8) != 8) {
perror("read");
close(msr_fd);
return -1;
}
msr = rdmsr(DBE6x_MSR_DIVIL_BALL_OPTS);
if ((msr[0] & (DBE6x_BOOT_OP_LATCHED)) ==
if ((msr.lo & (DBE6x_BOOT_OP_LATCHED)) ==
(DBE6x_BOOT_LOC_FWHUB << DBE6x_BOOT_OP_LATCHED_SHIFT))
boot_loc = DBE6x_BOOT_LOC_FWHUB;
else
boot_loc = DBE6x_BOOT_LOC_FLASH;
msr[0] &= ~(DBE6x_PRI_BOOT_LOC | DBE6x_SEC_BOOT_LOC);
msr[0] |= ((boot_loc << DBE6x_PRI_BOOT_LOC_SHIFT) |
msr.lo &= ~(DBE6x_PRI_BOOT_LOC | DBE6x_SEC_BOOT_LOC);
msr.lo |= ((boot_loc << DBE6x_PRI_BOOT_LOC_SHIFT) |
(boot_loc << DBE6x_SEC_BOOT_LOC_SHIFT));
if (lseek(msr_fd, DBE6x_MSR_DIVIL_BALL_OPTS, SEEK_SET) == -1) {
perror("lseek");
close(msr_fd);
return -1;
}
wrmsr(DBE6x_MSR_DIVIL_BALL_OPTS, msr);
if (write(msr_fd, (void *)msr, 8) != 8) {
perror("write");
close(msr_fd);
return -1;
}
cleanup_cpu_msr();
close(msr_fd);
return 0;
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment