From 87e473d8ffef4a4639be16435f73a8895b9737b8 Mon Sep 17 00:00:00 2001 From: Konsta Date: Tue, 1 Apr 2025 02:07:56 +0300 Subject: [PATCH] audio: use vendor properties --- audio/audio_hw.c | 8 ++++---- audio/audio_hw_hdmi.c | 2 +- sepolicy/hal_audio_default.te | 1 + sepolicy/property.te | 1 + sepolicy/property_contexts | 7 +++++++ sepolicy/vendor_init.te | 1 + vendor.prop | 6 +++--- 7 files changed, 18 insertions(+), 8 deletions(-) create mode 100644 sepolicy/hal_audio_default.te create mode 100644 sepolicy/vendor_init.te diff --git a/audio/audio_hw.c b/audio/audio_hw.c index a62f8fb..49ff8d9 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -93,7 +93,7 @@ static int probe_pcm_out_card() { char card_id[16]; char card_prop[PROPERTY_VALUE_MAX]; - property_get("persist.audio.device", card_prop, ""); + property_get("persist.vendor.audio.device", card_prop, ""); for (int i = 0; i < 5; i++) { snprintf(card_node, sizeof(card_node), "/proc/asound/card%d/id", i); @@ -121,18 +121,18 @@ static int probe_pcm_out_card() { static int get_pcm_card() { char card[PROPERTY_VALUE_MAX]; - property_get("persist.audio.pcm.card.auto", card, "false"); + property_get("persist.vendor.audio.pcm.card.auto", card, "false"); if (!strcmp(card, "true")) return probe_pcm_out_card(); - property_get("persist.audio.pcm.card", card, "0"); + property_get("persist.vendor.audio.pcm.card", card, "0"); return atoi(card); } static int get_pcm_device() { char device[PROPERTY_VALUE_MAX]; - property_get("persist.audio.pcm.device", device, "0"); + property_get("persist.vendor.audio.pcm.device", device, "0"); return atoi(device); } diff --git a/audio/audio_hw_hdmi.c b/audio/audio_hw_hdmi.c index 573c01a..5c572d4 100644 --- a/audio/audio_hw_hdmi.c +++ b/audio/audio_hw_hdmi.c @@ -89,7 +89,7 @@ struct alsa_stream_out { static void get_alsa_device_name(char *name) { char hdmi_device[PROPERTY_VALUE_MAX]; - property_get("persist.audio.hdmi.device", hdmi_device, "vc4hdmi0"); + property_get("persist.vendor.audio.hdmi.device", hdmi_device, "vc4hdmi0"); // use card configured in vc4-hdmi.conf to get IEC958 subframe conversion sprintf(name, "default:CARD=%s", hdmi_device); diff --git a/sepolicy/hal_audio_default.te b/sepolicy/hal_audio_default.te new file mode 100644 index 0000000..e9f5c72 --- /dev/null +++ b/sepolicy/hal_audio_default.te @@ -0,0 +1 @@ +get_prop(hal_audio_default, vendor_audio_config_prop) diff --git a/sepolicy/property.te b/sepolicy/property.te index 95b3006..e810707 100644 --- a/sepolicy/property.te +++ b/sepolicy/property.te @@ -1 +1,2 @@ +vendor_internal_prop(vendor_audio_config_prop) vendor_internal_prop(vendor_hdmi_config_prop) diff --git a/sepolicy/property_contexts b/sepolicy/property_contexts index 08ea9af..2f1221e 100644 --- a/sepolicy/property_contexts +++ b/sepolicy/property_contexts @@ -1,2 +1,9 @@ +# Audio +persist.vendor.audio.device u:object_r:vendor_audio_config_prop:s0 +persist.vendor.audio.hdmi.device u:object_r:vendor_audio_config_prop:s0 +persist.vendor.audio.pcm.card.auto u:object_r:vendor_audio_config_prop:s0 +persist.vendor.audio.pcm.card u:object_r:vendor_audio_config_prop:s0 +persist.vendor.audio.pcm.device u:object_r:vendor_audio_config_prop:s0 + # CEC persist.vendor.hdmi.cec_device u:object_r:vendor_hdmi_config_prop:s0 diff --git a/sepolicy/vendor_init.te b/sepolicy/vendor_init.te new file mode 100644 index 0000000..9758d84 --- /dev/null +++ b/sepolicy/vendor_init.te @@ -0,0 +1 @@ +set_prop(vendor_init, vendor_audio_config_prop) diff --git a/vendor.prop b/vendor.prop index a3804b8..24042d3 100644 --- a/vendor.prop +++ b/vendor.prop @@ -1,7 +1,7 @@ # Audio -persist.audio.device=dac -persist.audio.hdmi.device=vc4hdmi0 -persist.audio.pcm.card.auto=true +persist.vendor.audio.device=dac +persist.vendor.audio.hdmi.device=vc4hdmi0 +persist.vendor.audio.pcm.card.auto=true ro.config.media_vol_default=20 ro.config.media_vol_steps=25 ro.hardware.audio.primary=rpi_hdmi