2452 // request already processing: interrupt not possible. |
2452 // request already processing: interrupt not possible. |
2453 up(&master->master_sem); |
2453 up(&master->master_sem); |
2454 } |
2454 } |
2455 |
2455 |
2456 // wait until master FSM has finished processing |
2456 // wait until master FSM has finished processing |
2457 wait_event(master->foe_queue, request.req.state != EC_REQUEST_BUSY); |
2457 wait_event(master->foe_queue, request.req.state != EC_INT_REQUEST_BUSY); |
2458 |
2458 |
2459 data.result = request.req.result; |
2459 data.result = request.req.result; |
2460 data.error_code = request.req.error_code; |
2460 data.error_code = request.req.error_code; |
2461 |
2461 |
2462 if (master->debug_level) { |
2462 if (master->debug_level) { |
2463 EC_DBG("Read %d bytes via FoE (result = 0x%x).\n", |
2463 EC_DBG("Read %d bytes via FoE (result = 0x%x).\n", |
2464 request.req.data_size, request.req.result); |
2464 request.req.data_size, request.req.result); |
2465 } |
2465 } |
2466 |
2466 |
2467 if (request.req.state != EC_REQUEST_SUCCESS) { |
2467 if (request.req.state != EC_INT_REQUEST_SUCCESS) { |
2468 data.data_size = 0; |
2468 data.data_size = 0; |
2469 retval = -EIO; |
2469 retval = -EIO; |
2470 } else { |
2470 } else { |
2471 if (request.req.data_size > data.buffer_size) { |
2471 if (request.req.data_size > data.buffer_size) { |
2472 EC_ERR("Buffer too small.\n"); |
2472 EC_ERR("Buffer too small.\n"); |
2562 } |
2562 } |
2563 up(&master->master_sem); |
2563 up(&master->master_sem); |
2564 } |
2564 } |
2565 |
2565 |
2566 // wait until master FSM has finished processing |
2566 // wait until master FSM has finished processing |
2567 wait_event(master->foe_queue, request.req.state != EC_REQUEST_BUSY); |
2567 wait_event(master->foe_queue, request.req.state != EC_INT_REQUEST_BUSY); |
2568 |
2568 |
2569 data.result = request.req.result; |
2569 data.result = request.req.result; |
2570 data.error_code = request.req.error_code; |
2570 data.error_code = request.req.error_code; |
2571 |
2571 |
2572 retval = request.req.state == EC_REQUEST_SUCCESS ? 0 : -EIO; |
2572 retval = request.req.state == EC_INT_REQUEST_SUCCESS ? 0 : -EIO; |
2573 |
2573 |
2574 if (__copy_to_user((void __user *) arg, &data, sizeof(data))) { |
2574 if (__copy_to_user((void __user *) arg, &data, sizeof(data))) { |
2575 retval = -EFAULT; |
2575 retval = -EFAULT; |
2576 } |
2576 } |
2577 |
2577 |