vsoc_dev 128 drivers/staging/android/vsoc.c static struct vsoc_device vsoc_dev; vsoc_dev 166 drivers/staging/android/vsoc.c if (iminor(inode) >= vsoc_dev.layout->region_count) { vsoc_dev 167 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 181 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 192 drivers/staging/android/vsoc.c return (void __force *)vsoc_dev.kernel_mapped_shm + offset; vsoc_dev 198 drivers/staging/android/vsoc.c return vsoc_dev.shm_phys_start + offset; vsoc_dev 208 drivers/staging/android/vsoc.c return &vsoc_dev.regions[iminor(inode)]; vsoc_dev 278 drivers/staging/android/vsoc.c if (&vsoc_dev.regions[managed_region_p->managed_by] != region_p) vsoc_dev 354 drivers/staging/android/vsoc.c mutex_lock(&vsoc_dev.mtx); vsoc_dev 356 drivers/staging/android/vsoc.c mutex_unlock(&vsoc_dev.mtx); vsoc_dev 374 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 403 drivers/staging/android/vsoc.c struct vsoc_region_data *data = vsoc_dev.regions_data + region_number; vsoc_dev 511 drivers/staging/android/vsoc.c struct vsoc_region_data *data = vsoc_dev.regions_data + region_number; vsoc_dev 541 drivers/staging/android/vsoc.c reg_data = vsoc_dev.regions_data + reg_num; vsoc_dev 557 drivers/staging/android/vsoc.c mutex_lock(&vsoc_dev.mtx); vsoc_dev 558 drivers/staging/android/vsoc.c list_add(&node->list, &vsoc_dev.permissions); vsoc_dev 559 drivers/staging/android/vsoc.c mutex_unlock(&vsoc_dev.mtx); vsoc_dev 583 drivers/staging/android/vsoc.c writel(reg_num, vsoc_dev.regs + DOORBELL); vsoc_dev 591 drivers/staging/android/vsoc.c writel(reg_num, vsoc_dev.regs + DOORBELL); vsoc_dev 723 drivers/staging/android/vsoc.c int reg_num = region_data - vsoc_dev.regions_data; vsoc_dev 729 drivers/staging/android/vsoc.c reg_num >= vsoc_dev.layout->region_count)) { vsoc_dev 730 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 735 drivers/staging/android/vsoc.c if (unlikely(vsoc_dev.regions_data + reg_num != region_data)) { vsoc_dev 736 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 753 drivers/staging/android/vsoc.c vsoc_dev.dev = pdev; vsoc_dev 761 drivers/staging/android/vsoc.c vsoc_dev.enabled_device = true; vsoc_dev 768 drivers/staging/android/vsoc.c vsoc_dev.requested_regions = true; vsoc_dev 772 drivers/staging/android/vsoc.c vsoc_dev.regs = vsoc_dev 775 drivers/staging/android/vsoc.c vsoc_dev.regs = pci_iomap(pdev, REGISTER_BAR, reg_size); vsoc_dev 777 drivers/staging/android/vsoc.c if (!vsoc_dev.regs) { vsoc_dev 786 drivers/staging/android/vsoc.c vsoc_dev.shm_phys_start = pci_resource_start(pdev, SHARED_MEMORY_BAR); vsoc_dev 787 drivers/staging/android/vsoc.c vsoc_dev.shm_size = pci_resource_len(pdev, SHARED_MEMORY_BAR); vsoc_dev 790 drivers/staging/android/vsoc.c &vsoc_dev.shm_phys_start, vsoc_dev.shm_size); vsoc_dev 791 drivers/staging/android/vsoc.c vsoc_dev.kernel_mapped_shm = pci_iomap_wc(pdev, SHARED_MEMORY_BAR, 0); vsoc_dev 792 drivers/staging/android/vsoc.c if (!vsoc_dev.kernel_mapped_shm) { vsoc_dev 793 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, "cannot iomap region\n"); vsoc_dev 798 drivers/staging/android/vsoc.c vsoc_dev.layout = (struct vsoc_shm_layout_descriptor __force *) vsoc_dev 799 drivers/staging/android/vsoc.c vsoc_dev.kernel_mapped_shm; vsoc_dev 801 drivers/staging/android/vsoc.c vsoc_dev.layout->major_version); vsoc_dev 803 drivers/staging/android/vsoc.c vsoc_dev.layout->minor_version); vsoc_dev 804 drivers/staging/android/vsoc.c dev_info(&pdev->dev, "size: 0x%x\n", vsoc_dev.layout->size); vsoc_dev 805 drivers/staging/android/vsoc.c dev_info(&pdev->dev, "regions: %d\n", vsoc_dev.layout->region_count); vsoc_dev 806 drivers/staging/android/vsoc.c if (vsoc_dev.layout->major_version != vsoc_dev 808 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 814 drivers/staging/android/vsoc.c result = alloc_chrdev_region(&devt, 0, vsoc_dev.layout->region_count, vsoc_dev 817 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, "alloc_chrdev_region failed\n"); vsoc_dev 821 drivers/staging/android/vsoc.c vsoc_dev.major = MAJOR(devt); vsoc_dev 822 drivers/staging/android/vsoc.c cdev_init(&vsoc_dev.cdev, &vsoc_ops); vsoc_dev 823 drivers/staging/android/vsoc.c vsoc_dev.cdev.owner = THIS_MODULE; vsoc_dev 824 drivers/staging/android/vsoc.c result = cdev_add(&vsoc_dev.cdev, devt, vsoc_dev.layout->region_count); vsoc_dev 826 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, "cdev_add error\n"); vsoc_dev 830 drivers/staging/android/vsoc.c vsoc_dev.cdev_added = true; vsoc_dev 831 drivers/staging/android/vsoc.c vsoc_dev.class = class_create(THIS_MODULE, VSOC_DEV_NAME); vsoc_dev 832 drivers/staging/android/vsoc.c if (IS_ERR(vsoc_dev.class)) { vsoc_dev 833 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, "class_create failed\n"); vsoc_dev 835 drivers/staging/android/vsoc.c return PTR_ERR(vsoc_dev.class); vsoc_dev 837 drivers/staging/android/vsoc.c vsoc_dev.class_added = true; vsoc_dev 838 drivers/staging/android/vsoc.c vsoc_dev.regions = (struct vsoc_device_region __force *) vsoc_dev 839 drivers/staging/android/vsoc.c ((void *)vsoc_dev.layout + vsoc_dev 840 drivers/staging/android/vsoc.c vsoc_dev.layout->vsoc_region_desc_offset); vsoc_dev 841 drivers/staging/android/vsoc.c vsoc_dev.msix_entries = vsoc_dev 842 drivers/staging/android/vsoc.c kcalloc(vsoc_dev.layout->region_count, vsoc_dev 843 drivers/staging/android/vsoc.c sizeof(vsoc_dev.msix_entries[0]), GFP_KERNEL); vsoc_dev 844 drivers/staging/android/vsoc.c if (!vsoc_dev.msix_entries) { vsoc_dev 845 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 850 drivers/staging/android/vsoc.c vsoc_dev.regions_data = vsoc_dev 851 drivers/staging/android/vsoc.c kcalloc(vsoc_dev.layout->region_count, vsoc_dev 852 drivers/staging/android/vsoc.c sizeof(vsoc_dev.regions_data[0]), GFP_KERNEL); vsoc_dev 853 drivers/staging/android/vsoc.c if (!vsoc_dev.regions_data) { vsoc_dev 854 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 859 drivers/staging/android/vsoc.c for (i = 0; i < vsoc_dev.layout->region_count; ++i) vsoc_dev 860 drivers/staging/android/vsoc.c vsoc_dev.msix_entries[i].entry = i; vsoc_dev 862 drivers/staging/android/vsoc.c result = pci_enable_msix_exact(vsoc_dev.dev, vsoc_dev.msix_entries, vsoc_dev 863 drivers/staging/android/vsoc.c vsoc_dev.layout->region_count); vsoc_dev 870 drivers/staging/android/vsoc.c for (i = 0; i < vsoc_dev.layout->region_count; ++i) { vsoc_dev 871 drivers/staging/android/vsoc.c const struct vsoc_device_region *region = vsoc_dev.regions + i; vsoc_dev 875 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 883 drivers/staging/android/vsoc.c region->region_end_offset > vsoc_dev.shm_size) { vsoc_dev 884 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 887 drivers/staging/android/vsoc.c region->region_end_offset, vsoc_dev.shm_size); vsoc_dev 891 drivers/staging/android/vsoc.c if (region->managed_by >= vsoc_dev.layout->region_count) { vsoc_dev 892 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, vsoc_dev 899 drivers/staging/android/vsoc.c vsoc_dev.msix_enabled = true; vsoc_dev 900 drivers/staging/android/vsoc.c for (i = 0; i < vsoc_dev.layout->region_count; ++i) { vsoc_dev 901 drivers/staging/android/vsoc.c const struct vsoc_device_region *region = vsoc_dev.regions + i; vsoc_dev 902 drivers/staging/android/vsoc.c size_t name_sz = sizeof(vsoc_dev.regions_data[i].name) - 1; vsoc_dev 908 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].name[name_sz] = '\0'; vsoc_dev 909 drivers/staging/android/vsoc.c memcpy(vsoc_dev.regions_data[i].name, region->device_name, vsoc_dev 912 drivers/staging/android/vsoc.c i, vsoc_dev.regions_data[i].name); vsoc_dev 914 drivers/staging/android/vsoc.c (&vsoc_dev.regions_data[i].interrupt_wait_queue); vsoc_dev 915 drivers/staging/android/vsoc.c init_waitqueue_head(&vsoc_dev.regions_data[i].futex_wait_queue); vsoc_dev 916 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].incoming_signalled = vsoc_dev 919 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].outgoing_signalled = vsoc_dev 922 drivers/staging/android/vsoc.c result = request_irq(vsoc_dev.msix_entries[i].vector, vsoc_dev 924 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].name, vsoc_dev 925 drivers/staging/android/vsoc.c vsoc_dev.regions_data + i); vsoc_dev 929 drivers/staging/android/vsoc.c i, vsoc_dev.msix_entries[i].vector); vsoc_dev 933 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].irq_requested = true; vsoc_dev 934 drivers/staging/android/vsoc.c if (!device_create(vsoc_dev.class, NULL, vsoc_dev 935 drivers/staging/android/vsoc.c MKDEV(vsoc_dev.major, i), vsoc_dev 936 drivers/staging/android/vsoc.c NULL, vsoc_dev.regions_data[i].name)) { vsoc_dev 937 drivers/staging/android/vsoc.c dev_err(&vsoc_dev.dev->dev, "device_create failed\n"); vsoc_dev 941 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].device_created = true; vsoc_dev 965 drivers/staging/android/vsoc.c if (!pdev || !vsoc_dev.dev) vsoc_dev 968 drivers/staging/android/vsoc.c if (vsoc_dev.regions_data) { vsoc_dev 969 drivers/staging/android/vsoc.c for (i = 0; i < vsoc_dev.layout->region_count; ++i) { vsoc_dev 970 drivers/staging/android/vsoc.c if (vsoc_dev.regions_data[i].device_created) { vsoc_dev 971 drivers/staging/android/vsoc.c device_destroy(vsoc_dev.class, vsoc_dev 972 drivers/staging/android/vsoc.c MKDEV(vsoc_dev.major, i)); vsoc_dev 973 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].device_created = false; vsoc_dev 975 drivers/staging/android/vsoc.c if (vsoc_dev.regions_data[i].irq_requested) vsoc_dev 976 drivers/staging/android/vsoc.c free_irq(vsoc_dev.msix_entries[i].vector, NULL); vsoc_dev 977 drivers/staging/android/vsoc.c vsoc_dev.regions_data[i].irq_requested = false; vsoc_dev 979 drivers/staging/android/vsoc.c kfree(vsoc_dev.regions_data); vsoc_dev 980 drivers/staging/android/vsoc.c vsoc_dev.regions_data = NULL; vsoc_dev 982 drivers/staging/android/vsoc.c if (vsoc_dev.msix_enabled) { vsoc_dev 984 drivers/staging/android/vsoc.c vsoc_dev.msix_enabled = false; vsoc_dev 986 drivers/staging/android/vsoc.c kfree(vsoc_dev.msix_entries); vsoc_dev 987 drivers/staging/android/vsoc.c vsoc_dev.msix_entries = NULL; vsoc_dev 988 drivers/staging/android/vsoc.c vsoc_dev.regions = NULL; vsoc_dev 989 drivers/staging/android/vsoc.c if (vsoc_dev.class_added) { vsoc_dev 990 drivers/staging/android/vsoc.c class_destroy(vsoc_dev.class); vsoc_dev 991 drivers/staging/android/vsoc.c vsoc_dev.class_added = false; vsoc_dev 993 drivers/staging/android/vsoc.c if (vsoc_dev.cdev_added) { vsoc_dev 994 drivers/staging/android/vsoc.c cdev_del(&vsoc_dev.cdev); vsoc_dev 995 drivers/staging/android/vsoc.c vsoc_dev.cdev_added = false; vsoc_dev 997 drivers/staging/android/vsoc.c if (vsoc_dev.major && vsoc_dev.layout) { vsoc_dev 998 drivers/staging/android/vsoc.c unregister_chrdev_region(MKDEV(vsoc_dev.major, 0), vsoc_dev 999 drivers/staging/android/vsoc.c vsoc_dev.layout->region_count); vsoc_dev 1000 drivers/staging/android/vsoc.c vsoc_dev.major = 0; vsoc_dev 1002 drivers/staging/android/vsoc.c vsoc_dev.layout = NULL; vsoc_dev 1003 drivers/staging/android/vsoc.c if (vsoc_dev.kernel_mapped_shm) { vsoc_dev 1004 drivers/staging/android/vsoc.c pci_iounmap(pdev, vsoc_dev.kernel_mapped_shm); vsoc_dev 1005 drivers/staging/android/vsoc.c vsoc_dev.kernel_mapped_shm = NULL; vsoc_dev 1007 drivers/staging/android/vsoc.c if (vsoc_dev.regs) { vsoc_dev 1008 drivers/staging/android/vsoc.c pci_iounmap(pdev, vsoc_dev.regs); vsoc_dev 1009 drivers/staging/android/vsoc.c vsoc_dev.regs = NULL; vsoc_dev 1011 drivers/staging/android/vsoc.c if (vsoc_dev.requested_regions) { vsoc_dev 1013 drivers/staging/android/vsoc.c vsoc_dev.requested_regions = false; vsoc_dev 1015 drivers/staging/android/vsoc.c if (vsoc_dev.enabled_device) { vsoc_dev 1017 drivers/staging/android/vsoc.c vsoc_dev.enabled_device = false; vsoc_dev 1020 drivers/staging/android/vsoc.c vsoc_dev.dev = NULL; vsoc_dev 1025 drivers/staging/android/vsoc.c vsoc_remove_device(vsoc_dev.dev); vsoc_dev 1033 drivers/staging/android/vsoc.c INIT_LIST_HEAD(&vsoc_dev.permissions); vsoc_dev 1034 drivers/staging/android/vsoc.c mutex_init(&vsoc_dev.mtx); vsoc_dev 1074 drivers/staging/android/vsoc.c &vsoc_dev.regions[owner_region_p->managed_by];