smo8800            31 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = data;
smo8800            33 drivers/platform/x86/dell-smo8800.c 	atomic_inc(&smo8800->counter);
smo8800            34 drivers/platform/x86/dell-smo8800.c 	wake_up_interruptible(&smo8800->misc_wait);
smo8800            40 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = data;
smo8800            42 drivers/platform/x86/dell-smo8800.c 	dev_info(smo8800->dev, "detected free fall\n");
smo8800            80 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = container_of(file->private_data,
smo8800            90 drivers/platform/x86/dell-smo8800.c 	atomic_set(&smo8800->counter, 0);
smo8800            91 drivers/platform/x86/dell-smo8800.c 	retval = wait_event_interruptible(smo8800->misc_wait,
smo8800            92 drivers/platform/x86/dell-smo8800.c 				(data = atomic_xchg(&smo8800->counter, 0)));
smo8800           112 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = container_of(file->private_data,
smo8800           115 drivers/platform/x86/dell-smo8800.c 	if (test_and_set_bit(0, &smo8800->misc_opened))
smo8800           118 drivers/platform/x86/dell-smo8800.c 	atomic_set(&smo8800->counter, 0);
smo8800           124 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = container_of(file->private_data,
smo8800           127 drivers/platform/x86/dell-smo8800.c 	clear_bit(0, &smo8800->misc_opened); /* release the device */
smo8800           141 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800;
smo8800           143 drivers/platform/x86/dell-smo8800.c 	smo8800 = devm_kzalloc(&device->dev, sizeof(*smo8800), GFP_KERNEL);
smo8800           144 drivers/platform/x86/dell-smo8800.c 	if (!smo8800) {
smo8800           149 drivers/platform/x86/dell-smo8800.c 	smo8800->dev = &device->dev;
smo8800           150 drivers/platform/x86/dell-smo8800.c 	smo8800->miscdev.minor = MISC_DYNAMIC_MINOR;
smo8800           151 drivers/platform/x86/dell-smo8800.c 	smo8800->miscdev.name = "freefall";
smo8800           152 drivers/platform/x86/dell-smo8800.c 	smo8800->miscdev.fops = &smo8800_misc_fops;
smo8800           154 drivers/platform/x86/dell-smo8800.c 	init_waitqueue_head(&smo8800->misc_wait);
smo8800           156 drivers/platform/x86/dell-smo8800.c 	err = misc_register(&smo8800->miscdev);
smo8800           162 drivers/platform/x86/dell-smo8800.c 	device->driver_data = smo8800;
smo8800           164 drivers/platform/x86/dell-smo8800.c 	smo8800->irq = smo8800_get_irq(device);
smo8800           165 drivers/platform/x86/dell-smo8800.c 	if (!smo8800->irq) {
smo8800           171 drivers/platform/x86/dell-smo8800.c 	err = request_threaded_irq(smo8800->irq, smo8800_interrupt_quick,
smo8800           174 drivers/platform/x86/dell-smo8800.c 				   DRIVER_NAME, smo8800);
smo8800           178 drivers/platform/x86/dell-smo8800.c 			smo8800->irq, err);
smo8800           183 drivers/platform/x86/dell-smo8800.c 		 smo8800->irq);
smo8800           187 drivers/platform/x86/dell-smo8800.c 	misc_deregister(&smo8800->miscdev);
smo8800           193 drivers/platform/x86/dell-smo8800.c 	struct smo8800_device *smo8800 = device->driver_data;
smo8800           195 drivers/platform/x86/dell-smo8800.c 	free_irq(smo8800->irq, smo8800);
smo8800           196 drivers/platform/x86/dell-smo8800.c 	misc_deregister(&smo8800->miscdev);