fintek             26 drivers/media/rc/fintek-cir.c static inline void fintek_cr_write(struct fintek_dev *fintek, u8 val, u8 reg)
fintek             29 drivers/media/rc/fintek-cir.c 		__func__, reg, val, fintek->cr_ip, fintek->cr_dp);
fintek             30 drivers/media/rc/fintek-cir.c 	outb(reg, fintek->cr_ip);
fintek             31 drivers/media/rc/fintek-cir.c 	outb(val, fintek->cr_dp);
fintek             35 drivers/media/rc/fintek-cir.c static inline u8 fintek_cr_read(struct fintek_dev *fintek, u8 reg)
fintek             39 drivers/media/rc/fintek-cir.c 	outb(reg, fintek->cr_ip);
fintek             40 drivers/media/rc/fintek-cir.c 	val = inb(fintek->cr_dp);
fintek             43 drivers/media/rc/fintek-cir.c 		__func__, reg, val, fintek->cr_ip, fintek->cr_dp);
fintek             48 drivers/media/rc/fintek-cir.c static inline void fintek_set_reg_bit(struct fintek_dev *fintek, u8 val, u8 reg)
fintek             50 drivers/media/rc/fintek-cir.c 	u8 tmp = fintek_cr_read(fintek, reg) | val;
fintek             51 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, tmp, reg);
fintek             55 drivers/media/rc/fintek-cir.c static inline void fintek_clear_reg_bit(struct fintek_dev *fintek, u8 val, u8 reg)
fintek             57 drivers/media/rc/fintek-cir.c 	u8 tmp = fintek_cr_read(fintek, reg) & ~val;
fintek             58 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, tmp, reg);
fintek             62 drivers/media/rc/fintek-cir.c static inline void fintek_config_mode_enable(struct fintek_dev *fintek)
fintek             65 drivers/media/rc/fintek-cir.c 	outb(CONFIG_REG_ENABLE, fintek->cr_ip);
fintek             66 drivers/media/rc/fintek-cir.c 	outb(CONFIG_REG_ENABLE, fintek->cr_ip);
fintek             70 drivers/media/rc/fintek-cir.c static inline void fintek_config_mode_disable(struct fintek_dev *fintek)
fintek             72 drivers/media/rc/fintek-cir.c 	outb(CONFIG_REG_DISABLE, fintek->cr_ip);
fintek             79 drivers/media/rc/fintek-cir.c static inline void fintek_select_logical_dev(struct fintek_dev *fintek, u8 ldev)
fintek             81 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, ldev, GCR_LOGICAL_DEV_NO);
fintek             85 drivers/media/rc/fintek-cir.c static inline void fintek_cir_reg_write(struct fintek_dev *fintek, u8 val, u8 offset)
fintek             87 drivers/media/rc/fintek-cir.c 	outb(val, fintek->cir_addr + offset);
fintek             91 drivers/media/rc/fintek-cir.c static u8 fintek_cir_reg_read(struct fintek_dev *fintek, u8 offset)
fintek             93 drivers/media/rc/fintek-cir.c 	return inb(fintek->cir_addr + offset);
fintek             97 drivers/media/rc/fintek-cir.c static void cir_dump_regs(struct fintek_dev *fintek)
fintek             99 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            100 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            104 drivers/media/rc/fintek-cir.c 		(fintek_cr_read(fintek, CIR_CR_BASE_ADDR_HI) << 8) |
fintek            105 drivers/media/rc/fintek-cir.c 		fintek_cr_read(fintek, CIR_CR_BASE_ADDR_LO));
fintek            107 drivers/media/rc/fintek-cir.c 		fintek_cr_read(fintek, CIR_CR_IRQ_SEL));
fintek            109 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            113 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_read(fintek, CIR_STATUS));
fintek            115 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_read(fintek, CIR_CONTROL));
fintek            117 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_read(fintek, CIR_RX_DATA));
fintek            119 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_read(fintek, CIR_TX_CONTROL));
fintek            121 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_read(fintek, CIR_TX_DATA));
fintek            125 drivers/media/rc/fintek-cir.c static int fintek_hw_detect(struct fintek_dev *fintek)
fintek            133 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            136 drivers/media/rc/fintek-cir.c 	portsel = fintek_cr_read(fintek, GCR_CONFIG_PORT_SEL);
fintek            139 drivers/media/rc/fintek-cir.c 		fintek_config_mode_disable(fintek);
fintek            140 drivers/media/rc/fintek-cir.c 		fintek->cr_ip = CR_INDEX_PORT2;
fintek            141 drivers/media/rc/fintek-cir.c 		fintek->cr_dp = CR_DATA_PORT2;
fintek            142 drivers/media/rc/fintek-cir.c 		fintek_config_mode_enable(fintek);
fintek            143 drivers/media/rc/fintek-cir.c 		portsel = fintek_cr_read(fintek, GCR_CONFIG_PORT_SEL);
fintek            147 drivers/media/rc/fintek-cir.c 	ir_class = fintek_cir_reg_read(fintek, CIR_CR_CLASS);
fintek            153 drivers/media/rc/fintek-cir.c 		fintek->hw_tx_capable = true;
fintek            157 drivers/media/rc/fintek-cir.c 		fintek->hw_tx_capable = false;
fintek            161 drivers/media/rc/fintek-cir.c 	chip_major = fintek_cr_read(fintek, GCR_CHIP_ID_HI);
fintek            162 drivers/media/rc/fintek-cir.c 	chip_minor = fintek_cr_read(fintek, GCR_CHIP_ID_LO);
fintek            165 drivers/media/rc/fintek-cir.c 	vendor_major = fintek_cr_read(fintek, GCR_VENDOR_ID_HI);
fintek            166 drivers/media/rc/fintek-cir.c 	vendor_minor = fintek_cr_read(fintek, GCR_VENDOR_ID_LO);
fintek            174 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            176 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            177 drivers/media/rc/fintek-cir.c 	fintek->chip_major  = chip_major;
fintek            178 drivers/media/rc/fintek-cir.c 	fintek->chip_minor  = chip_minor;
fintek            179 drivers/media/rc/fintek-cir.c 	fintek->chip_vendor = vendor;
fintek            185 drivers/media/rc/fintek-cir.c 		fintek->logical_dev_cir = LOGICAL_DEV_CIR_REV2;
fintek            187 drivers/media/rc/fintek-cir.c 		fintek->logical_dev_cir = LOGICAL_DEV_CIR_REV1;
fintek            189 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            194 drivers/media/rc/fintek-cir.c static void fintek_cir_ldev_init(struct fintek_dev *fintek)
fintek            197 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            198 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, LOGICAL_DEV_ENABLE, CIR_CR_DEV_EN);
fintek            201 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, fintek->cir_addr >> 8, CIR_CR_BASE_ADDR_HI);
fintek            202 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, fintek->cir_addr & 0xff, CIR_CR_BASE_ADDR_LO);
fintek            204 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, fintek->cir_irq, CIR_CR_IRQ_SEL);
fintek            207 drivers/media/rc/fintek-cir.c 		fintek->cir_addr, fintek->cir_irq, fintek->cir_port_len);
fintek            211 drivers/media/rc/fintek-cir.c static void fintek_enable_cir_irq(struct fintek_dev *fintek)
fintek            213 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_EN, CIR_STATUS);
fintek            216 drivers/media/rc/fintek-cir.c static void fintek_cir_regs_init(struct fintek_dev *fintek)
fintek            219 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_MASK, CIR_STATUS);
fintek            222 drivers/media/rc/fintek-cir.c 	fintek_enable_cir_irq(fintek);
fintek            225 drivers/media/rc/fintek-cir.c static void fintek_enable_wake(struct fintek_dev *fintek)
fintek            227 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            228 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, LOGICAL_DEV_ACPI);
fintek            231 drivers/media/rc/fintek-cir.c 	fintek_set_reg_bit(fintek, ACPI_WAKE_EN_CIR_BIT, LDEV_ACPI_WAKE_EN_REG);
fintek            233 drivers/media/rc/fintek-cir.c 	fintek_set_reg_bit(fintek, ACPI_PME_CIR_BIT, LDEV_ACPI_PME_EN_REG);
fintek            235 drivers/media/rc/fintek-cir.c 	fintek_set_reg_bit(fintek, ACPI_PME_CIR_BIT, LDEV_ACPI_PME_CLR_REG);
fintek            237 drivers/media/rc/fintek-cir.c 	fintek_set_reg_bit(fintek, ACPI_STATE_CIR_BIT, LDEV_ACPI_STATE_REG);
fintek            239 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            274 drivers/media/rc/fintek-cir.c static void fintek_process_rx_ir_data(struct fintek_dev *fintek)
fintek            281 drivers/media/rc/fintek-cir.c 	for (i = 0; i < fintek->pkts; i++) {
fintek            282 drivers/media/rc/fintek-cir.c 		sample = fintek->buf[i];
fintek            283 drivers/media/rc/fintek-cir.c 		switch (fintek->parser_state) {
fintek            285 drivers/media/rc/fintek-cir.c 			fintek->cmd = sample;
fintek            286 drivers/media/rc/fintek-cir.c 			if ((fintek->cmd == BUF_COMMAND_HEADER) ||
fintek            287 drivers/media/rc/fintek-cir.c 			    ((fintek->cmd & BUF_COMMAND_MASK) !=
fintek            289 drivers/media/rc/fintek-cir.c 				fintek->parser_state = SUBCMD;
fintek            292 drivers/media/rc/fintek-cir.c 			fintek->rem = (fintek->cmd & BUF_LEN_MASK);
fintek            293 drivers/media/rc/fintek-cir.c 			fit_dbg("%s: rem: 0x%02x", __func__, fintek->rem);
fintek            294 drivers/media/rc/fintek-cir.c 			if (fintek->rem)
fintek            295 drivers/media/rc/fintek-cir.c 				fintek->parser_state = PARSE_IRDATA;
fintek            297 drivers/media/rc/fintek-cir.c 				ir_raw_event_reset(fintek->rdev);
fintek            300 drivers/media/rc/fintek-cir.c 			fintek->rem = fintek_cmdsize(fintek->cmd, sample);
fintek            301 drivers/media/rc/fintek-cir.c 			fintek->parser_state = CMD_DATA;
fintek            304 drivers/media/rc/fintek-cir.c 			fintek->rem--;
fintek            307 drivers/media/rc/fintek-cir.c 			fintek->rem--;
fintek            315 drivers/media/rc/fintek-cir.c 			if (ir_raw_event_store_with_filter(fintek->rdev,
fintek            321 drivers/media/rc/fintek-cir.c 		if ((fintek->parser_state != CMD_HEADER) && !fintek->rem)
fintek            322 drivers/media/rc/fintek-cir.c 			fintek->parser_state = CMD_HEADER;
fintek            325 drivers/media/rc/fintek-cir.c 	fintek->pkts = 0;
fintek            329 drivers/media/rc/fintek-cir.c 		ir_raw_event_handle(fintek->rdev);
fintek            334 drivers/media/rc/fintek-cir.c static void fintek_get_rx_ir_data(struct fintek_dev *fintek, u8 rx_irqs)
fintek            339 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            347 drivers/media/rc/fintek-cir.c 		sample = fintek_cir_reg_read(fintek, CIR_RX_DATA);
fintek            350 drivers/media/rc/fintek-cir.c 		fintek->buf[fintek->pkts] = sample;
fintek            351 drivers/media/rc/fintek-cir.c 		fintek->pkts++;
fintek            353 drivers/media/rc/fintek-cir.c 		status = fintek_cir_reg_read(fintek, CIR_STATUS);
fintek            358 drivers/media/rc/fintek-cir.c 	fintek_process_rx_ir_data(fintek);
fintek            360 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            376 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = data;
fintek            381 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            382 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            383 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            394 drivers/media/rc/fintek-cir.c 	status = fintek_cir_reg_read(fintek, CIR_STATUS);
fintek            397 drivers/media/rc/fintek-cir.c 		fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_MASK, CIR_STATUS);
fintek            406 drivers/media/rc/fintek-cir.c 		fintek_get_rx_ir_data(fintek, rx_irqs);
fintek            409 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, status, CIR_STATUS);
fintek            415 drivers/media/rc/fintek-cir.c static void fintek_enable_cir(struct fintek_dev *fintek)
fintek            418 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_EN, CIR_STATUS);
fintek            420 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            423 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            424 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, LOGICAL_DEV_ENABLE, CIR_CR_DEV_EN);
fintek            426 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            429 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_MASK, CIR_STATUS);
fintek            432 drivers/media/rc/fintek-cir.c 	fintek_enable_cir_irq(fintek);
fintek            435 drivers/media/rc/fintek-cir.c static void fintek_disable_cir(struct fintek_dev *fintek)
fintek            437 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            440 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            441 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, LOGICAL_DEV_DISABLE, CIR_CR_DEV_EN);
fintek            443 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            448 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = dev->priv;
fintek            451 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            452 drivers/media/rc/fintek-cir.c 	fintek_enable_cir(fintek);
fintek            453 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            460 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = dev->priv;
fintek            463 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            464 drivers/media/rc/fintek-cir.c 	fintek_disable_cir(fintek);
fintek            465 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            471 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek;
fintek            475 drivers/media/rc/fintek-cir.c 	fintek = kzalloc(sizeof(struct fintek_dev), GFP_KERNEL);
fintek            476 drivers/media/rc/fintek-cir.c 	if (!fintek)
fintek            496 drivers/media/rc/fintek-cir.c 	fintek->cir_addr = pnp_port_start(pdev, 0);
fintek            497 drivers/media/rc/fintek-cir.c 	fintek->cir_irq  = pnp_irq(pdev, 0);
fintek            498 drivers/media/rc/fintek-cir.c 	fintek->cir_port_len = pnp_port_len(pdev, 0);
fintek            500 drivers/media/rc/fintek-cir.c 	fintek->cr_ip = CR_INDEX_PORT;
fintek            501 drivers/media/rc/fintek-cir.c 	fintek->cr_dp = CR_DATA_PORT;
fintek            503 drivers/media/rc/fintek-cir.c 	spin_lock_init(&fintek->fintek_lock);
fintek            505 drivers/media/rc/fintek-cir.c 	pnp_set_drvdata(pdev, fintek);
fintek            506 drivers/media/rc/fintek-cir.c 	fintek->pdev = pdev;
fintek            508 drivers/media/rc/fintek-cir.c 	ret = fintek_hw_detect(fintek);
fintek            513 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            514 drivers/media/rc/fintek-cir.c 	fintek_cir_ldev_init(fintek);
fintek            515 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            518 drivers/media/rc/fintek-cir.c 	fintek_cir_regs_init(fintek);
fintek            521 drivers/media/rc/fintek-cir.c 	rdev->priv = fintek;
fintek            529 drivers/media/rc/fintek-cir.c 	rdev->input_id.product = fintek->chip_major;
fintek            530 drivers/media/rc/fintek-cir.c 	rdev->input_id.version = fintek->chip_minor;
fintek            538 drivers/media/rc/fintek-cir.c 	fintek->rdev = rdev;
fintek            542 drivers/media/rc/fintek-cir.c 	if (!request_region(fintek->cir_addr,
fintek            543 drivers/media/rc/fintek-cir.c 			    fintek->cir_port_len, FINTEK_DRIVER_NAME))
fintek            546 drivers/media/rc/fintek-cir.c 	if (request_irq(fintek->cir_irq, fintek_cir_isr, IRQF_SHARED,
fintek            547 drivers/media/rc/fintek-cir.c 			FINTEK_DRIVER_NAME, (void *)fintek))
fintek            558 drivers/media/rc/fintek-cir.c 		cir_dump_regs(fintek);
fintek            563 drivers/media/rc/fintek-cir.c 	free_irq(fintek->cir_irq, fintek);
fintek            565 drivers/media/rc/fintek-cir.c 	release_region(fintek->cir_addr, fintek->cir_port_len);
fintek            568 drivers/media/rc/fintek-cir.c 	kfree(fintek);
fintek            575 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = pnp_get_drvdata(pdev);
fintek            578 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            580 drivers/media/rc/fintek-cir.c 	fintek_disable_cir(fintek);
fintek            581 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_MASK, CIR_STATUS);
fintek            583 drivers/media/rc/fintek-cir.c 	fintek_enable_wake(fintek);
fintek            584 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            587 drivers/media/rc/fintek-cir.c 	free_irq(fintek->cir_irq, fintek);
fintek            588 drivers/media/rc/fintek-cir.c 	release_region(fintek->cir_addr, fintek->cir_port_len);
fintek            590 drivers/media/rc/fintek-cir.c 	rc_unregister_device(fintek->rdev);
fintek            592 drivers/media/rc/fintek-cir.c 	kfree(fintek);
fintek            597 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = pnp_get_drvdata(pdev);
fintek            602 drivers/media/rc/fintek-cir.c 	spin_lock_irqsave(&fintek->fintek_lock, flags);
fintek            605 drivers/media/rc/fintek-cir.c 	fintek_cir_reg_write(fintek, CIR_STATUS_IRQ_MASK, CIR_STATUS);
fintek            607 drivers/media/rc/fintek-cir.c 	spin_unlock_irqrestore(&fintek->fintek_lock, flags);
fintek            609 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            612 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            613 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, LOGICAL_DEV_DISABLE, CIR_CR_DEV_EN);
fintek            615 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            618 drivers/media/rc/fintek-cir.c 	fintek_enable_wake(fintek);
fintek            625 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = pnp_get_drvdata(pdev);
fintek            630 drivers/media/rc/fintek-cir.c 	fintek_enable_cir_irq(fintek);
fintek            633 drivers/media/rc/fintek-cir.c 	fintek_config_mode_enable(fintek);
fintek            634 drivers/media/rc/fintek-cir.c 	fintek_select_logical_dev(fintek, fintek->logical_dev_cir);
fintek            635 drivers/media/rc/fintek-cir.c 	fintek_cr_write(fintek, LOGICAL_DEV_ENABLE, CIR_CR_DEV_EN);
fintek            637 drivers/media/rc/fintek-cir.c 	fintek_config_mode_disable(fintek);
fintek            639 drivers/media/rc/fintek-cir.c 	fintek_cir_regs_init(fintek);
fintek            646 drivers/media/rc/fintek-cir.c 	struct fintek_dev *fintek = pnp_get_drvdata(pdev);
fintek            647 drivers/media/rc/fintek-cir.c 	fintek_enable_wake(fintek);