1bd4aed0eSJiong Wang // SPDX-License-Identifier: GPL-2.0 2bd4aed0eSJiong Wang // test ir decoder 3bd4aed0eSJiong Wang // 4bd4aed0eSJiong Wang // Copyright (C) 2018 Sean Young <sean@mess.org> 5bd4aed0eSJiong Wang 6bd4aed0eSJiong Wang #include <linux/bpf.h> 7bd4aed0eSJiong Wang #include <linux/lirc.h> 8*3e689141SToke Høiland-Jørgensen #include <bpf/bpf_helpers.h> 9bd4aed0eSJiong Wang 10bd4aed0eSJiong Wang SEC("lirc_mode2") bpf_decoder(unsigned int * sample)11bd4aed0eSJiong Wangint bpf_decoder(unsigned int *sample) 12bd4aed0eSJiong Wang { 13bd4aed0eSJiong Wang if (LIRC_IS_PULSE(*sample)) { 14bd4aed0eSJiong Wang unsigned int duration = LIRC_VALUE(*sample); 15bd4aed0eSJiong Wang 16bd4aed0eSJiong Wang if (duration & 0x10000) 17bd4aed0eSJiong Wang bpf_rc_keydown(sample, 0x40, duration & 0xffff, 0); 18bd4aed0eSJiong Wang if (duration & 0x20000) 19bd4aed0eSJiong Wang bpf_rc_pointer_rel(sample, (duration >> 8) & 0xff, 20bd4aed0eSJiong Wang duration & 0xff); 21bd4aed0eSJiong Wang } 22bd4aed0eSJiong Wang 23bd4aed0eSJiong Wang return 0; 24bd4aed0eSJiong Wang } 25bd4aed0eSJiong Wang 26bd4aed0eSJiong Wang char _license[] SEC("license") = "GPL"; 27