Lines Matching refs:sonypi_device
464 static struct sonypi_device {
486 } sonypi_device;
557 pci_read_config_dword(sonypi_device.dev, SONYPI_G10A, &v);
558 v = (v & 0xFFFF0000) | ((u32) sonypi_device.ioport1);
559 pci_write_config_dword(sonypi_device.dev, SONYPI_G10A, v);
561 pci_read_config_dword(sonypi_device.dev, SONYPI_G10A, &v);
563 (((u32) sonypi_device.ioport1 ^ sonypi_device.ioport2) << 16);
564 pci_write_config_dword(sonypi_device.dev, SONYPI_G10A, v);
568 v |= (((u32) sonypi_device.bits) << SONYPI_IRQ_SHIFT);
571 pci_read_config_dword(sonypi_device.dev, SONYPI_G10A, &v);
573 pci_write_config_dword(sonypi_device.dev, SONYPI_G10A, v);
578 if (sonypi_ec_write(SONYPI_SHIB, (sonypi_device.ioport1 & 0xFF00) >> 8))
580 if (sonypi_ec_write(SONYPI_SLOB, sonypi_device.ioport1 & 0x00FF))
582 if (sonypi_ec_write(SONYPI_SIRQ, sonypi_device.bits))
597 v16 = (sonypi_device.ioport1 & 0xFFF0) | 0x01;
598 pci_write_config_word(sonypi_device.dev, SONYPI_TYPE3_GID2, v16);
599 pci_read_config_byte(sonypi_device.dev, SONYPI_TYPE3_MISC, &v8);
601 pci_write_config_byte(sonypi_device.dev, SONYPI_TYPE3_MISC, v8);
609 pci_read_config_dword(sonypi_device.dev, SONYPI_G10A, &v);
611 pci_write_config_dword(sonypi_device.dev, SONYPI_G10A, v);
632 pci_write_config_word(sonypi_device.dev, SONYPI_TYPE3_GID2, 0);
639 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
640 outb(dev, sonypi_device.ioport2);
641 v1 = inb_p(sonypi_device.ioport2);
642 v2 = inb_p(sonypi_device.ioport1);
650 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
651 outb(dev, sonypi_device.ioport2);
652 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
653 outb(fn, sonypi_device.ioport1);
654 v1 = inb_p(sonypi_device.ioport1);
662 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
663 outb(dev, sonypi_device.ioport2);
664 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
665 outb(fn, sonypi_device.ioport1);
666 wait_on_command(0, inb_p(sonypi_device.ioport2) & 2, ITERATIONS_LONG);
667 outb(v, sonypi_device.ioport1);
668 v1 = inb_p(sonypi_device.ioport1);
709 if (!sonypi_device.camera_power)
713 sonypi_device.camera_power = 0;
721 if (sonypi_device.camera_power)
745 sonypi_device.camera_power = 1;
753 if (sonypi_device.bluetooth_power == state)
758 sonypi_device.bluetooth_power = state;
765 while (kfifo_out_locked(&sonypi_device.input_fifo, (unsigned char *)&kp,
766 sizeof(kp), &sonypi_device.input_fifo_lock)
776 struct input_dev *jog_dev = sonypi_device.input_jog_dev;
777 struct input_dev *key_dev = sonypi_device.input_key_dev;
816 kfifo_in_locked(&sonypi_device.input_fifo,
818 &sonypi_device.input_fifo_lock);
819 schedule_work(&sonypi_device.input_work);
829 v1 = inb_p(sonypi_device.ioport1);
830 v2 = inb_p(sonypi_device.ioport1 + sonypi_device.evtype_offset);
833 if (sonypi_device.model != sonypi_eventtypes[i].model)
865 kfifo_in_locked(&sonypi_device.fifo, (unsigned char *)&event,
866 sizeof(event), &sonypi_device.fifo_lock);
867 kill_fasync(&sonypi_device.fifo_async, SIGIO, POLL_IN);
868 wake_up_interruptible(&sonypi_device.fifo_proc_list);
875 return fasync_helper(fd, filp, on, &sonypi_device.fifo_async);
880 mutex_lock(&sonypi_device.lock);
881 sonypi_device.open_count--;
882 mutex_unlock(&sonypi_device.lock);
888 mutex_lock(&sonypi_device.lock);
890 if (!sonypi_device.open_count)
891 kfifo_reset(&sonypi_device.fifo);
892 sonypi_device.open_count++;
893 mutex_unlock(&sonypi_device.lock);
904 if ((kfifo_len(&sonypi_device.fifo) == 0) &&
908 ret = wait_event_interruptible(sonypi_device.fifo_proc_list,
909 kfifo_len(&sonypi_device.fifo) != 0);
914 (kfifo_out_locked(&sonypi_device.fifo, &c, sizeof(c),
915 &sonypi_device.fifo_lock) == sizeof(c))) {
931 poll_wait(file, &sonypi_device.fifo_proc_list, wait);
932 if (kfifo_len(&sonypi_device.fifo))
945 mutex_lock(&sonypi_device.lock);
1005 val8 = sonypi_device.bluetooth_power;
1045 mutex_unlock(&sonypi_device.lock);
1068 switch (sonypi_device.model) {
1102 switch (sonypi_device.model) {
1154 sonypi_device.input_jog_dev = jog_dev = input_allocate_device();
1167 sonypi_device.input_key_dev = key_dev = input_allocate_device();
1200 sonypi_device.input_key_dev = NULL;
1203 sonypi_device.input_jog_dev = NULL;
1208 static int sonypi_setup_ioports(struct sonypi_device *dev,
1222 sonypi_device.region_size,
1229 release_region(check->port1, sonypi_device.region_size);
1236 sonypi_device.region_size,
1248 static int sonypi_setup_irq(struct sonypi_device *dev,
1270 sonypi_device.model,
1279 sonypi_device.irq,
1280 sonypi_device.ioport1, sonypi_device.ioport2);
1298 spin_lock_init(&sonypi_device.fifo_lock);
1299 error = kfifo_alloc(&sonypi_device.fifo, SONYPI_BUF_SIZE, GFP_KERNEL);
1305 init_waitqueue_head(&sonypi_device.fifo_proc_list);
1306 mutex_init(&sonypi_device.lock);
1307 sonypi_device.bluetooth_power = -1;
1311 sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE1;
1314 sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE3;
1317 sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE3;
1319 sonypi_device.model = SONYPI_DEVICE_MODEL_TYPE2;
1327 sonypi_device.dev = pcidev;
1329 if (sonypi_device.model == SONYPI_DEVICE_MODEL_TYPE1) {
1331 sonypi_device.region_size = SONYPI_TYPE1_REGION_SIZE;
1332 sonypi_device.evtype_offset = SONYPI_TYPE1_EVTYPE_OFFSET;
1334 } else if (sonypi_device.model == SONYPI_DEVICE_MODEL_TYPE2) {
1336 sonypi_device.region_size = SONYPI_TYPE2_REGION_SIZE;
1337 sonypi_device.evtype_offset = SONYPI_TYPE2_EVTYPE_OFFSET;
1341 sonypi_device.region_size = SONYPI_TYPE3_REGION_SIZE;
1342 sonypi_device.evtype_offset = SONYPI_TYPE3_EVTYPE_OFFSET;
1346 error = sonypi_setup_ioports(&sonypi_device, ioport_list);
1352 error = sonypi_setup_irq(&sonypi_device, irq_list);
1377 spin_lock_init(&sonypi_device.input_fifo_lock);
1378 error = kfifo_alloc(&sonypi_device.input_fifo, SONYPI_BUF_SIZE,
1385 INIT_WORK(&sonypi_device.input_work, input_keyrelease);
1393 input_unregister_device(sonypi_device.input_key_dev);
1394 input_unregister_device(sonypi_device.input_jog_dev);
1398 free_irq(sonypi_device.irq, sonypi_irq);
1400 release_region(sonypi_device.ioport1, sonypi_device.region_size);
1406 kfifo_free(&sonypi_device.fifo);
1415 synchronize_irq(sonypi_device.irq);
1416 flush_work(&sonypi_device.input_work);
1419 input_unregister_device(sonypi_device.input_key_dev);
1420 input_unregister_device(sonypi_device.input_jog_dev);
1421 kfifo_free(&sonypi_device.input_fifo);
1426 free_irq(sonypi_device.irq, sonypi_irq);
1427 release_region(sonypi_device.ioport1, sonypi_device.region_size);
1429 if (sonypi_device.dev) {
1430 pci_disable_device(sonypi_device.dev);
1431 pci_dev_put(sonypi_device.dev);
1434 kfifo_free(&sonypi_device.fifo);
1444 old_camera_power = sonypi_device.camera_power;