forked from Minki/linux
media: mtk-cir: fix calculation of chk period
Since commit528222d853
("media: rc: harmonize infrared durations to microseconds"), the calculation of the chk period is wrong. As a result, all reported IR will have incorrect timings. Now that the calculations are done in microseconds rather than nanoseconds, we can fold the calculations in a simpler form with less rounding error. Tested-by: Frank Wunderlich <frank-w@public-files.de> Fixes:528222d853
("media: rc: harmonize infrared durations to microseconds") Signed-off-by: Sean Young <sean@mess.org> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
44f28934af
commit
d904eb0b35
@ -151,15 +151,12 @@ static inline u32 mtk_chk_period(struct mtk_ir *ir)
|
||||
{
|
||||
u32 val;
|
||||
|
||||
/* Period of raw software sampling in ns */
|
||||
val = DIV_ROUND_CLOSEST(1000000000ul,
|
||||
clk_get_rate(ir->bus) / ir->data->div);
|
||||
|
||||
/*
|
||||
* Period for software decoder used in the
|
||||
* unit of raw software sampling
|
||||
*/
|
||||
val = DIV_ROUND_CLOSEST(MTK_IR_SAMPLE, val);
|
||||
val = DIV_ROUND_CLOSEST(clk_get_rate(ir->bus),
|
||||
USEC_PER_SEC * ir->data->div / MTK_IR_SAMPLE);
|
||||
|
||||
dev_dbg(ir->dev, "@pwm clk = \t%lu\n",
|
||||
clk_get_rate(ir->bus) / ir->data->div);
|
||||
@ -412,7 +409,7 @@ static int mtk_ir_probe(struct platform_device *pdev)
|
||||
mtk_irq_enable(ir, MTK_IRINT_EN);
|
||||
|
||||
dev_info(dev, "Initialized MT7623 IR driver, sample period = %dus\n",
|
||||
DIV_ROUND_CLOSEST(MTK_IR_SAMPLE, 1000));
|
||||
MTK_IR_SAMPLE);
|
||||
|
||||
return 0;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user