Lines Matching refs:priv
62 isl_upload_firmware(islpci_private *priv) in isl_upload_firmware() argument
65 void __iomem *device_base = priv->device_base; in isl_upload_firmware()
94 rc = request_firmware(&fw_entry, priv->firmware, PRISM_FW_PDEV); in isl_upload_firmware()
98 "prism54", priv->firmware); in isl_upload_firmware()
110 "prism54", priv->firmware); in isl_upload_firmware()
151 priv->ndev->name, fw_entry->data + 40); in isl_upload_firmware()
192 islpci_private *priv = config; in islpci_interrupt() local
193 struct net_device *ndev = priv->ndev; in islpci_interrupt()
194 void __iomem *device = priv->device_base; in islpci_interrupt()
198 spin_lock(&priv->slock); in islpci_interrupt()
209 spin_unlock(&priv->slock); in islpci_interrupt()
223 if (islpci_get_state(priv) != PRV_STATE_SLEEP) in islpci_interrupt()
242 le32_to_cpu(priv->control_block-> in islpci_interrupt()
244 le32_to_cpu(priv->control_block-> in islpci_interrupt()
246 le32_to_cpu(priv->control_block-> in islpci_interrupt()
248 le32_to_cpu(priv->control_block-> in islpci_interrupt()
250 le32_to_cpu(priv->control_block-> in islpci_interrupt()
252 le32_to_cpu(priv->control_block-> in islpci_interrupt()
258 le32_to_cpu(priv->control_block-> in islpci_interrupt()
260 le32_to_cpu(priv->control_block-> in islpci_interrupt()
262 le32_to_cpu(priv->control_block-> in islpci_interrupt()
264 le32_to_cpu(priv->control_block-> in islpci_interrupt()
266 le32_to_cpu(priv->control_block-> in islpci_interrupt()
268 le32_to_cpu(priv->control_block-> in islpci_interrupt()
274 islpci_eth_cleanup_transmit(priv, priv->control_block); in islpci_interrupt()
283 if (isl38xx_in_queue(priv->control_block, in islpci_interrupt()
300 while (isl38xx_in_queue(priv->control_block, in islpci_interrupt()
306 islpci_eth_receive(priv); in islpci_interrupt()
310 if (priv->data_low_tx_full) { in islpci_interrupt()
313 isl38xx_in_queue(priv->control_block, in islpci_interrupt()
317 netif_wake_queue(priv->ndev); in islpci_interrupt()
320 priv->data_low_tx_full = 0; in islpci_interrupt()
331 wake_up(&priv->reset_done); in islpci_interrupt()
339 isl38xx_handle_sleep_request(priv->control_block, in islpci_interrupt()
341 priv->device_base); in islpci_interrupt()
350 isl38xx_handle_wakeup(priv->control_block, in islpci_interrupt()
351 &powerstate, priv->device_base); in islpci_interrupt()
357 spin_unlock(&priv->slock); in islpci_interrupt()
362 if (islpci_get_state(priv) == PRV_STATE_SLEEP in islpci_interrupt()
364 islpci_set_state(priv, PRV_STATE_READY); in islpci_interrupt()
367 if (islpci_get_state(priv) != PRV_STATE_SLEEP in islpci_interrupt()
369 islpci_set_state(priv, PRV_STATE_SLEEP); in islpci_interrupt()
372 spin_unlock(&priv->slock); in islpci_interrupt()
384 islpci_private *priv = netdev_priv(ndev); in islpci_open() local
387 rc = islpci_reset(priv,1); in islpci_open()
389 prism54_bring_down(priv); in islpci_open()
400 if (priv->iw_mode == IW_MODE_INFRA || priv->iw_mode == IW_MODE_ADHOC) in islpci_open()
411 islpci_private *priv = netdev_priv(ndev); in islpci_close() local
417 return prism54_bring_down(priv); in islpci_close()
421 prism54_bring_down(islpci_private *priv) in prism54_bring_down() argument
423 void __iomem *device_base = priv->device_base; in prism54_bring_down()
426 islpci_set_state(priv, PRV_STATE_PREBOOT); in prism54_bring_down()
429 isl38xx_disable_interrupts(priv->device_base); in prism54_bring_down()
435 synchronize_irq(priv->pdev->irq); in prism54_bring_down()
460 islpci_upload_fw(islpci_private *priv) in islpci_upload_fw() argument
465 old_state = islpci_set_state(priv, PRV_STATE_BOOT); in islpci_upload_fw()
467 printk(KERN_DEBUG "%s: uploading firmware...\n", priv->ndev->name); in islpci_upload_fw()
469 rc = isl_upload_firmware(priv); in islpci_upload_fw()
473 priv->ndev->name, priv->firmware); in islpci_upload_fw()
475 islpci_set_state(priv, old_state); in islpci_upload_fw()
480 priv->ndev->name); in islpci_upload_fw()
482 islpci_set_state(priv, PRV_STATE_POSTBOOT); in islpci_upload_fw()
488 islpci_reset_if(islpci_private *priv) in islpci_reset_if() argument
495 prepare_to_wait(&priv->reset_done, &wait, TASK_UNINTERRUPTIBLE); in islpci_reset_if()
498 isl38xx_interface_reset(priv->device_base, priv->device_host_address); in islpci_reset_if()
499 islpci_set_state(priv, PRV_STATE_PREINIT); in islpci_reset_if()
516 priv->ndev->name); in islpci_reset_if()
519 finish_wait(&priv->reset_done, &wait); in islpci_reset_if()
522 printk(KERN_ERR "%s: interface reset failure\n", priv->ndev->name); in islpci_reset_if()
526 islpci_set_state(priv, PRV_STATE_INIT); in islpci_reset_if()
533 isl38xx_enable_common_interrupts(priv->device_base); in islpci_reset_if()
535 down_write(&priv->mib_sem); in islpci_reset_if()
536 result = mgt_commit(priv); in islpci_reset_if()
538 printk(KERN_ERR "%s: interface reset failure\n", priv->ndev->name); in islpci_reset_if()
539 up_write(&priv->mib_sem); in islpci_reset_if()
542 up_write(&priv->mib_sem); in islpci_reset_if()
544 islpci_set_state(priv, PRV_STATE_READY); in islpci_reset_if()
546 printk(KERN_DEBUG "%s: interface reset complete\n", priv->ndev->name); in islpci_reset_if()
551 islpci_reset(islpci_private *priv, int reload_firmware) in islpci_reset() argument
554 (isl38xx_control_block *) priv->control_block; in islpci_reset()
559 islpci_set_state(priv, PRV_STATE_PREBOOT); in islpci_reset()
561 islpci_set_state(priv, PRV_STATE_POSTBOOT); in islpci_reset()
563 printk(KERN_DEBUG "%s: resetting device...\n", priv->ndev->name); in islpci_reset()
566 isl38xx_disable_interrupts(priv->device_base); in islpci_reset()
569 priv->index_mgmt_tx = 0; in islpci_reset()
570 priv->index_mgmt_rx = 0; in islpci_reset()
583 frag->address = cpu_to_le32(priv->mgmt_rx[counter].pci_addr); in islpci_reset()
588 cpu_to_le32((u32) priv->pci_map_rx_address[counter]); in islpci_reset()
593 priv->control_block->driver_curr_frag[ISL38XX_CB_RX_DATA_LQ] = in islpci_reset()
595 priv->control_block->driver_curr_frag[ISL38XX_CB_RX_MGMTQ] = in islpci_reset()
599 priv->free_data_rx = 0; in islpci_reset()
600 priv->free_data_tx = 0; in islpci_reset()
601 priv->data_low_tx_full = 0; in islpci_reset()
606 rc = islpci_upload_fw(priv); in islpci_reset()
609 priv->ndev->name); in islpci_reset()
615 rc = islpci_reset_if(priv); in islpci_reset()
625 islpci_alloc_memory(islpci_private *priv) in islpci_alloc_memory() argument
634 if (!(priv->device_base = in islpci_alloc_memory()
635 ioremap(pci_resource_start(priv->pdev, 0), in islpci_alloc_memory()
651 priv->driver_mem_address = pci_alloc_consistent(priv->pdev, in islpci_alloc_memory()
653 &priv-> in islpci_alloc_memory()
656 if (!priv->driver_mem_address) { in islpci_alloc_memory()
664 priv->control_block = in islpci_alloc_memory()
665 (isl38xx_control_block *) priv->driver_mem_address; in islpci_alloc_memory()
668 priv->device_psm_buffer = in islpci_alloc_memory()
669 priv->device_host_address + CONTROL_BLOCK_SIZE; in islpci_alloc_memory()
673 priv->control_block->driver_curr_frag[counter] = cpu_to_le32(0); in islpci_alloc_memory()
674 priv->control_block->device_curr_frag[counter] = cpu_to_le32(0); in islpci_alloc_memory()
677 priv->index_mgmt_rx = 0; in islpci_alloc_memory()
678 memset(priv->mgmt_rx, 0, sizeof(priv->mgmt_rx)); in islpci_alloc_memory()
679 memset(priv->mgmt_tx, 0, sizeof(priv->mgmt_tx)); in islpci_alloc_memory()
682 if (islpci_mgmt_rx_fill(priv->ndev) < 0) in islpci_alloc_memory()
686 memset(priv->data_low_rx, 0, sizeof (priv->data_low_rx)); in islpci_alloc_memory()
687 memset(priv->pci_map_rx_address, 0, sizeof (priv->pci_map_rx_address)); in islpci_alloc_memory()
703 priv->data_low_rx[counter] = skb; in islpci_alloc_memory()
706 priv->pci_map_rx_address[counter] = in islpci_alloc_memory()
707 pci_map_single(priv->pdev, (void *) skb->data, in islpci_alloc_memory()
710 if (!priv->pci_map_rx_address[counter]) { in islpci_alloc_memory()
718 prism54_acl_init(&priv->acl); in islpci_alloc_memory()
719 prism54_wpa_bss_ie_init(priv); in islpci_alloc_memory()
720 if (mgt_init(priv)) in islpci_alloc_memory()
725 islpci_free_memory(priv); in islpci_alloc_memory()
730 islpci_free_memory(islpci_private *priv) in islpci_free_memory() argument
734 if (priv->device_base) in islpci_free_memory()
735 iounmap(priv->device_base); in islpci_free_memory()
736 priv->device_base = NULL; in islpci_free_memory()
739 if (priv->driver_mem_address) in islpci_free_memory()
740 pci_free_consistent(priv->pdev, HOST_MEM_BLOCK, in islpci_free_memory()
741 priv->driver_mem_address, in islpci_free_memory()
742 priv->device_host_address); in islpci_free_memory()
745 priv->driver_mem_address = NULL; in islpci_free_memory()
746 priv->device_host_address = 0; in islpci_free_memory()
747 priv->device_psm_buffer = 0; in islpci_free_memory()
748 priv->control_block = NULL; in islpci_free_memory()
752 struct islpci_membuf *buf = &priv->mgmt_rx[counter]; in islpci_free_memory()
754 pci_unmap_single(priv->pdev, buf->pci_addr, in islpci_free_memory()
764 if (priv->pci_map_rx_address[counter]) in islpci_free_memory()
765 pci_unmap_single(priv->pdev, in islpci_free_memory()
766 priv->pci_map_rx_address[counter], in islpci_free_memory()
769 priv->pci_map_rx_address[counter] = 0; in islpci_free_memory()
771 if (priv->data_low_rx[counter]) in islpci_free_memory()
772 dev_kfree_skb(priv->data_low_rx[counter]); in islpci_free_memory()
773 priv->data_low_rx[counter] = NULL; in islpci_free_memory()
777 prism54_acl_clean(&priv->acl); in islpci_free_memory()
778 prism54_wpa_bss_ie_clean(priv); in islpci_free_memory()
779 mgt_clean(priv); in islpci_free_memory()
820 islpci_private *priv; in islpci_setup() local
847 priv = netdev_priv(ndev); in islpci_setup()
848 priv->ndev = ndev; in islpci_setup()
849 priv->pdev = pdev; in islpci_setup()
850 priv->monitor_type = ARPHRD_IEEE80211; in islpci_setup()
851 priv->ndev->type = (priv->iw_mode == IW_MODE_MONITOR) ? in islpci_setup()
852 priv->monitor_type : ARPHRD_ETHER; in islpci_setup()
855 priv->wireless_data.spy_data = &priv->spy_data; in islpci_setup()
856 ndev->wireless_data = &priv->wireless_data; in islpci_setup()
859 ndev->mem_start = (unsigned long) priv->device_base; in islpci_setup()
863 DEBUG(SHOW_TRACING, "PCI Memory remapped to 0x%p\n", priv->device_base); in islpci_setup()
866 init_waitqueue_head(&priv->reset_done); in islpci_setup()
869 mutex_init(&priv->mgmt_lock); in islpci_setup()
870 priv->mgmt_received = NULL; in islpci_setup()
871 init_waitqueue_head(&priv->mgmt_wqueue); in islpci_setup()
872 mutex_init(&priv->stats_lock); in islpci_setup()
873 spin_lock_init(&priv->slock); in islpci_setup()
876 priv->state = PRV_STATE_OFF; in islpci_setup()
877 priv->state_off = 1; in islpci_setup()
880 INIT_WORK(&priv->stats_work, prism54_update_stats); in islpci_setup()
881 priv->stats_timestamp = 0; in islpci_setup()
883 INIT_WORK(&priv->reset_task, islpci_do_reset_and_wake); in islpci_setup()
884 priv->reset_task_pending = 0; in islpci_setup()
887 if (islpci_alloc_memory(priv)) in islpci_setup()
893 strcpy(priv->firmware, ISL3877_IMAGE_FILE); in islpci_setup()
897 strcpy(priv->firmware, ISL3886_IMAGE_FILE); in islpci_setup()
901 strcpy(priv->firmware, ISL3890_IMAGE_FILE); in islpci_setup()
914 islpci_free_memory(priv); in islpci_setup()
917 priv = NULL; in islpci_setup()
922 islpci_set_state(islpci_private *priv, islpci_state_t new_state) in islpci_set_state() argument
927 old_state = priv->state; in islpci_set_state()
933 priv->state_off++; in islpci_set_state()
935 priv->state = new_state; in islpci_set_state()
942 priv->state_off--; in islpci_set_state()
947 if (!priv->state_off) in islpci_set_state()
948 priv->state = new_state; in islpci_set_state()
953 priv->ndev->name, old_state, new_state, priv->state_off); in islpci_set_state()
957 BUG_ON(priv->state_off < 0); in islpci_set_state()
958 BUG_ON(priv->state_off && (priv->state != PRV_STATE_OFF)); in islpci_set_state()
959 BUG_ON(!priv->state_off && (priv->state == PRV_STATE_OFF)); in islpci_set_state()