master/slave.c
changeset 302 ad630f38cca1
parent 298 d491d1f84ebc
child 306 45886de3db87
equal deleted inserted replaced
301:dfe8192a7e19 302:ad630f38cca1
   851                 slave->ring_position);
   851                 slave->ring_position);
   852         return;
   852         return;
   853     }
   853     }
   854 
   854 
   855     start = get_cycles();
   855     start = get_cycles();
   856     timeout = (cycles_t) 10 * cpu_khz; // 10ms
   856     timeout = (cycles_t) 100 * cpu_khz; // 100ms
   857 
   857 
   858     while (1)
   858     while (1) {
   859     {
       
   860         udelay(100); // wait a little bit...
   859         udelay(100); // wait a little bit...
   861 
   860 
   862         if (ec_datagram_nprd(datagram, slave->station_address, 0x0130, 2))
   861         if (ec_datagram_nprd(datagram, slave->station_address, 0x0130, 2))
   863             return;
   862             return;
   864         if (unlikely(ec_master_simple_io(slave->master, datagram))) {
   863         if (unlikely(ec_master_simple_io(slave->master, datagram))) {
   868             return;
   867             return;
   869         }
   868         }
   870 
   869 
   871         end = get_cycles();
   870         end = get_cycles();
   872 
   871 
   873         if (likely(EC_READ_U8(datagram->data) == state)) {
   872         if (EC_READ_U8(datagram->data) == state) {
   874             slave->current_state = state;
   873             slave->current_state = state;
   875             EC_INFO("Acknowleged state 0x%02X on slave %i.\n", state,
   874             EC_INFO("Acknowleged state 0x%02X on slave %i.\n", state,
   876                     slave->ring_position);
   875                     slave->ring_position);
   877             return;
   876             return;
   878         }
   877         }
   879 
   878 
   880         if (unlikely((end - start) >= timeout)) {
   879         if (end - start >= timeout) {
   881             slave->current_state = EC_SLAVE_STATE_UNKNOWN;
   880             slave->current_state = EC_SLAVE_STATE_UNKNOWN;
   882             EC_WARN("Failed to acknowledge state 0x%02X on slave %i"
   881             EC_WARN("Failed to acknowledge state 0x%02X on slave %i"
   883                     " - Timeout!\n", state, slave->ring_position);
   882                     " - Timeout!\n", state, slave->ring_position);
   884             return;
   883             return;
   885         }
   884         }