master/cdev.c
changeset 1349 9baba3568df4
parent 1337 0253c74d0940
child 1350 cd278db5a872
equal deleted inserted replaced
1348:8db0f72ace11 1349:9baba3568df4
  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