0001
0002
0003
0004
0005
0006
0007
0008 #include "img-ir-hw.h"
0009
0010
0011 static int img_ir_jvc_scancode(int len, u64 raw, u64 enabled_protocols,
0012 struct img_ir_scancode_req *request)
0013 {
0014 unsigned int cust, data;
0015
0016 if (len != 16)
0017 return -EINVAL;
0018
0019 cust = (raw >> 0) & 0xff;
0020 data = (raw >> 8) & 0xff;
0021
0022 request->protocol = RC_PROTO_JVC;
0023 request->scancode = cust << 8 | data;
0024 return IMG_IR_SCANCODE;
0025 }
0026
0027
0028 static int img_ir_jvc_filter(const struct rc_scancode_filter *in,
0029 struct img_ir_filter *out, u64 protocols)
0030 {
0031 unsigned int cust, data;
0032 unsigned int cust_m, data_m;
0033
0034 cust = (in->data >> 8) & 0xff;
0035 cust_m = (in->mask >> 8) & 0xff;
0036 data = (in->data >> 0) & 0xff;
0037 data_m = (in->mask >> 0) & 0xff;
0038
0039 out->data = cust | data << 8;
0040 out->mask = cust_m | data_m << 8;
0041
0042 return 0;
0043 }
0044
0045
0046
0047
0048
0049
0050 struct img_ir_decoder img_ir_jvc = {
0051 .type = RC_PROTO_BIT_JVC,
0052 .control = {
0053 .decoden = 1,
0054 .code_type = IMG_IR_CODETYPE_PULSEDIST,
0055 },
0056
0057 .unit = 527500,
0058 .timings = {
0059
0060 .ldr = {
0061 .pulse = { 16 },
0062 .space = { 8 },
0063 },
0064
0065 .s00 = {
0066 .pulse = { 1 },
0067 .space = { 1 },
0068 },
0069
0070 .s01 = {
0071 .pulse = { 1 },
0072 .space = { 3 },
0073 },
0074
0075 .ft = {
0076 .minlen = 16,
0077 .maxlen = 16,
0078 .ft_min = 10,
0079 },
0080 },
0081
0082 .scancode = img_ir_jvc_scancode,
0083 .filter = img_ir_jvc_filter,
0084 };