diff --git a/private/system_server.te b/private/system_server.te
index 90e8b10ed0b059de59bfcde227c8f2a8d8c8e9bb..0e1e89e9a27ba7bf1e5da6999fc0cf64c10ea824 100644
--- a/private/system_server.te
+++ b/private/system_server.te
@@ -183,6 +183,7 @@ hal_client_domain(system_server, hal_power)
 hal_client_domain(system_server, hal_sensors)
 binder_call(system_server, hal_thermal)
 hal_client_domain(system_server, hal_thermal)
+hal_client_domain(system_server, hal_tv_cec)
 hal_client_domain(system_server, hal_tv_input)
 binder_call(system_server, hal_usb)
 hal_client_domain(system_server, hal_usb)
diff --git a/public/attributes b/public/attributes
index 30dfa4bbff9ee1f120531ae9d8a89e7ec614c853..e120c8f21dccd09fc52f186eab9670836bfe82ac 100644
--- a/public/attributes
+++ b/public/attributes
@@ -228,6 +228,9 @@ attribute hal_telephony_server;
 attribute hal_thermal;
 attribute hal_thermal_client;
 attribute hal_thermal_server;
+attribute hal_tv_cec;
+attribute hal_tv_cec_client;
+attribute hal_tv_cec_server;
 attribute hal_tv_input;
 attribute hal_tv_input_client;
 attribute hal_tv_input_server;
diff --git a/public/hal_tv_cec.te b/public/hal_tv_cec.te
new file mode 100644
index 0000000000000000000000000000000000000000..aa85b926e528fe188980c98d746974348122c1ec
--- /dev/null
+++ b/public/hal_tv_cec.te
@@ -0,0 +1,3 @@
+# HwBinder IPC from clients into server, and callbacks
+binder_call(hal_tv_cec_client, hal_tv_cec_server)
+binder_call(hal_tv_cec_server, hal_tv_cec_client)
diff --git a/vendor/file_contexts b/vendor/file_contexts
index 9d1b84f0f907f7c38edd1f3aa688cd15bc7792e8..ac5d1d0d9d275c7b1e6fa96a593d235dc29171b5 100644
--- a/vendor/file_contexts
+++ b/vendor/file_contexts
@@ -25,6 +25,7 @@
 /(vendor|system/vendor)/bin/hw/android\.hardware\.sensors@1\.0-service        u:object_r:hal_sensors_default_exec:s0
 /(vendor|system/vendor)/bin/hw/rild                                           u:object_r:rild_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.thermal@1\.0-service        u:object_r:hal_thermal_default_exec:s0
+/(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.cec@1\.0-service        u:object_r:hal_tv_cec_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.tv\.input@1\.0-service      u:object_r:hal_tv_input_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.usb@1\.0-service            u:object_r:hal_usb_default_exec:s0
 /(vendor|system/vendor)/bin/hw/android\.hardware\.vibrator@1\.0-service       u:object_r:hal_vibrator_default_exec:s0
diff --git a/vendor/hal_tv_cec_default.te b/vendor/hal_tv_cec_default.te
new file mode 100644
index 0000000000000000000000000000000000000000..cf071e6270fa1e20a38a55d7df470bbdf7b0f1b2
--- /dev/null
+++ b/vendor/hal_tv_cec_default.te
@@ -0,0 +1,5 @@
+type hal_tv_cec_default, domain;
+hal_server_domain(hal_tv_cec_default, hal_tv_cec)
+
+type hal_tv_cec_default_exec, exec_type, file_type;
+init_daemon_domain(hal_tv_cec_default)