master/cdev.c
changeset 1534 4844a8433915
parent 1531 6c5478400e28
child 1535 0c484ee12d89
equal deleted inserted replaced
1533:bd150d066ea2 1534:4844a8433915
   173     data.domain_count = ec_master_domain_count(master);
   173     data.domain_count = ec_master_domain_count(master);
   174 #ifdef EC_EOE
   174 #ifdef EC_EOE
   175     data.eoe_handler_count = ec_master_eoe_handler_count(master);
   175     data.eoe_handler_count = ec_master_eoe_handler_count(master);
   176 #endif
   176 #endif
   177     data.phase = (uint8_t) master->phase;
   177     data.phase = (uint8_t) master->phase;
       
   178     data.active = (uint8_t) master->active;
   178     data.scan_busy = master->scan_busy;
   179     data.scan_busy = master->scan_busy;
   179     up(&master->master_sem);
   180     up(&master->master_sem);
   180 
   181 
   181     if (down_interruptible(&master->device_sem))
   182     if (down_interruptible(&master->device_sem))
   182         return -EINTR;
   183         return -EINTR;
  1645     return 0;
  1646     return 0;
  1646 }
  1647 }
  1647 
  1648 
  1648 /*****************************************************************************/
  1649 /*****************************************************************************/
  1649 
  1650 
       
  1651 /** Deactivates the master.
       
  1652  */
       
  1653 int ec_cdev_ioctl_deactivate(
       
  1654         ec_master_t *master, /**< EtherCAT master. */
       
  1655         unsigned long arg, /**< ioctl() argument. */
       
  1656         ec_cdev_priv_t *priv /**< Private data structure of file handle. */
       
  1657         )
       
  1658 {
       
  1659     if (unlikely(!priv->requested))
       
  1660         return -EPERM;
       
  1661 
       
  1662     ecrt_master_deactivate(master);
       
  1663     return 0;
       
  1664 }
       
  1665 
       
  1666 /*****************************************************************************/
       
  1667 
  1650 /** Send frames.
  1668 /** Send frames.
  1651  */
  1669  */
  1652 int ec_cdev_ioctl_send(
  1670 int ec_cdev_ioctl_send(
  1653         ec_master_t *master, /**< EtherCAT master. */
  1671         ec_master_t *master, /**< EtherCAT master. */
  1654         unsigned long arg, /**< ioctl() argument. */
  1672         unsigned long arg, /**< ioctl() argument. */
  3260             return ec_cdev_ioctl_create_slave_config(master, arg, priv);
  3278             return ec_cdev_ioctl_create_slave_config(master, arg, priv);
  3261         case EC_IOCTL_ACTIVATE:
  3279         case EC_IOCTL_ACTIVATE:
  3262             if (!(filp->f_mode & FMODE_WRITE))
  3280             if (!(filp->f_mode & FMODE_WRITE))
  3263                 return -EPERM;
  3281                 return -EPERM;
  3264             return ec_cdev_ioctl_activate(master, arg, priv);
  3282             return ec_cdev_ioctl_activate(master, arg, priv);
       
  3283         case EC_IOCTL_DEACTIVATE:
       
  3284             if (!(filp->f_mode & FMODE_WRITE))
       
  3285                 return -EPERM;
       
  3286             return ec_cdev_ioctl_deactivate(master, arg, priv);
  3265         case EC_IOCTL_SEND:
  3287         case EC_IOCTL_SEND:
  3266             if (!(filp->f_mode & FMODE_WRITE))
  3288             if (!(filp->f_mode & FMODE_WRITE))
  3267                 return -EPERM;
  3289                 return -EPERM;
  3268             return ec_cdev_ioctl_send(master, arg, priv);
  3290             return ec_cdev_ioctl_send(master, arg, priv);
  3269         case EC_IOCTL_RECEIVE:
  3291         case EC_IOCTL_RECEIVE: