351 if (master->debug_level) |
351 if (master->debug_level) |
352 EC_DBG("Processing phy request for slave %u, " |
352 EC_DBG("Processing phy request for slave %u, " |
353 "offset 0x%04x, length %u...\n", |
353 "offset 0x%04x, length %u...\n", |
354 request->slave->ring_position, |
354 request->slave->ring_position, |
355 request->offset, request->length); |
355 request->offset, request->length); |
|
356 |
|
357 if (request->length > fsm->datagram->mem_size) { |
|
358 EC_ERR("Request length (%u) exceeds maximum " |
|
359 "datagram size (%u)!\n", request->length, |
|
360 fsm->datagram->mem_size); |
|
361 request->state = EC_INT_REQUEST_FAILURE; |
|
362 wake_up(&master->phy_queue); |
|
363 continue; |
|
364 } |
|
365 |
356 fsm->phy_request = request; |
366 fsm->phy_request = request; |
357 |
367 |
358 if (request->dir == EC_DIR_INPUT) { |
368 if (request->dir == EC_DIR_INPUT) { |
359 ec_datagram_fprd(fsm->datagram, request->slave->station_address, |
369 ec_datagram_fprd(fsm->datagram, request->slave->station_address, |
360 request->offset, request->length); |
370 request->offset, request->length); |
361 ec_datagram_zero(fsm->datagram); |
371 ec_datagram_zero(fsm->datagram); |
362 } else { |
372 } else { |
363 if (request->length > fsm->datagram->mem_size) { |
|
364 EC_ERR("Request length (%u) exceeds maximum " |
|
365 "datagram size (%u)!\n", request->length, |
|
366 fsm->datagram->mem_size); |
|
367 request->state = EC_INT_REQUEST_FAILURE; |
|
368 wake_up(&master->phy_queue); |
|
369 continue; |
|
370 } |
|
371 ec_datagram_fpwr(fsm->datagram, request->slave->station_address, |
373 ec_datagram_fpwr(fsm->datagram, request->slave->station_address, |
372 request->offset, request->length); |
374 request->offset, request->length); |
373 memcpy(fsm->datagram->data, request->data, request->length); |
375 memcpy(fsm->datagram->data, request->data, request->length); |
374 } |
376 } |
375 fsm->retries = EC_FSM_RETRIES; |
377 fsm->retries = EC_FSM_RETRIES; |