Lines Matching refs:dev

161 static void ite_decode_bytes(struct ite_dev *dev, const u8 * data, int
172 sample_period = dev->params.sample_period;
180 ir_raw_event_store_with_filter(dev->rdev, &ev);
187 ir_raw_event_store_with_filter(dev->rdev, &ev);
199 (dev->rdev, &ev);
204 ir_raw_event_handle(dev->rdev);
211 static void ite_set_carrier_params(struct ite_dev *dev)
216 bool for_tx = dev->transmitting;
222 freq = dev->params.tx_carrier_freq;
226 low_freq = dev->params.rx_low_carrier_freq;
227 high_freq = dev->params.rx_high_carrier_freq;
256 dev->params.set_carrier_params(dev, ite_is_high_carrier_freq(freq),
258 ite_get_pulse_width_bits(freq, dev->params.tx_duty_cycle));
264 struct ite_dev *dev = data;
274 spin_lock_irqsave(&dev->lock, flags);
277 iflags = dev->params.get_irq_causes(dev);
281 dev_warn(&dev->rdev->dev, "receive overflow\n");
282 ir_raw_event_reset(dev->rdev);
289 dev->params.get_rx_bytes(dev, rx_buf,
296 spin_unlock_irqrestore(&dev->
301 ite_decode_bytes(dev, rx_buf,
305 spin_lock_irqsave(&dev->lock,
316 wake_up_interruptible(&dev->tx_queue);
323 spin_unlock_irqrestore(&dev->lock, flags);
335 struct ite_dev *dev = rcdev->priv;
337 spin_lock_irqsave(&dev->lock, flags);
338 dev->params.rx_low_carrier_freq = carrier_low;
339 dev->params.rx_high_carrier_freq = carrier_high;
340 ite_set_carrier_params(dev);
341 spin_unlock_irqrestore(&dev->lock, flags);
350 struct ite_dev *dev = rcdev->priv;
352 spin_lock_irqsave(&dev->lock, flags);
353 dev->params.tx_carrier_freq = carrier;
354 ite_set_carrier_params(dev);
355 spin_unlock_irqrestore(&dev->lock, flags);
364 struct ite_dev *dev = rcdev->priv;
366 spin_lock_irqsave(&dev->lock, flags);
367 dev->params.tx_duty_cycle = duty_cycle;
368 ite_set_carrier_params(dev);
369 spin_unlock_irqrestore(&dev->lock, flags);
380 struct ite_dev *dev = rcdev->priv;
393 spin_lock_irqsave(&dev->lock, flags);
396 dev->transmitting = true;
399 ite_set_carrier_params(dev);
403 (ITE_BAUDRATE_DIVISOR * dev->params.sample_period *
407 dev->params.disable_rx(dev);
414 ITE_TX_FIFO_LEN - dev->params.get_tx_used_slots(dev);
416 while (n > 0 && dev->in_use) {
428 while (remaining_us > 0 && dev->in_use) {
459 fifo_avail = ITE_TX_FIFO_LEN - dev->params.get_tx_used_slots(dev);
464 dev->params.
465 enable_tx_interrupt(dev);
468 spin_unlock_irqrestore(&dev->lock, flags);
471 wait_event_interruptible(dev->tx_queue, (fifo_avail = ITE_TX_FIFO_LEN - dev->params.get_tx_used_slots(dev)) >= 8);
474 spin_lock_irqsave(&dev->lock, flags);
477 dev->params.
478 disable_tx_interrupt(dev);
482 dev->params.put_tx_byte(dev, val);
490 fifo_remaining = dev->params.get_tx_used_slots(dev);
501 spin_unlock_irqrestore(&dev->lock, flags);
507 spin_lock_irqsave(&dev->lock, flags);
510 dev->transmitting = false;
513 ite_set_carrier_params(dev);
516 if (dev->in_use)
517 dev->params.enable_rx(dev);
520 wake_up_interruptible(&dev->tx_ended);
522 spin_unlock_irqrestore(&dev->lock, flags);
531 struct ite_dev *dev = rcdev->priv;
536 spin_lock_irqsave(&dev->lock, flags);
537 dev->params.idle_rx(dev);
538 spin_unlock_irqrestore(&dev->lock, flags);
548 static int it87_get_irq_causes(struct ite_dev *dev)
556 iflags = inb(dev->cir_addr + IT87_IIR) & IT87_II;
574 static void it87_set_carrier_params(struct ite_dev *dev, bool high_freq,
584 val = inb(dev->cir_addr + IT87_RCR)
595 outb(val, dev->cir_addr + IT87_RCR);
599 dev->cir_addr + IT87_TCR2);
604 static int it87_get_rx_bytes(struct ite_dev *dev, u8 * buf, int buf_size)
611 fifo = inb(dev->cir_addr + IT87_RSR) & IT87_RXFBC;
614 *(buf++) = inb(dev->cir_addr + IT87_DR);
626 static int it87_get_tx_used_slots(struct ite_dev *dev)
630 return inb(dev->cir_addr + IT87_TSR) & IT87_TXFBC;
634 static void it87_put_tx_byte(struct ite_dev *dev, u8 value)
636 outb(value, dev->cir_addr + IT87_DR);
641 static void it87_idle_rx(struct ite_dev *dev)
646 outb(inb(dev->cir_addr + IT87_RCR) | IT87_RXACT,
647 dev->cir_addr + IT87_RCR);
650 outb(inb(dev->cir_addr + IT87_TCR1) | IT87_FIFOCLR,
651 dev->cir_addr + IT87_TCR1);
655 static void it87_disable_rx(struct ite_dev *dev)
660 outb(inb(dev->cir_addr + IT87_IER) & ~(IT87_RDAIE | IT87_RFOIE),
661 dev->cir_addr + IT87_IER);
664 outb(inb(dev->cir_addr + IT87_RCR) & ~IT87_RXEN,
665 dev->cir_addr + IT87_RCR);
669 it87_idle_rx(dev);
673 static void it87_enable_rx(struct ite_dev *dev)
678 outb(inb(dev->cir_addr + IT87_RCR) | IT87_RXEN,
679 dev->cir_addr + IT87_RCR);
682 it87_idle_rx(dev);
685 outb(inb(dev->cir_addr + IT87_IER) | IT87_RDAIE | IT87_RFOIE | IT87_IEC,
686 dev->cir_addr + IT87_IER);
691 static void it87_disable_tx_interrupt(struct ite_dev *dev)
696 outb(inb(dev->cir_addr + IT87_IER) & ~IT87_TLDLIE,
697 dev->cir_addr + IT87_IER);
702 static void it87_enable_tx_interrupt(struct ite_dev *dev)
707 outb(inb(dev->cir_addr + IT87_IER) | IT87_TLDLIE | IT87_IEC,
708 dev->cir_addr + IT87_IER);
712 static void it87_disable(struct ite_dev *dev)
717 outb(inb(dev->cir_addr + IT87_IER) &
719 dev->cir_addr + IT87_IER);
722 it87_disable_rx(dev);
725 outb(IT87_FIFOCLR | inb(dev->cir_addr + IT87_TCR1),
726 dev->cir_addr + IT87_TCR1);
730 static void it87_init_hardware(struct ite_dev *dev)
736 outb((inb(dev->cir_addr + IT87_IER) &
738 dev->cir_addr + IT87_IER);
741 outb(ITE_BAUDRATE_DIVISOR & 0xff, dev->cir_addr + IT87_BDLR);
742 outb((ITE_BAUDRATE_DIVISOR >> 8) & 0xff, dev->cir_addr + IT87_BDHR);
745 outb(inb(dev->cir_addr + IT87_IER) & ~IT87_BR,
746 dev->cir_addr + IT87_IER);
749 outb(ITE_RXDCR_DEFAULT, dev->cir_addr + IT87_RCR);
754 dev->cir_addr + IT87_TCR1);
757 ite_set_carrier_params(dev);
765 static int it8708_get_irq_causes(struct ite_dev *dev)
773 iflags = inb(dev->cir_addr + IT8708_C0IIR);
786 static void it8708_set_carrier_params(struct ite_dev *dev, bool high_freq,
796 outb(inb(dev->cir_addr + IT8708_BANKSEL) | IT8708_HRAE,
797 dev->cir_addr + IT8708_BANKSEL);
799 val = (inb(dev->cir_addr + IT8708_C0CFR)
805 outb(val, dev->cir_addr + IT8708_C0CFR);
807 outb(inb(dev->cir_addr + IT8708_BANKSEL) & ~IT8708_HRAE,
808 dev->cir_addr + IT8708_BANKSEL);
811 val = inb(dev->cir_addr + IT8708_C0RCR)
819 outb(val, dev->cir_addr + IT8708_C0RCR);
822 val = inb(dev->cir_addr + IT8708_C0TCR) & ~IT85_TXMPW;
824 outb(val, dev->cir_addr + IT8708_C0TCR);
829 static int it8708_get_rx_bytes(struct ite_dev *dev, u8 * buf, int buf_size)
836 fifo = inb(dev->cir_addr + IT8708_C0RFSR) & IT85_RXFBC;
839 *(buf++) = inb(dev->cir_addr + IT8708_C0DR);
851 static int it8708_get_tx_used_slots(struct ite_dev *dev)
855 return inb(dev->cir_addr + IT8708_C0TFSR) & IT85_TXFBC;
859 static void it8708_put_tx_byte(struct ite_dev *dev, u8 value)
861 outb(value, dev->cir_addr + IT8708_C0DR);
866 static void it8708_idle_rx(struct ite_dev *dev)
871 outb(inb(dev->cir_addr + IT8708_C0RCR) | IT85_RXACT,
872 dev->cir_addr + IT8708_C0RCR);
875 outb(inb(dev->cir_addr + IT8708_C0MSTCR) | IT85_FIFOCLR,
876 dev->cir_addr + IT8708_C0MSTCR);
880 static void it8708_disable_rx(struct ite_dev *dev)
885 outb(inb(dev->cir_addr + IT8708_C0IER) &
887 dev->cir_addr + IT8708_C0IER);
890 outb(inb(dev->cir_addr + IT8708_C0RCR) & ~IT85_RXEN,
891 dev->cir_addr + IT8708_C0RCR);
895 it8708_idle_rx(dev);
899 static void it8708_enable_rx(struct ite_dev *dev)
904 outb(inb(dev->cir_addr + IT8708_C0RCR) | IT85_RXEN,
905 dev->cir_addr + IT8708_C0RCR);
908 it8708_idle_rx(dev);
911 outb(inb(dev->cir_addr + IT8708_C0IER)
913 dev->cir_addr + IT8708_C0IER);
918 static void it8708_disable_tx_interrupt(struct ite_dev *dev)
923 outb(inb(dev->cir_addr + IT8708_C0IER) & ~IT85_TLDLIE,
924 dev->cir_addr + IT8708_C0IER);
929 static void it8708_enable_tx_interrupt(struct ite_dev *dev)
934 outb(inb(dev->cir_addr + IT8708_C0IER)
936 dev->cir_addr + IT8708_C0IER);
940 static void it8708_disable(struct ite_dev *dev)
945 outb(inb(dev->cir_addr + IT8708_C0IER) &
947 dev->cir_addr + IT8708_C0IER);
950 it8708_disable_rx(dev);
953 outb(IT85_FIFOCLR | inb(dev->cir_addr + IT8708_C0MSTCR),
954 dev->cir_addr + IT8708_C0MSTCR);
958 static void it8708_init_hardware(struct ite_dev *dev)
963 outb(inb(dev->cir_addr + IT8708_C0IER) &
965 dev->cir_addr + IT8708_C0IER);
968 outb(inb(dev->cir_addr + IT8708_BANKSEL) | IT8708_HRAE,
969 dev->cir_addr + IT8708_BANKSEL);
971 outb(ITE_BAUDRATE_DIVISOR & 0xff, dev->cir_addr + IT8708_C0BDLR);
973 dev->cir_addr + IT8708_C0BDHR);
975 outb(inb(dev->cir_addr + IT8708_BANKSEL) & ~IT8708_HRAE,
976 dev->cir_addr + IT8708_BANKSEL);
979 outb((inb(dev->cir_addr + IT8708_C0MSTCR) &
983 dev->cir_addr + IT8708_C0MSTCR);
986 outb((inb(dev->cir_addr + IT8708_C0RCR) &
990 dev->cir_addr + IT8708_C0RCR);
993 outb((inb(dev->cir_addr + IT8708_C0TCR) &
997 dev->cir_addr + IT8708_C0TCR);
1000 ite_set_carrier_params(dev);
1006 static inline u8 it8709_rm(struct ite_dev *dev, int index)
1008 outb(index, dev->cir_addr + IT8709_RAM_IDX);
1009 return inb(dev->cir_addr + IT8709_RAM_VAL);
1013 static inline void it8709_wm(struct ite_dev *dev, u8 val, int index)
1015 outb(index, dev->cir_addr + IT8709_RAM_IDX);
1016 outb(val, dev->cir_addr + IT8709_RAM_VAL);
1019 static void it8709_wait(struct ite_dev *dev)
1028 if (it8709_rm(dev, IT8709_MODE) == IT8709_IDLE)
1034 static u8 it8709_rr(struct ite_dev *dev, int index)
1037 it8709_wait(dev);
1038 it8709_wm(dev, index, IT8709_REG_IDX);
1039 it8709_wm(dev, IT8709_READ, IT8709_MODE);
1042 it8709_wait(dev);
1045 return it8709_rm(dev, IT8709_REG_VAL);
1049 static void it8709_wr(struct ite_dev *dev, u8 val, int index)
1053 it8709_wait(dev);
1054 it8709_wm(dev, val, IT8709_REG_VAL);
1055 it8709_wm(dev, index, IT8709_REG_IDX);
1056 it8709_wm(dev, IT8709_WRITE, IT8709_MODE);
1062 static int it8709_get_irq_causes(struct ite_dev *dev)
1070 iflags = it8709_rm(dev, IT8709_IIR);
1083 static void it8709_set_carrier_params(struct ite_dev *dev, bool high_freq,
1092 val = (it8709_rr(dev, IT85_C0CFR)
1099 it8709_wr(dev, val, IT85_C0CFR);
1102 val = it8709_rr(dev, IT85_C0RCR)
1110 it8709_wr(dev, val, IT85_C0RCR);
1113 val = it8709_rr(dev, IT85_C0TCR) & ~IT85_TXMPW;
1115 it8709_wr(dev, val, IT85_C0TCR);
1120 static int it8709_get_rx_bytes(struct ite_dev *dev, u8 * buf, int buf_size)
1127 fifo = it8709_rm(dev, IT8709_RFSR) & IT85_RXFBC;
1130 *(buf++) = it8709_rm(dev, IT8709_FIFO + read);
1139 it8709_wm(dev, 0, IT8709_RFSR);
1147 static int it8709_get_tx_used_slots(struct ite_dev *dev)
1151 return it8709_rr(dev, IT85_C0TFSR) & IT85_TXFBC;
1155 static void it8709_put_tx_byte(struct ite_dev *dev, u8 value)
1157 it8709_wr(dev, value, IT85_C0DR);
1162 static void it8709_idle_rx(struct ite_dev *dev)
1167 it8709_wr(dev, it8709_rr(dev, IT85_C0RCR) | IT85_RXACT,
1171 it8709_wr(dev, it8709_rr(dev, IT85_C0MSTCR) | IT85_FIFOCLR,
1176 static void it8709_disable_rx(struct ite_dev *dev)
1181 it8709_wr(dev, it8709_rr(dev, IT85_C0IER) &
1186 it8709_wr(dev, it8709_rr(dev, IT85_C0RCR) & ~IT85_RXEN,
1190 * in the previous it8709_wr(dev, ) call) */
1191 it8709_idle_rx(dev);
1195 static void it8709_enable_rx(struct ite_dev *dev)
1200 it8709_wr(dev, it8709_rr(dev, IT85_C0RCR) | IT85_RXEN,
1204 it8709_idle_rx(dev);
1207 it8709_wr(dev, it8709_rr(dev, IT85_C0IER)
1214 static void it8709_disable_tx_interrupt(struct ite_dev *dev)
1219 it8709_wr(dev, it8709_rr(dev, IT85_C0IER) & ~IT85_TLDLIE,
1225 static void it8709_enable_tx_interrupt(struct ite_dev *dev)
1230 it8709_wr(dev, it8709_rr(dev, IT85_C0IER)
1236 static void it8709_disable(struct ite_dev *dev)
1241 it8709_wr(dev, it8709_rr(dev, IT85_C0IER) &
1246 it8709_disable_rx(dev);
1249 it8709_wr(dev, IT85_FIFOCLR | it8709_rr(dev, IT85_C0MSTCR),
1254 static void it8709_init_hardware(struct ite_dev *dev)
1259 it8709_wr(dev, it8709_rr(dev, IT85_C0IER) &
1264 it8709_wr(dev, ITE_BAUDRATE_DIVISOR & 0xff, IT85_C0BDLR);
1265 it8709_wr(dev, (ITE_BAUDRATE_DIVISOR >> 8) & 0xff,
1269 it8709_wr(dev, (it8709_rr(dev, IT85_C0MSTCR) &
1275 it8709_wr(dev, (it8709_rr(dev, IT85_C0RCR) &
1281 it8709_wr(dev, (it8709_rr(dev, IT85_C0TCR) & ~(IT85_TXMPM | IT85_TXMPW))
1287 ite_set_carrier_params(dev);
1296 struct ite_dev *dev = rcdev->priv;
1301 spin_lock_irqsave(&dev->lock, flags);
1302 dev->in_use = true;
1305 dev->params.enable_rx(dev);
1307 spin_unlock_irqrestore(&dev->lock, flags);
1315 struct ite_dev *dev = rcdev->priv;
1320 spin_lock_irqsave(&dev->lock, flags);
1321 dev->in_use = false;
1324 spin_unlock_irqrestore(&dev->lock, flags);
1325 wait_event_interruptible(dev->tx_ended, !dev->transmitting);
1326 spin_lock_irqsave(&dev->lock, flags);
1328 dev->params.disable(dev);
1330 spin_unlock_irqrestore(&dev->lock, flags);
1491 dev_err(&pdev->dev, "IR PNP Port not valid!\n");
1496 dev_err(&pdev->dev, "PNP IRQ not valid!\n");
1615 struct ite_dev *dev = pnp_get_drvdata(pdev);
1620 spin_lock_irqsave(&dev->lock, flags);
1623 dev->params.disable(dev);
1625 spin_unlock_irqrestore(&dev->lock, flags);
1628 free_irq(dev->cir_irq, dev);
1629 release_region(dev->cir_addr, dev->params.io_region_size);
1631 rc_unregister_device(dev->rdev);
1633 kfree(dev);
1638 struct ite_dev *dev = pnp_get_drvdata(pdev);
1644 wait_event_interruptible(dev->tx_ended, !dev->transmitting);
1646 spin_lock_irqsave(&dev->lock, flags);
1649 dev->params.disable(dev);
1651 spin_unlock_irqrestore(&dev->lock, flags);
1658 struct ite_dev *dev = pnp_get_drvdata(pdev);
1663 spin_lock_irqsave(&dev->lock, flags);
1666 dev->params.init_hardware(dev);
1668 dev->params.enable_rx(dev);
1670 spin_unlock_irqrestore(&dev->lock, flags);
1677 struct ite_dev *dev = pnp_get_drvdata(pdev);
1682 spin_lock_irqsave(&dev->lock, flags);
1685 dev->params.disable(dev);
1687 spin_unlock_irqrestore(&dev->lock, flags);