Lines Matching refs:epfile

866 static void __ffs_epfile_read_buffer_free(struct ffs_epfile *epfile)  in __ffs_epfile_read_buffer_free()  argument
872 struct ffs_buffer *buf = xchg(&epfile->read_buffer, READ_BUFFER_DROP); in __ffs_epfile_read_buffer_free()
878 static ssize_t __ffs_epfile_read_buffered(struct ffs_epfile *epfile, in __ffs_epfile_read_buffered() argument
886 struct ffs_buffer *buf = xchg(&epfile->read_buffer, NULL); in __ffs_epfile_read_buffered()
904 if (cmpxchg(&epfile->read_buffer, NULL, buf)) in __ffs_epfile_read_buffered()
911 static ssize_t __ffs_epfile_read_data(struct ffs_epfile *epfile, in __ffs_epfile_read_data() argument
942 if (unlikely(cmpxchg(&epfile->read_buffer, NULL, buf))) in __ffs_epfile_read_data()
950 struct ffs_epfile *epfile = file->private_data; in ffs_epfile_io() local
958 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE)) in ffs_epfile_io()
962 ep = epfile->ep; in ffs_epfile_io()
968 epfile->ffs->wait, (ep = epfile->ep)); in ffs_epfile_io()
974 halt = (!io_data->read == !epfile->in); in ffs_epfile_io()
975 if (halt && epfile->isoc) in ffs_epfile_io()
979 ret = ffs_mutex_lock(&epfile->mutex, file->f_flags & O_NONBLOCK); in ffs_epfile_io()
995 ret = __ffs_epfile_read_buffered(epfile, &io_data->data); in ffs_epfile_io()
1005 gadget = epfile->ffs->gadget; in ffs_epfile_io()
1007 spin_lock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1009 if (epfile->ep != ep) { in ffs_epfile_io()
1022 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1036 spin_lock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1038 if (epfile->ep != ep) { in ffs_epfile_io()
1083 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1086 spin_lock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1087 if (epfile->ep != ep) { in ffs_epfile_io()
1098 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1106 ret = __ffs_epfile_read_data(epfile, data, io_data->status, in ffs_epfile_io()
1127 io_data->ffs = epfile->ffs; in ffs_epfile_io()
1148 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_io()
1150 mutex_unlock(&epfile->mutex); in ffs_epfile_io()
1160 struct ffs_epfile *epfile = inode->i_private; in ffs_epfile_open() local
1164 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE)) in ffs_epfile_open()
1167 file->private_data = epfile; in ffs_epfile_open()
1168 ffs_data_opened(epfile->ffs); in ffs_epfile_open()
1176 struct ffs_epfile *epfile = kiocb->ki_filp->private_data; in ffs_aio_cancel() local
1182 spin_lock_irqsave(&epfile->ffs->eps_lock, flags); in ffs_aio_cancel()
1189 spin_unlock_irqrestore(&epfile->ffs->eps_lock, flags); in ffs_aio_cancel()
1283 struct ffs_epfile *epfile = inode->i_private; in ffs_epfile_release() local
1287 __ffs_epfile_read_buffer_free(epfile); in ffs_epfile_release()
1288 ffs_data_closed(epfile->ffs); in ffs_epfile_release()
1296 struct ffs_epfile *epfile = file->private_data; in ffs_epfile_ioctl() local
1302 if (WARN_ON(epfile->ffs->state != FFS_ACTIVE)) in ffs_epfile_ioctl()
1306 ep = epfile->ep; in ffs_epfile_ioctl()
1312 epfile->ffs->wait, (ep = epfile->ep)); in ffs_epfile_ioctl()
1317 spin_lock_irq(&epfile->ffs->eps_lock); in ffs_epfile_ioctl()
1320 if (epfile->ep != ep) { in ffs_epfile_ioctl()
1321 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_ioctl()
1327 ret = usb_ep_fifo_status(epfile->ep->ep); in ffs_epfile_ioctl()
1330 usb_ep_fifo_flush(epfile->ep->ep); in ffs_epfile_ioctl()
1334 ret = usb_ep_clear_halt(epfile->ep->ep); in ffs_epfile_ioctl()
1337 ret = epfile->ep->num; in ffs_epfile_ioctl()
1344 switch (epfile->ffs->gadget->speed) { in ffs_epfile_ioctl()
1356 desc = epfile->ep->descs[desc_idx]; in ffs_epfile_ioctl()
1359 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_ioctl()
1368 spin_unlock_irq(&epfile->ffs->eps_lock); in ffs_epfile_ioctl()
1913 struct ffs_epfile *epfile, *epfiles; in ffs_epfiles_create() local
1923 epfile = epfiles; in ffs_epfiles_create()
1924 for (i = 1; i <= count; ++i, ++epfile) { in ffs_epfiles_create()
1925 epfile->ffs = ffs; in ffs_epfiles_create()
1926 mutex_init(&epfile->mutex); in ffs_epfiles_create()
1928 sprintf(epfile->name, "ep%02x", ffs->eps_addrmap[i]); in ffs_epfiles_create()
1930 sprintf(epfile->name, "ep%u", i); in ffs_epfiles_create()
1931 epfile->dentry = ffs_sb_create_file(ffs->sb, epfile->name, in ffs_epfiles_create()
1932 epfile, in ffs_epfiles_create()
1934 if (unlikely(!epfile->dentry)) { in ffs_epfiles_create()
1946 struct ffs_epfile *epfile = epfiles; in ffs_epfiles_destroy() local
1950 for (; count; --count, ++epfile) { in ffs_epfiles_destroy()
1951 BUG_ON(mutex_is_locked(&epfile->mutex)); in ffs_epfiles_destroy()
1952 if (epfile->dentry) { in ffs_epfiles_destroy()
1953 d_delete(epfile->dentry); in ffs_epfiles_destroy()
1954 dput(epfile->dentry); in ffs_epfiles_destroy()
1955 epfile->dentry = NULL; in ffs_epfiles_destroy()
1965 struct ffs_epfile *epfile; in ffs_func_eps_disable() local
1971 epfile = func->ffs->epfiles; in ffs_func_eps_disable()
1979 if (epfile) { in ffs_func_eps_disable()
1980 epfile->ep = NULL; in ffs_func_eps_disable()
1981 __ffs_epfile_read_buffer_free(epfile); in ffs_func_eps_disable()
1982 ++epfile; in ffs_func_eps_disable()
1992 struct ffs_epfile *epfile; in ffs_func_eps_enable() local
2000 epfile = ffs->epfiles; in ffs_func_eps_enable()
2014 epfile->ep = ep; in ffs_func_eps_enable()
2015 epfile->in = usb_endpoint_dir_in(ep->ep->desc); in ffs_func_eps_enable()
2016 epfile->isoc = usb_endpoint_xfer_isoc(ep->ep->desc); in ffs_func_eps_enable()
2022 ++epfile; in ffs_func_eps_enable()