The JVC timings included timings intended for the secondary decoder (which matches messages with no leader), however they were in the wrong part of the timings structure, repeating s00 and s01 rather than being in s10 and s11. Distinct repeat timings can't be properly supported yet for JVC anyway since the scancode callback cannot determine which decoder matched the message, so for now remove these timings and don't bother to enable the secondary decoder. This fixes the following warnings with W=1: drivers/media/rc/img-ir/img-ir-jvc.c +76 :3: warning: initialized field overwritten [-Woverride-init] drivers/media/rc/img-ir/img-ir-jvc.c +76 :3: warning: (near initialization for ‘img_ir_jvc.timings.s00’) [-Woverride-init] drivers/media/rc/img-ir/img-ir-jvc.c +81 :3: warning: initialized field overwritten [-Woverride-init] drivers/media/rc/img-ir/img-ir-jvc.c +81 :3: warning: (near initialization for ‘img_ir_jvc.timings.s01’) [-Woverride-init] Reported-by: Mauro Carvalho Chehab <m.chehab@samsung.com> Signed-off-by: James Hogan <james.hogan@imgtec.com> Signed-off-by: Mauro Carvalho Chehab <m.chehab@samsung.com>
82 lines
1.7 KiB
C
82 lines
1.7 KiB
C
/*
|
|
* ImgTec IR Decoder setup for JVC protocol.
|
|
*
|
|
* Copyright 2012-2014 Imagination Technologies Ltd.
|
|
*/
|
|
|
|
#include "img-ir-hw.h"
|
|
|
|
/* Convert JVC data to a scancode */
|
|
static int img_ir_jvc_scancode(int len, u64 raw, int *scancode, u64 protocols)
|
|
{
|
|
unsigned int cust, data;
|
|
|
|
if (len != 16)
|
|
return -EINVAL;
|
|
|
|
cust = (raw >> 0) & 0xff;
|
|
data = (raw >> 8) & 0xff;
|
|
|
|
*scancode = cust << 8 | data;
|
|
return IMG_IR_SCANCODE;
|
|
}
|
|
|
|
/* Convert JVC scancode to JVC data filter */
|
|
static int img_ir_jvc_filter(const struct rc_scancode_filter *in,
|
|
struct img_ir_filter *out, u64 protocols)
|
|
{
|
|
unsigned int cust, data;
|
|
unsigned int cust_m, data_m;
|
|
|
|
cust = (in->data >> 8) & 0xff;
|
|
cust_m = (in->mask >> 8) & 0xff;
|
|
data = (in->data >> 0) & 0xff;
|
|
data_m = (in->mask >> 0) & 0xff;
|
|
|
|
out->data = cust | data << 8;
|
|
out->mask = cust_m | data_m << 8;
|
|
|
|
return 0;
|
|
}
|
|
|
|
/*
|
|
* JVC decoder
|
|
* See also http://www.sbprojects.com/knowledge/ir/jvc.php
|
|
* http://support.jvc.com/consumer/support/documents/RemoteCodes.pdf
|
|
*/
|
|
struct img_ir_decoder img_ir_jvc = {
|
|
.type = RC_BIT_JVC,
|
|
.control = {
|
|
.decoden = 1,
|
|
.code_type = IMG_IR_CODETYPE_PULSEDIST,
|
|
},
|
|
/* main timings */
|
|
.unit = 527500, /* 527.5 us */
|
|
.timings = {
|
|
/* leader symbol */
|
|
.ldr = {
|
|
.pulse = { 16 /* 8.44 ms */ },
|
|
.space = { 8 /* 4.22 ms */ },
|
|
},
|
|
/* 0 symbol */
|
|
.s00 = {
|
|
.pulse = { 1 /* 527.5 us +-60 us */ },
|
|
.space = { 1 /* 527.5 us */ },
|
|
},
|
|
/* 1 symbol */
|
|
.s01 = {
|
|
.pulse = { 1 /* 527.5 us +-60 us */ },
|
|
.space = { 3 /* 1.5825 ms +-40 us */ },
|
|
},
|
|
/* free time */
|
|
.ft = {
|
|
.minlen = 16,
|
|
.maxlen = 16,
|
|
.ft_min = 10, /* 5.275 ms */
|
|
},
|
|
},
|
|
/* scancode logic */
|
|
.scancode = img_ir_jvc_scancode,
|
|
.filter = img_ir_jvc_filter,
|
|
};
|