Lines Matching defs:epfile
119 struct usb_request *req; /* P: epfile->mutex */
147 * can never run concurrently (they are synchronised by epfile->mutex)
855 static void __ffs_epfile_read_buffer_free(struct ffs_epfile *epfile)
861 struct ffs_buffer *buf = xchg(&epfile->read_buffer, READ_BUFFER_DROP);
866 /* Assumes epfile->mutex is held. */
867 static ssize_t __ffs_epfile_read_buffered(struct ffs_epfile *epfile,
871 * Null out epfile->read_buffer so ffs_func_eps_disable does not free
875 struct ffs_buffer *buf = xchg(&epfile->read_buffer, NULL);
893 if (cmpxchg(&epfile->read_buffer, NULL, buf))
899 /* Assumes epfile->mutex is held. */
900 static ssize_t __ffs_epfile_read_data(struct ffs_epfile *epfile,
931 if (cmpxchg(&epfile->read_buffer, NULL, buf))
939 struct ffs_epfile *epfile = file->private_data;
947 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE))
951 ep = epfile->ep;
957 epfile->ffs->wait, (ep = epfile->ep));
963 halt = (!io_data->read == !epfile->in);
964 if (halt && epfile->isoc)
968 ret = ffs_mutex_lock(&epfile->mutex, file->f_flags & O_NONBLOCK);
984 ret = __ffs_epfile_read_buffered(epfile, &io_data->data);
990 * if we _do_ wait above, the epfile->ffs->gadget might be NULL
994 gadget = epfile->ffs->gadget;
996 spin_lock_irq(&epfile->ffs->eps_lock);
998 if (epfile->ep != ep) {
1011 spin_unlock_irq(&epfile->ffs->eps_lock);
1025 spin_lock_irq(&epfile->ffs->eps_lock);
1027 if (epfile->ep != ep) {
1072 spin_unlock_irq(&epfile->ffs->eps_lock);
1075 spin_lock_irq(&epfile->ffs->eps_lock);
1076 if (epfile->ep != ep) {
1087 spin_unlock_irq(&epfile->ffs->eps_lock);
1095 ret = __ffs_epfile_read_data(epfile, data, io_data->status,
1116 io_data->ffs = epfile->ffs;
1137 spin_unlock_irq(&epfile->ffs->eps_lock);
1139 mutex_unlock(&epfile->mutex);
1149 struct ffs_epfile *epfile = inode->i_private;
1151 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE))
1154 file->private_data = epfile;
1155 ffs_data_opened(epfile->ffs);
1163 struct ffs_epfile *epfile = kiocb->ki_filp->private_data;
1167 spin_lock_irqsave(&epfile->ffs->eps_lock, flags);
1174 spin_unlock_irqrestore(&epfile->ffs->eps_lock, flags);
1264 struct ffs_epfile *epfile = inode->i_private;
1266 __ffs_epfile_read_buffer_free(epfile);
1267 ffs_data_closed(epfile->ffs);
1275 struct ffs_epfile *epfile = file->private_data;
1279 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE))
1283 ep = epfile->ep;
1289 epfile->ffs->wait, (ep = epfile->ep));
1294 spin_lock_irq(&epfile->ffs->eps_lock);
1297 if (epfile->ep != ep) {
1298 spin_unlock_irq(&epfile->ffs->eps_lock);
1304 ret = usb_ep_fifo_status(epfile->ep->ep);
1307 usb_ep_fifo_flush(epfile->ep->ep);
1311 ret = usb_ep_clear_halt(epfile->ep->ep);
1314 ret = epfile->ep->num;
1321 switch (epfile->ffs->gadget->speed) {
1333 desc = epfile->ep->descs[desc_idx];
1336 spin_unlock_irq(&epfile->ffs->eps_lock);
1345 spin_unlock_irq(&epfile->ffs->eps_lock);
1756 * copy of epfile will save us from use-after-free.
1854 struct ffs_epfile *epfile, *epfiles;
1862 epfile = epfiles;
1863 for (i = 1; i <= count; ++i, ++epfile) {
1864 epfile->ffs = ffs;
1865 mutex_init(&epfile->mutex);
1867 sprintf(epfile->name, "ep%02x", ffs->eps_addrmap[i]);
1869 sprintf(epfile->name, "ep%u", i);
1870 epfile->dentry = ffs_sb_create_file(ffs->sb, epfile->name,
1871 epfile,
1873 if (!epfile->dentry) {
1885 struct ffs_epfile *epfile = epfiles;
1887 for (; count; --count, ++epfile) {
1888 BUG_ON(mutex_is_locked(&epfile->mutex));
1889 if (epfile->dentry) {
1890 d_delete(epfile->dentry);
1891 dput(epfile->dentry);
1892 epfile->dentry = NULL;
1902 struct ffs_epfile *epfile;
1908 epfile = func->ffs->epfiles;
1916 if (epfile) {
1917 epfile->ep = NULL;
1918 __ffs_epfile_read_buffer_free(epfile);
1919 ++epfile;
1929 struct ffs_epfile *epfile;
1937 epfile = ffs->epfiles;
1951 epfile->ep = ep;
1952 epfile->in = usb_endpoint_dir_in(ep->ep->desc);
1953 epfile->isoc = usb_endpoint_xfer_isoc(ep->ep->desc);
1959 ++epfile;