master/cdev.c
changeset 1312 74853e018898
parent 1284 283aab089eb5
child 1313 ed15eef57d5c
equal deleted inserted replaced
1311:bf7c62bc533f 1312:74853e018898
  1401         )
  1401         )
  1402 {
  1402 {
  1403 	ec_master_t *m;
  1403 	ec_master_t *m;
  1404     int ret = 0;
  1404     int ret = 0;
  1405 
  1405 
  1406     m = ecrt_request_master(master->index);
  1406     m = ecrt_request_master_err(master->index);
  1407     if (IS_ERR(m)) {
  1407     if (IS_ERR(m)) {
  1408         ret = PTR_ERR(m);
  1408         ret = PTR_ERR(m);
  1409     } else {
  1409     } else {
  1410         priv->requested = 1;
  1410         priv->requested = 1;
  1411     }
  1411     }
  1426     ec_domain_t *domain;
  1426     ec_domain_t *domain;
  1427 
  1427 
  1428 	if (unlikely(!priv->requested))
  1428 	if (unlikely(!priv->requested))
  1429 		return -EPERM;
  1429 		return -EPERM;
  1430 
  1430 
  1431     domain = ecrt_master_create_domain(master);
  1431     domain = ecrt_master_create_domain_err(master);
  1432     if (!domain)
  1432     if (IS_ERR(domain))
  1433         return -ENOMEM;
  1433         return PTR_ERR(domain);
  1434 
  1434 
  1435     return domain->index;
  1435     return domain->index;
  1436 }
  1436 }
  1437 
  1437 
  1438 /*****************************************************************************/
  1438 /*****************************************************************************/
  1453 
  1453 
  1454     if (copy_from_user(&data, (void __user *) arg, sizeof(data))) {
  1454     if (copy_from_user(&data, (void __user *) arg, sizeof(data))) {
  1455         return -EFAULT;
  1455         return -EFAULT;
  1456     }
  1456     }
  1457 
  1457 
  1458     sc = ecrt_master_slave_config(master, data.alias, data.position,
  1458     sc = ecrt_master_slave_config_err(master, data.alias, data.position,
  1459             data.vendor_id, data.product_code);
  1459             data.vendor_id, data.product_code);
  1460     if (!sc)
  1460     if (IS_ERR(sc))
  1461         return -ENODEV; // FIXME
  1461         return PTR_ERR(sc);
  1462 
  1462 
  1463     data.config_index = 0;
  1463     data.config_index = 0;
  1464 
  1464 
  1465     if (down_interruptible(&master->master_sem))
  1465     if (down_interruptible(&master->master_sem))
  1466         return -EINTR;
  1466         return -EINTR;
  1910         data.voe_index++;
  1910         data.voe_index++;
  1911     }
  1911     }
  1912 
  1912 
  1913     up(&master->master_sem);
  1913     up(&master->master_sem);
  1914 
  1914 
  1915     voe = ecrt_slave_config_create_voe_handler(sc, data.size);
  1915     voe = ecrt_slave_config_create_voe_handler_err(sc, data.size);
  1916     if (!voe)
  1916     if (IS_ERR(voe))
  1917         return -ENOMEM;
  1917         return PTR_ERR(voe);
  1918 
  1918 
  1919     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1919     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1920         return -EFAULT;
  1920         return -EFAULT;
  1921 
  1921 
  1922     return 0;
  1922     return 0;