X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=util%2Fectool%2Fec.c;h=0f5b891d54efa77fbb7d34c274f8f13f37e0f0f0;hb=93dd07f3d5ee1726b79e26644ff245fe8b5aaef7;hp=56e9a61905834c9490accd3a8906114b19d03783;hpb=257ae3f520fae9b82c669115a8d548596ae26f48;p=coreboot.git diff --git a/util/ectool/ec.c b/util/ectool/ec.c index 56e9a6190..0f5b891d5 100644 --- a/util/ectool/ec.c +++ b/util/ectool/ec.c @@ -18,6 +18,7 @@ */ #include +#include #include #include #include @@ -38,7 +39,7 @@ int send_ec_command(uint8_t command) debug("."); } if (!timeout) { - printf("Timeout while sending command 0x%02x to EC!\n", + debug("Timeout while sending command 0x%02x to EC!\n", command); // return -1; } @@ -57,8 +58,8 @@ int send_ec_data(uint8_t data) if ((timeout & 0xff) == 0) debug("."); } - if (!timeout) { - printf("Timeout while sending data 0x%02x to EC!\n", data); + if (timeout) { + debug("Timeout while sending data 0x%02x to EC!\n", data); // return -1; } @@ -89,7 +90,7 @@ uint8_t recv_ec_data(void) debug("."); } if (!timeout) { - printf("\nTimeout while receiving data from EC!\n"); + debug("\nTimeout while receiving data from EC!\n"); // return -1; } @@ -101,16 +102,48 @@ uint8_t recv_ec_data(void) uint8_t ec_read(uint8_t addr) { - send_ec_command(0x80); + send_ec_command(RD_EC); send_ec_data(addr); return recv_ec_data(); } +uint8_t ec_ext_read(uint16_t addr) +{ + send_ec_command(WR_EC); + send_ec_data(0x02); + send_ec_data(addr & 0xff); + send_ec_command(RX_EC); + send_ec_data(addr >> 8); + + return recv_ec_data(); +} + +int ec_ext_write(uint16_t addr, uint8_t data) +{ + send_ec_command(WR_EC); + send_ec_data(0x02); + send_ec_data(addr & 0xff); + send_ec_command(WX_EC); + send_ec_data(addr >> 8); + + return send_ec_data(data); +} + int ec_write(uint8_t addr, uint8_t data) { - send_ec_command(0x81); + send_ec_command(WR_EC); send_ec_data(addr); return send_ec_data(data); } + +uint8_t ec_idx_read(uint16_t addr) +{ + uint16_t lpc_idx = 0x380; + + outb(addr & 0xff, lpc_idx + 2); + outb(addr >> 8, lpc_idx + 1); + + return inb(lpc_idx + 3); +}