Lines Matching +full:tx +full:- +full:freq
1 // SPDX-License-Identifier: GPL-2.0-or-later
8 * skeleton provided by the nuvoton-cir driver.
10 * The lirc_it87 driver was originally written by Hans-Gunter Lutke Uphues
13 * <jimbo-lirc@edwardsclan.net>.
16 * <spmf2004-lirc@yahoo.fr> in 2008.
29 #include <media/rc-core.h>
32 #include "ite-cir.h"
41 /* low limit for RX carrier freq, Hz, 0 for no RX demodulation */
46 /* high limit for RX carrier freq, Hz, 0 for no RX demodulation */
51 /* override tx carrier frequency */
54 MODULE_PARM_DESC(tx_carrier_freq, "Override TX carrier frequency, Hz");
56 /* override tx duty cycle */
59 MODULE_PARM_DESC(tx_duty_cycle, "Override TX duty cycle, 1-100");
67 static int model_number = -1;
72 /* HW-independent code functions */
75 static inline bool ite_is_high_carrier_freq(unsigned int freq) in ite_is_high_carrier_freq() argument
77 return freq >= ITE_HCF_MIN_CARRIER_FREQ; in ite_is_high_carrier_freq()
82 static u8 ite_get_carrier_freq_bits(unsigned int freq) in ite_get_carrier_freq_bits() argument
84 if (ite_is_high_carrier_freq(freq)) { in ite_get_carrier_freq_bits()
85 if (freq < 425000) in ite_get_carrier_freq_bits()
88 else if (freq < 465000) in ite_get_carrier_freq_bits()
91 else if (freq < 490000) in ite_get_carrier_freq_bits()
98 if (freq < ITE_LCF_MIN_CARRIER_FREQ) in ite_get_carrier_freq_bits()
99 freq = ITE_LCF_MIN_CARRIER_FREQ; in ite_get_carrier_freq_bits()
100 if (freq > ITE_LCF_MAX_CARRIER_FREQ) in ite_get_carrier_freq_bits()
101 freq = ITE_LCF_MAX_CARRIER_FREQ; in ite_get_carrier_freq_bits()
103 /* convert to kHz and subtract the base freq */ in ite_get_carrier_freq_bits()
104 freq = in ite_get_carrier_freq_bits()
105 DIV_ROUND_CLOSEST(freq - ITE_LCF_MIN_CARRIER_FREQ, in ite_get_carrier_freq_bits()
108 return (u8) freq; in ite_get_carrier_freq_bits()
113 static u8 ite_get_pulse_width_bits(unsigned int freq, int duty_cycle) in ite_get_pulse_width_bits() argument
117 /* sanitize freq into range */ in ite_get_pulse_width_bits()
118 if (freq < ITE_LCF_MIN_CARRIER_FREQ) in ite_get_pulse_width_bits()
119 freq = ITE_LCF_MIN_CARRIER_FREQ; in ite_get_pulse_width_bits()
120 if (freq > ITE_HCF_MAX_CARRIER_FREQ) in ite_get_pulse_width_bits()
121 freq = ITE_HCF_MAX_CARRIER_FREQ; in ite_get_pulse_width_bits()
123 period_ns = 1000000000UL / freq; in ite_get_pulse_width_bits()
126 if (ite_is_high_carrier_freq(freq)) { in ite_get_pulse_width_bits()
159 /* decode raw bytes as received by the hardware, and push them to the ir-core
172 sample_period = dev->params.sample_period; in ite_decode_bytes()
180 ir_raw_event_store_with_filter(dev->rdev, &ev); in ite_decode_bytes()
186 ev.duration = ITE_BITS_TO_US(next_zero - next_one, sample_period); in ite_decode_bytes()
187 ir_raw_event_store_with_filter(dev->rdev, &ev); in ite_decode_bytes()
196 ITE_BITS_TO_US(next_one - next_zero, in ite_decode_bytes()
199 (dev->rdev, &ev); in ite_decode_bytes()
204 ir_raw_event_handle(dev->rdev); in ite_decode_bytes()
209 /* set all the rx/tx carrier parameters; this must be called with the device
213 unsigned int freq, low_freq, high_freq; in ite_set_carrier_params() local
216 bool for_tx = dev->transmitting; in ite_set_carrier_params()
222 freq = dev->params.tx_carrier_freq; in ite_set_carrier_params()
226 low_freq = dev->params.rx_low_carrier_freq; in ite_set_carrier_params()
227 high_freq = dev->params.rx_high_carrier_freq; in ite_set_carrier_params()
231 freq = in ite_set_carrier_params()
236 /* calculate the middle freq */ in ite_set_carrier_params()
237 freq = (low_freq + high_freq) / 2; in ite_set_carrier_params()
241 DIV_ROUND_CLOSEST(10000 * (high_freq - low_freq), in ite_set_carrier_params()
255 /* set the carrier parameters in a device-dependent way */ in ite_set_carrier_params()
256 dev->params.set_carrier_params(dev, ite_is_high_carrier_freq(freq), in ite_set_carrier_params()
257 use_demodulator, ite_get_carrier_freq_bits(freq), allowance, in ite_set_carrier_params()
258 ite_get_pulse_width_bits(freq, dev->params.tx_duty_cycle)); in ite_set_carrier_params()
274 spin_lock_irqsave(&dev->lock, flags); in ite_cir_isr()
277 iflags = dev->params.get_irq_causes(dev); in ite_cir_isr()
281 dev_warn(&dev->rdev->dev, "receive overflow\n"); in ite_cir_isr()
282 ir_raw_event_reset(dev->rdev); in ite_cir_isr()
289 dev->params.get_rx_bytes(dev, rx_buf, in ite_cir_isr()
293 /* drop the spinlock, since the ir-core layer in ite_cir_isr()
296 spin_unlock_irqrestore(&dev-> in ite_cir_isr()
305 spin_lock_irqsave(&dev->lock, in ite_cir_isr()
313 ite_dbg_verbose("got interrupt for TX FIFO"); in ite_cir_isr()
316 wake_up_interruptible(&dev->tx_queue); in ite_cir_isr()
323 spin_unlock_irqrestore(&dev->lock, flags); in ite_cir_isr()
330 /* set the rx carrier freq range, guess it's in Hz... */
335 struct ite_dev *dev = rcdev->priv; in ite_set_rx_carrier_range()
337 spin_lock_irqsave(&dev->lock, flags); in ite_set_rx_carrier_range()
338 dev->params.rx_low_carrier_freq = carrier_low; in ite_set_rx_carrier_range()
339 dev->params.rx_high_carrier_freq = carrier_high; in ite_set_rx_carrier_range()
341 spin_unlock_irqrestore(&dev->lock, flags); in ite_set_rx_carrier_range()
346 /* set the tx carrier freq, guess it's in Hz... */
350 struct ite_dev *dev = rcdev->priv; in ite_set_tx_carrier()
352 spin_lock_irqsave(&dev->lock, flags); in ite_set_tx_carrier()
353 dev->params.tx_carrier_freq = carrier; in ite_set_tx_carrier()
355 spin_unlock_irqrestore(&dev->lock, flags); in ite_set_tx_carrier()
360 /* set the tx duty cycle by controlling the pulse width */
364 struct ite_dev *dev = rcdev->priv; in ite_set_tx_duty_cycle()
366 spin_lock_irqsave(&dev->lock, flags); in ite_set_tx_duty_cycle()
367 dev->params.tx_duty_cycle = duty_cycle; in ite_set_tx_duty_cycle()
369 spin_unlock_irqrestore(&dev->lock, flags); in ite_set_tx_duty_cycle()
380 struct ite_dev *dev = rcdev->priv; in ite_tx_ir()
393 spin_lock_irqsave(&dev->lock, flags); in ite_tx_ir()
396 dev->transmitting = true; in ite_tx_ir()
403 (ITE_BAUDRATE_DIVISOR * dev->params.sample_period * in ite_tx_ir()
407 dev->params.disable_rx(dev); in ite_tx_ir()
414 ITE_TX_FIFO_LEN - dev->params.get_tx_used_slots(dev); in ite_tx_ir()
416 while (n > 0 && dev->in_use) { in ite_tx_ir()
420 n--; in ite_tx_ir()
427 /* repeat while the pulse is non-zero length */ in ite_tx_ir()
428 while (remaining_us > 0 && dev->in_use) { in ite_tx_ir()
435 remaining_us -= next_rle_us; in ite_tx_ir()
445 val = (val - 1) & ITE_TX_RLE_MASK; in ite_tx_ir()
459 fifo_avail = ITE_TX_FIFO_LEN - dev->params.get_tx_used_slots(dev); in ite_tx_ir()
463 /* enable the tx interrupt */ in ite_tx_ir()
464 dev->params. in ite_tx_ir()
468 spin_unlock_irqrestore(&dev->lock, flags); in ite_tx_ir()
471 …wait_event_interruptible(dev->tx_queue, (fifo_avail = ITE_TX_FIFO_LEN - dev->params.get_tx_used_sl… in ite_tx_ir()
474 spin_lock_irqsave(&dev->lock, flags); in ite_tx_ir()
476 /* disable the tx interrupt again. */ in ite_tx_ir()
477 dev->params. in ite_tx_ir()
482 dev->params.put_tx_byte(dev, val); in ite_tx_ir()
483 fifo_avail--; in ite_tx_ir()
489 * TX ones while the transmission is still being performed! */ in ite_tx_ir()
490 fifo_remaining = dev->params.get_tx_used_slots(dev); in ite_tx_ir()
493 fifo_remaining--; in ite_tx_ir()
494 last_idx--; in ite_tx_ir()
495 last_idx &= (ITE_TX_FIFO_LEN - 1); in ite_tx_ir()
501 spin_unlock_irqrestore(&dev->lock, flags); in ite_tx_ir()
507 spin_lock_irqsave(&dev->lock, flags); in ite_tx_ir()
510 dev->transmitting = false; in ite_tx_ir()
515 /* re-enable the receiver */ in ite_tx_ir()
516 if (dev->in_use) in ite_tx_ir()
517 dev->params.enable_rx(dev); in ite_tx_ir()
520 wake_up_interruptible(&dev->tx_ended); in ite_tx_ir()
522 spin_unlock_irqrestore(&dev->lock, flags); in ite_tx_ir()
531 struct ite_dev *dev = rcdev->priv; in ite_s_idle()
536 spin_lock_irqsave(&dev->lock, flags); in ite_s_idle()
537 dev->params.idle_rx(dev); in ite_s_idle()
538 spin_unlock_irqrestore(&dev->lock, flags); in ite_s_idle()
543 /* IT8712F HW-specific functions */
556 iflags = inb(dev->cir_addr + IT87_IIR) & IT87_II; in it87_get_irq_causes()
584 val = inb(dev->cir_addr + IT87_RCR) in it87_set_carrier_params()
595 outb(val, dev->cir_addr + IT87_RCR); in it87_set_carrier_params()
599 dev->cir_addr + IT87_TCR2); in it87_set_carrier_params()
611 fifo = inb(dev->cir_addr + IT87_RSR) & IT87_RXFBC; in it87_get_rx_bytes()
614 *(buf++) = inb(dev->cir_addr + IT87_DR); in it87_get_rx_bytes()
615 fifo--; in it87_get_rx_bytes()
617 buf_size--; in it87_get_rx_bytes()
624 * with the device spinlock NOT HELD while waiting for the TX FIFO to get
630 return inb(dev->cir_addr + IT87_TSR) & IT87_TXFBC; in it87_get_tx_used_slots()
633 /* put a byte to the TX fifo; this should be called with the spinlock held */
636 outb(value, dev->cir_addr + IT87_DR); in it87_put_tx_byte()
646 outb(inb(dev->cir_addr + IT87_RCR) | IT87_RXACT, in it87_idle_rx()
647 dev->cir_addr + IT87_RCR); in it87_idle_rx()
650 outb(inb(dev->cir_addr + IT87_TCR1) | IT87_FIFOCLR, in it87_idle_rx()
651 dev->cir_addr + IT87_TCR1); in it87_idle_rx()
660 outb(inb(dev->cir_addr + IT87_IER) & ~(IT87_RDAIE | IT87_RFOIE), in it87_disable_rx()
661 dev->cir_addr + IT87_IER); in it87_disable_rx()
664 outb(inb(dev->cir_addr + IT87_RCR) & ~IT87_RXEN, in it87_disable_rx()
665 dev->cir_addr + IT87_RCR); in it87_disable_rx()
678 outb(inb(dev->cir_addr + IT87_RCR) | IT87_RXEN, in it87_enable_rx()
679 dev->cir_addr + IT87_RCR); in it87_enable_rx()
685 outb(inb(dev->cir_addr + IT87_IER) | IT87_RDAIE | IT87_RFOIE | IT87_IEC, in it87_enable_rx()
686 dev->cir_addr + IT87_IER); in it87_enable_rx()
696 outb(inb(dev->cir_addr + IT87_IER) & ~IT87_TLDLIE, in it87_disable_tx_interrupt()
697 dev->cir_addr + IT87_IER); in it87_disable_tx_interrupt()
707 outb(inb(dev->cir_addr + IT87_IER) | IT87_TLDLIE | IT87_IEC, in it87_enable_tx_interrupt()
708 dev->cir_addr + IT87_IER); in it87_enable_tx_interrupt()
717 outb(inb(dev->cir_addr + IT87_IER) & in it87_disable()
719 dev->cir_addr + IT87_IER); in it87_disable()
725 outb(IT87_FIFOCLR | inb(dev->cir_addr + IT87_TCR1), in it87_disable()
726 dev->cir_addr + IT87_TCR1); in it87_disable()
736 outb((inb(dev->cir_addr + IT87_IER) & in it87_init_hardware()
738 dev->cir_addr + IT87_IER); in it87_init_hardware()
741 outb(ITE_BAUDRATE_DIVISOR & 0xff, dev->cir_addr + IT87_BDLR); in it87_init_hardware()
742 outb((ITE_BAUDRATE_DIVISOR >> 8) & 0xff, dev->cir_addr + IT87_BDHR); in it87_init_hardware()
745 outb(inb(dev->cir_addr + IT87_IER) & ~IT87_BR, in it87_init_hardware()
746 dev->cir_addr + IT87_IER); in it87_init_hardware()
749 outb(ITE_RXDCR_DEFAULT, dev->cir_addr + IT87_RCR); in it87_init_hardware()
754 dev->cir_addr + IT87_TCR1); in it87_init_hardware()
760 /* IT8512F on ITE8708 HW-specific functions */
773 iflags = inb(dev->cir_addr + IT8708_C0IIR); in it8708_get_irq_causes()
796 outb(inb(dev->cir_addr + IT8708_BANKSEL) | IT8708_HRAE, in it8708_set_carrier_params()
797 dev->cir_addr + IT8708_BANKSEL); in it8708_set_carrier_params()
799 val = (inb(dev->cir_addr + IT8708_C0CFR) in it8708_set_carrier_params()
805 outb(val, dev->cir_addr + IT8708_C0CFR); in it8708_set_carrier_params()
807 outb(inb(dev->cir_addr + IT8708_BANKSEL) & ~IT8708_HRAE, in it8708_set_carrier_params()
808 dev->cir_addr + IT8708_BANKSEL); in it8708_set_carrier_params()
811 val = inb(dev->cir_addr + IT8708_C0RCR) in it8708_set_carrier_params()
819 outb(val, dev->cir_addr + IT8708_C0RCR); in it8708_set_carrier_params()
822 val = inb(dev->cir_addr + IT8708_C0TCR) & ~IT85_TXMPW; in it8708_set_carrier_params()
824 outb(val, dev->cir_addr + IT8708_C0TCR); in it8708_set_carrier_params()
836 fifo = inb(dev->cir_addr + IT8708_C0RFSR) & IT85_RXFBC; in it8708_get_rx_bytes()
839 *(buf++) = inb(dev->cir_addr + IT8708_C0DR); in it8708_get_rx_bytes()
840 fifo--; in it8708_get_rx_bytes()
842 buf_size--; in it8708_get_rx_bytes()
849 * with the device spinlock NOT HELD while waiting for the TX FIFO to get
855 return inb(dev->cir_addr + IT8708_C0TFSR) & IT85_TXFBC; in it8708_get_tx_used_slots()
858 /* put a byte to the TX fifo; this should be called with the spinlock held */
861 outb(value, dev->cir_addr + IT8708_C0DR); in it8708_put_tx_byte()
871 outb(inb(dev->cir_addr + IT8708_C0RCR) | IT85_RXACT, in it8708_idle_rx()
872 dev->cir_addr + IT8708_C0RCR); in it8708_idle_rx()
875 outb(inb(dev->cir_addr + IT8708_C0MSTCR) | IT85_FIFOCLR, in it8708_idle_rx()
876 dev->cir_addr + IT8708_C0MSTCR); in it8708_idle_rx()
885 outb(inb(dev->cir_addr + IT8708_C0IER) & in it8708_disable_rx()
887 dev->cir_addr + IT8708_C0IER); in it8708_disable_rx()
890 outb(inb(dev->cir_addr + IT8708_C0RCR) & ~IT85_RXEN, in it8708_disable_rx()
891 dev->cir_addr + IT8708_C0RCR); in it8708_disable_rx()
904 outb(inb(dev->cir_addr + IT8708_C0RCR) | IT85_RXEN, in it8708_enable_rx()
905 dev->cir_addr + IT8708_C0RCR); in it8708_enable_rx()
911 outb(inb(dev->cir_addr + IT8708_C0IER) in it8708_enable_rx()
913 dev->cir_addr + IT8708_C0IER); in it8708_enable_rx()
923 outb(inb(dev->cir_addr + IT8708_C0IER) & ~IT85_TLDLIE, in it8708_disable_tx_interrupt()
924 dev->cir_addr + IT8708_C0IER); in it8708_disable_tx_interrupt()
934 outb(inb(dev->cir_addr + IT8708_C0IER) in it8708_enable_tx_interrupt()
936 dev->cir_addr + IT8708_C0IER); in it8708_enable_tx_interrupt()
945 outb(inb(dev->cir_addr + IT8708_C0IER) & in it8708_disable()
947 dev->cir_addr + IT8708_C0IER); in it8708_disable()
953 outb(IT85_FIFOCLR | inb(dev->cir_addr + IT8708_C0MSTCR), in it8708_disable()
954 dev->cir_addr + IT8708_C0MSTCR); in it8708_disable()
963 outb(inb(dev->cir_addr + IT8708_C0IER) & in it8708_init_hardware()
965 dev->cir_addr + IT8708_C0IER); in it8708_init_hardware()
968 outb(inb(dev->cir_addr + IT8708_BANKSEL) | IT8708_HRAE, in it8708_init_hardware()
969 dev->cir_addr + IT8708_BANKSEL); in it8708_init_hardware()
971 outb(ITE_BAUDRATE_DIVISOR & 0xff, dev->cir_addr + IT8708_C0BDLR); in it8708_init_hardware()
973 dev->cir_addr + IT8708_C0BDHR); in it8708_init_hardware()
975 outb(inb(dev->cir_addr + IT8708_BANKSEL) & ~IT8708_HRAE, in it8708_init_hardware()
976 dev->cir_addr + IT8708_BANKSEL); in it8708_init_hardware()
979 outb((inb(dev->cir_addr + IT8708_C0MSTCR) & in it8708_init_hardware()
983 dev->cir_addr + IT8708_C0MSTCR); in it8708_init_hardware()
986 outb((inb(dev->cir_addr + IT8708_C0RCR) & in it8708_init_hardware()
990 dev->cir_addr + IT8708_C0RCR); in it8708_init_hardware()
993 outb((inb(dev->cir_addr + IT8708_C0TCR) & in it8708_init_hardware()
997 dev->cir_addr + IT8708_C0TCR); in it8708_init_hardware()
1003 /* IT8512F on ITE8709 HW-specific functions */
1008 outb(index, dev->cir_addr + IT8709_RAM_IDX); in it8709_rm()
1009 return inb(dev->cir_addr + IT8709_RAM_VAL); in it8709_rm()
1015 outb(index, dev->cir_addr + IT8709_RAM_IDX); in it8709_wm()
1016 outb(val, dev->cir_addr + IT8709_RAM_VAL); in it8709_wm()
1131 fifo--; in it8709_get_rx_bytes()
1133 buf_size--; in it8709_get_rx_bytes()
1145 * with the device spinlock NOT HELD while waiting for the TX FIFO to get
1154 /* put a byte to the TX fifo; this should be called with the spinlock held */
1296 struct ite_dev *dev = rcdev->priv; in ite_open()
1301 spin_lock_irqsave(&dev->lock, flags); in ite_open()
1302 dev->in_use = true; in ite_open()
1305 dev->params.enable_rx(dev); in ite_open()
1307 spin_unlock_irqrestore(&dev->lock, flags); in ite_open()
1315 struct ite_dev *dev = rcdev->priv; in ite_close()
1320 spin_lock_irqsave(&dev->lock, flags); in ite_close()
1321 dev->in_use = false; in ite_close()
1324 spin_unlock_irqrestore(&dev->lock, flags); in ite_close()
1325 wait_event_interruptible(dev->tx_ended, !dev->transmitting); in ite_close()
1326 spin_lock_irqsave(&dev->lock, flags); in ite_close()
1328 dev->params.disable(dev); in ite_close()
1330 spin_unlock_irqrestore(&dev->lock, flags); in ite_close()
1443 {"ITE8709", 3}, /* SRAM-Bridged IT8512 */
1454 int ret = -ENOMEM; in ite_probe()
1464 /* input device for IR remote (and tx) */ in ite_probe()
1468 itdev->rdev = rdev; in ite_probe()
1470 ret = -ENODEV; in ite_probe()
1473 model_no = (int)dev_id->driver_data; in ite_probe()
1474 ite_pr(KERN_NOTICE, "Auto-detected model: %s\n", in ite_probe()
1486 io_rsrc_no = dev_desc->io_rsrc_no; in ite_probe()
1490 pnp_port_len(pdev, io_rsrc_no) != dev_desc->io_region_size) { in ite_probe()
1491 dev_err(&pdev->dev, "IR PNP Port not valid!\n"); in ite_probe()
1496 dev_err(&pdev->dev, "PNP IRQ not valid!\n"); in ite_probe()
1501 itdev->cir_addr = pnp_port_start(pdev, io_rsrc_no); in ite_probe()
1502 itdev->cir_irq = pnp_irq(pdev, 0); in ite_probe()
1505 spin_lock_init(&itdev->lock); in ite_probe()
1509 itdev->pdev = pdev; in ite_probe()
1512 init_waitqueue_head(&itdev->tx_queue); in ite_probe()
1513 init_waitqueue_head(&itdev->tx_ended); in ite_probe()
1515 /* copy model-specific parameters */ in ite_probe()
1516 itdev->params = *dev_desc; in ite_probe()
1520 itdev->params.sample_period = sample_period; in ite_probe()
1523 itdev->params.tx_carrier_freq = tx_carrier_freq; in ite_probe()
1526 itdev->params.tx_duty_cycle = tx_duty_cycle; in ite_probe()
1529 itdev->params.rx_low_carrier_freq = rx_low_carrier_freq; in ite_probe()
1532 itdev->params.rx_high_carrier_freq = rx_high_carrier_freq; in ite_probe()
1535 ite_pr(KERN_NOTICE, "TX-capable: %d\n", (int) in ite_probe()
1536 itdev->params.hw_tx_capable); in ite_probe()
1538 itdev->params.sample_period); in ite_probe()
1539 ite_pr(KERN_NOTICE, "TX carrier frequency (Hz): %d\n", (int) in ite_probe()
1540 itdev->params.tx_carrier_freq); in ite_probe()
1541 ite_pr(KERN_NOTICE, "TX duty cycle (%%): %d\n", (int) in ite_probe()
1542 itdev->params.tx_duty_cycle); in ite_probe()
1544 itdev->params.rx_low_carrier_freq); in ite_probe()
1546 itdev->params.rx_high_carrier_freq); in ite_probe()
1549 itdev->params.init_hardware(itdev); in ite_probe()
1551 /* set up ir-core props */ in ite_probe()
1552 rdev->priv = itdev; in ite_probe()
1553 rdev->allowed_protocols = RC_PROTO_BIT_ALL_IR_DECODER; in ite_probe()
1554 rdev->open = ite_open; in ite_probe()
1555 rdev->close = ite_close; in ite_probe()
1556 rdev->s_idle = ite_s_idle; in ite_probe()
1557 rdev->s_rx_carrier_range = ite_set_rx_carrier_range; in ite_probe()
1559 rdev->min_timeout = 17 * 8 * ITE_BAUDRATE_DIVISOR * in ite_probe()
1560 itdev->params.sample_period / 1000; in ite_probe()
1561 rdev->timeout = IR_DEFAULT_TIMEOUT; in ite_probe()
1562 rdev->max_timeout = 10 * IR_DEFAULT_TIMEOUT; in ite_probe()
1563 rdev->rx_resolution = ITE_BAUDRATE_DIVISOR * in ite_probe()
1564 itdev->params.sample_period / 1000; in ite_probe()
1565 rdev->tx_resolution = ITE_BAUDRATE_DIVISOR * in ite_probe()
1566 itdev->params.sample_period / 1000; in ite_probe()
1569 if (itdev->params.hw_tx_capable) { in ite_probe()
1570 rdev->tx_ir = ite_tx_ir; in ite_probe()
1571 rdev->s_tx_carrier = ite_set_tx_carrier; in ite_probe()
1572 rdev->s_tx_duty_cycle = ite_set_tx_duty_cycle; in ite_probe()
1575 rdev->device_name = dev_desc->model; in ite_probe()
1576 rdev->input_id.bustype = BUS_HOST; in ite_probe()
1577 rdev->input_id.vendor = PCI_VENDOR_ID_ITE; in ite_probe()
1578 rdev->input_id.product = 0; in ite_probe()
1579 rdev->input_id.version = 0; in ite_probe()
1580 rdev->driver_name = ITE_DRIVER_NAME; in ite_probe()
1581 rdev->map_name = RC_MAP_RC6_MCE; in ite_probe()
1587 ret = -EBUSY; in ite_probe()
1589 if (!request_region(itdev->cir_addr, in ite_probe()
1590 dev_desc->io_region_size, ITE_DRIVER_NAME)) in ite_probe()
1593 if (request_irq(itdev->cir_irq, ite_cir_isr, IRQF_SHARED, in ite_probe()
1602 release_region(itdev->cir_addr, itdev->params.io_region_size); in ite_probe()
1620 spin_lock_irqsave(&dev->lock, flags); in ite_remove()
1623 dev->params.disable(dev); in ite_remove()
1625 spin_unlock_irqrestore(&dev->lock, flags); in ite_remove()
1628 free_irq(dev->cir_irq, dev); in ite_remove()
1629 release_region(dev->cir_addr, dev->params.io_region_size); in ite_remove()
1631 rc_unregister_device(dev->rdev); in ite_remove()
1644 wait_event_interruptible(dev->tx_ended, !dev->transmitting); in ite_suspend()
1646 spin_lock_irqsave(&dev->lock, flags); in ite_suspend()
1649 dev->params.disable(dev); in ite_suspend()
1651 spin_unlock_irqrestore(&dev->lock, flags); in ite_suspend()
1663 spin_lock_irqsave(&dev->lock, flags); in ite_resume()
1666 dev->params.init_hardware(dev); in ite_resume()
1668 dev->params.enable_rx(dev); in ite_resume()
1670 spin_unlock_irqrestore(&dev->lock, flags); in ite_resume()
1682 spin_lock_irqsave(&dev->lock, flags); in ite_shutdown()
1685 dev->params.disable(dev); in ite_shutdown()
1687 spin_unlock_irqrestore(&dev->lock, flags); in ite_shutdown()