1.system/etc/mixer_paths_qrd_sku2.xm来源及hal采用哪个目录
hardware\qcom\audio\hal目录下只看到msm8916、msm8960、msm8974,没有看到8937,那用哪个呢?看hardware\qcom\audio\hal\Android.mk有相关说明:
- ifneq ($(filter msm8916 msm8909 msm8952 msm8937 thorium msm8953 msmgold msmfalcon,$(TARGET_BOARD_PLATFORM)),)
- AUDIO_PLATFORM = msm8916
- MULTIPLE_HW_VARIANTS_ENABLED := true
- LOCAL_CFLAGS := -DPLATFORM_MSM8916
- ifneq ($(filter msm8909,$(TARGET_BOARD_PLATFORM)),)
- LOCAL_CFLAGS := -DPLATFORM_MSM8909
- endif
- ifneq ($(filter msmfalcon,$(TARGET_BOARD_PLATFORM)),)
- LOCAL_CFLAGS := -DPLATFORM_MSMFALCON
- endif
- endif
上面粗体部分,意思是说只要$(TARGET_BOARD_PLATFORM)包含有msm8916 msm8909 msm8952 msm8937 thorium msm8953 msmgold msmfalcon种的一个或是多个,则就不为空,ifneq()则为真,然后再根据是否为msm8909,如果是就用8909目录的,如果不是就用8916的。所以我们8937用的就是8916的目录
接着看hardware\qcom\audio\hal\msm8916\platform.c的query_platform()有相关部分:
- #define MIXER_XML_PATH_SKU2 "/system/etc/mixer_paths_qrd_sku2.xml"
- ...
- else if (!strncmp(snd_card_name, "msm8952-sku2-snd-card",
- sizeof("msm8952-sku2-snd-card"))) {
- strlcpy(mixer_xml_path, MIXER_XML_PATH_SKU2,
- sizeof(MIXER_XML_PATH_SKU2));
- msm_device_to_be_id = msm_device_to_be_id_internal_codec;
- msm_be_id_array_len =
- sizeof(msm_device_to_be_id_internal_codec) / sizeof(msm_device_to_be_id_internal_codec[0]);
- }
另外kernel\msm-3.18\arch\arm\boot\dts\qcom\msm8937-audio.dtsi音频相关部分:
- &int_codec {
- status = "okay";
- qcom,model = "msm8952-sku2-snd-card";
- ...
- }
可知用的是msm8952-sku2-snd-card,所以mixer_xml_path赋值为MIXER_XML_PATH_SKU2 ,也就是"/system/etc/mixer_paths_qrd_sku2.xml",此文件源头在于hardware\qcom\audio\configs\msm8937\mixer_paths_qrd_sku2.xml