34 void ec_eoe_run(ec_eoe_t *eoe) |
34 void ec_eoe_run(ec_eoe_t *eoe) |
35 { |
35 { |
36 uint8_t *data; |
36 uint8_t *data; |
37 ec_master_t *master; |
37 ec_master_t *master; |
38 size_t rec_size; |
38 size_t rec_size; |
|
39 #if 0 |
|
40 unsigned int i; |
|
41 uint8_t fragment_number; |
|
42 uint8_t complete_size; |
|
43 uint8_t frame_number; |
|
44 uint8_t last_fragment; |
|
45 #endif |
39 |
46 |
40 master = eoe->slave->master; |
47 master = eoe->slave->master; |
41 |
48 |
42 if (eoe->rx_state == EC_EOE_IDLE) { |
49 if (eoe->rx_state == EC_EOE_IDLE) { |
43 ec_slave_mbox_prepare_check(eoe->slave); |
50 ec_slave_mbox_prepare_check(eoe->slave); |
61 eoe->rx_state = EC_EOE_FETCHING; |
68 eoe->rx_state = EC_EOE_FETCHING; |
62 return; |
69 return; |
63 } |
70 } |
64 |
71 |
65 if (eoe->rx_state == EC_EOE_FETCHING) { |
72 if (eoe->rx_state == EC_EOE_FETCHING) { |
66 EC_DBG("EOE fetching\n"); |
|
67 if (eoe->slave->mbox_command.state != EC_CMD_RECEIVED) { |
73 if (eoe->slave->mbox_command.state != EC_CMD_RECEIVED) { |
68 master->stats.eoe_errors++; |
74 master->stats.eoe_errors++; |
69 eoe->rx_state = EC_EOE_IDLE; |
75 eoe->rx_state = EC_EOE_IDLE; |
70 return; |
76 return; |
71 } |
77 } |
72 if (!(data = ec_slave_mbox_fetch(eoe->slave, 0x02, &rec_size))) { |
78 if (!(data = ec_slave_mbox_fetch(eoe->slave, 0x02, &rec_size))) { |
73 master->stats.eoe_errors++; |
79 master->stats.eoe_errors++; |
74 eoe->rx_state = EC_EOE_IDLE; |
80 eoe->rx_state = EC_EOE_IDLE; |
75 return; |
81 return; |
76 } |
82 } |
77 EC_DBG("EOE received: %i\n", rec_size); |
83 |
|
84 #if 0 |
|
85 fragment_number = EC_READ_U16(data + 2) & 0x003F; |
|
86 complete_size = (EC_READ_U16(data + 2) >> 6) & 0x003F; |
|
87 frame_number = (EC_READ_U16(data + 2) >> 12) & 0x0003; |
|
88 last_fragment = (EC_READ_U16(data + 2) >> 15) & 0x0001; |
|
89 |
|
90 EC_DBG("EOE %s received, fragment: %i, complete size: %i (0x%02X)," |
|
91 " frame %i%s\n", |
|
92 fragment_number ? "fragment" : "initiate", fragment_number, |
|
93 (complete_size - 31) / 32, complete_size, frame_number, |
|
94 last_fragment ? ", last fragment" : ""); |
|
95 EC_DBG(""); |
|
96 for (i = 0; i < rec_size - 2; i++) { |
|
97 printk("%02X ", data[i + 2]); |
|
98 if ((i + 1) % 16 == 0) { |
|
99 printk("\n"); |
|
100 EC_DBG(""); |
|
101 } |
|
102 } |
|
103 printk("\n"); |
|
104 #endif |
|
105 |
78 eoe->rx_state = EC_EOE_IDLE; |
106 eoe->rx_state = EC_EOE_IDLE; |
79 return; |
107 return; |
80 } |
108 } |
81 } |
109 } |
82 |
110 |