• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/ieee1394/

Lines Matching defs:fi

133 /* fi->reqlists_lock must be taken */
136 struct file_info *fi = req->file_info;
138 list_move_tail(&req->list, &fi->req_complete);
139 wake_up(&fi->wait_complete);
145 struct file_info *fi = req->file_info;
147 spin_lock_irqsave(&fi->reqlists_lock, flags);
149 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
248 struct file_info *fi;
255 list_for_each_entry(fi, &hi->file_info_list, list) {
256 if (fi->notification == RAW1394_NOTIFY_ON) {
260 req->file_info = fi;
266 if (fi->protocol_version > 3) {
286 struct file_info *fi;
300 list_for_each_entry(fi, &hi->file_info_list, list) {
301 if (!fi->fcp_buffer)
324 req->file_info = fi;
330 req->req.recvb = ptr2int(fi->fcp_buffer);
408 /* get next completed request (caller must hold fi->reqlists_lock) */
409 static inline struct pending_request *__next_complete_req(struct file_info *fi)
414 if (!list_empty(&fi->req_complete)) {
415 lh = fi->req_complete.next;
423 static struct pending_request *next_complete_req(struct file_info *fi)
428 spin_lock_irqsave(&fi->reqlists_lock, flags);
429 req = __next_complete_req(fi);
430 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
437 struct file_info *fi = file->private_data;
455 if (!(req = next_complete_req(fi)))
465 if (wait_event_interruptible(fi->wait_complete,
466 (req = next_complete_req(fi))))
496 static int state_opened(struct file_info *fi, struct pending_request *req)
502 fi->state = initialized;
503 fi->protocol_version = req->req.misc;
521 static int state_initialized(struct file_info *fi, struct pending_request *req)
574 list_add_tail(&fi->list, &hi->file_info_list);
581 WARN_ON(fi->host);
582 fi->host = hi->host;
583 fi->state = connected;
586 req->req.generation = get_hpsb_generation(fi->host);
587 req->req.misc = (fi->host->node_id << 16)
588 | fi->host->node_count;
589 if (fi->protocol_version > 3)
590 req->req.misc |= NODEID_TO_NODE(fi->host->irm_id) << 8;
607 static void handle_fcp_listen(struct file_info *fi, struct pending_request *req)
610 if (fi->fcp_buffer) {
613 fi->fcp_buffer = int2ptr(req->req.recvb);
616 if (!fi->fcp_buffer) {
619 fi->fcp_buffer = NULL;
627 static int handle_async_request(struct file_info *fi,
638 hpsb_make_readpacket(fi->host, node, addr, req->req.length);
653 packet = hpsb_make_writepacket(fi->host, node, addr, NULL,
677 hpsb_make_streampacket(fi->host, NULL, req->req.length,
706 packet = hpsb_make_lockpacket(fi->host, node, addr,
735 packet = hpsb_make_lock64packet(fi->host, node, addr,
765 spin_lock_irqsave(&fi->reqlists_lock, flags);
766 list_add_tail(&req->list, &fi->req_pending);
767 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
780 static int handle_async_send(struct file_info *fi, struct pending_request *req)
823 packet->host = fi->host;
832 spin_lock_irqsave(&fi->reqlists_lock, flags);
833 list_add_tail(&req->list, &fi->req_pending);
834 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
853 struct file_info *fi = NULL;
868 list_for_each_entry(fi, &hi->file_info_list, list) {
869 entry = fi->addr_list.next;
870 while (entry != &(fi->addr_list)) {
945 req->file_info = fi;
1007 struct file_info *fi = NULL;
1022 list_for_each_entry(fi, &hi->file_info_list, list) {
1023 entry = fi->addr_list.next;
1024 while (entry != &(fi->addr_list)) {
1089 req->file_info = fi;
1142 struct file_info *fi = NULL;
1168 list_for_each_entry(fi, &hi->file_info_list, list) {
1169 entry = fi->addr_list.next;
1170 while (entry != &(fi->addr_list)) {
1314 req->file_info = fi;
1360 struct file_info *fi = NULL;
1393 list_for_each_entry(fi, &hi->file_info_list, list) {
1394 entry = fi->addr_list.next;
1395 while (entry != &(fi->addr_list)) {
1542 req->file_info = fi;
1581 static int arm_register(struct file_info *fi, struct pending_request *req)
1647 hi = find_host_info(fi->host);
1678 if (hi->host != fi->host) {
1716 list_add_tail(&addr->addr_list, &fi->addr_list);
1721 hpsb_register_addrspace(&raw1394_highlevel, fi->host, &arm_ops,
1727 list_add_tail(&addr->addr_list, &fi->addr_list);
1739 static int arm_unregister(struct file_info *fi, struct pending_request *req)
1757 entry = fi->addr_list.next;
1758 while (entry != &(fi->addr_list)) {
1776 if (hi->host != fi->host) {
1807 hpsb_unregister_addrspace(&raw1394_highlevel, fi->host,
1824 static int arm_get_buf(struct file_info *fi, struct pending_request *req)
1838 entry = fi->addr_list.next;
1839 while (entry != &(fi->addr_list)) {
1876 static int arm_set_buf(struct file_info *fi, struct pending_request *req)
1890 entry = fi->addr_list.next;
1891 while (entry != &(fi->addr_list)) {
1927 static int reset_notification(struct file_info *fi, struct pending_request *req)
1933 fi->notification = (u8) req->req.misc;
1941 static int write_phypacket(struct file_info *fi, struct pending_request *req)
1950 packet = hpsb_make_phypacket(fi->host, data);
1957 spin_lock_irqsave(&fi->reqlists_lock, flags);
1958 list_add_tail(&req->list, &fi->req_pending);
1959 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
1971 static int get_config_rom(struct file_info *fi, struct pending_request *req)
1981 csr1212_read(fi->host->csr.rom, CSR1212_CONFIG_ROM_SPACE_OFFSET,
1986 (int2ptr(req->req.tag), &fi->host->csr.rom->cache_head->len,
1987 sizeof(fi->host->csr.rom->cache_head->len)))
1989 if (copy_to_user(int2ptr(req->req.address), &fi->host->csr.generation,
1990 sizeof(fi->host->csr.generation)))
2001 static int update_config_rom(struct file_info *fi, struct pending_request *req)
2010 int status = hpsb_update_config_rom(fi->host,
2021 fi->cfgrom_upd = 1;
2026 static int modify_config_rom(struct file_info *fi, struct pending_request *req)
2040 dr < RAW1394_MAX_USER_CSR_DIRS && fi->csr1212_dirs[dr];
2046 fi->csr1212_dirs[dr] =
2048 if (!fi->csr1212_dirs[dr])
2052 if (!fi->csr1212_dirs[dr])
2057 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2059 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2065 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2066 fi->csr1212_dirs[dr] = NULL;
2068 hpsb_update_config_rom_image(fi->host);
2076 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2077 fi->csr1212_dirs[dr] = NULL;
2083 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2084 fi->csr1212_dirs[dr] = NULL;
2092 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2093 fi->csr1212_dirs[dr] = NULL;
2100 cache->layout_head = cache->layout_tail = fi->csr1212_dirs[dr];
2111 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2114 csr1212_attach_keyval_to_directory(fi->host->csr.
2120 ret = hpsb_update_config_rom_image(fi->host);
2138 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2140 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2144 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2145 fi->csr1212_dirs[dr] = NULL;
2150 static int state_connected(struct file_info *fi, struct pending_request *req)
2163 return arm_register(fi, req);
2166 return arm_unregister(fi, req);
2169 return arm_set_buf(fi, req);
2172 return arm_get_buf(fi, req);
2175 return reset_notification(fi, req);
2186 handle_fcp_listen(fi, req);
2192 hpsb_reset_bus(fi->host, LONG_RESET);
2198 hpsb_reset_bus(fi->host, SHORT_RESET);
2205 return get_config_rom(fi, req);
2208 return update_config_rom(fi, req);
2211 return modify_config_rom(fi, req);
2214 if (req->req.generation != get_hpsb_generation(fi->host)) {
2216 req->req.generation = get_hpsb_generation(fi->host);
2224 return write_phypacket(fi, req);
2226 return handle_async_send(fi, req);
2235 return handle_async_request(fi, req, node);
2241 struct file_info *fi = file->private_data;
2262 req->file_info = fi;
2269 if (!mutex_trylock(&fi->state_mutex)) {
2274 switch (fi->state) {
2276 retval = state_opened(fi, req);
2280 retval = state_initialized(fi, req);
2284 retval = state_connected(fi, req);
2288 mutex_unlock(&fi->state_mutex);
2304 static inline int __rawiso_event_in_queue(struct file_info *fi)
2308 list_for_each_entry(req, &fi->req_complete, list)
2316 static void queue_rawiso_event(struct file_info *fi)
2320 spin_lock_irqsave(&fi->reqlists_lock, flags);
2323 if (!__rawiso_event_in_queue(fi)) {
2328 req->file_info = fi;
2330 req->req.generation = get_hpsb_generation(fi->host);
2334 if (fi->iso_handle) {
2335 atomic_inc(&fi->iso_handle->overflows);
2339 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2346 struct file_info *fi;
2352 list_for_each_entry(fi, &hi->file_info_list, list) {
2353 if (fi->iso_handle == iso)
2354 queue_rawiso_event(fi);
2378 static int raw1394_iso_xmit_init(struct file_info *fi, void __user * uaddr)
2382 if (!fi->host)
2388 fi->iso_handle = hpsb_iso_xmit_init(fi->host,
2395 if (!fi->iso_handle)
2398 fi->iso_state = RAW1394_ISO_XMIT;
2400 raw1394_iso_fill_status(fi->iso_handle, &stat);
2405 rawiso_activity_cb(fi->iso_handle);
2410 static int raw1394_iso_recv_init(struct file_info *fi, void __user * uaddr)
2414 if (!fi->host)
2420 fi->iso_handle = hpsb_iso_recv_init(fi->host,
2427 if (!fi->iso_handle)
2430 fi->iso_state = RAW1394_ISO_RECV;
2432 raw1394_iso_fill_status(fi->iso_handle, &stat);
2438 static int raw1394_iso_get_status(struct file_info *fi, void __user * uaddr)
2441 struct hpsb_iso *iso = fi->iso_handle;
2443 raw1394_iso_fill_status(fi->iso_handle, &stat);
2456 static int raw1394_iso_recv_packets(struct file_info *fi, void __user * uaddr)
2459 unsigned int packet = fi->iso_handle->first_packet;
2465 if (upackets.n_packets > hpsb_iso_n_ready(fi->iso_handle))
2477 &fi->iso_handle->infos[packet],
2481 packet = (packet + 1) % fi->iso_handle->buf_packets;
2488 static int raw1394_iso_send_packets(struct file_info *fi, void __user * uaddr)
2496 if (upackets.n_packets >= fi->iso_handle->buf_packets)
2499 if (upackets.n_packets >= hpsb_iso_n_ready(fi->iso_handle))
2516 rv = hpsb_iso_xmit_queue_packet(fi->iso_handle, info.offset,
2525 static void raw1394_iso_shutdown(struct file_info *fi)
2527 if (fi->iso_handle)
2528 hpsb_iso_shutdown(fi->iso_handle);
2530 fi->iso_handle = NULL;
2531 fi->iso_state = RAW1394_ISO_INACTIVE;
2534 static int raw1394_read_cycle_timer(struct file_info *fi, void __user * uaddr)
2539 err = hpsb_read_cycle_timer(fi->host, &ct.cycle_timer, &ct.local_time);
2549 struct file_info *fi = file->private_data;
2552 if (!mutex_trylock(&fi->state_mutex))
2555 if (fi->iso_state == RAW1394_ISO_INACTIVE)
2558 ret = dma_region_mmap(&fi->iso_handle->data_buf, file, vma);
2560 mutex_unlock(&fi->state_mutex);
2565 static long raw1394_ioctl_inactive(struct file_info *fi, unsigned int cmd,
2570 return raw1394_iso_xmit_init(fi, argp);
2572 return raw1394_iso_recv_init(fi, argp);
2578 static long raw1394_ioctl_recv(struct file_info *fi, unsigned int cmd,
2589 return hpsb_iso_recv_start(fi->iso_handle,
2593 hpsb_iso_stop(fi->iso_handle);
2596 return hpsb_iso_recv_listen_channel(fi->iso_handle, arg);
2598 return hpsb_iso_recv_unlisten_channel(fi->iso_handle, arg);
2604 return hpsb_iso_recv_set_channel_mask(fi->iso_handle,
2608 return raw1394_iso_get_status(fi, argp);
2610 return raw1394_iso_recv_packets(fi, argp);
2612 return hpsb_iso_recv_release_packets(fi->iso_handle, arg);
2614 return hpsb_iso_recv_flush(fi->iso_handle);
2616 raw1394_iso_shutdown(fi);
2619 queue_rawiso_event(fi);
2626 static long raw1394_ioctl_xmit(struct file_info *fi, unsigned int cmd,
2635 return hpsb_iso_xmit_start(fi->iso_handle,
2639 return hpsb_iso_xmit_sync(fi->iso_handle);
2641 hpsb_iso_stop(fi->iso_handle);
2644 return raw1394_iso_get_status(fi, argp);
2646 return raw1394_iso_send_packets(fi, argp);
2648 raw1394_iso_shutdown(fi);
2651 queue_rawiso_event(fi);
2662 struct file_info *fi = file->private_data;
2669 return raw1394_read_cycle_timer(fi, argp);
2674 if (!mutex_trylock(&fi->state_mutex))
2677 switch (fi->iso_state) {
2679 ret = raw1394_ioctl_inactive(fi, cmd, argp);
2682 ret = raw1394_ioctl_recv(fi, cmd, arg);
2685 ret = raw1394_ioctl_xmit(fi, cmd, argp);
2692 mutex_unlock(&fi->state_mutex);
2736 static long raw1394_read_cycle_timer32(struct file_info *fi, void __user * uaddr)
2741 err = hpsb_read_cycle_timer(fi->host, &ct.cycle_timer, &ct.local_time);
2751 struct file_info *fi = file->private_data;
2781 err = raw1394_read_cycle_timer32(fi, argp);
2794 struct file_info *fi = file->private_data;
2798 poll_wait(file, &fi->wait_complete, pt);
2800 spin_lock_irqsave(&fi->reqlists_lock, flags);
2801 if (!list_empty(&fi->req_complete)) {
2804 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2811 struct file_info *fi;
2813 fi = kzalloc(sizeof(*fi), GFP_KERNEL);
2814 if (!fi)
2817 fi->notification = (u8) RAW1394_NOTIFY_ON; /* busreset notification */
2819 INIT_LIST_HEAD(&fi->list);
2820 mutex_init(&fi->state_mutex);
2821 fi->state = opened;
2822 INIT_LIST_HEAD(&fi->req_pending);
2823 INIT_LIST_HEAD(&fi->req_complete);
2824 spin_lock_init(&fi->reqlists_lock);
2825 init_waitqueue_head(&fi->wait_complete);
2826 INIT_LIST_HEAD(&fi->addr_list);
2828 file->private_data = fi;
2835 struct file_info *fi = file->private_data;
2849 if (fi->iso_state != RAW1394_ISO_INACTIVE)
2850 raw1394_iso_shutdown(fi);
2857 while (!list_empty(&fi->addr_list)) {
2859 lh = fi->addr_list.next;
2864 if (hi->host != fi->host) {
2893 fi->host, addr->start);
2914 spin_lock_irqsave(&fi->reqlists_lock, flags);
2915 while ((req = __next_complete_req(fi)))
2918 i = list_empty(&fi->req_pending);
2919 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2931 wait_event(fi->wait_complete, (req = next_complete_req(fi)));
2938 if (!fi->csr1212_dirs[i])
2941 fi->csr1212_dirs[i]->value.directory.dentries_head; dentry;
2943 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2947 csr1212_release_keyval(fi->csr1212_dirs[i]);
2948 fi->csr1212_dirs[i] = NULL;
2952 if ((csr_mod || fi->cfgrom_upd)
2953 && hpsb_update_config_rom_image(fi->host) < 0)
2956 fi->host->id);
2958 if (fi->state == connected) {
2960 list_del(&fi->list);
2963 put_device(&fi->host->device);
2967 if (fi->host)
2968 module_put(fi->host->driver->owner);
2971 kfree(fi);