11-ath10k-caldata 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. #!/bin/sh
  2. ath10kcal_die() {
  3. echo "ath10cal: " "$*"
  4. exit 1
  5. }
  6. ath10kcal_from_file() {
  7. local source=$1
  8. local offset=$2
  9. local count=$3
  10. dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
  11. ath10kcal_die "failed to extract calibration data from $source"
  12. }
  13. ath10kcal_extract() {
  14. local part=$1
  15. local offset=$2
  16. local count=$3
  17. local mtd
  18. mtd=$(find_mtd_chardev $part)
  19. [ -n "$mtd" ] || \
  20. ath10kcal_die "no mtd device found for partition $part"
  21. dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
  22. ath10kcal_die "failed to extract calibration data from $mtd"
  23. }
  24. ath10kcal_patch_mac() {
  25. local mac=$1
  26. [ -z "$mac" ] && return
  27. macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
  28. }
  29. [ -e /lib/firmware/$FIRMWARE ] && exit 0
  30. . /lib/functions.sh
  31. . /lib/functions/system.sh
  32. board=$(board_name)
  33. case "$FIRMWARE" in
  34. "ath10k/cal-pci-0000:00:00.0.bin")
  35. case $board in
  36. a40|\
  37. a60|\
  38. mr1750|\
  39. mr1750v2|\
  40. om5p-acv2)
  41. ath10kcal_extract "ART" 20480 2116
  42. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
  43. ;;
  44. archer-c25-v1|\
  45. archer-c59-v1|\
  46. archer-c60-v1|\
  47. tl-wdr6500-v2)
  48. ath10kcal_extract "art" 20480 2116
  49. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
  50. ;;
  51. cf-e380ac-v1|\
  52. cf-e380ac-v2|\
  53. dlan-pro-1200-ac|\
  54. sr3200|\
  55. xd3200)
  56. ath10kcal_extract "art" 20480 2116
  57. ;;
  58. dap-2695-a1)
  59. ath10kcal_extract "radiocfg" 20480 2116
  60. ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
  61. ;;
  62. dir-869-a1|\
  63. qihoo-c301)
  64. ath10kcal_extract "radiocfg" 20480 2116
  65. ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
  66. ;;
  67. dw33d)
  68. ath10kcal_extract "art" 20480 2116
  69. ath10kcal_patch_mac $(mtd_get_mac_binary art 18)
  70. ;;
  71. epg5000|\
  72. esr1750)
  73. ath10kcal_extract "caldata" 20480 2116
  74. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
  75. ;;
  76. mc-mac1200r)
  77. ath10kcal_extract "art" 20480 2116
  78. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
  79. ;;
  80. r6100)
  81. ath10kcal_extract "caldata" 20480 2116
  82. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
  83. ;;
  84. rb-952ui-5ac2nd)
  85. ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
  86. ;;
  87. re450|\
  88. tl-wr902ac-v1)
  89. ath10kcal_extract "art" 20480 2116
  90. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
  91. ;;
  92. tl-wpa8630)
  93. ath10kcal_extract "art" 20480 2116
  94. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
  95. ;;
  96. unifiac-lite|\
  97. unifiac-pro)
  98. ath10kcal_extract "EEPROM" 20480 2116
  99. ;;
  100. esac
  101. ;;
  102. "ath10k/cal-pci-0000:01:00.0.bin")
  103. case $board in
  104. archer-c5|\
  105. archer-c7)
  106. ath10kcal_extract "art" 20480 2116
  107. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
  108. ;;
  109. nbg6616|\
  110. nbg6716)
  111. ath10kcal_extract "RFdata" 20480 2116
  112. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
  113. ;;
  114. om5p-ac)
  115. ath10kcal_extract "ART" 20480 2116
  116. ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
  117. ;;
  118. rb-911g-5hpacd|\
  119. rb-962uigs-5hact2hnt)
  120. ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
  121. ;;
  122. esac
  123. ;;
  124. "ath10k/pre-cal-pci-0000:00:00.0.bin")
  125. case $board in
  126. archer-c58-v1)
  127. ath10kcal_extract "art" 20480 12064
  128. ;;
  129. esac
  130. ;;
  131. *)
  132. exit 1
  133. ;;
  134. esac