1
2
3
4
5
6
7
8
9
10
11
12#include "img-ir-hw.h"
13
14
15static int img_ir_jvc_scancode(int len, u64 raw, u64 enabled_protocols,
16 struct img_ir_scancode_req *request)
17{
18 unsigned int cust, data;
19
20 if (len != 16)
21 return -EINVAL;
22
23 cust = (raw >> 0) & 0xff;
24 data = (raw >> 8) & 0xff;
25
26 request->protocol = RC_TYPE_JVC;
27 request->scancode = cust << 8 | data;
28 return IMG_IR_SCANCODE;
29}
30
31
32static int img_ir_jvc_filter(const struct rc_scancode_filter *in,
33 struct img_ir_filter *out, u64 protocols)
34{
35 unsigned int cust, data;
36 unsigned int cust_m, data_m;
37
38 cust = (in->data >> 8) & 0xff;
39 cust_m = (in->mask >> 8) & 0xff;
40 data = (in->data >> 0) & 0xff;
41 data_m = (in->mask >> 0) & 0xff;
42
43 out->data = cust | data << 8;
44 out->mask = cust_m | data_m << 8;
45
46 return 0;
47}
48
49
50
51
52
53
54struct img_ir_decoder img_ir_jvc = {
55 .type = RC_BIT_JVC,
56 .control = {
57 .decoden = 1,
58 .code_type = IMG_IR_CODETYPE_PULSEDIST,
59 },
60
61 .unit = 527500,
62 .timings = {
63
64 .ldr = {
65 .pulse = { 16 },
66 .space = { 8 },
67 },
68
69 .s00 = {
70 .pulse = { 1 },
71 .space = { 1 },
72 },
73
74 .s01 = {
75 .pulse = { 1 },
76 .space = { 3 },
77 },
78
79 .ft = {
80 .minlen = 16,
81 .maxlen = 16,
82 .ft_min = 10,
83 },
84 },
85
86 .scancode = img_ir_jvc_scancode,
87 .filter = img_ir_jvc_filter,
88};
89