Commit 0ee492ad authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab
Browse files

media: cec-pin: create cec_pin_start_timer() function



This function will be needed for injecting a custom pulse.

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent 6902c88a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -118,4 +118,6 @@ struct cec_pin {
	u32				timer_sum_overrun;
};

void cec_pin_start_timer(struct cec_pin *pin);

#endif
+13 −8
Original line number Diff line number Diff line
@@ -680,6 +680,18 @@ static int cec_pin_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
	return 0;
}

void cec_pin_start_timer(struct cec_pin *pin)
{
	if (pin->state != CEC_ST_RX_IRQ)
		return;

	atomic_set(&pin->work_irq_change, CEC_PIN_IRQ_UNCHANGED);
	pin->ops->disable_irq(pin->adap);
	cec_pin_high(pin);
	cec_pin_to_idle(pin);
	hrtimer_start(&pin->timer, ns_to_ktime(0), HRTIMER_MODE_REL);
}

static int cec_pin_adap_transmit(struct cec_adapter *adap, u8 attempts,
				      u32 signal_free_time, struct cec_msg *msg)
{
@@ -689,14 +701,7 @@ static int cec_pin_adap_transmit(struct cec_adapter *adap, u8 attempts,
	pin->tx_msg = *msg;
	pin->work_tx_status = 0;
	pin->tx_bit = 0;
	if (pin->state == CEC_ST_RX_IRQ) {
		atomic_set(&pin->work_irq_change, CEC_PIN_IRQ_UNCHANGED);
		pin->ops->disable_irq(adap);
		cec_pin_high(pin);
		cec_pin_to_idle(pin);
		hrtimer_start(&pin->timer, ns_to_ktime(0),
			      HRTIMER_MODE_REL);
	}
	cec_pin_start_timer(pin);
	return 0;
}