aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHans Verkuil <hverkuil-cisco@xs4all.nl>2021-01-06 10:15:54 +0100
committerHans Verkuil <hverkuil-cisco@xs4all.nl>2021-01-06 10:15:54 +0100
commitf4316861d164a4fbd097eaf703e862835f396486 (patch)
treeb7ac8734e35c61f6ee6c82204ed0f63e356ab981
parent3f5d1603a743c45b0592e7d4d1c5aec84df33767 (diff)
v4l-utils: sync with latest media_tree master repo
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
-rw-r--r--contrib/freebsd/include/linux/videodev2.h14
-rw-r--r--include/linux/bpf.h109
-rw-r--r--include/linux/media-bus-format.h3
-rw-r--r--include/linux/videodev2.h14
-rw-r--r--utils/keytable/rc_keymaps/khamsin.toml34
-rw-r--r--utils/keytable/rc_keymaps/pine64.toml30
-rw-r--r--utils/keytable/rc_keymaps/samsung_ak59_00125a.toml69
-rw-r--r--utils/keytable/rc_maps.cfg1
8 files changed, 252 insertions, 22 deletions
diff --git a/contrib/freebsd/include/linux/videodev2.h b/contrib/freebsd/include/linux/videodev2.h
index 9f3ef6f8..a4f6d627 100644
--- a/contrib/freebsd/include/linux/videodev2.h
+++ b/contrib/freebsd/include/linux/videodev2.h
@@ -543,7 +543,7 @@ struct v4l2_pix_format {
/* Pixel format FOURCC depth Description */
-/* RGB formats */
+/* RGB formats (1 or 2 bytes per pixel) */
#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
@@ -552,12 +552,6 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */
-
-/*
- * Originally this had 'BA12' as fourcc, but this clashed with the older
- * V4L2_PIX_FMT_SGRBG12 which inexplicably used that same fourcc.
- * So use 'GA12' instead for V4L2_PIX_FMT_BGRA444.
- */
#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
@@ -574,6 +568,8 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */
#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
+
+/* RGB formats (3 or 4 bytes per pixel) */
#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
@@ -623,8 +619,6 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
-#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
-#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
/* two planes -- one Y, one Cr + Cb interleaved */
@@ -634,6 +628,7 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
+#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
@@ -767,6 +762,7 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
+#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
diff --git a/include/linux/bpf.h b/include/linux/bpf.h
index eb407382..bd28bc76 100644
--- a/include/linux/bpf.h
+++ b/include/linux/bpf.h
@@ -157,6 +157,7 @@ enum bpf_map_type {
BPF_MAP_TYPE_STRUCT_OPS,
BPF_MAP_TYPE_RINGBUF,
BPF_MAP_TYPE_INODE_STORAGE,
+ BPF_MAP_TYPE_TASK_STORAGE,
};
/* Note that tracing related programs such as
@@ -556,7 +557,12 @@ union bpf_attr {
__aligned_u64 line_info; /* line info */
__u32 line_info_cnt; /* number of bpf_line_info records */
__u32 attach_btf_id; /* in-kernel BTF type id to attach to */
- __u32 attach_prog_fd; /* 0 to attach to vmlinux */
+ union {
+ /* valid prog_fd to attach to bpf prog */
+ __u32 attach_prog_fd;
+ /* or valid module BTF object fd or 0 to attach to vmlinux */
+ __u32 attach_btf_obj_fd;
+ };
};
struct { /* anonymous struct used by BPF_OBJ_* commands */
@@ -3742,6 +3748,88 @@ union bpf_attr {
* Return
* The helper returns **TC_ACT_REDIRECT** on success or
* **TC_ACT_SHOT** on error.
+ *
+ * void *bpf_task_storage_get(struct bpf_map *map, struct task_struct *task, void *value, u64 flags)
+ * Description
+ * Get a bpf_local_storage from the *task*.
+ *
+ * Logically, it could be thought of as getting the value from
+ * a *map* with *task* as the **key**. From this
+ * perspective, the usage is not much different from
+ * **bpf_map_lookup_elem**\ (*map*, **&**\ *task*) except this
+ * helper enforces the key must be an task_struct and the map must also
+ * be a **BPF_MAP_TYPE_TASK_STORAGE**.
+ *
+ * Underneath, the value is stored locally at *task* instead of
+ * the *map*. The *map* is used as the bpf-local-storage
+ * "type". The bpf-local-storage "type" (i.e. the *map*) is
+ * searched against all bpf_local_storage residing at *task*.
+ *
+ * An optional *flags* (**BPF_LOCAL_STORAGE_GET_F_CREATE**) can be
+ * used such that a new bpf_local_storage will be
+ * created if one does not exist. *value* can be used
+ * together with **BPF_LOCAL_STORAGE_GET_F_CREATE** to specify
+ * the initial value of a bpf_local_storage. If *value* is
+ * **NULL**, the new bpf_local_storage will be zero initialized.
+ * Return
+ * A bpf_local_storage pointer is returned on success.
+ *
+ * **NULL** if not found or there was an error in adding
+ * a new bpf_local_storage.
+ *
+ * long bpf_task_storage_delete(struct bpf_map *map, struct task_struct *task)
+ * Description
+ * Delete a bpf_local_storage from a *task*.
+ * Return
+ * 0 on success.
+ *
+ * **-ENOENT** if the bpf_local_storage cannot be found.
+ *
+ * struct task_struct *bpf_get_current_task_btf(void)
+ * Description
+ * Return a BTF pointer to the "current" task.
+ * This pointer can also be used in helpers that accept an
+ * *ARG_PTR_TO_BTF_ID* of type *task_struct*.
+ * Return
+ * Pointer to the current task.
+ *
+ * long bpf_bprm_opts_set(struct linux_binprm *bprm, u64 flags)
+ * Description
+ * Set or clear certain options on *bprm*:
+ *
+ * **BPF_F_BPRM_SECUREEXEC** Set the secureexec bit
+ * which sets the **AT_SECURE** auxv for glibc. The bit
+ * is cleared if the flag is not specified.
+ * Return
+ * **-EINVAL** if invalid *flags* are passed, zero otherwise.
+ *
+ * u64 bpf_ktime_get_coarse_ns(void)
+ * Description
+ * Return a coarse-grained version of the time elapsed since
+ * system boot, in nanoseconds. Does not include time the system
+ * was suspended.
+ *
+ * See: **clock_gettime**\ (**CLOCK_MONOTONIC_COARSE**)
+ * Return
+ * Current *ktime*.
+ *
+ * long bpf_ima_inode_hash(struct inode *inode, void *dst, u32 size)
+ * Description
+ * Returns the stored IMA hash of the *inode* (if it's avaialable).
+ * If the hash is larger than *size*, then only *size*
+ * bytes will be copied to *dst*
+ * Return
+ * The **hash_algo** is returned on success,
+ * **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
+ * invalid arguments are passed.
+ *
+ * struct socket *bpf_sock_from_file(struct file *file)
+ * Description
+ * If the given file represents a socket, returns the associated
+ * socket.
+ * Return
+ * A pointer to a struct socket on success or NULL if the file is
+ * not a socket.
*/
#define __BPF_FUNC_MAPPER(FN) \
FN(unspec), \
@@ -3897,9 +3985,16 @@ union bpf_attr {
FN(seq_printf_btf), \
FN(skb_cgroup_classid), \
FN(redirect_neigh), \
- FN(bpf_per_cpu_ptr), \
- FN(bpf_this_cpu_ptr), \
+ FN(per_cpu_ptr), \
+ FN(this_cpu_ptr), \
FN(redirect_peer), \
+ FN(task_storage_get), \
+ FN(task_storage_delete), \
+ FN(get_current_task_btf), \
+ FN(bprm_opts_set), \
+ FN(ktime_get_coarse_ns), \
+ FN(ima_inode_hash), \
+ FN(sock_from_file), \
/* */
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
@@ -4071,6 +4166,11 @@ enum bpf_lwt_encap_mode {
BPF_LWT_ENCAP_IP,
};
+/* Flags for bpf_bprm_opts_set helper */
+enum {
+ BPF_F_BPRM_SECUREEXEC = (1ULL << 0),
+};
+
#define __bpf_md_ptr(type, name) \
union { \
type name; \
@@ -4418,6 +4518,9 @@ struct bpf_btf_info {
__aligned_u64 btf;
__u32 btf_size;
__u32 id;
+ __aligned_u64 name;
+ __u32 name_len;
+ __u32 kernel_btf;
} __attribute__((aligned(8)));
struct bpf_link_info {
diff --git a/include/linux/media-bus-format.h b/include/linux/media-bus-format.h
index 2ce3d891..0dfc11ee 100644
--- a/include/linux/media-bus-format.h
+++ b/include/linux/media-bus-format.h
@@ -34,7 +34,7 @@
#define MEDIA_BUS_FMT_FIXED 0x0001
-/* RGB - next is 0x101d */
+/* RGB - next is 0x101e */
#define MEDIA_BUS_FMT_RGB444_1X12 0x1016
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
@@ -56,6 +56,7 @@
#define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
#define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c
#define MEDIA_BUS_FMT_RGB888_3X8 0x101c
+#define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
#define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
#define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
#define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h
index 6e14ef7a..31d1747e 100644
--- a/include/linux/videodev2.h
+++ b/include/linux/videodev2.h
@@ -509,7 +509,7 @@ struct v4l2_pix_format {
/* Pixel format FOURCC depth Description */
-/* RGB formats */
+/* RGB formats (1 or 2 bytes per pixel) */
#define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
@@ -518,12 +518,6 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */
-
-/*
- * Originally this had 'BA12' as fourcc, but this clashed with the older
- * V4L2_PIX_FMT_SGRBG12 which inexplicably used that same fourcc.
- * So use 'GA12' instead for V4L2_PIX_FMT_BGRA444.
- */
#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('G', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
@@ -540,6 +534,8 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
#define V4L2_PIX_FMT_XRGB555X v4l2_fourcc_be('X', 'R', '1', '5') /* 16 XRGB-5-5-5 BE */
#define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
+
+/* RGB formats (3 or 4 bytes per pixel) */
#define V4L2_PIX_FMT_BGR666 v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
#define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
#define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
@@ -589,8 +585,6 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V') /* 32 XYUV-8-8-8-8 */
#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A') /* 32 VUYA-8-8-8-8 */
#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X') /* 32 VUYX-8-8-8-8 */
-#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
-#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
#define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
/* two planes -- one Y, one Cr + Cb interleaved */
@@ -600,6 +594,7 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
#define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
#define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
+#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
/* two non contiguous planes - one Y, one Cr + Cb interleaved */
#define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
@@ -733,6 +728,7 @@ struct v4l2_pix_format {
#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I') /* Intel Planar Greyscale 10-bit and Depth 16-bit */
#define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2') /* Sunxi Tiled NV12 Format */
#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4') /* Intel 4-bit packed depth confidence information */
+#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* BTTV 8-bit dithered RGB */
/* 10bit raw bayer packed, 32 bytes for every 25 pixels, last LSB 6 bits unused */
#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b') /* IPU3 packed 10-bit BGGR bayer */
diff --git a/utils/keytable/rc_keymaps/khamsin.toml b/utils/keytable/rc_keymaps/khamsin.toml
new file mode 100644
index 00000000..0eb77fa3
--- /dev/null
+++ b/utils/keytable/rc_keymaps/khamsin.toml
@@ -0,0 +1,34 @@
+[[protocols]]
+name = "khamsin"
+protocol = "nec"
+variant = "necx"
+[protocols.scancodes]
+0x70702 = "KEY_POWER"
+0x70701 = "KEY_VIDEO"
+0x7076c = "KEY_RED"
+0x70714 = "KEY_GREEN"
+0x70715 = "KEY_YELLOW"
+0x70716 = "KEY_BLUE"
+0x7071a = "KEY_MENU"
+0x7074f = "KEY_EPG"
+0x70760 = "KEY_UP"
+0x70761 = "KEY_DOWN"
+0x70765 = "KEY_LEFT"
+0x70762 = "KEY_RIGHT"
+0x70768 = "KEY_ENTER"
+0x7072d = "KEY_ESC"
+0x70707 = "KEY_VOLUMEUP"
+0x7070b = "KEY_VOLUMEDOWN"
+0x7070f = "KEY_MUTE"
+0x70712 = "KEY_CHANNELUP"
+0x70710 = "KEY_CHANNELDOWN"
+0x70704 = "KEY_1"
+0x70705 = "KEY_2"
+0x70706 = "KEY_3"
+0x70708 = "KEY_4"
+0x70709 = "KEY_5"
+0x7070a = "KEY_6"
+0x7070c = "KEY_7"
+0x7070d = "KEY_8"
+0x7070e = "KEY_9"
+0x70711 = "KEY_0"
diff --git a/utils/keytable/rc_keymaps/pine64.toml b/utils/keytable/rc_keymaps/pine64.toml
new file mode 100644
index 00000000..37616901
--- /dev/null
+++ b/utils/keytable/rc_keymaps/pine64.toml
@@ -0,0 +1,30 @@
+[[protocols]]
+name = "pine64"
+protocol = "nec"
+variant = "necx"
+[protocols.scancodes]
+0x40404d = "KEY_POWER"
+0x40401f = "KEY_WWW"
+0x40400a = "KEY_MUTE"
+0x404017 = "KEY_VOLUMEDOWN"
+0x404018 = "KEY_VOLUMEUP"
+0x404010 = "KEY_LEFT"
+0x404011 = "KEY_RIGHT"
+0x40400b = "KEY_UP"
+0x40400e = "KEY_DOWN"
+0x40400d = "KEY_OK"
+0x40401d = "KEY_MENU"
+0x40401a = "KEY_HOME"
+0x404045 = "KEY_BACK"
+0x404001 = "KEY_NUMERIC_1"
+0x404002 = "KEY_NUMERIC_2"
+0x404003 = "KEY_NUMERIC_3"
+0x404004 = "KEY_NUMERIC_4"
+0x404005 = "KEY_NUMERIC_5"
+0x404006 = "KEY_NUMERIC_6"
+0x404007 = "KEY_NUMERIC_7"
+0x404008 = "KEY_NUMERIC_8"
+0x404009 = "KEY_NUMERIC_9"
+0x40400c = "KEY_BACKSPACE"
+0x404000 = "KEY_NUMERIC_0"
+0x404047 = "KEY_EPG"
diff --git a/utils/keytable/rc_keymaps/samsung_ak59_00125a.toml b/utils/keytable/rc_keymaps/samsung_ak59_00125a.toml
new file mode 100644
index 00000000..488c6237
--- /dev/null
+++ b/utils/keytable/rc_keymaps/samsung_ak59_00125a.toml
@@ -0,0 +1,69 @@
+[[protocols]]
+name = 'Samsung AK59-00125A'
+protocol = 'pulse_distance'
+header_pulse = 4500
+header_space = 4500
+bit_pulse = 600
+bit_0_space = 500
+bit_1_space = 1600
+bits = 32
+margin = 300
+trailer_pulse = 600
+[protocols.scancodes]
+0xe0e040bf = "KEY_POWER2"
+# input
+0xe0e0807f = "KEY_VIDEO"
+0xe0e0e01f = "KEY_VOLUMEUP"
+0xe0e0d02f = "KEY_VOLUMEDOWN"
+0xe0e0f00f = "KEY_MUTE"
+0xe0e048b7 = "KEY_CHANNELUP"
+0xe0e008f7 = "KEY_CHANNELDOWN"
+[[protocols]]
+protocol = 'samsung36'
+[protocols.scancodes]
+0x400e00ff = "KEY_POWER"
+# bonus view
+0x400ecc33 = "KEY_VENDOR"
+0x400e807f = "KEY_EJECTCD"
+0x400e40bf = "KEY_NUMERIC_1"
+0x400ec03f = "KEY_NUMERIC_2"
+0x400e20df = "KEY_NUMERIC_3"
+0x400ea05f = "KEY_NUMERIC_4"
+0x400e609f = "KEY_NUMERIC_5"
+0x400ee01f = "KEY_NUMERIC_6"
+0x400e10ef = "KEY_NUMERIC_7"
+0x400e906f = "KEY_NUMERIC_8"
+0x400e50af = "KEY_NUMERIC_9"
+0x400ed02f = "KEY_NUMERIC_0"
+0x400ea45b = "KEY_AUDIO"
+0x400e649b = "KEY_SUBTITLE"
+0x400eb04f = "KEY_PREVIOUS"
+0x400e8877 = "KEY_NEXT"
+0x400e48b7 = "KEY_FASTREVERSE"
+0x400ea857 = "KEY_FASTFORWARD"
+0x400ec837 = "KEY_STOP"
+0x400e28d7 = "KEY_PLAY"
+0x400e4cb3 = "KEY_PAUSE"
+# disc menu
+0x400eb847 = "KEY_ROOT_MENU"
+0x400e6897 = "KEY_MENU"
+# title menu/popup
+0x400e04fb = "KEY_TITLE"
+# tools
+0x400e5ca3 = "KEY_CONFIG"
+0x400e7887 = "KEY_INFO"
+0x400e18e7 = "KEY_UP"
+0x400ed827 = "KEY_LEFT"
+0x400e58a7 = "KEY_RIGHT"
+0x400e9867 = "KEY_DOWN"
+0x400e38c7 = "KEY_ENTER"
+0x400ee817 = "KEY_ESC"
+0x400ed42b = "KEY_EXIT"
+0x400e847b = "KEY_RED"
+0x400e44bb = "KEY_GREEN"
+0x400ec43b = "KEY_YELLOW"
+0x400e24db = "KEY_BLUE"
+# smart/hub
+0x400e1ce3 = "KEY_VENDOR"
+0x400ebc43 = "KEY_SEARCH"
+0x400ee41b = "KEY_MEDIA_REPEAT"
diff --git a/utils/keytable/rc_maps.cfg b/utils/keytable/rc_maps.cfg
index 39a347ac..4e45af26 100644
--- a/utils/keytable/rc_maps.cfg
+++ b/utils/keytable/rc_maps.cfg
@@ -112,6 +112,7 @@
* rc-npgtech npgtech.toml
* rc-odroid odroid.toml
* rc-pctv-sedna pctv_sedna.toml
+* rc-pine64 pine64.toml
* rc-pinnacle-color pinnacle_color.toml
* rc-pinnacle-grey pinnacle_grey.toml
* rc-pinnacle-pctv-hd pinnacle_pctv_hd.toml

Privacy Policy