master/cdev.c
changeset 1455 aa18fcfe0fd1
parent 1454 b9986feec1a5
child 1465 3099d78343ea
equal deleted inserted replaced
1454:b9986feec1a5 1455:aa18fcfe0fd1
  1255         data.syncs[i].pdo_count =
  1255         data.syncs[i].pdo_count =
  1256             ec_pdo_list_count(&sc->sync_configs[i].pdos);
  1256             ec_pdo_list_count(&sc->sync_configs[i].pdos);
  1257     }
  1257     }
  1258     data.sdo_count = ec_slave_config_sdo_count(sc);
  1258     data.sdo_count = ec_slave_config_sdo_count(sc);
  1259     data.slave_position = sc->slave ? sc->slave->ring_position : -1;
  1259     data.slave_position = sc->slave ? sc->slave->ring_position : -1;
       
  1260     data.dc_assign_activate = sc->dc_assign_activate;
       
  1261     for (i = 0; i < EC_SYNC_SIGNAL_COUNT; i++) {
       
  1262         data.dc_sync[i] = sc->dc_sync[i];
       
  1263     }
  1260 
  1264 
  1261     up(&master->master_sem);
  1265     up(&master->master_sem);
  1262 
  1266 
  1263     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1267     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1264         return -EFAULT;
  1268         return -EFAULT;
  1934         ec_master_t *master, /**< EtherCAT master. */
  1938         ec_master_t *master, /**< EtherCAT master. */
  1935         unsigned long arg, /**< ioctl() argument. */
  1939         unsigned long arg, /**< ioctl() argument. */
  1936         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
  1940         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
  1937         )
  1941         )
  1938 {
  1942 {
  1939     ec_ioctl_sc_dc_t data;
  1943     ec_ioctl_config_t data;
  1940     ec_slave_config_t *sc;
  1944     ec_slave_config_t *sc;
  1941 
  1945 
  1942 	if (unlikely(!priv->requested))
  1946 	if (unlikely(!priv->requested))
  1943         return -EPERM;
  1947         return -EPERM;
  1944 
  1948 
  1951     if (!(sc = ec_master_get_config(master, data.config_index))) {
  1955     if (!(sc = ec_master_get_config(master, data.config_index))) {
  1952         up(&master->master_sem);
  1956         up(&master->master_sem);
  1953         return -ENOENT;
  1957         return -ENOENT;
  1954     }
  1958     }
  1955 
  1959 
  1956     ecrt_slave_config_dc(sc, data.assign_activate,
  1960     ecrt_slave_config_dc(sc, data.dc_assign_activate,
  1957             data.sync[0].cycle_time,
  1961             data.dc_sync[0].cycle_time,
  1958             data.sync[0].shift_time,
  1962             data.dc_sync[0].shift_time,
  1959             data.sync[1].cycle_time,
  1963             data.dc_sync[1].cycle_time,
  1960             data.sync[1].shift_time);
  1964             data.dc_sync[1].shift_time);
  1961 
  1965 
  1962     up(&master->master_sem);
  1966     up(&master->master_sem);
  1963 
  1967 
  1964     return 0;
  1968     return 0;
  1965 }
  1969 }