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);