vendor_modprobe.sh 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #! /vendor/bin/sh
  2. #=============================================================================
  3. # Copyright (c) 2019-2022 Qualcomm Technologies, Inc.
  4. # All Rights Reserved.
  5. # Confidential and Proprietary - Qualcomm Technologies, Inc.
  6. #=============================================================================
  7. VENDOR_DIR="/vendor/lib/modules"
  8. VENDOR_DLKM_DIR="/vendor_dlkm/lib/modules"
  9. MODPROBE="/vendor/bin/modprobe"
  10. # vendor modules partition could be /vendor/lib/modules or /vendor_dlkm/lib/modules
  11. POSSIBLE_DIRS="${VENDOR_DLKM_DIR} ${VENDOR_DIR}"
  12. audio_arch=`getprop ro.boot.audio`
  13. for dir in ${POSSIBLE_DIRS} ;
  14. do
  15. if [ ! -e ${dir}/modules.load ]; then
  16. continue
  17. fi
  18. if [ "$audio_arch" == "audioreach" ]; then
  19. if [ -e ${dir}/modules.audio.ar.blocklist ]; then
  20. audio_blocklist_expr="$(sed -n -e 's/blocklist \(.*\)/\1/p' ${dir}/modules.audio.ar.blocklist | sed -e 's/-/_/g' -e 's/^/-e /')"
  21. else
  22. audio_blocklist_expr="-e %"
  23. fi
  24. else
  25. if [ -e ${dir}/modules.audio.legacy.blocklist ]; then
  26. audio_blocklist_expr="$(sed -n -e 's/blocklist \(.*\)/\1/p' ${dir}/modules.audio.legacy.blocklist | sed -e 's/-/_/g' -e 's/^/-e /')"
  27. else
  28. audio_blocklist_expr="-e %"
  29. fi
  30. fi
  31. if [ -e ${dir}/modules.blocklist ]; then
  32. blocklist_expr="$(sed -n -e 's/blocklist \(.*\)/\1/p' ${dir}/modules.blocklist | sed -e 's/-/_/g' -e 's/^/-e /')"
  33. else
  34. # Use pattern that won't be found in modules list so that all modules pass through grep below
  35. blocklist_expr="-e %"
  36. fi
  37. # Filter out modules in blocklist - we would see unnecessary errors otherwise
  38. load_modules=$(sed = ${dir}/modules.load | sed 'N;s/\n/\t/' | sort -uk2 | sort -nk1 | cut -f2- | grep -w -v ${blocklist_expr} | grep -w -v ${audio_blocklist_expr})
  39. first_module=$(echo ${load_modules} | cut -d " " -f1)
  40. other_modules=$(echo ${load_modules} | cut -d " " -f2-)
  41. if ! ${MODPROBE} -b -s -d ${dir} -a ${first_module} > /dev/null ; then
  42. continue
  43. fi
  44. # load modules individually in case one of them fails to init
  45. for module in ${other_modules}; do
  46. ( ${MODPROBE} -b -d ${dir} -a ${module} > /dev/null ) &
  47. done
  48. wait
  49. setprop vendor.all.modules.ready 1
  50. exit 0
  51. done
  52. exit 1