• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500v2-V1.0.0.60_1.0.38/src/linux/linux-2.6/drivers/ieee1394/

Lines Matching defs:fi

146 /* fi->reqlists_lock must be taken */
149 struct file_info *fi = req->file_info;
151 list_move_tail(&req->list, &fi->req_complete);
152 wake_up(&fi->wait_complete);
158 struct file_info *fi = req->file_info;
160 spin_lock_irqsave(&fi->reqlists_lock, flags);
162 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
261 struct file_info *fi;
268 list_for_each_entry(fi, &hi->file_info_list, list) {
269 if (fi->notification == RAW1394_NOTIFY_ON) {
273 req->file_info = fi;
279 if (fi->protocol_version > 3) {
299 struct file_info *fi;
313 list_for_each_entry(fi, &hi->file_info_list, list) {
314 if (!(fi->listen_channels & (1ULL << channel)))
337 req->file_info = fi;
343 req->req.recvb = ptr2int(fi->iso_buffer);
344 req->req.length = min(length, fi->iso_buffer_length);
360 struct file_info *fi;
374 list_for_each_entry(fi, &hi->file_info_list, list) {
375 if (!fi->fcp_buffer)
398 req->file_info = fi;
404 req->req.recvb = ptr2int(fi->fcp_buffer);
474 /* get next completed request (caller must hold fi->reqlists_lock) */
475 static inline struct pending_request *__next_complete_req(struct file_info *fi)
480 if (!list_empty(&fi->req_complete)) {
481 lh = fi->req_complete.next;
489 static struct pending_request *next_complete_req(struct file_info *fi)
494 spin_lock_irqsave(&fi->reqlists_lock, flags);
495 req = __next_complete_req(fi);
496 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
503 struct file_info *fi = (struct file_info *)file->private_data;
521 if (!(req = next_complete_req(fi)))
531 if (wait_event_interruptible(fi->wait_complete,
532 (req = next_complete_req(fi))))
562 static int state_opened(struct file_info *fi, struct pending_request *req)
568 fi->state = initialized;
569 fi->protocol_version = req->req.misc;
587 static int state_initialized(struct file_info *fi, struct pending_request *req)
640 list_add_tail(&fi->list, &hi->file_info_list);
647 WARN_ON(fi->host);
648 fi->host = hi->host;
649 fi->state = connected;
652 req->req.generation = get_hpsb_generation(fi->host);
653 req->req.misc = (fi->host->node_id << 16)
654 | fi->host->node_count;
655 if (fi->protocol_version > 3)
656 req->req.misc |= NODEID_TO_NODE(fi->host->irm_id) << 8;
673 static void handle_iso_listen(struct file_info *fi, struct pending_request *req)
681 if (fi->listen_channels & (1ULL << channel)) {
685 (&raw1394_highlevel, fi->host, channel)) {
688 fi->listen_channels |= 1ULL << channel;
689 fi->iso_buffer = int2ptr(req->req.recvb);
690 fi->iso_buffer_length = req->req.length;
697 if (fi->listen_channels & (1ULL << channel)) {
698 hpsb_unlisten_channel(&raw1394_highlevel, fi->host,
700 fi->listen_channels &= ~(1ULL << channel);
710 static void handle_fcp_listen(struct file_info *fi, struct pending_request *req)
713 if (fi->fcp_buffer) {
716 fi->fcp_buffer = int2ptr(req->req.recvb);
719 if (!fi->fcp_buffer) {
722 fi->fcp_buffer = NULL;
730 static int handle_async_request(struct file_info *fi,
741 hpsb_make_readpacket(fi->host, node, addr, req->req.length);
756 packet = hpsb_make_writepacket(fi->host, node, addr, NULL,
780 hpsb_make_streampacket(fi->host, NULL, req->req.length,
809 packet = hpsb_make_lockpacket(fi->host, node, addr,
838 packet = hpsb_make_lock64packet(fi->host, node, addr,
868 spin_lock_irqsave(&fi->reqlists_lock, flags);
869 list_add_tail(&req->list, &fi->req_pending);
870 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
883 static int handle_iso_send(struct file_info *fi, struct pending_request *req,
889 packet = hpsb_make_isopacket(fi->host, req->req.length, channel & 0x3f,
912 spin_lock_irqsave(&fi->reqlists_lock, flags);
913 list_add_tail(&req->list, &fi->req_pending);
914 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
927 static int handle_async_send(struct file_info *fi, struct pending_request *req)
970 packet->host = fi->host;
979 spin_lock_irqsave(&fi->reqlists_lock, flags);
980 list_add_tail(&req->list, &fi->req_pending);
981 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
1000 struct file_info *fi = NULL;
1015 list_for_each_entry(fi, &hi->file_info_list, list) {
1016 entry = fi->addr_list.next;
1017 while (entry != &(fi->addr_list)) {
1092 req->file_info = fi;
1154 struct file_info *fi = NULL;
1169 list_for_each_entry(fi, &hi->file_info_list, list) {
1170 entry = fi->addr_list.next;
1171 while (entry != &(fi->addr_list)) {
1237 req->file_info = fi;
1290 struct file_info *fi = NULL;
1316 list_for_each_entry(fi, &hi->file_info_list, list) {
1317 entry = fi->addr_list.next;
1318 while (entry != &(fi->addr_list)) {
1462 req->file_info = fi;
1508 struct file_info *fi = NULL;
1541 list_for_each_entry(fi, &hi->file_info_list, list) {
1542 entry = fi->addr_list.next;
1543 while (entry != &(fi->addr_list)) {
1690 req->file_info = fi;
1729 static int arm_register(struct file_info *fi, struct pending_request *req)
1795 hi = find_host_info(fi->host);
1826 if (hi->host != fi->host) {
1864 list_add_tail(&addr->addr_list, &fi->addr_list);
1869 hpsb_register_addrspace(&raw1394_highlevel, fi->host, &arm_ops,
1875 list_add_tail(&addr->addr_list, &fi->addr_list);
1887 static int arm_unregister(struct file_info *fi, struct pending_request *req)
1905 entry = fi->addr_list.next;
1906 while (entry != &(fi->addr_list)) {
1924 if (hi->host != fi->host) {
1955 hpsb_unregister_addrspace(&raw1394_highlevel, fi->host,
1972 static int arm_get_buf(struct file_info *fi, struct pending_request *req)
1986 entry = fi->addr_list.next;
1987 while (entry != &(fi->addr_list)) {
2024 static int arm_set_buf(struct file_info *fi, struct pending_request *req)
2038 entry = fi->addr_list.next;
2039 while (entry != &(fi->addr_list)) {
2075 static int reset_notification(struct file_info *fi, struct pending_request *req)
2081 fi->notification = (u8) req->req.misc;
2089 static int write_phypacket(struct file_info *fi, struct pending_request *req)
2098 packet = hpsb_make_phypacket(fi->host, data);
2105 spin_lock_irqsave(&fi->reqlists_lock, flags);
2106 list_add_tail(&req->list, &fi->req_pending);
2107 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2119 static int get_config_rom(struct file_info *fi, struct pending_request *req)
2129 csr1212_read(fi->host->csr.rom, CSR1212_CONFIG_ROM_SPACE_OFFSET,
2134 (int2ptr(req->req.tag), &fi->host->csr.rom->cache_head->len,
2135 sizeof(fi->host->csr.rom->cache_head->len)))
2137 if (copy_to_user(int2ptr(req->req.address), &fi->host->csr.generation,
2138 sizeof(fi->host->csr.generation)))
2149 static int update_config_rom(struct file_info *fi, struct pending_request *req)
2158 int status = hpsb_update_config_rom(fi->host,
2169 fi->cfgrom_upd = 1;
2174 static int modify_config_rom(struct file_info *fi, struct pending_request *req)
2188 dr < RAW1394_MAX_USER_CSR_DIRS && fi->csr1212_dirs[dr];
2194 fi->csr1212_dirs[dr] =
2196 if (!fi->csr1212_dirs[dr])
2200 if (!fi->csr1212_dirs[dr])
2205 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2207 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2213 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2214 fi->csr1212_dirs[dr] = NULL;
2216 hpsb_update_config_rom_image(fi->host);
2224 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2225 fi->csr1212_dirs[dr] = NULL;
2231 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2232 fi->csr1212_dirs[dr] = NULL;
2240 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2241 fi->csr1212_dirs[dr] = NULL;
2248 cache->layout_head = cache->layout_tail = fi->csr1212_dirs[dr];
2259 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2262 csr1212_attach_keyval_to_directory(fi->host->csr.
2268 ret = hpsb_update_config_rom_image(fi->host);
2286 fi->csr1212_dirs[dr]->value.directory.dentries_head;
2288 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2292 csr1212_release_keyval(fi->csr1212_dirs[dr]);
2293 fi->csr1212_dirs[dr] = NULL;
2298 static int state_connected(struct file_info *fi, struct pending_request *req)
2312 return handle_iso_send(fi, req, node);
2315 return arm_register(fi, req);
2318 return arm_unregister(fi, req);
2321 return arm_set_buf(fi, req);
2324 return arm_get_buf(fi, req);
2327 return reset_notification(fi, req);
2331 handle_iso_listen(fi, req);
2335 handle_fcp_listen(fi, req);
2341 hpsb_reset_bus(fi->host, LONG_RESET);
2347 hpsb_reset_bus(fi->host, SHORT_RESET);
2354 return get_config_rom(fi, req);
2357 return update_config_rom(fi, req);
2360 return modify_config_rom(fi, req);
2363 if (req->req.generation != get_hpsb_generation(fi->host)) {
2365 req->req.generation = get_hpsb_generation(fi->host);
2373 return write_phypacket(fi, req);
2375 return handle_async_send(fi, req);
2384 return handle_async_request(fi, req, node);
2390 struct file_info *fi = (struct file_info *)file->private_data;
2411 req->file_info = fi;
2418 switch (fi->state) {
2420 retval = state_opened(fi, req);
2424 retval = state_initialized(fi, req);
2428 retval = state_connected(fi, req);
2443 static inline int __rawiso_event_in_queue(struct file_info *fi)
2447 list_for_each_entry(req, &fi->req_complete, list)
2455 static void queue_rawiso_event(struct file_info *fi)
2459 spin_lock_irqsave(&fi->reqlists_lock, flags);
2462 if (!__rawiso_event_in_queue(fi)) {
2467 req->file_info = fi;
2469 req->req.generation = get_hpsb_generation(fi->host);
2473 if (fi->iso_handle) {
2474 atomic_inc(&fi->iso_handle->overflows);
2478 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2485 struct file_info *fi;
2491 list_for_each_entry(fi, &hi->file_info_list, list) {
2492 if (fi->iso_handle == iso)
2493 queue_rawiso_event(fi);
2514 static int raw1394_iso_xmit_init(struct file_info *fi, void __user * uaddr)
2518 if (!fi->host)
2524 fi->iso_handle = hpsb_iso_xmit_init(fi->host,
2531 if (!fi->iso_handle)
2534 fi->iso_state = RAW1394_ISO_XMIT;
2536 raw1394_iso_fill_status(fi->iso_handle, &stat);
2541 rawiso_activity_cb(fi->iso_handle);
2546 static int raw1394_iso_recv_init(struct file_info *fi, void __user * uaddr)
2550 if (!fi->host)
2556 fi->iso_handle = hpsb_iso_recv_init(fi->host,
2563 if (!fi->iso_handle)
2566 fi->iso_state = RAW1394_ISO_RECV;
2568 raw1394_iso_fill_status(fi->iso_handle, &stat);
2574 static int raw1394_iso_get_status(struct file_info *fi, void __user * uaddr)
2577 struct hpsb_iso *iso = fi->iso_handle;
2579 raw1394_iso_fill_status(fi->iso_handle, &stat);
2590 static int raw1394_iso_recv_packets(struct file_info *fi, void __user * uaddr)
2593 unsigned int packet = fi->iso_handle->first_packet;
2599 if (upackets.n_packets > hpsb_iso_n_ready(fi->iso_handle))
2611 &fi->iso_handle->infos[packet],
2615 packet = (packet + 1) % fi->iso_handle->buf_packets;
2622 static int raw1394_iso_send_packets(struct file_info *fi, void __user * uaddr)
2630 if (upackets.n_packets >= fi->iso_handle->buf_packets)
2633 if (upackets.n_packets >= hpsb_iso_n_ready(fi->iso_handle))
2650 rv = hpsb_iso_xmit_queue_packet(fi->iso_handle, info.offset,
2659 static void raw1394_iso_shutdown(struct file_info *fi)
2661 if (fi->iso_handle)
2662 hpsb_iso_shutdown(fi->iso_handle);
2664 fi->iso_handle = NULL;
2665 fi->iso_state = RAW1394_ISO_INACTIVE;
2668 static int raw1394_read_cycle_timer(struct file_info *fi, void __user * uaddr)
2673 err = hpsb_read_cycle_timer(fi->host, &ct.cycle_timer, &ct.local_time);
2683 struct file_info *fi = file->private_data;
2685 if (fi->iso_state == RAW1394_ISO_INACTIVE)
2688 return dma_region_mmap(&fi->iso_handle->data_buf, file, vma);
2695 struct file_info *fi = file->private_data;
2698 switch (fi->iso_state) {
2702 return raw1394_iso_xmit_init(fi, argp);
2704 return raw1394_iso_recv_init(fi, argp);
2717 return hpsb_iso_recv_start(fi->iso_handle,
2722 hpsb_iso_stop(fi->iso_handle);
2725 return hpsb_iso_recv_listen_channel(fi->iso_handle,
2728 return hpsb_iso_recv_unlisten_channel(fi->iso_handle,
2735 return hpsb_iso_recv_set_channel_mask(fi->
2740 return raw1394_iso_get_status(fi, argp);
2742 return raw1394_iso_recv_packets(fi, argp);
2744 return hpsb_iso_recv_release_packets(fi->iso_handle,
2747 return hpsb_iso_recv_flush(fi->iso_handle);
2749 raw1394_iso_shutdown(fi);
2752 queue_rawiso_event(fi);
2764 return hpsb_iso_xmit_start(fi->iso_handle,
2768 return hpsb_iso_xmit_sync(fi->iso_handle);
2770 hpsb_iso_stop(fi->iso_handle);
2773 return raw1394_iso_get_status(fi, argp);
2775 return raw1394_iso_send_packets(fi, argp);
2777 raw1394_iso_shutdown(fi);
2780 queue_rawiso_event(fi);
2791 return raw1394_read_cycle_timer(fi, argp);
2801 struct file_info *fi = file->private_data;
2805 poll_wait(file, &fi->wait_complete, pt);
2807 spin_lock_irqsave(&fi->reqlists_lock, flags);
2808 if (!list_empty(&fi->req_complete)) {
2811 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2818 struct file_info *fi;
2820 fi = kzalloc(sizeof(*fi), GFP_KERNEL);
2821 if (!fi)
2824 fi->notification = (u8) RAW1394_NOTIFY_ON; /* busreset notification */
2826 INIT_LIST_HEAD(&fi->list);
2827 fi->state = opened;
2828 INIT_LIST_HEAD(&fi->req_pending);
2829 INIT_LIST_HEAD(&fi->req_complete);
2830 spin_lock_init(&fi->reqlists_lock);
2831 init_waitqueue_head(&fi->wait_complete);
2832 INIT_LIST_HEAD(&fi->addr_list);
2834 file->private_data = fi;
2841 struct file_info *fi = file->private_data;
2855 if (fi->iso_state != RAW1394_ISO_INACTIVE)
2856 raw1394_iso_shutdown(fi);
2859 if (fi->listen_channels & (1ULL << i)) {
2860 hpsb_unlisten_channel(&raw1394_highlevel, fi->host, i);
2865 fi->listen_channels = 0;
2870 while (!list_empty(&fi->addr_list)) {
2872 lh = fi->addr_list.next;
2877 if (hi->host != fi->host) {
2906 fi->host, addr->start);
2927 spin_lock_irqsave(&fi->reqlists_lock, flags);
2928 while ((req = __next_complete_req(fi)))
2931 i = list_empty(&fi->req_pending);
2932 spin_unlock_irqrestore(&fi->reqlists_lock, flags);
2944 wait_event(fi->wait_complete, (req = next_complete_req(fi)));
2951 if (!fi->csr1212_dirs[i])
2954 fi->csr1212_dirs[i]->value.directory.dentries_head; dentry;
2956 csr1212_detach_keyval_from_directory(fi->host->csr.rom->
2960 csr1212_release_keyval(fi->csr1212_dirs[i]);
2961 fi->csr1212_dirs[i] = NULL;
2965 if ((csr_mod || fi->cfgrom_upd)
2966 && hpsb_update_config_rom_image(fi->host) < 0)
2969 fi->host->id);
2971 if (fi->state == connected) {
2973 list_del(&fi->list);
2976 put_device(&fi->host->device);
2980 if (fi->host)
2981 module_put(fi->host->driver->owner);
2984 kfree(fi);