master/cdev.c
changeset 1516 e3b09f847512
parent 1513 60ca68d853b8
child 1518 ab5694a51826
equal deleted inserted replaced
1515:e722e0ac5d28 1516:e3b09f847512
   169     if (down_interruptible(&master->master_sem))
   169     if (down_interruptible(&master->master_sem))
   170         return -EINTR;
   170         return -EINTR;
   171     data.slave_count = master->slave_count;
   171     data.slave_count = master->slave_count;
   172     data.config_count = ec_master_config_count(master);
   172     data.config_count = ec_master_config_count(master);
   173     data.domain_count = ec_master_domain_count(master);
   173     data.domain_count = ec_master_domain_count(master);
       
   174 #ifdef EC_EOE
   174     data.eoe_handler_count = ec_master_eoe_handler_count(master);
   175     data.eoe_handler_count = ec_master_eoe_handler_count(master);
       
   176 #endif
   175     data.phase = (uint8_t) master->phase;
   177     data.phase = (uint8_t) master->phase;
   176     data.scan_busy = master->scan_busy;
   178     data.scan_busy = master->scan_busy;
   177     up(&master->master_sem);
   179     up(&master->master_sem);
   178 
   180 
   179     if (down_interruptible(&master->device_sem))
   181     if (down_interruptible(&master->device_sem))
  1439     return 0;
  1441     return 0;
  1440 }
  1442 }
  1441 
  1443 
  1442 /*****************************************************************************/
  1444 /*****************************************************************************/
  1443 
  1445 
       
  1446 #ifdef EC_EOE
       
  1447 
  1444 /** Get EoE handler information.
  1448 /** Get EoE handler information.
  1445  */
  1449  */
  1446 int ec_cdev_ioctl_eoe_handler(
  1450 int ec_cdev_ioctl_eoe_handler(
  1447         ec_master_t *master, /**< EtherCAT master. */
  1451         ec_master_t *master, /**< EtherCAT master. */
  1448         unsigned long arg /**< ioctl() argument. */
  1452         unsigned long arg /**< ioctl() argument. */
  1483     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1487     if (copy_to_user((void __user *) arg, &data, sizeof(data)))
  1484         return -EFAULT;
  1488         return -EFAULT;
  1485 
  1489 
  1486     return 0;
  1490     return 0;
  1487 }
  1491 }
       
  1492 
       
  1493 #endif
  1488 
  1494 
  1489 /*****************************************************************************/
  1495 /*****************************************************************************/
  1490 
  1496 
  1491 /** Request the master from userspace.
  1497 /** Request the master from userspace.
  1492  */
  1498  */
  3226             return ec_cdev_ioctl_config_pdo(master, arg);
  3232             return ec_cdev_ioctl_config_pdo(master, arg);
  3227         case EC_IOCTL_CONFIG_PDO_ENTRY:
  3233         case EC_IOCTL_CONFIG_PDO_ENTRY:
  3228             return ec_cdev_ioctl_config_pdo_entry(master, arg);
  3234             return ec_cdev_ioctl_config_pdo_entry(master, arg);
  3229         case EC_IOCTL_CONFIG_SDO:
  3235         case EC_IOCTL_CONFIG_SDO:
  3230             return ec_cdev_ioctl_config_sdo(master, arg);
  3236             return ec_cdev_ioctl_config_sdo(master, arg);
       
  3237 #ifdef EC_EOE
  3231         case EC_IOCTL_EOE_HANDLER:
  3238         case EC_IOCTL_EOE_HANDLER:
  3232             return ec_cdev_ioctl_eoe_handler(master, arg);
  3239             return ec_cdev_ioctl_eoe_handler(master, arg);
       
  3240 #endif
  3233         case EC_IOCTL_REQUEST:
  3241         case EC_IOCTL_REQUEST:
  3234             if (!(filp->f_mode & FMODE_WRITE))
  3242             if (!(filp->f_mode & FMODE_WRITE))
  3235                 return -EPERM;
  3243                 return -EPERM;
  3236             return ec_cdev_ioctl_request(master, arg, priv);
  3244             return ec_cdev_ioctl_request(master, arg, priv);
  3237         case EC_IOCTL_CREATE_DOMAIN:
  3245         case EC_IOCTL_CREATE_DOMAIN: