master/cdev.c
changeset 1526 66edd310830c
parent 1518 ab5694a51826
child 1530 96629de2202b
child 1543 373cd456dc26
equal deleted inserted replaced
1525:ee18735e534f 1526:66edd310830c
  1432     }
  1432     }
  1433 
  1433 
  1434     data.index = req->index;
  1434     data.index = req->index;
  1435     data.subindex = req->subindex;
  1435     data.subindex = req->subindex;
  1436     data.size = req->data_size;
  1436     data.size = req->data_size;
  1437     memcpy(&data.data, req->data, min((u32) data.size, (u32) 4));
  1437     memcpy(&data.data, req->data,
       
  1438             min((u32) data.size, (u32) EC_MAX_SDO_DATA_SIZE));
  1438 
  1439 
  1439     up(&master->master_sem);
  1440     up(&master->master_sem);
  1440 
  1441 
  1441     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1442     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1442         return -EFAULT;
  1443         return -EFAULT;
  2118         return -ENOENT;
  2119         return -ENOENT;
  2119     }
  2120     }
  2120 
  2121 
  2121     up(&master->master_sem); // FIXME
  2122     up(&master->master_sem); // FIXME
  2122 
  2123 
  2123     ret = ecrt_slave_config_sdo(sc, data.index, data.subindex, sdo_data,
  2124     if (data.complete_access) {
  2124             data.size);
  2125         ret = ecrt_slave_config_complete_sdo(sc, data.index, sdo_data, data.size);
       
  2126     } else {
       
  2127         ret = ecrt_slave_config_sdo(sc, data.index, data.subindex, sdo_data,
       
  2128                 data.size);
       
  2129     }
  2125     kfree(sdo_data);
  2130     kfree(sdo_data);
  2126     return ret;
  2131     return ret;
  2127 }
  2132 }
  2128 
  2133 
  2129 /*****************************************************************************/
  2134 /*****************************************************************************/