From 8efcc40ed420e4b58a400f9f9bccdbd87d33aa64 Mon Sep 17 00:00:00 2001 From: Michael Gernoth Date: Mon, 23 Aug 2010 11:58:08 +0200 Subject: [PATCH] fix lost wakeup and activate sleep mode --- bmc/bmc.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/bmc/bmc.c b/bmc/bmc.c index c96cf6a..a7217ef 100644 --- a/bmc/bmc.c +++ b/bmc/bmc.c @@ -9,9 +9,10 @@ #include "chassis.h" #include "bmc.h" +#define SLEEP_MODE + int main(void) { - uint8_t old_SREG; unsigned char buf[24]; unsigned int len; @@ -19,24 +20,31 @@ int main(void) usart_init(); i2c_init(); + set_sleep_mode(SLEEP_MODE_IDLE); + sei(); while(1) { -#if 0 - sleep_mode(); -#endif - old_SREG = SREG; cli(); - if (i2c_done) { + while (i2c_done) { len = i2c_len; memcpy(buf, (unsigned char*)i2c_databuf, len); i2c_done = 0x00; - SREG = old_SREG; + sei(); decode_ipmb_pkt(buf, len); - } else { - SREG = old_SREG; + + cli(); } + +#ifdef SLEEP_MODE + sleep_enable(); +#endif + sei(); +#ifdef SLEEP_MODE + sleep_cpu(); + sleep_disable(); +#endif } return 0; -- 2.39.5