From d250f91bb3b40e285419bb665b51f62717fb2b5d Mon Sep 17 00:00:00 2001 From: John Crispin Date: Mon, 24 Mar 2025 08:11:43 +0100 Subject: [PATCH] ipq95xx: drop ATH12.3 support Signed-off-by: John Crispin --- feeds/ipq95xx/ath11k-firmware/Makefile | 37 - feeds/ipq95xx/ath11k-wifi/Makefile | 36 - feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 | Bin 286636 -> 0 bytes feeds/ipq95xx/ath12k-firmware/Makefile | 76 - feeds/ipq95xx/ath12k-wifi/Makefile | 78 - feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 | Bin 286636 -> 0 bytes feeds/ipq95xx/ath12k-wifi/board-2.bin.QCN9274 | Bin 266440 -> 0 bytes .../ath12k-wifi/board-cig-wf189.bin.ipq53xx | Bin 63488 -> 0 bytes .../ath12k-wifi/board-cig-wf189.bin.qcn9224 | Bin 161792 -> 0 bytes .../board-edgecore-eap105.bin.ipq53xx | Bin 63488 -> 0 bytes .../board-edgecore-eap105.bin.qcn9224 | Bin 161792 -> 0 bytes .../board-sercomm-ap72tip.bin.ipq53xx | Bin 161792 -> 0 bytes .../board-sercomm-ap72tip.bin.qcn9224 | Bin 161792 -> 0 bytes feeds/ipq95xx/ath12k-wifi/regdb.bin | Bin 25656 -> 0 bytes feeds/ipq95xx/batman-adv/Config.in | 88 - feeds/ipq95xx/batman-adv/Makefile | 101 - .../etc/uci-defaults/99-migrate-batadv_hardif | 97 - .../files/lib/netifd/proto/batadv.sh | 123 - .../files/lib/netifd/proto/batadv_hardif.sh | 53 - .../files/lib/netifd/proto/batadv_vlan.sh | 25 - ...v-genetlink-move-to-smaller-ops-wher.patch | 128 - ...v-Add-new-include-for-min-max-helper.patch | 116 - ...uild-of-multicast-code-against-Linux.patch | 34 - ...dv-Switch-to-kstrtox.h-for-kstrtou64.patch | 19 - ...vert-batman-adv-use-Linux-s-stdarg.h.patch | 19 - ...batman-adv-make-mc_forwarding-atomic.patch | 27 - ...t-Add-atomic-mc_fowarding-support-fo.patch | 23 - ...st-iflink-once-in-batadv-on-batadv-c.patch | 44 - ...st-iflink-once-in-batadv_get_real_ne.patch | 46 - ...-expect-inter-netns-unique-iflink-in.patch | 86 - ...n-t-skb_split-skbuffs-with-frag_list.patch | 46 - feeds/ipq95xx/batman-adv/src/compat-hacks.h | 179 - feeds/ipq95xx/ftm/Makefile | 82 - feeds/ipq95xx/ftm/files/compress_vart.sh | 75 - feeds/ipq95xx/ftm/files/ftm.init | 99 - feeds/ipq95xx/ftm/files/ftm_qcc710_start.sh | 86 - feeds/ipq95xx/ftm/src/Android.mk | 133 - feeds/ipq95xx/ftm/src/LICENSE | 181 - feeds/ipq95xx/ftm/src/Makefile | 12 - feeds/ipq95xx/ftm/src/Makefile.am | 86 - feeds/ipq95xx/ftm/src/NOTICE | 72 - feeds/ipq95xx/ftm/src/configure.ac | 149 - feeds/ipq95xx/ftm/src/ftm_ant.c | 585 - feeds/ipq95xx/ftm/src/ftm_ant_common.h | 124 - feeds/ipq95xx/ftm/src/ftm_bt.c | 2013 ---- feeds/ipq95xx/ftm/src/ftm_bt.h | 289 - feeds/ipq95xx/ftm/src/ftm_bt_common.h | 115 - feeds/ipq95xx/ftm/src/ftm_bt_hci_hal.h | 161 - feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal.h | 177 - feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal_linux.c | 674 -- feeds/ipq95xx/ftm/src/ftm_bt_persist.cpp | 278 - feeds/ipq95xx/ftm/src/ftm_bt_persist.h | 113 - feeds/ipq95xx/ftm/src/ftm_bt_power_hal.h | 76 - feeds/ipq95xx/ftm/src/ftm_bt_power_pfal.h | 71 - .../ipq95xx/ftm/src/ftm_bt_power_pfal_linux.c | 197 - feeds/ipq95xx/ftm/src/ftm_common.h | 141 - feeds/ipq95xx/ftm/src/ftm_dbg.h | 43 - feeds/ipq95xx/ftm/src/ftm_fm.c | 3804 ------- feeds/ipq95xx/ftm/src/ftm_fm_common.h | 993 -- feeds/ipq95xx/ftm/src/ftm_fm_pfal.h | 1178 -- feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux.c | 3668 ------- .../ipq95xx/ftm/src/ftm_fm_pfal_linux_3990.c | 3338 ------ feeds/ipq95xx/ftm/src/ftm_iot.c | 549 - feeds/ipq95xx/ftm/src/ftm_iot.h | 132 - feeds/ipq95xx/ftm/src/ftm_main.c | 1060 -- feeds/ipq95xx/ftm/src/ftm_nfc.c | 108 - feeds/ipq95xx/ftm/src/ftm_nfc.h | 37 - feeds/ipq95xx/ftm/src/ftm_nfcnq.c | 807 -- feeds/ipq95xx/ftm/src/ftm_nfcnq.h | 168 - feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.c | 664 -- feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.h | 111 - feeds/ipq95xx/ftm/src/ftm_nfcnq_test.c | 461 - feeds/ipq95xx/ftm/src/ftm_nfcnq_test.h | 202 - feeds/ipq95xx/ftm/src/ftm_nfcqti.c | 724 -- feeds/ipq95xx/ftm/src/ftm_nfcqti.h | 141 - feeds/ipq95xx/ftm/src/ftm_wlan.c | 1212 --- feeds/ipq95xx/ftm/src/ftm_wlan.h | 235 - feeds/ipq95xx/ftm/src/ftm_wlan_win.h | 196 - feeds/ipq95xx/ftm/src/ftm_write_to_flash.c | 534 - feeds/ipq95xx/ftm/src/testcmd.h | 159 - feeds/ipq95xx/ftm/src/wds/Android.mk | 45 - feeds/ipq95xx/ftm/src/wds/wds_hci_pfal.h | 170 - .../ipq95xx/ftm/src/wds/wds_hci_pfal_linux.c | 720 -- feeds/ipq95xx/ftm/src/wds/wds_main.c | 568 - feeds/ipq95xx/hostapd.old/Config.in | 52 - feeds/ipq95xx/hostapd.old/M | 511 - .../hostapd.old/files/hostapd-full.config | 176 - .../hostapd.old/files/hostapd-macsec.config | 111 - .../hostapd.old/files/hostapd-mesh.config | 195 - .../hostapd.old/files/hostapd-mini.config | 159 - feeds/ipq95xx/hostapd.old/files/hostapd.sh | 394 - feeds/ipq95xx/hostapd.old/files/multicall.c | 28 - feeds/ipq95xx/hostapd.old/files/netifd.sh | 903 -- .../files/wpa_supplicant-full.config | 408 - .../files/wpa_supplicant-macsec.config | 121 - .../files/wpa_supplicant-mesh.config | 415 - .../files/wpa_supplicant-mini.config | 401 - .../files/wpa_supplicant-p2p.config | 411 - .../hostapd.old/files/wpa_supplicant.sh | 194 - feeds/ipq95xx/hostapd.old/files/wpad.init | 25 - .../ipq95xx/hostapd.old/files/wps-hotplug.sh | 22 - .../patches/120-daemonize_fix.patch | 95 - .../patches/130-no_eapol_fix.patch | 14 - ...140-disable_bridge_packet_workaround.patch | 12 - .../hostapd.old/patches/200-multicall.patch | 334 - .../hostapd.old/patches/300-noscan.patch | 57 - .../patches/310-rescan_immediately.patch | 11 - .../patches/320-optional_rfkill.patch | 61 - .../patches/330-nl80211_fix_set_freq.patch | 11 - .../patches/350-nl80211_del_beacon_bss.patch | 50 - .../patches/380-disable_ctrl_iface_mib.patch | 205 - .../patches/390-wpa_ie_cap_workaround.patch | 56 - .../400-wps_single_auth_enc_type.patch | 33 - .../patches/410-limit_debug_messages.patch | 210 - .../patches/420-indicate-features.patch | 73 - .../patches/430-hostapd_cli_ifdef.patch | 34 - .../patches/431-wpa_cli_ifdef.patch | 13 - .../hostapd.old/patches/450-scan_wait.patch | 73 - ...dd-new-config-params-to-be-used-with.patch | 207 - ...-use-new-parameters-during-ibss-join.patch | 59 - .../462-wpa_s-support-htmode-param.patch | 156 - ...tapd-fix-compile-warnings-for-macsec.patch | 40 - ...802.1x-plug-re-establish-macsec-link.patch | 39 - .../patches/600-ubus_support.patch | 878 -- ...-test-RADAR-detection-probablity-in-.patch | 153 - ...n-issue-related-with-wpa_group_state.patch | 18 - ...b00-004-hostap-fix-compilation-issue.patch | 140 - .../b00-014-hostapd-add-ht40-allow-map.patch | 130 - ...stapd-disable-MAC-ACL-if-WPS-enabled.patch | 18 - ...rate-information-into-STATUS-and-STA.patch | 224 - .../b00-036-hostapd-disable-40mhz-scan.patch | 41 - .../c00-002-hostapd-he-update-nl-header.patch | 53 - ...00-010-hostapd-fix-enabling-he-in-5G.patch | 11 - .../c00-011-hostapd-add-mbo-support.patch | 370 - ...0-002-set-supp-chan-width-for-40mghz.patch | 30 - ...-wpa-supplicant-override-HE-toVHT-2G.patch | 59 - .../patches/d00-007-fixing-warning.patch | 83 - ...d00-009-hostapd-update-muedca-params.patch | 291 - .../e00-003-hostapd-chan-switch-6ghz.patch | 65 - ...tapd-update-cfs0-and-cfs1-for-160MHz.patch | 142 - ...-collision-events-and-triggering-CCA.patch | 278 - ...code-required-to-generate-the-CCA-IE.patch | 104 - ...-code-to-generic-to-be-used-for-mesh.patch | 603 -- ...03-Extend-acl-config-support-to-mesh.patch | 229 - ...oloring-disable-BSS-color-during-CCA.patch | 24 - ..._color-handler-to-the-nl80211-driver.patch | 156 - ...CL-management-over-control-interface.patch | 299 - ...nd-CCA-events-coming-from-the-kernel.patch | 227 - ...-allow-using-a-random-starting-color.patch | 44 - ...add-intelligence-color-choose-in-CCA.patch | 126 - ..._support_to_change_bss_color_by_user.patch | 185 - ...ountdown-zero-in-color-change-beacon.patch | 96 - ...loring-check-free-color-periodically.patch | 70 - ...stapd-fix-int-in-bool-context-Werror.patch | 37 - ...ilize-chan-for-second-80-mhz-to-zero.patch | 32 - ...nt-add-mesh-ID-IE-only-for-mesh-mode.patch | 33 - ...d-Enable-HE40-support-in-2G-11s-mesh.patch | 189 - ...ow-AP_VLAN-creation-for-dynamic-VLAN.patch | 95 - ...stapd-Add-support-for-beacon-tx-mode.patch | 255 - ...chan-switch-command-to-use-proper-BW.patch | 91 - ...Spectrum-Management-bit-for-chan-swi.patch | 67 - .../h00-008-a-add-support-for-6ghz-tpc.patch | 148 - .../h00-008-b-add-support-for-6ghz-tpc.patch | 50 - .../h00-008-c-add-support-for-6ghz-tpc.patch | 73 - .../h00-008-d-add-support-for-6ghz-tpc.patch | 229 - ...-Fill-6G-TPE-IE-for-non-US-countries.patch | 131 - .../patches/i00-001-compile-fix.patch | 40 - ...stapd-update-missing-5.9GHz-channels.patch | 57 - ...stapd-cli-allowed-bw-on-each-channel.patch | 329 - ...e-when-participant-act-as-key-server.patch | 195 - ...002-hostapd-Fix-channel-switch-on-6g.patch | 42 - ...lling-group-mgmt-cipher-type-in-FD-R.patch | 35 - ...apd-fix-enabling-HE-thru-cli-in-2ghz.patch | 32 - ...acent-channel-selection-in-DFS-for-q.patch | 138 - ...-support-to-awgn-mitigation-for-6Ghz.patch | 760 -- ...stapd-add-support-for-6GHz-operation.patch | 564 - ...stapd-add-support-for-6g-client-type.patch | 171 - ...1-hostapd-fix-6GHz-chan-switch-issue.patch | 53 - ...upport-5dot9-channels-in-mesh-160mhz.patch | 40 - ...-enable-more-160MHz-channels-in-6GHz.patch | 245 - ...exclude_6ghz_non_psc-option-for-acs-.patch | 369 - ...unused-crypto_ec_point_solve_y_coord.patch | 103 - ...he-y-coordinate-for-PWE-with-own-imp.patch | 115 - ...-coordinate-for-PWE-with-own-impleme.patch | 101 - ...mplementation-into-a-helper-function.patch | 100 - ...wd-Fix-the-prefix-in-a-debug-message.patch | 31 - ...-config-to-truncate-ext-capabilities.patch | 61 - ...001-mbssid-add-configuration-options.patch | 75 - .../q01-001-tests-Initial-EHT-testing.patch | 786 -- ...-mbssid-retrieve-driver-capabilities.patch | 56 - ...figure-all-BSSes-before-beacon-setup.patch | 161 - ...get-and-set-configuration-parameters.patch | 161 - ...5-mbssid-add-multiple-BSSID-elements.patch | 450 - ...sid-add-MBSSID-configuration-element.patch | 139 - ...7-mbssid-add-non-inheritance-element.patch | 99 - ...008-mbssid-make-the-AID-space-shared.patch | 29 - ...009-mbssid-set-extended-capabilities.patch | 94 - ...DTIM-period-configuration-for-EMA-AP.patch | 45 - .../q01-011-mbssid-hidden-SSID-support.patch | 118 - ...2-mbssid-process-known-BSSID-element.patch | 253 - .../q01-013-mbssid-add-nl80211-support.patch | 195 - .../q01-014-mbssid-RNR-for-EMA-AP.patch | 412 - ...ssid-Netlink-changes-for-RNR-offsets.patch | 58 - ...rt-extended-rates-in-non-tx-profiles.patch | 84 - .../q02-001-hostapd-fix-unsol-config.patch | 32 - ...-001-nl80211-sync-kernel-definitions.patch | 147 - .../q02-002-eht-define-EHT-elements.patch | 107 - ...n-options-to-enable-disable-the-supp.patch | 580 - ...perating-channel-width-configuration.patch | 126 - ...amforming-capabilities-configuration.patch | 61 - ...-eht-macro-for-320-MHZ-channel-width.patch | 33 - ...-eht-support-for-operating-class-137.patch | 70 - ...ilities-element-in-management-frames.patch | 316 - ...eration-element-in-management-frames.patch | 198 - ...se-EHT-capabilities-passed-by-kernel.patch | 94 - ...ements-received-in-management-frames.patch | 51 - ...-012-eht-process-association-request.patch | 216 - ...013-eht-changes-in-STA-addition-path.patch | 159 - ...station-s-EHT-capabilities-to-kernel.patch | 35 - ...anges-to-the-neighbor-report-element.patch | 52 - ...t-additions-in-FILS-discovery-frames.patch | 160 - ...additions-to-hostapd_set_freq_params.patch | 308 - ...t-support-for-channel-switch-command.patch | 110 - ...ecks-for-channel-switch-announcement.patch | 54 - ...-channel-switch-exchange-with-driver.patch | 84 - ...driver-capabilities-for-beacon-rates.patch | 38 - ...onfiguration-option-for-beacon-rates.patch | 83 - ...-beacon-rate-configuration-to-kernel.patch | 64 - .../q02-024-hostapd-11BE-bringup-Fixes.patch | 125 - ...025-hostapd-WAR-patch-for-prop-issue.patch | 131 - ...u_puncturing-retrieve-driver-support.patch | 123 - ..._puncturing-add-configuration-option.patch | 70 - ...g-add-bitmap-to-frequency-parameters.patch | 263 - ...-add-bitmap-to-EHT-operation-element.patch | 394 - ...-additions-to-channel-switch-command.patch | 310 - ...-ru_puncturing-send-bitmap-to-kernel.patch | 43 - .../q02-037-ulmumimo-parameter-support.patch | 221 - ...n-option-for-RU-puncturing-threshold.patch | 59 - ...2-042-acs-generate-puncturing-bitmap.patch | 165 - ...cs-validate-the-RU-puncturing-bitmap.patch | 45 - ...2-044-01-hostapd-Add-320-MHz-support.patch | 412 - ...02-ACS-Add-ACS-support-for-11be-mode.patch | 169 - ...02-044-nl80211-sync-green-ap-changes.patch | 68 - .../q02-045-mesh_add_EHT_support.patch | 345 - ...-046-hostapd-Add-5GHz-240MHz-support.patch | 253 - ...-hostapd-DFS-ACS-5GHz-240MHz-support.patch | 260 - ...ort-to-disable-channel-switch-during.patch | 283 - ...supplicant-add-RU-puncturing-support.patch | 333 - ...power-envelope-for-non-PSD-countries.patch | 64 - ...ant-Add-5GHz-240MHz-support-for-mesh.patch | 112 - ...1be-EHT-elements-to-Draft-2.0-versio.patch | 289 - ...h-Enable-80-160MHz-Mesh-DFS-channels.patch | 76 - ...nel-switch-in-eht-40mhz-bandwidth-fa.patch | 30 - ...tapd-fix-he40-eht40-bringup-with-acs.patch | 53 - ...50-hostapd-Add-freq-info-in-start-ap.patch | 43 - ...pplicant-add-wpa_cli-support-for-cac.patch | 57 - ...ent-ID-extension-as-part-of-non-inhe.patch | 49 - ...n-support-for-320MHz-bw-in-6GHz-band.patch | 263 - ...d-fix-channel-switch-frequency-check.patch | 50 - ...be-response-as-broadcast-for-6GHz-ba.patch | 42 - ...awgn-fix-new-channel-selection-logic.patch | 421 - ...et-interface-state-as-inactive-if-me.patch | 45 - ...6GHz-FILS-and-UBPR-for-mutli-band-AP.patch | 325 - ...ort-to-enable-disable-bss-color-coll.patch | 143 - ...le-compilation-errors-in-32-bit-arch.patch | 31 - ...hostapd-240MHz-Q-Q-vendor-IE-support.patch | 532 - ...Repeater-assoc-fail-on-6G-with-160MH.patch | 47 - ...t-duplicate-beacon-bit-in-HE-oper-IE.patch | 65 - feeds/ipq95xx/hostapd/Config.in | 89 - feeds/ipq95xx/hostapd/Makefile | 717 -- feeds/ipq95xx/hostapd/files/common.uc | 318 - .../hostapd/files/hostapd-basic.config | 401 - .../ipq95xx/hostapd/files/hostapd-full.config | 401 - .../ipq95xx/hostapd/files/hostapd-mini.config | 401 - feeds/ipq95xx/hostapd/files/hostapd.sh | 1663 --- feeds/ipq95xx/hostapd/files/hostapd.uc | 812 -- feeds/ipq95xx/hostapd/files/multicall.c | 28 - feeds/ipq95xx/hostapd/files/wdev.uc | 207 - .../hostapd/files/wpa_supplicant-basic.config | 625 -- .../hostapd/files/wpa_supplicant-full.config | 625 -- .../hostapd/files/wpa_supplicant-mini.config | 625 -- .../hostapd/files/wpa_supplicant-p2p.config | 625 -- feeds/ipq95xx/hostapd/files/wpa_supplicant.uc | 330 - feeds/ipq95xx/hostapd/files/wpad.init | 41 - feeds/ipq95xx/hostapd/files/wpad.json | 22 - feeds/ipq95xx/hostapd/files/wpad_acl.json | 10 - feeds/ipq95xx/hostapd/files/wps-hotplug.sh | 62 - .../001-wolfssl-init-RNG-with-ECC-key.patch | 43 - ...ix-sta-add-after-previous-connection.patch | 26 - ...use-of-uninitialized-stack-variables.patch | 27 - ...-dl_list_del-before-freeing-ipv6-add.patch | 19 - .../hostapd/patches/050-build_fix.patch | 20 - ...edtls-TLS-crypto-option-initial-port.patch | 8051 -------------- .../patches/120-mbedtls-fips186_2_prf.patch | 114 - ...otate-with-TEST_FAIL-for-hwsim-tests.patch | 421 - .../135-mbedtls-fix-owe-association.patch | 91 - ...efile-make-run-tests-with-CONFIG_TLS.patch | 1358 --- ...hecks-encountered-during-tests-hwsim.patch | 45 - ...-dpp_pkex-EC-point-mul-w-value-prime.patch | 26 - ...ix-setting-QoS-map-on-secondary-BSSs.patch | 20 - ...pdate-drv-ifindex-on-removing-the-fi.patch | 18 - ...0211_put_freq_params-call-outside-of.patch | 34 - ...hannel_list_update_timeout-in-hostap.patch | 28 - .../hostapd/patches/200-multicall.patch | 355 - .../ipq95xx/hostapd/patches/300-noscan.patch | 58 - .../patches/310-rescan_immediately.patch | 11 - .../hostapd/patches/320-optional_rfkill.patch | 61 - .../patches/330-nl80211_fix_set_freq.patch | 11 - .../341-mesh-ctrl-iface-channel-switch.patch | 52 - .../patches/380-disable_ctrl_iface_mib.patch | 211 - .../381-hostapd_cli_UNKNOWN-COMMAND.patch | 11 - .../patches/390-wpa_ie_cap_workaround.patch | 56 - .../400-wps_single_auth_enc_type.patch | 23 - .../patches/410-limit_debug_messages.patch | 210 - .../patches/420-indicate-features.patch | 63 - .../patches/430-hostapd_cli_ifdef.patch | 56 - .../hostapd/patches/431-wpa_cli_ifdef.patch | 18 - ...dd-new-config-params-to-be-used-with.patch | 189 - .../patches/464-fix-mesh-obss-check.patch | 14 - .../patches/470-survey_data_fallback.patch | 30 - .../patches/500-lto-jobserver-support.patch | 59 - .../patches/590-rrm-wnm-statistics.patch | 92 - .../599-wpa_supplicant-fix-warnings.patch | 19 - .../hostapd/patches/600-ubus_support.patch | 799 -- .../hostapd/patches/601-ucode_support.patch | 581 - .../610-hostapd_cli_ujail_permission.patch | 33 - .../patches/701-reload_config_inline.patch | 33 - .../hostapd/patches/710-vlan_no_bridge.patch | 41 - .../patches/711-wds_bridge_force.patch | 26 - .../patches/720-iface_max_num_sta.patch | 91 - .../hostapd/patches/730-ft_iface.patch | 38 - .../hostapd/patches/740-snoop_iface.patch | 151 - ...750-qos_map_set_without_interworking.patch | 97 - .../751-qos_map_ignore_when_unsupported.patch | 12 - .../hostapd/patches/760-dynamic_own_ip.patch | 109 - .../hostapd/patches/761-shared_das_port.patch | 304 - .../hostapd/patches/770-radius_server.patch | 154 - .../hostapd/patches/901-cfg-section.patch | 37 - ..._AP-functions-dependant-on-CONFIG_AP.patch | 33 - ...-extra-ies-only-if-allowed-by-driver.patch | 62 - .../ipq95xx/hostapd/patches/999-compile.patch | 12 - .../hostapd/patches/999-probe-request.patch | 49 - feeds/ipq95xx/hostapd/src/hostapd/radius.c | 715 -- feeds/ipq95xx/hostapd/src/src/ap/ubus.c | 2008 ---- feeds/ipq95xx/hostapd/src/src/ap/ubus.h | 154 - feeds/ipq95xx/hostapd/src/src/ap/ucode.c | 815 -- feeds/ipq95xx/hostapd/src/src/ap/ucode.h | 54 - .../hostapd/src/src/utils/build_features.h | 65 - feeds/ipq95xx/hostapd/src/src/utils/ucode.c | 335 - feeds/ipq95xx/hostapd/src/src/utils/ucode.h | 29 - .../ipq95xx/hostapd/src/wpa_supplicant/ubus.c | 280 - .../ipq95xx/hostapd/src/wpa_supplicant/ubus.h | 55 - .../hostapd/src/wpa_supplicant/ucode.c | 298 - .../hostapd/src/wpa_supplicant/ucode.h | 49 - feeds/ipq95xx/ipq53xx/Makefile | 33 - .../ipq53xx/base-files/etc/board.d/01_leds | 18 - .../ipq53xx/base-files/etc/board.d/02_network | 56 - .../etc/hotplug.d/firmware/10-ath11k-caldata | 41 - .../etc/hotplug.d/firmware/10-ath12k-caldata | 52 - .../etc/hotplug.d/firmware/ath12k-pdev-stats | 13 - .../ipq53xx/base-files/etc/init.d/ath12k | 9 - .../ipq53xx/base-files/etc/init.d/rtk_eth_fix | 86 - .../etc/uci-defaults/30-uboot-envtools | 53 - .../ipq53xx/base-files/lib/upgrade/nand.sh | 392 - .../base-files/lib/upgrade/platform.sh | 27 - feeds/ipq95xx/ipq53xx/config-5.4 | 1326 --- feeds/ipq95xx/ipq53xx/config-5.4-qsdk | 6189 ----------- .../arm64/boot/dts/qcom/ipq5332-cig-wf189.dts | 437 - .../boot/dts/qcom/ipq5332-edgecore-eap105.dts | 454 - .../dts/qcom/ipq5332-mi01.2.dtsi.20231011 | 396 - .../boot/dts/qcom/ipq5332-sercomm-ap72tip.dts | 164 - .../boot/dts/qcom/ipq5332-sercomm-mi01.2.dtsi | 445 - .../arm64/boot/dts/qcom/ipq5332-sercomm.dtsi | 2701 ----- .../ipq53xx/files/drivers/net/phy/realtek.c | 569 - .../ipq53xx/files/drivers/net/phy/rtk/Kconfig | 10 - .../files/drivers/net/phy/rtk/Makefile | 19 - .../net/phy/rtk/construct/conf_rtl8261n_c.c | 1465 --- .../net/phy/rtk/construct/conf_rtl8264b.c | 2177 ---- .../ipq53xx/files/drivers/net/phy/rtk/error.h | 165 - .../files/drivers/net/phy/rtk/phy_patch.c | 179 - .../files/drivers/net/phy/rtk/phy_patch.h | 174 - .../drivers/net/phy/rtk/phy_rtl8251b_patch.c | 3760 ------- .../drivers/net/phy/rtk/phy_rtl8251b_patch.h | 56 - .../drivers/net/phy/rtk/phy_rtl826xb_patch.c | 1032 -- .../drivers/net/phy/rtk/phy_rtl826xb_patch.h | 63 - .../files/drivers/net/phy/rtk/rtk_osal.c | 56 - .../files/drivers/net/phy/rtk/rtk_osal.h | 100 - .../files/drivers/net/phy/rtk/rtk_phy.c | 336 - .../files/drivers/net/phy/rtk/rtk_phylib.c | 109 - .../files/drivers/net/phy/rtk/rtk_phylib.h | 101 - .../drivers/net/phy/rtk/rtk_phylib_def.h | 166 - .../drivers/net/phy/rtk/rtk_phylib_rtl826xb.c | 57 - .../drivers/net/phy/rtk/rtk_phylib_rtl826xb.h | 19 - .../ipq53xx/files/drivers/net/phy/rtk/type.h | 117 - feeds/ipq95xx/ipq53xx/generic/config-default | 72 - feeds/ipq95xx/ipq53xx/generic/target.mk | 12 - feeds/ipq95xx/ipq53xx/image/Makefile | 26 - feeds/ipq95xx/ipq53xx/image/ipq53xx.mk | 37 - .../ipq95xx/ipq53xx/ipq95xx_32/config-default | 6 - feeds/ipq95xx/ipq53xx/ipq95xx_32/target.mk | 13 - feeds/ipq95xx/ipq53xx/modules.mk | 92 - feeds/ipq95xx/ipq53xx/patches/001-ip6mr.patch | 13 - .../ipq53xx/patches/002-dload_dis.patch | 24 - .../100-GPIO-add-named-gpio-exports.patch | 173 - ...e-off-by-two-error-in-range-markings.patch | 151 - ...-use-address-of-operator-on-section-.patch | 38 - .../patches/103-fix_mhi_bus_test.patch | 14 - .../ipq53xx/patches/130-proxy-arp.patch | 14 - .../ipq53xx/patches/140-gcc12-fixes.patch | 15 - .../ipq95xx/ipq53xx/patches/200-pstore.patch | 49 - ...ive-renaming-when-an-interface-is-up.patch | 136 - feeds/ipq95xx/ipq53xx/patches/300-pwm.patch | 40 - .../ipq95xx/ipq53xx/patches/301-button.patch | 42 - .../ipq53xx/patches/301-diag_char.patch | 54 - .../ipq95xx/ipq53xx/patches/302-aq-phy.patch | 66 - .../ipq53xx/patches/303-realtek-phy.patch | 22 - feeds/ipq95xx/ipq53xx/profiles/00-default.mk | 10 - feeds/ipq95xx/ipq95xx/Makefile | 28 - .../ipq95xx/base-files/etc/board.d/01_network | 21 - .../etc/hotplug.d/firmware/10-ath11k-caldata | 41 - .../etc/hotplug.d/firmware/10-ath12k-caldata | 41 - .../ipq95xx/base-files/lib/upgrade/nand.sh | 392 - .../base-files/lib/upgrade/platform.sh | 24 - feeds/ipq95xx/ipq95xx/config-5.4 | 1277 --- feeds/ipq95xx/ipq95xx/generic/config-default | 70 - feeds/ipq95xx/ipq95xx/generic/target.mk | 12 - feeds/ipq95xx/ipq95xx/image/Makefile | 26 - feeds/ipq95xx/ipq95xx/image/Makefile.orig | 105 - feeds/ipq95xx/ipq95xx/image/ipq95xx.mk | 27 - .../ipq95xx/ipq95xx/ipq95xx_32/config-default | 6 - feeds/ipq95xx/ipq95xx/ipq95xx_32/target.mk | 13 - feeds/ipq95xx/ipq95xx/modules.mk | 61 - feeds/ipq95xx/ipq95xx/patches/001-ip6mr.patch | 13 - .../ipq95xx/patches/002-dload_dis.patch | 24 - .../100-GPIO-add-named-gpio-exports.patch | 173 - ...e-off-by-two-error-in-range-markings.patch | 151 - ...-use-address-of-operator-on-section-.patch | 38 - .../patches/103-fix_mhi_bus_test.patch | 14 - .../ipq95xx/patches/130-proxy-arp.patch | 14 - .../ipq95xx/patches/140-gcc12-fixes.patch | 15 - .../ipq95xx/ipq95xx/patches/200-pstore.patch | 49 - ...ive-renaming-when-an-interface-is-up.patch | 136 - feeds/ipq95xx/ipq95xx/profiles/00-default.mk | 10 - feeds/ipq95xx/iw/Makefile | 72 - .../iw/patches/001-nl80211_h_sync.patch | 39 - .../ipq95xx/iw/patches/120-antenna_gain.patch | 36 - .../ipq95xx/iw/patches/200-reduce_size.patch | 452 - ...command-for-tid-specific-retry-count.patch | 147 - ...r-command-for-tid-specific-aggr-conf.patch | 117 - .../507-Add-peer-address-in-noack-map-command | 54 - .../patches/510-iw-wifi-config-vendor.patch | 71 - .../512-iw-add-wide-band-scan-support.patch | 135 - ...nal-argument-to-specify-6Ghz-channel.patch | 100 - ...9-iw-Add-HE-UL-MU-fixed-rate-setting.patch | 158 - ...nd-management-rtscts-control-support.patch | 251 - .../patches/523-iw-fix-compile-issues.patch | 111 - .../iw/patches/601-iw-update-nl80211.h.patch | 118 - ...02-iw-Support-EHT-rate-configuration.patch | 358 - .../patches/603-iw-Add-320-MHz-support.patch | 176 - ...ort-to-set-static-puncturing-pattern.patch | 137 - .../604-iw-Add-the-support-for-green-ap.patch | 101 - ...port-for-6-GHz-in-iw-reg-get-command.patch | 165 - .../607-Changes-needed-for-yocto.patch | 34 - ...08-iw-Add-support-for-background-CAC.patch | 132 - ...w-add-link-id-information-for-iw-dev.patch | 128 - ...add-link-id-for-iw-wlan-station-dump.patch | 85 - ...rt-set-txpower-command-for-each-link.patch | 97 - ...rt-set-bitrate-command-for-each-link.patch | 57 - ...rt-for-rts-threshold-command-for-MLO.patch | 75 - ...609-iw-interface-combination-changes.patch | 281 - ...bute-and-Ext-Feature-with-RRM-change.patch | 61 - .../iw/patches/611-add-sawf-support.patch | 395 - ...o-add-del-multi-chan-support-for-mon.patch | 197 - ...or-link-specific-station-dump-fields.patch | 115 - .../612-iw-default-q-map-support.patch | 210 - ...link-configuration-paramters-support.patch | 184 - ...w-add-support-to-configure-telemetry.patch | 428 - ...-to-handle-streaming-stats-in-target.patch | 147 - ...-02-iw-Add-support-to-get-SAWF-stats.patch | 815 -- .../616-01-iw-32-bit-compilation-fixes.patch | 35 - ...int-NO-EHT-flags-for-reg-get-command.patch | 49 - feeds/ipq95xx/libtcmd/Makefile | 56 - .../ipq95xx/libtcmd/patches/100-compile.patch | 27 - feeds/ipq95xx/libtcmd/src/Android.mk | 54 - feeds/ipq95xx/libtcmd/src/Makefile | 24 - feeds/ipq95xx/libtcmd/src/Makefile.am | 23 - feeds/ipq95xx/libtcmd/src/libtcmd.c | 132 - feeds/ipq95xx/libtcmd/src/libtcmd.h | 95 - feeds/ipq95xx/libtcmd/src/nl80211.c | 563 - feeds/ipq95xx/libtcmd/src/nl80211_drv.h | 34 - feeds/ipq95xx/libtcmd/src/os.c | 57 - feeds/ipq95xx/libtcmd/src/os.h | 10 - feeds/ipq95xx/mac80211/Makefile | 269 - feeds/ipq95xx/mac80211/ath.mk | 362 - .../files/lib/netifd/wireless/mac80211.sh | 1230 --- .../mac80211/files/lib/wifi/mac80211.sh | 202 - .../patches/pending/100-compile.patch | 12 - .../patches/pending/200-coldboot-cal.patch | 13 - .../patches/pending/201-firmware-load.patch | 31 - ...eration_on_crypto_controlled_devices.patch | 57 - ...hash-instead-of-skb_get_hash_perturb.patch | 50 - ...-tx-queue-full-due-to-race-condition.patch | 48 - ...py-destinations-with-flexible-arrays.patch | 185 - ...rt-ath11k-make-relay-callbacks-const.patch | 29 - ...eshold-marking-for-subset-of-traffic.patch | 93 - ...-L4S-style-ce_threshold_ect1-marking.patch | 88 - ...-Revert-mac80211-use-eth_hw_addr_set.patch | 43 - ...-Use-memset_after-to-clear-tx-status.patch | 36 - ...-setting-getting-API-with-rx_buf_len.patch | 38 - ...ers-Add-MHI-stuff-to-mod_devicetable.patch | 40 - .../mac80211/patches/qca/001-fix_build.patch | 160 - .../qca/002-disable_addr_notifier.patch | 67 - .../patches/qca/003-ath_move_debug_code.patch | 31 - .../patches/qca/004-ath_regd_optional.patch | 68 - .../qca/005-ath9k_compilation_fix.patch | 22 - .../qca/006-backport_skb_put_fix.patch | 73 - .../qca/007-fix_compilation_issue.patch | 459 - .../008-Enabling_vht_capability_for_2G.patch | 77 - .../qca/009-ath11k-Enable-VHT-for-2G.patch | 35 - ...0-mac80211-disable-signed-regulatory.patch | 11 - ...12-ath11k-add-pktlog-debugfs-support.patch | 768 -- ...017-ath11k-factory-test-mode-support.patch | 820 -- .../qca/020-ath11k-add-btcoex-config.patch | 612 -- .../qca/022-ath11k-add-ap-ps-support.patch | 324 - .../qca/031-ath11k-print-stats-on-crash.patch | 408 - ...th11k-fix-for-peer-memory-corruption.patch | 103 - ...appropriate-board-data-from-board-id.patch | 47 - ...6-nl80211-add-wide-band-scan-support.patch | 151 - ...37-ath11k-add-wide-band-scan-support.patch | 598 -- .../038-ath11k-Adding-support-for-QDSS.patch | 526 - ...addba-req-during-invalid-ext-element.patch | 11 - ...211-fix-low-tput-for-mesh-forwarding.patch | 135 - .../068-ath11k-add-rx-histogram-stats.patch | 597 -- ...69-ath11k-add-HE-stats-in-peer-stats.patch | 778 -- ...ostapd-config-to-enable-disable-he-m.patch | 389 - ...080-ath11k-ethernet-rx-decap-offload.patch | 15 - ...dma-counter-always-zero-in-peer-stat.patch | 81 - ...ted-capabilities-and-mcs-rates-in-he.patch | 54 - ...dma-counter-increamenting-improperly.patch | 51 - .../qca/088-ath11k-add-htt-stats.patch | 558 - .../qca/090-ath11k-fix-fixrate-issue.patch | 158 - ...validation-for-tx-stats-and-rx-stats.patch | 28 - ...nitor-crash-if-tx-offload-is-enabled.patch | 73 - .../qca/107-ath11k-tid-counter-fix.patch | 32 - ...ul-ofdma-ru-allocation-in-peer-stats.patch | 452 - .../qca/110-ath11k-boot-without-caldata.patch | 16 - ...12-ath11k-add-btcoex-debugfs-support.patch | 501 - .../113-ath11k-add-8023-undecap-support.patch | 55 - ...116-ath11k-clean-up-monitor-vdev-del.patch | 19 - .../qca/118-ath11k-reset-bcc-counter.patch | 46 - ...1k-enable-ppdu-stats-in-coexist-mode.patch | 59 - ...11k-fill-vdev-pdev-id-for-fwtest-cmd.patch | 65 - ...-adding-support-for-mgmt-frame-stats.patch | 292 - ...e-TKIP-when-using-encapsulation-offloading | 12 - .../qca/147-fix-signal-station-dump.patch | 25 - .../qca/164-ath11k-add-qcn9000-support.patch | 162 - ...11k-remove-error-on-soc-debugfs-fail.patch | 197 - .../188-ath11k-m3-ssr-dump-collection.patch | 680 -- ...91-ath11k-add-mgmt-and-data-ack-rssi.patch | 110 - ...-ath11k-add-htt-stats-30-ext-rx-rate.patch | 176 - ...se-dev_coredumpm-API-to-collect-rddm.patch | 489 - ...add-coldboot-calibration-for-qcn9000.patch | 202 - ...-ath11k-add-qdss-support-for-qcn9000.patch | 889 -- .../qca/196-ath11k-tpc-stats-support.patch | 1415 --- ...1k-add-support-to-collect-q6mem-dump.patch | 289 - .../199-001-mac80211-add-nss-support.patch | 430 - ...-ath11k_nss-add-nss-driver-interface.patch | 3010 ------ .../qca/199-003-ath11k-add-nss-support.patch | 1101 -- ...t-callback-when-hwencap-enable-in-st.patch | 35 - ...h11k-check-valid-fixed-rate-settings.patch | 117 - .../qca/201-ath11k-ipq5018-support.patch | 1268 --- ...03-mac80211-ath11k-fw-dynamic-muedca.patch | 334 - ...204-ath11k-support-for-native-160MHz.patch | 95 - .../qca/204-frame-size-warning-fix.patch | 125 - ...-ath11k-Add-support-for-dynamic-vlan.patch | 422 - ...th11k-Enable-512MB-profile-in-ath11k.patch | 232 - ...07-mac80211-add-nss-redirect-support.patch | 270 - ...-ath11k-full-mon-support-for-qcn9000.patch | 141 - ...load-changes-to-NSS-driver-interface.patch | 700 -- ...-support-on-NSS-offload-for-STA-mode.patch | 978 -- .../qca/211-ath11k-add-obss-pd-support.patch | 56 - ...om-aggregation-size-support-over-WMI.patch | 298 - ...1k-use-reserved-memory-from-bootargs.patch | 178 - ...h11k-Add-HE-UL-MU-fixed-rate-setting.patch | 282 - ...4-ath11k-Enable-WMI-based-FW-Logging.patch | 406 - ...14-ath11k-qos-null-frame-tx-over-wmi.patch | 403 - ...h11k-Add-offchannel-scanning-support.patch | 127 - ...rt-to-enable-disable-color-collision.patch | 46 - ...fs-interface-to-read-write-from-memo.patch | 504 - ...-DP-irq-names-during-registration-fo.patch | 189 - ...hange-and-power-save-duration-of-STA.patch | 665 -- ...-station-dump-not-updated-in-qcn9000.patch | 155 - ...K_QMI_TARGET_MEM_MODE_256M-support-f.patch | 238 - .../231-ath11k-add-wmi-ctrl-path-stats.patch | 934 -- .../qca/232-ath11k-qcn6122-support.patch | 1366 --- ...-001-ath11k-add-support-memory-stats.patch | 1012 -- ...02-mac80211-add-support-memory-stats.patch | 342 - ...11k-Disable-rx_header-tlv-for-2K-SKB.patch | 1041 -- .../233-ath11k-QDSS-support-for-qcn6122.patch | 178 - .../qca/233-ath11k-add-ce-latency-stats.patch | 310 - ...01-ath11k-account-tx-rx-packets-flow.patch | 465 - ...-mac80211-account-tx-rx-packets-flow.patch | 369 - ...34-ath11k-disabling-5-dot-9-channels.patch | 53 - ...th11k-Add-support-for-beacon-tx-mode.patch | 45 - ...N-iftype-support-on-NSS-offload-case.patch | 222 - ...vdev-in-NSS-for-AP_VLAN-vif-handling.patch | 787 -- ...80211-Add-support-for-beacon-tx-mode.patch | 158 - ...pport-for-WDS-offload-in-NSS-offload.patch | 599 -- ...-add-mod-param-support-to-skip-radio.patch | 117 - ...son-to-use-segmentted-memory-on-hk10.patch | 61 - .../235-ath11k-update-arvif-band-info.patch | 194 - ...-dynamic-VLAN-support-on-NSS-offload.patch | 129 - ...dev-in-NSS-for-dynamic-VLAN-handling.patch | 213 - ...-dynamic-VLAN-support-in-NSS-offload.patch | 556 - ...fs-to-disable-dynamic-bandwidth-oper.patch | 105 - ...dd-provision-to-configure-rx-hashmap.patch | 221 - ...dst-ring-descriptors-from-cacheable-.patch | 147 - ...ow-fast-rx-by-bypassing-stats-update.patch | 428 - ...8-ath11k-add-cfr-support-for-ipq8074.patch | 2001 ---- .../qca/239-ath11k-cfr-for-qcn9000.patch | 629 -- .../patches/qca/244-ath11k-dp-tx-perf.patch | 683 -- .../245-ath11k-Fix-ce-interrupt-count.patch | 61 - ...-new-parameters-for-tx-based-capture.patch | 340 - .../patches/qca/245-compilation_fix.patch | 425 - .../245-revert-dev-sw-netstats-txrx-add.patch | 124 - ...11k-Add-htt-stats-for-phy-reset-case.patch | 223 - .../300-ath11k-nss-mesh-offload-support.patch | 4538 -------- .../qca/301-ath11k-nss-mcbc-exception.patch | 220 - ...1-debugfs-support-for-ani-parameters.patch | 531 - ...rt-to-parse-new-wmi-event-for-6G-reg.patch | 747 -- ...k-add-177-channel-to-5G-channel-list.patch | 258 - ...ncorrect-PHY-mode-for-Legacy-modes-P.patch | 182 - ...port-to-track-mesh-beacon-miss-event.patch | 277 - ...k-remove-cal_done-check-during-probe.patch | 32 - ...t-to-handle-AWGN-interference-for-6G.patch | 108 - ...t-to-handle-AWGN-interference-for-6G.patch | 430 - .../qca/306-ath11k-sta-dbg-level-log.patch | 495 - ...t-to-dump-cont-tx-fail-count-in-mesh.patch | 368 - ...11k-support-to-calculate-medium-busy.patch | 151 - ...ax-peer-count-in-ipq5018-and-qcn6122.patch | 192 - ...-nss-thread-priority-during-pdev_ini.patch | 109 - ...d-ampdu-id-in-802.11-radiotap-header.patch | 278 - .../312-mac80211-fix-invalid-nss-config.patch | 32 - ...3-ath11k-fix-q6-crash-on-vdev-delete.patch | 121 - ...lookup-failure-in-mgmt-tx-completion.patch | 125 - ...-add-support-for-tx-completion-stats.patch | 387 - ...avoid-stack-corrupt-in-nwifi-undecap.patch | 11 - ..._DONE-read-on-monitor-ring-rx-buffer.patch | 125 - ...e-free-of-peer-rx_tid-during-reo-cmd.patch | 244 - .../qca/321-001-qgic-api-compile-fix.patch | 156 - ...02-ath11k-use-gic-api-irq-allocation.patch | 43 - .../qca/321-ath11k-add-spectral-160mhz.dump | 194 - ...dd-support-to-config-spatial-streams.patch | 142 - ...-fix-kernel-null-pointer-dereference.patch | 54 - ...debug-code-to-dump-peer-assoc-params.patch | 218 - .../323-ath11k-radio-phy-probe-sequence.patch | 133 - ...e-param-to-specific-caldata-file-loc.patch | 92 - ...-capture-support-for-ipq5018-qcn6122.patch | 265 - ...11k-add-debugfs-support-for-tx-power.patch | 175 - .../qca/324-ath11k-ipq9574-support.patch | 567 - ...11k-Add-support-to-packet-error-rate.patch | 200 - ...th11k-Enhance-existing-htt-stats-tlv.patch | 2098 ---- .../qca/325-ath11k-mon-intrp-changes.patch | 42 - ...ath11k-Add-support-to-bit-error-rate.patch | 181 - .../326-ath11k-add-smart-antenna-APIs.patch | 1854 ---- ...pport-for-new-htt-stats-and-tlv-tags.patch | 555 - ...327-ath11k-add-smart-antenna-debugfs.patch | 434 - ...329-ath11k-add-ftm-responder-support.patch | 77 - ...30-ath11k-sync-wds_ast_entry-updates.patch | 518 - ...331-ath11k-add-cbf-support-in-pktlog.patch | 351 - ...11-Add-qos-tid-configuration-support.patch | 273 - ...1k-Add-tid-qos-configuration-support.patch | 1387 --- ...wer-spectral-density-psd-of-regulato.patch | 220 - ...support-to-select-6G-Regulatory-type.patch | 498 - ...-support-for-awgn-mitigation-in-6Ghz.patch | 386 - ...regd-based-on-vdev-type-and-6G-power.patch | 215 - ...power-type-from-HE-operation-element.patch | 49 - ...r-spectral-density-psd-of-regulatory.patch | 88 - ...e-of-transmit-power-envelope-element.patch | 282 - ...tx-power-in-vdev-start-response-even.patch | 66 - ...meters-for-vdev_set_tpc_power-wmi-co.patch | 309 - ...SS_CHANGED_TXPOWER-when-EXT_TPC_REG_.patch | 81 - ...ler-for-WMI_VDEV_SET_TPC_POWER_CMDID.patch | 183 - ...nd-TPC-power-to-firmware-for-6G-VDEV.patch | 56 - ...rt-to-select-all-6G-regulatory-rules.patch | 300 - ...port-to-awgn-detection-and-mitigatio.patch | 390 - ...pport-for-6G-channels-and-regulatory.patch | 369 - ...11k-update-all-6G-reg-rules-in-sband.patch | 309 - ...d-6g-power-mode-advertisement-in-nl8.patch | 90 - ...e-eirp-power-based-on-ieee80211_get_.patch | 179 - ...-ath11k-Add-support-to-threeway-coex.patch | 441 - ...-0001-ath11k-optimize-tx-completions.patch | 261 - ...se-DECLARE_BITMAP-for-idr-operations.patch | 287 - ...TCL_DATA_CMD_INFO2_TID_OVERWRITE-con.patch | 129 - ...04-ath11k-use-single-TCL-ring-for-tx.patch | 33 - ...-0005-mac80211-simple-tx-for-AP-mode.patch | 101 - ...1k-add-simple-tx-handler-for-AP-mode.patch | 185 - .../qca/335-ath11-fix-ar-ops-crash.patch | 71 - ...rt-to-send-dynamic-pageable-memory-t.patch | 146 - .../335-mac80211-Mesh-Fast-xmit-support.patch | 741 -- .../336-0001-ath11k-idr-optimization.patch | 140 - .../qca/336-0002-ath11k-Use-idr_replace.patch | 282 - ...ing-rx-stats-with-monitor-vif-enable.patch | 82 - ...1k-skip-status-ring-entry-processing.patch | 191 - .../336-mac80211-Mesh-Fast-rx-support.patch | 208 - ...11-fix-6GHz-AP-STA-concurrency-issue.patch | 55 - ...ded-array-buffer-display-in-htt-stat.patch | 118 - ...transmitting-packets-during-recovery.patch | 56 - ...Handle-failure-in-qmi-firmware-ready.patch | 42 - .../339-ath11k-add-get_txpower-mac-ops.patch | 516 - ...spectral-scan-during-spectral-deinit.patch | 29 - ...section-support-for-regulatory-rules.patch | 348 - ...rt-for-ext-vdev-in-NSS-for-AP_VLAN-v.patch | 57 - ...ccess-of-the-dma-buffer-back-to-dma-.patch | 33 - ...ain-debugfs-during-firmware-recovery.patch | 417 - ...mac80211-fix-unconditional-sta-usage.patch | 53 - ...Add-packet-latency-histogram-support.patch | 462 - ...hecksum-issue-in-mesh-fast-xmit-path.patch | 39 - .../345-mac80211-fix-mixed-declaration.patch | 57 - ...fs-entry-to-configure-bss-survey-mod.patch | 125 - ...pci3-and-pci4-domain-names-to-dp-ce_.patch | 79 - ...change-to-40Mhz-during-channel-switc.patch | 39 - .../qca/349-ath11k-add-tx-delay-to-tsf.patch | 295 - ...D-and-EMA-beacon-handling-in-AP-mode.patch | 374 - ...h11k-add-WMI-resource-config-for-EMA.patch | 78 - ...t-MBSSID-and-EMA-driver-capabilities.patch | 63 - ...nfiguration-during-vdev-create-start.patch | 221 - ...structure-for-WMI-vdev-up-parameters.patch | 205 - ...k-configure-MBSSID-device-parameters.patch | 122 - ...parameter-setting-in-a-different-fun.patch | 87 - .../350-09-ath11k-EMA-beacon-support.patch | 222 - ...-WPA-and-RSNE-parameters-for-nontran.patch | 145 - .../350-11-nl80211-add-RNR-for-EMA-AP.patch | 204 - .../350-12-mac80211-add-RNR-for-EMA-AP.patch | 324 - ...support-to-send-beacon-in-configured.patch | 83 - ...1-FILS-discovery-template-definition.patch | 241 - ...ear-the-keys-properly-when-DISABLE_K.patch | 55 - ...d-qmi-changes-to-fetch-memory-region.patch | 247 - ...uling-while-atomic-in-tbtt-offset-ha.patch | 118 - ...emoval-of-debugfs-post-firmware-reco.patch | 204 - .../qca/352-ath11k-skip-caldata-fetch.patch | 53 - ...1-allow-nss-change-only-upto-max_nss.patch | 84 - ...sg_handler-data-structure-initializa.patch | 33 - ...-bandwidth-change-issue-for-peer-sta.patch | 172 - ...nitor-vdev-creation-with-fw-recovery.patch | 35 - ...-frags-from-uninitialized-peer-in-dp.patch | 119 - ...rning-with-monitor-interface-restart.patch | 33 - ...th11k-Fix-unmapping-allocated-memory.patch | 63 - ...e-the-Rate-Table-information-display.patch | 207 - ...k-fix-6g-station-association-failure.patch | 37 - ...x-invalid-mgmt-rx-frame-length-issue.patch | 109 - ...356-ath11k-invalid-desc-sanity-check.patch | 89 - ...-fix-clear-peer-keys-during-disassoc.patch | 55 - ...monitor-interface-to-transmit-packet.patch | 33 - ...W-checksum-advertisement-to-netdevic.patch | 29 - ...bitrate-retry-signal-in-station-dump.patch | 398 - ...-ath11k-skip-caldb-alloc-in-seg-mode.patch | 41 - ...n-t-stop-queue-when-qdisc-is-noqueue.patch | 120 - ...-fix-tkip-encryption-traffic-failure.patch | 30 - .../359-cfg80211-Fix-mcs-divisor-value.patch | 36 - ...ength-validation-before-skb_put-call.patch | 130 - ..._tx_status-reason-code-1-as-drop-pac.patch | 94 - ...ct-ast-index-assignment-for-wds-peer.patch | 96 - ...reen-AP-enabling-set-command-support.patch | 83 - ...1k-Encoding-regdb.bin-in-board-2.bin.patch | 429 - .../365-01-ath11k-Add-support-for-ADFS.patch | 717 -- ...02-ath11k-add-support-for-ADFS-radar.patch | 147 - .../qca/366-ath11k-wmm-sent-pkts.patch | 140 - .../qca/367-ath11k-wmm-received-pkts.patch | 118 - .../qca/368-ath11k-fail-sent-pkts.patch | 91 - .../qca/369-ath11k-fail-received-pkts.patch | 99 - ...rt-to-get-rssi-value-of-non-associat.patch | 673 -- ...Fix-ppdu_id-from-firmware-PPDU-stats.patch | 56 - ...rong-regdomain-update-for-KR-country.patch | 36 - ...11k-Add-Rate-table-for-peer-tx-stats.patch | 174 - ...Add-retry-mechanism-for-update_rx_qu.patch | 398 - ...ck-skb_headroom-before-using-skb_push.patc | 244 - ...treaming-not-working-for-wan-to-wlan.patch | 49 - ...adio-Measurement-Action-field-values.patch | 42 - ...k-add-support-for-Tx-Power-insertion.patch | 223 - ...-event-handler-support-for-link-desc.patch | 73 - ...user-country-setting-during-active-v.patch | 82 - ...r-save-support-during-interface-down.patch | 246 - ...ix-compilation-issues-with-pkg-upgrd.patch | 66 - ...th11k-fix-monitor-mode-bringup-crash.patch | 83 - ...ix-mutex-dead-lock-and-q6-dump-crash.patch | 65 - ...AM-support-for-third-party-platforms.patch | 110 - ...y-leak-caused-by-thermal-debug-regis.patch | 85 - .../453-ath11k-compilation-error-fix.patch | 407 - ...ntries-if-ring-is-full-and-intrp-idl.patch | 145 - ...ded-a-debugfs-to-dump-hal-srng-stats.patch | 155 - ...001-ath12k-hw_params-changes-for-RDP.patch | 48 - .../qca/500-ath12k-add-bus-param-struct.patch | 190 - .../qca/501-ath12k-add-dts-support.patch | 253 - .../qca/502-ath12k-add-thermal-support.patch | 401 - .../qca/503-ath12k-add-debugfs.h.patch | 95 - .../qca/504-ath12k-add-debugfs-support.patch | 9427 ----------------- .../qca/505-ath12k-add-spectral-support.patch | 1266 --- .../qca/506-ath12k-add-testmode-support.patch | 338 - ...-add-unused-struct-ath12k_skb_cb-eid.patch | 40 - ...ved-host-DDR-addresses-from-DT-for-P.patch | 171 - ...-ath12k-add-ath12k_dp_tx_htt_h2t_vde.patch | 75 - ...onitor-status-and-monitor-desc-rings.patch | 83 - ...-ring-type-enum-to-match-the-hal-rin.patch | 34 - .../511-ath12k_fix_compilation_issue.patch | 25 - ...server-arrive-callback-by-correcting.patch | 32 - ...gic-to-write-qrtr-node-id-to-scratch.patch | 104 - .../514-ath12k-fix-pci-read-and-write.patch | 93 - .../patches/qca/516-ath12k-fix-l1ss.patch | 60 - ...le-caldata-since-it-is-not-supported.patch | 35 - ...ix-cc-ext-event-for-regulatory-build.patch | 215 - .../520-ath12k-WAR-AP-bringup-crashes.patch | 41 - ...si-memory-region-name-to-ath-memory-.patch | 23 - .../patches/qca/523-ath12k-dp-tx-fixes.patch | 23 - .../528-ath12K-Enable-RAM-dump-support.patch | 432 - ...-MIMO-and-OFDMA-HE-capability-flags-.patch | 61 - ...U-MIMO-and-OFDMA-params-to-hardware-.patch | 346 - ...HE-MCS-mapper-to-a-separate-function.patch | 74 - ...ort-for-setting-fixed-HE-rate-gi-ltf.patch | 1000 -- ...port-for-80P80-and-160-MHz-bandwidth.patch | 322 - ...ded-NSS-bandwidth-support-for-160MHz.patch | 106 - ...dd-channel-2-into-6-GHz-channel-list.patch | 47 - ...530-ath12k-Add-support-for-VHT-in-2G.patch | 37 - ...t-drops-due-to-incorrect-6-GHz-freq-.patch | 76 - ...-fix-survey-dump-collection-in-6-GHz.patch | 35 - ...d-6-GHz-params-in-peer-assoc-command.patch | 94 - ...support-SMPS-configuration-for-6-GHz.patch | 89 - ...ng-msdu_ext_desc-in-Ethernet-and-RAW.patch | 174 - ...cess-Violation-with-ath12k_pci-rmmod.patch | 34 - .../patches/qca/533-ath12k-WMI-fixes.patch | 25 - ...-ath12k-fix-typecast-error-for-32bit.patch | 27 - .../qca/536-ath12k-Fixed-8VAP-issue.patch | 39 - ...asing-VDEV_SETUP_TIMEOUT-value-to-3s.patch | 44 - ...-11be-mumimo-and-ofdma-stats-support.patch | 1376 --- ...tribute-definition-for-older-kernels.patch | 32 - ...l80211-add-macro-for-maximum-EHT-NSS.patch | 27 - ...dd-macro-for-EHT-RU-bitmask-position.patch | 38 - ...on-of-EHT-capabilities-from-firmware.patch | 686 -- ...211-Adding-320-MHz-bandwidth-changes.patch | 29 - ...12k-Adding-320-MHz-bandwidth-changes.patch | 122 - .../qca/569-ath12k-adding-EHT-PHY-modes.patch | 181 - ...sure-HE-capabilities-are-set-for-EHT.patch | 26 - .../571-nl80211-beacon-EHT-rate-support.patch | 352 - ...2k-prepare-EHT-peer-assoc-parameters.patch | 288 - ...-ath12k-add-WMI-support-for-EHT-peer.patch | 207 - .../qca/574-ath12k-hw-settings-for-EHT.patch | 33 - ...12k-Update-driver-reg-flags-for-11be.patch | 38 - ...operation-element-support-in-AP-mode.patch | 94 - ...operation-element-support-in-AP-mode.patch | 112 - .../579-mac80211-Add-320-Mhz-support.patch | 65 - ...-mac80211-Support-disabling-EHT-mode.patch | 33 - ...ort-for-setting-fixed-HE-rate-gi-ltf.patch | 39 - ...-add-EHT-GI-LTF-attributes-and-enums.patch | 108 - ...4-ath12k-Add-EHT-fixed-rate-settings.patch | 957 -- ...U-MIMO-and-OFDMA-params-to-hardware-.patch | 34 - ...-MIMO-and-OFDMA-EHT-capability-flags.patch | 62 - ...MU-MIMO-and-OFDMA-params-to-hardware.patch | 112 - ...bringup-fixes-for-D1.3-compatibility.patch | 144 - .../589-ath12k-workaround-to-match-STA.patch | 68 - ...e-RU-puncturing-support-to-userspace.patch | 143 - ...g80211-validate-RU-puncturing-bitmap.patch | 186 - ...l80211-validate-RU-puncturing-bitmap.patch | 145 - ...uncturing-bitmap-during-width-downgr.patch | 25 - ...tise-RU-puncturing-support-to-kernel.patch | 110 - ...th12k-configure-RU-puncturing-bitmap.patch | 110 - ...Add-support-for-QDSS-dump-collection.patch | 986 -- ...12k-Add-support-for-wmi-based-fw-log.patch | 317 - .../598-ath12k-Add-fw-recovery-support.patch | 82 - ...isplay-EHT-rx-rate-info-in-iw-statio.patch | 208 - ...Handle-driver-updated-MU-EDCA-params.patch | 49 - ...-ath12k-Enable-SSR-on-firmware-crash.patch | 293 - ...12k-Handle-FW-updated-MU-EDCA-params.patch | 158 - ...-tx-bitrate-for-iw-wlan-station-dump.patch | 522 - ...pport-to-configure-spatial-reuse-par.patch | 589 - .../604-ath12k-Enable-extended-tx-stats.patch | 61 - ...h12k-skip-NULL-buff-segments-in-RDDM.patch | 63 - ...esc-when-channel-freq-is-wrong-in-ph.patch | 61 - ...mpletion-ring-mask-for-WBM2SW-ring-4.patch | 51 - ...ats-support-by-enabling-monitor-ring.patch | 728 -- ...dss-full-coredump-collection-support.patch | 49 - ...ort-for-1024-BlockAck-bitmap-for-EHT.patch | 235 - ...ue-in-reading-pdev-temperature-value.patch | 96 - ...h12k-add-WMI-resource-config-for-EMA.patch | 70 - ...t-MBSSID-and-EMA-driver-capabilities.patch | 54 - ...nfiguration-during-vdev-create-start.patch | 220 - ...structure-for-WMI-vdev-up-parameters.patch | 188 - ...k-configure-MBSSID-device-parameters.patch | 122 - ...parameter-setting-in-a-different-fun.patch | 70 - .../612-07-ath12k-EMA-beacon-support.patch | 204 - ...-WPA-and-RSNE-parameters-for-nontran.patch | 139 - ...sending-vdev-down-for-channel-switch.patch | 74 - ...ernel-panic-during-regd-update-in-6g.patch | 118 - ...ware-assert-due-to-ce-count-mismatch.patch | 32 - ...-add-statistics-for-tx-RU-puncturing.patch | 102 - ...-add-statistics-for-rx-RU-puncturing.patch | 142 - ...alls-to-manually-add-del-pause-resum.patch | 451 - ...h12k-add-debugfs-for-TWT-debug-calls.patch | 340 - ...upport-320-Mhz-in-Wide-bandwidth-CSA.patch | 270 - ...port-to-select-6-GHZ-Regulatory-type.patch | 471 - ...d-based-on-vdev-type-and-6-GHZ-power.patch | 198 - ...power-type-from-HE-operation-element.patch | 43 - ...r-spectral-density-psd-of-regulatory.patch | 65 - ...e-of-transmit-power-envelope-element.patch | 289 - ...tx-power-in-vdev-start-response-even.patch | 55 - ...meters-for-vdev_set_tpc_power-wmi-co.patch | 313 - ...SS_CHANGED_TXPOWER-when-EXT_TPC_REG_.patch | 65 - ...ler-for-WMI_VDEV_SET_TPC_POWER_CMDID.patch | 191 - ...TPC-power-to-firmware-for-6-GHZ-VDEV.patch | 55 - ...to-select-all-6-GHZ-regulatory-rules.patch | 353 - ...-update-all-6-GHZ-reg-rules-in-sband.patch | 236 - ...e-eirp-power-based-on-ieee80211_get_.patch | 180 - ...12k-porting-6-GHZ-regulatory-changes.patch | 108 - ...5-ath12k-fix-kernel-panic-during-mac.patch | 157 - ...-GHz-Transmit-power-envelope-for-320.patch | 57 - ...12k-Enable-set-tpc-power-cmd-for-320.patch | 61 - ...k-Replace-HTT_DBG_OUT-with-scnprintf.patch | 3655 ------- ...12k-supporting-5.9G-band-with-160Mhz.patch | 246 - ...RRAY_TO_STRING-to-PRINT_ARRAY_TO_BUF.patch | 2111 ---- ...26-mac80211-add-EHT-support-for-mesh.patch | 529 - ...nup-checkpatch-warnings-in-htt-stats.patch | 2657 ----- ...p-unnecessary-NULL-termination-check.patch | 1167 -- ...e-missing-stats-in-debugfs_htt_stats.patch | 1139 -- ...12k-Add-additional-debugfs_htt_stats.patch | 2176 ---- ...ath12k-Add-support-for-new-htt_stats.patch | 1718 --- ...d-module-param-to-En-Dis-FW-segmente.patch | 44 - ...2k-Add-pageable-mem-type-for-qcn9274.patch | 228 - ...rt-to-handle-AWGN-interference-for-6.patch | 642 -- ...DU_END-and-RX_MSDU_END-stats-parsing.patch | 45 - .../635-ath12k-fix-enabling-reoq-lut.patch | 106 - .../patches/qca/635-ath12k_diag_support.patch | 341 - ...roy-debugfs-during-firmware-recovery.patch | 40 - ...636-ath12k-enable-vdev-stats-offload.patch | 265 - ...LL-ptr-access-during-mgmt-tx-cleanup.patch | 31 - ...1-add-RU-puncturing-support-for-mesh.patch | 250 - ...8-01-ath12k-Add-support-for-Green-AP.patch | 242 - ...fg80211-Add-the-support-for-Green-AP.patch | 203 - ...ac80211-Add-the-support-for-Green-AP.patch | 217 - ...turing-pattern-of-peer-mesh-during-a.patch | 33 - ...spectral-scan-during-spectral-deinit.patch | 74 - ...operation-for-tx-management-packets-.patch | 190 - ...tial-wmi_mgmt_tx_queue-race-conditio.patch | 32 - ...k-disabling-credit-flow-for-WMI-path.patch | 427 - ...ix-bss-chan-info-request-wmi-command.patch | 51 - .../639-05-ath12k-tx-queue-length-fix.patch | 100 - ...-coredump-segment-for-dynamic-paging.patch | 72 - ...12k-Enable-monitor-interface-support.patch | 314 - ...factor-monitor-stats-ring-processing.patch | 461 - ...lter-settings-to-enable-monitor-mode.patch | 201 - ...d-monitor-buffer-address-TLV-parsing.patch | 740 -- .../qca/640-005-ath12k-eht-tlv-parsing.patch | 1652 --- ...unused-RX_FLAGS-from-mac80211_rx_fla.patch | 92 - .../640-006-mac80211-add-eht-radiotap.patch | 377 - ...0-007-ath12k-add-EHT-radiotap-header.patch | 116 - ...640-008-ath12k-fix-hal_rx-structures.patch | 264 - ...-frags-from-uninitialized-peer-in-dp.patch | 122 - ...ix-secu-connection-due-to-auth-early.patch | 69 - ...addr-tx-failure-for-AP-and-STA-modes.patch | 134 - ...r-NULL-EAPOL-frame-from-wbm-err-path.patch | 110 - ...ath12k-fix-4addr-multicast-packet-tx.patch | 134 - ...support-for-PCSS-SSR-dump-collection.patch | 581 - ...rt-for-recording-EHT-Tx-Rx-rate-info.patch | 212 - ...e-the-Rate-Table-information-display.patch | 221 - ...1-ath12k-add-hw_param-for-wakeup_mhi.patch | 95 - ...int-htt_peer_stats-only-when-enabled.patch | 62 - ...llocation-incrementation-in-tx_stats.patch | 54 - ...47-01-ath12k-Add-5GHz-240MHz-support.patch | 65 - ...unctured-channel-validation-for-5GHz.patch | 285 - ...x-invalid-mgmt-rx-frame-length-issue.patch | 109 - ...k-fix-6g-station-association-failure.patch | 38 - ...-target-assert-during-channel-switch.patch | 141 - ...tersection-support-for-regulatory-ru.patch | 372 - ...-ath12k-fill-pdev-id-for-fw-test-cmd.patch | 44 - ...e-free-of-peer-rx_tid-during-reo-cmd.patch | 178 - ...x-incorrect-handling-of-AMSDU-frames.patch | 35 - ...tch-to-using-ieee80211_tx_status_ext.patch | 65 - ...ort-to-enable-disable-bss-color-coll.patch | 87 - ...Add-support-for-bss-color-enablement.patch | 311 - ...T-ppdu-stats-from-the-firmware-descr.patch | 378 - ...warn-prints-to-dbg-when-srng-is-full.patch | 32 - ...fs-interface-to-configure-firmware-d.patch | 227 - ...2k-single-wiphy-registration-per-SOC.patch | 828 -- ...k-Update-hw-generic-mac-ops-handling.patch | 637 -- ...tatemachine-changes-for-single-wiphy.patch | 500 - ...t-scan-for-single-wiphy-architecture.patch | 345 - ...figs-for-vdev-before-actual-vdev-cre.patch | 837 -- ...ional-checks-for-vif-and-sta-iterato.patch | 115 - ...gulatory-support-for-single-wiphy-ar.patch | 265 - ...-ath12k-Add-provision-for-common-log.patch | 257 - ...12k-Add-support-for-multi-chip-wiphy.patch | 1767 --- ...c-based-registration-for-default-gro.patch | 1283 --- .../qca/652-ath12k-fix-fixrate-issue.patch | 188 - ...dst-ring-descriptors-from-cacheable-.patch | 293 - ...ow-fast-rx-by-bypassing-stats-update.patch | 422 - ...dd-provision-to-configure-rx-hashmap.patch | 215 - ...-irq-names-during-registration-for-a.patch | 67 - ...h12k-check-valid-fixed-rate-settings.patch | 117 - ...w-change-during-channel-switch-in-me.patch | 39 - ...h12k-Add-HE-UL-MU-fixed-rate-setting.patch | 226 - ...k-Add-pktlog-support-through-debugfs.patch | 798 -- ...ix-memory-free-during-pci-power-down.patch | 59 - ...tlog-decode-info-embed-into-pktlog-d.patch | 299 - ...ing-while-atomic-in-beacon_tx_status.patch | 94 - ...ueue-not-getting-destroyed-after-rmm.patch | 44 - .../656-ath12k-pktlog-rx-filter-changes.patch | 831 -- ...lock-unlock-issue-in-MLO-offset-even.patch | 34 - ...h12k-Add-missing-per-peer-parameters.patch | 429 - .../qca/657-ath12k-Fix-memory-leak.patch | 47 - ...d-module-param-to-enable-disable-MLO.patch | 74 - ...lock-for-ar-allocated_vdev_map-acces.patch | 40 - ...12k-fix-NSS-value-update-in-rx-stats.patch | 79 - ...monitor-interface-to-transmit-packet.patch | 33 - ...ncapsulation-of-EAPOL-frames-if-OFFL.patch | 206 - ...658-ath12k-Change-default-frame-mode.patch | 28 - ...nt-correct-segment-count-in-coreudmp.patch | 43 - ...restart-start-sequence-during-channe.patch | 258 - ...2k-Modify-Rx-ring-size-and-buff-size.patch | 81 - ...uced-module-param-for-enabling-fwlog.patch | 46 - .../661-ath12k-Add-TPC-stats-support.patch | 1717 --- ...-ath12k-Fix-TPC-CMD-Info-s-sent-as-0.patch | 33 - ...12k-Update-mutex-lock-var-in-mac-ops.patch | 57 - ...ength-validation-before-skb_put-call.patch | 189 - ...l-peer-meta-data-during-reo_reinject.patch | 37 - ...antenna-parameter-is-zero-in-iw-phyx.patch | 30 - ...x-memory-leak-in-rx_desc-and-tx_desc.patch | 91 - ...r_chain_rssi_in_dbm-is-incorrect-in-.patch | 57 - ...-fix-clear-peer-keys-during-disassoc.patch | 55 - ...-fix-radar-detection-issue-in-160mhz.patch | 155 - ...ac80211-add-eht_capa-for-debugfs_sta.patch | 249 - ...uth-flag-only-for-actual-association.patch | 67 - .../qca/663-ath12k-Fix-memory-leak.patch | 45 - .../qca/663-ath12k-add-FTM-Mode-Support.patch | 789 -- ...d-alternate-tcl-ring-selection-logic.patch | 108 - ...664-ath12k-change-kzalloc-to-vzalloc.patch | 87 - .../patches/qca/664-ath12k-increase-msi.patch | 97 - .../664-ath12k-prevent-monitor-memset.patch | 240 - ...t-tx-completion-by-freeing-skb-when-.patch | 125 - ...ts-for-TX-buffer-allocation-failures.patch | 51 - ...d-operator-overhead-for-dst-ring-acc.patch | 108 - ...rse-desctiptor-that-will-not-be-hand.patch | 55 - ...tx-completions-in-case-of-stats-disa.patch | 234 - ...atus-reporting-api-when-encap-offloa.patch | 80 - ...transmitting-packets-during-recovery.patch | 49 - ...2k-optimize-rcu-lock-access-in-dp_tx.patch | 60 - ...th12k-add-branch-predictors-in-dp_tx.patch | 210 - ...ke-use-of-TID-classification-offload.patch | 70 - ...ynchronization-in-tx-completion-path.patch | 60 - ...color-detection-notify-to-queue-work.patch | 139 - ...date-wbm_tx_stats-upon-tx-completion.patch | 114 - ...gister-changes-for-QCN9274-version-2.patch | 727 -- ...xed-dma-unmapping-in-tx-desc-cleanup.patch | 36 - .../qca/666-ath12k-add-RAW-Mode-support.patch | 33 - ...bytes-packets-counters-in-peer-stats.patch | 88 - ...66-mac80211-Fix-Green-AP-Crash-issue.patch | 42 - ...onfig-definition-to-enable-disable-P.patch | 49 - .../qca/667-ath12k-peer-pktlog-fix.patch | 67 - .../qca/667-mac80211-Enable-PPE-support.patch | 235 - ...68-ath12k-Enable-PPE-in-fast-Rx-path.patch | 58 - ...fix-memory-leaks-during-multicast-tx.patch | 241 - ...ath12k-regdb-encoding-board-2-binary.patch | 434 - ...a_map_single-to-virt_to_phys-in-rx-r.patch | 68 - ...-configure-phymode-for-beacon-in-6Hz.patch | 95 - .../qca/670-01-ath12k-Add-MLO-caps.patch | 633 -- ...670-02-ath12k-Add-mlo-wmi-setup-apis.patch | 373 - .../qca/670-03-ath12k-Setup-MLO-link.patch | 496 - ...LO-global-memory-support-in-coredump.patch | 41 - ...dd-support-for-cold-boot-calibartion.patch | 151 - ...Adding-support-for-mgmt-frames-stats.patch | 318 - ...th12k-enhance-peer-create-delete-log.patch | 157 - ...or-options-71-to-127-are-not-present.patch | 33 - ...con-tx-mode-when-multiple-tx-vifs-st.patch | 30 - ...freeing-hal-reo-status-entry-in-host.patch | 103 - ...12k-enable-ampdu-flag-for-data-frame.patch | 82 - ...g-ack-info-not-shown-in-station-dump.patch | 37 - .../qca/673-ath12k-RDP454-bringup.patch | 123 - ...e-service-flag-for-survey-dump-stats.patch | 44 - ...c80211-Initialize-EWMA-fail-avg-to-1.patch | 45 - ...4-ath12k-fix-rmmod-issue-in-SSR-case.patch | 48 - ...ix-Channel-Switch-Announcement-6-GHz.patch | 227 - ...interface-combination-advertisement-.patch | 1613 --- ...-add-support-for-background-cac-stop.patch | 76 - ...1-add-minimum-background-cac-timeout.patch | 133 - ...-multi-hw-channel-list-and-interface.patch | 311 - ...h12k-Advertise-interface-combination.patch | 153 - ...umber-of-sounding-dimensions-above-8.patch | 36 - ...-wiphy-incorrect-channel-survey-dump.patch | 35 - ...prepare-vif-and-sta-for-MLO-handling.patch | 5287 --------- ...6-02-ath12k-MLO-vdev-bringup-changes.patch | 805 -- ...-changes-for-handling-multi-link-sta.patch | 2179 ---- ...676-04-ath12k-setup-ML-reo-queue-LUT.patch | 204 - ...-link-desc-buf-manager-based-on-chip.patch | 155 - ...th12k-perform-Tx-address-translation.patch | 155 - .../qca/676-ath12k-enable-qdss-config.patch | 248 - ...cfg80211-get-correct-AP-link-chandef.patch | 33 - ...d-link_id-parameter-to-various-key-o.patch | 954 -- ...d-MLO-links-channel-info-in-GET_INTE.patch | 45 - ...d-link_id-to-cfg80211_ch_switch_star.patch | 154 - ...1-use-link-ID-in-NL80211_CMD_SET_BSS.patch | 59 - ...cept-STA-changes-without-link-change.patch | 51 - ...operly-set-old_links-when-removing-a.patch | 41 - .../677-08-wifi-mac80211-set-link-BSSID.patch | 33 - ...e-link-in-TXQ-parameter-configuratio.patch | 65 - ...-properly-implement-MLO-key-handling.patch | 907 -- ...i-cfg80211-add-link-id-to-txq-params.patch | 69 - ...d-link-information-in-ieee80211_rx_s.patch | 220 - ...e-the-corresponding-link-for-stats-u.patch | 96 - ...use-link-ID-for-MLO-in-queued-frames.patch | 139 - ...lme-don-t-add-empty-EML-capabilities.patch | 48 - ...11-fix-control-port-frame-addressing.patch | 47 - ...x-potential-deadlock-in-ieee80211_ke.patch | 36 - ...e-correct-rx-link_sta-instead-of-def.patch | 225 - ...ac80211-maintain-link_id-in-link_sta.patch | 49 - ...ifi-mac80211-make-smps_mode-per-link.patch | 274 - ...ac80211-move-link-code-to-a-new-file.patch | 595 -- ...1-isolate-driver-from-inactive-links.patch | 697 -- ...d-vif-sta-link-RCU-dereference-macro.patch | 103 - ...-use-link_id-in-ieee80211_change_bss.patch | 123 - ...move-support-for-AddBA-with-fragment.patch | 60 - ...8-ath12k-add-mac-ops-to-get-tx-power.patch | 663 -- ...-host-cap-until-all-the-chip-in-the-.patch | 247 - ...th12k-add-phy-count-capability-learn.patch | 195 - ...e-avg-ack-signal-inconsistency-issue.patch | 98 - ...ppdu_info-separately-during-pdev_dp-.patch | 144 - ...-parsing-overhead-by-looping-till-sk.patch | 89 - ...2k-handle-monitor-drop-TLVs-scenario.patch | 82 - ...ppdu-info-bandwidth-in-u_sig_cmn-TLV.patch | 62 - ...ug-prints-to-prevent-buffer-overflow.patch | 85 - ...op-data-frames-from-unassociated-sta.patch | 48 - ...FS-radar-detection-with-radar-bitmap.patch | 145 - ...ar-bitmap-during-DFS-radar-detection.patch | 138 - ...map-generation-durin-DFS-radar-detec.patch | 136 - ...fs-extended-support-radar-simulation.patch | 134 - ...k-skb_headroom-before-using-skb_push.patch | 136 - ...te-CCFS1-in-EHT-Operation-IE-for-11s.patch | 116 - ...-stall-while-updating-mesh-PS-STA-st.patch | 94 - ...d-the-Tx-Descriptor-before-Rx-Descri.patch | 142 - ...-Refactor-Tx-Rx-Descriptor-procedure.patch | 199 - ...-ath12k-Refactor-SW-cookie-procedure.patch | 134 - ...th12k-Fix-failed-to-remove-key-issue.patch | 493 - ...y-leak-caused-by-thermal-debug-regis.patch | 84 - ...mac80211-reject-clear-user-rate-mask.patch | 112 - ...x-mesh-EHT-operation-info-IE-element.patch | 152 - ...fix-RCU-stall-in-mesh-fast-xmit-path.patch | 159 - ...d-MLO-capable-field-in-hw-group-stru.patch | 193 - ...partner-Rxdma-buffer-processing-in-D.patch | 208 - ...artner-rx-descriptor-init-in-each-So.patch | 64 - ...tions-for-Multi-link-Station-and-Acc.patch | 148 - ...erve-member-of-wbm-completion-struct.patch | 32 - ...nnel-and-txpower-value-for-each-link.patch | 82 - ...nk-information-of-associated-station.patch | 79 - .../qca/689-01-mac80211-use-link-conf.patch | 218 - ...k-conf-for-all-bss-config-operations.patch | 525 - ...nk-information-of-associated-station.patch | 50 - ...h12k-use-link-sta-instead-of-deflink.patch | 817 -- ...04-ath12k-use-link-for-ampdu-actions.patch | 282 - ...ress-translation-for-multiple-bss-ca.patch | 36 - ...12k-update-CSA-counter-in-probe-resp.patch | 62 - ...i-ath12k-Fix-pci-register-read-write.patch | 90 - ...vdev-configuration-related-functions.patch | 293 - ...th12k-add-multi-vdev-restart-support.patch | 661 -- ...-cfg80211-get-tx-power-for-each-link.patch | 109 - ...-mac80211-get-tx-power-for-each-link.patch | 87 - ...-03-ath11k-get-txpower-for-each-link.patch | 28 - ...-04-ath12k-get-txpower-for-each-link.patch | 80 - .../690-ath12k-board-id-read-from-OTP.patch | 79 - ...ove-iterations-over-channel-contexts.patch | 158 - ...1-add-support-for-channel-switch-wit.patch | 648 -- ...1-update-beacon-counters-per-link-ba.patch | 124 - ...mac80211-add-Critical-Update-support.patch | 137 - ...cal-update-support-during-set-beacon.patch | 313 - ...-ath12k-240MHz-Q-Q-vendor-IE-support.patch | 237 - .../qca/691-ath12k-Add-support-for-ADFS.patch | 809 -- ...-ath12k-Monitor-mode-bring-up-in-SLO.patch | 56 - ...el-enable-for-dfs-channel-puncturing.patch | 43 - ...ed-cfg80211_chandef_dfs_cac_time-api.patch | 68 - ...0211-support-poll-sta-for-ML-clients.patch | 96 - ...211-mac80211-add-DFS-support-for-MLO.patch | 792 -- ...2-ath12k-add-initial-DFS-MLO-support.patch | 103 - ...92-ath12k-enable-MLO-dump-collection.patch | 114 - ...ble-free-during-BE-MU-MIMO-htt-stats.patch | 37 - ...693-ath12k-incorrect-paging.bin-size.patch | 83 - ...e-link-status-before-deciding-on-off.patch | 93 - ...-from-bss_conf-during-channel-switch.patch | 51 - ...e-timer-rx_replenish_retry-during-rm.patch | 28 - ...factor-the-MLO-global-memory-request.patch | 338 - ...MLO-global-memory-support-in-segment.patch | 170 - ...1-fix-u8-overflow-in-cfg80211_update.patch | 53 - ...an-entry-creation-for-duplicate-beac.patch | 34 - ...1-mac80211-reject-bad-MBSSID-element.patch | 62 - ...697-ath12k-Propagate-ML-capabilities.patch | 104 - ...-fix-tkip-encryption-traffic-failure.patch | 30 - ...11-fix-MBSSID-parsing-use-after-free.patch | 110 - ...AM-cfg80211-fix-BSS-refcounting-bugs.patch | 96 - ...1-avoid-nontransmitted-BSS-list-corr.patch | 59 - ...1-fix-crash-in-beacon-protection-for.patch | 64 - .../702-ath11k-fix-memory-leak-in-dp-rx.patch | 53 - .../qca/702-ath12k-fixed-rate-2G-fix.patch | 31 - ...fg80211-add-support-for-set-bit-rate.patch | 38 - ...pport-for-set-link-specific-tx-power.patch | 162 - ...ac80211-add-support-for-set-bit-rate.patch | 88 - ...pport-for-set-link-specific-tx-power.patch | 249 - ...-ath12k-add-support-for-set-bit-rate.patch | 204 - ...-ath11k-add-support-for-set-bit-rate.patch | 28 - ...-ath11k-regdb-binary-support-removal.patch | 65 - ...03-ath12k-11be-spectral-scan-support.patch | 949 -- ...oid-multiple-beacon-countdown-update.patch | 34 - ...Clear-qdesc-array-on-peer-tid-update.patch | 78 - ...pending-desc-size-in-reo-cache-flush.patch | 146 - ...-cold-boot-sequence-for-SoC-grouping.patch | 173 - ...h12k-handle-mac-op-scan-with-link-id.patch | 211 - ...r-id-and-non-primary-buffer-in-rx-dp.patch | 146 - ...2k-fix-Factery-Test-Mode-crash-issue.patch | 68 - ...are-assert-issue-for-Tx-test-case-in.patch | 29 - ...ath12k-Add-support-for-new-htt_stats.patch | 662 -- ...ckward-compatibility-to-support-lega.patch | 111 - ...erve-member-of-wbm-completion-struct.patch | 47 - ...cribe-required-word-mask-from-rx-tlv.patch | 276 - ...ath12k-Add-support-for-new-htt_stats.patch | 892 -- ...th12k-fix-hal_rx_desc-skb-corruption.patch | 69 - ...ch-fils-unsol-presp-template-by-link.patch | 186 - ...c80211-add-debugfs-support-for-links.patch | 173 - ...h12k-fix-single-wiphy-debugfs-issues.patch | 163 - ...h-flag-and-update-peer-map-event-for.patch | 88 - ...12k-RDP454-split-phy-bringup-changes.patch | 505 - ...-ath12k-move-config-caching-to-ahvif.patch | 242 - ...port-to-enable-disable-FILS-UBPR-fra.patch | 189 - ...l80211-Add-power-mode-support-for-6G.patch | 339 - .../707-01-mac80211-emlsr-capabalalites.patch | 94 - ...-02-ath12k-Enable-emlsr-mode-support.patch | 179 - ...11-framework-to-support-MLO-recovery.patch | 293 - ..._TX_PDEV_MU_MIMO_SCH_STATS_TLV-stats.patch | 134 - ...-support-to-read-caldata-from-EEPROM.patch | 207 - ...07-ath12k-Add-wmi-control-path-stats.patch | 1089 -- ...gn-support-for-320-MHz-in-6-GHz-band.patch | 104 - ...k-tx-and-rx-nss-changes-for-eht-mode.patch | 88 - ...ath12k-add-support-for-MLO-SSR-Mode0.patch | 852 -- ...fix-incorrect-rates-sent-to-firmware.patch | 71 - ...on-public-action-frames-to-be-transm.patch | 36 - ...0211-pass-channel-info-in-AWGN-event.patch | 207 - ...dd-link-id-support-in-wbm-error-path.patch | 166 - ...upport-to-set-tx-power-for-6G-via-iw.patch | 78 - ...-Fix-unbalance-mutex-lock-in-mac-ops.patch | 81 - .../708-ath12k-fix-memory-leak-in-dp-rx.patch | 52 - ...l80211-add-agile-DFS-support-for-MLO.patch | 81 - ...ath12k-add-proper-link-stats-support.patch | 286 - ...211-fix-init-rx-link-and-rx-link-sta.patch | 438 - ...e-scan-vdev-create-and-delete-during.patch | 163 - ...return-invalid-link-id-for-scan-link.patch | 370 - ...k-Add-AHB-driver-support-for-ipq5332.patch | 1212 --- ...ve-ath12k-module-initialization-to-c.patch | 148 - ...ath12k-Add-IPQ5332-CE-config-changes.patch | 452 - ...and-initialize-hw-params-for-IPQ5332.patch | 479 - .../710-005-ath12k-IPQ5332-qmi-changes.patch | 208 - ...allbacks-to-read-write-to-cmem-space.patch | 83 - ...-ath12-Enable-AHB-driver-for-IPQ5332.patch | 56 - ...isable-QDSS-firmware-log-for-ipq5332.patch | 95 - ...d-ipq5332-data-path-register-changes.patch | 413 - ...k-fix-sta-association-in-mbssid-case.patch | 38 - ...11-add-rts-threshold-support-for-MLO.patch | 154 - ...11-add-rts-threshold-support-for-MLO.patch | 184 - ...2k-add-rts-threshold-support-for-MLO.patch | 81 - ...rgument-to-ath11k_mac_op_set_rts_thr.patch | 29 - .../711-01-ath12k-fwtest-MLO-support.patch | 97 - .../711-02-cfg80211-fwtest-MLO-support.patch | 134 - ...-ath11k-fwtest-dummy-link-id-support.patch | 54 - ...-ath10k-fwtest-dummy-link-id-support.patch | 46 - .../711-ath12k-athdiag-debugfs-support.patch | 138 - ...ets-with-invalid-peer-id-in-dp_tx-pa.patch | 50 - ...12k-fix-qmi-handler-terminator-entry.patch | 68 - ...ter-access-after-power-down-the-targ.patch | 81 - ...accumulated-statistics-for-Multi-lin.patch | 328 - ...port-rts-threshold-readable-command-.patch | 37 - ...rt-rts-threshold-readable-command-fo.patch | 145 - ...cfg80211-Fix-bitrates-overflow-issue.patch | 60 - ...date-htt_stats-for-Rx-Tx-OFDMA-stats.patch | 412 - ...1-add-MLO-support-for-HE-BSS-color-c.patch | 791 -- ...sta-max-bandwith-during-peer-assoc-p.patch | 106 - ...a-max-bandwith-during-peer-assoc-pre.patch | 187 - ...d-supoort-for-mlo-in-cnss-daig-debug.patch | 61 - ...-Performance-optimization-in-Rx-path.patch | 232 - ...are-assert-during-insmod-in-memory-s.patch | 41 - ...d-API-to-show-the-link-STAs-in-debug.patch | 434 - ...0211-include-link-address-in-debugfs.patch | 51 - ...211-add-pointer-from-link-STA-to-STA.patch | 52 - ...-ath12k-move-link-sta-specific-stats.patch | 758 -- ...-module-param-for-NAPI-budget-proces.patch | 62 - ...rt-to-get-rssi-value-of-non-associat.patch | 622 -- ...wifi-ath12k-remove-the-local-rx_desc.patch | 472 - ...d-hal-rx-descriptor-access-in-ath12k.patch | 254 - ...d-hal-rx-descriptor-access-in-rx-ppd.patch | 213 - ...ve-the-unused-hal_ops-rx_desc_get_mp.patch | 64 - ...link-id-support-for-op-sta-rc-update.patch | 173 - ...d-support-for-peer-meta-data-version.patch | 104 - .../qca/715-ath12k-btcoex-support.patch | 1119 -- ...-ath12k-ipq5332-SSR-Recovery-Support.patch | 395 - ...12k-Update-link-id-after-op-supports.patch | 47 - .../715-c-ath11k-Add-link-id-argument.patch | 23 - .../715-d-ath10k-Add-link-id-argument.patch | 23 - .../715-e-ath9k-Add-link-id-argument.patch | 24 - ...wifi-ath12k-Add-Dynamic-VLAN-support.patch | 413 - ...fied-the-peer-id-bit-mask-in-monitor.patch | 75 - ...-attribute-to-pass-TX-link-id-of-MLO.patch | 109 - ...ture-vif-and-link-conf-for-mlo-mbssi.patch | 373 - ...6-003-wifi-ath12k-MLO-MBSSID-Support.patch | 501 - ...11k-fetch-mbssid-tx-vif-from-deflink.patch | 97 - ...-datapath-related-soc-and-link-stats.patch | 596 -- ...p-with-5G-Low-5G-High-in-dfs-channel.patch | 401 - .../patches/qca/716-ath12k-sent-pkts.patch | 142 - ...6-b-ath12k-Multicast-support-for-MLO.patch | 561 - ...are-crash-issue-in-raw-mode-with-sof.patch | 56 - ...ath12k-fix-tcl_metadata-vdev_id-info.patch | 47 - .../qca/717-ath12k-received-pkts.patch | 126 - ...k-update-unsupported-bandwidth-flags.patch | 121 - ...-precac-check-for-self-managed-wiphy.patch | 33 - ...e-APIs-to-access-rings-without-locks.patch | 208 - ...dd-support-to-enable-QDSS-in-IPQ5332.patch | 245 - .../qca/718-ath12k-failed-sent-pkts.patch | 99 - ...write32-to-write_relaxed-to-boost-pe.patch | 32 - ...imize-datapath-tx-completion-routine.patch | 175 - ...11-fix-6GHz-AP-STA-concurrency-issue.patch | 74 - ...ocks-and-optimize-tx-completion-path.patch | 155 - ...-the-frame-to-driver-tx-ops-directly.patch | 77 - ...k_dp_tx_direct-for-faster-tx-process.patch | 282 - ...-many-dereference-to-find-the-rbm-id.patch | 59 - ...2k-Use-precomputed-SW-TCL-descriptor.patch | 245 - .../qca/719-ath12k-failed-received-pkts.patch | 99 - ...ve-locks-while-accessing-descriptors.patch | 99 - ...he-RBM-ID-values-in-TCL-RBM-map-regi.patch | 180 - ...tx-descriptor-updates.-Avoid-FIELD_P.patch | 68 - ...tx-completions-using-the-napi-budget.patch | 133 - ...dd-mac-address-for-monitor-mode-vdev.patch | 64 - ...k-Optimize-the-tx-completion-routine.patch | 118 - ...the-tx-completion-routine-by-avoid-a.patch | 189 - ...tialization-of-all-the-variables-ear.patch | 118 - ...ptimize-Tx-direct-path-variable-init.patch | 163 - ...st-recycling-the-skbs-for-performanc.patch | 115 - ...-a-module_param-to-change-the-tx-com.patch | 72 - ...ister-address-caculations-on-a-per-p.patch | 266 - ...radar_required-in-channel-context-af.patch | 35 - ...-fix-NULL-ptr-deref-in-offchan-check.patch | 33 - ...locks-while-processing-Tx-completion.patch | 65 - ...et-correct-tx-bw-when-EHT-op-present.patch | 29 - ...x-usage-of-same-vdev_id-for-same-soc.patch | 139 - ...port-for-mlo-mon-to-set-add-del-chan.patch | 283 - ...723-mac80211-add-mlo-monitor-support.patch | 912 -- ...d-deadlock-during-regulatory-update-.patch | 75 - ...rect-beacon-template-update-during-C.patch | 205 - ...-fix-null-pointer-access-for-AP-VLAN.patch | 81 - ...beacon-protection-support-for-ath12k.patch | 85 - ...6-cfg80211-mac80211-SLO-WDS-link-add.patch | 189 - ...ix-crash-when-accessing-null-pointer.patch | 92 - ...-is-not-properly-updated-for-tx-pkts.patch | 57 - ...he-non-transmitted-failure-tx-frames.patch | 40 - ...-mlo-mem-and-get-the-reo-snapshot-de.patch | 957 -- ...-add-support-for-Mgmt-Rx-re-ordering.patch | 3885 ------- ...2k-add-BUG_ONs-for-debugging-purpose.patch | 191 - ...em_remap-structure-when-parsing-ab-h.patch | 105 - ...quest_firmware_nowarn-to-request_fir.patch | 33 - ...d-support-avg-signal-in-station-dump.patch | 165 - ...749-wifi-ath12k-refactor-peer-delete.patch | 108 - .../qca/750-01-ath12k-Add-SAWF-support.patch | 558 - ...-Add-vendor-command-support-for-SAWF.patch | 548 - ...support-to-send-service-class-params.patch | 120 - ...0-04-ath12k-Add-WMI-support-for-SAWF.patch | 250 - ...echanism-for-update_rx_queue-reo-cmd.patch | 551 - ...y-leak-in-ath12k_mac_setup_channels_.patch | 85 - ...-CPU-sync-for-REO-in-unmap-DMA-memor.patch | 43 - ...work-to-use-different-hashmap-for-ML.patch | 194 - ...ath12k-Add-support-for-new-htt_stats.patch | 1234 --- ...incorrect-value-of-rx_per_chain_rssi.patch | 56 - ...reboot-assert-issue-when-MLO-enabled.patch | 88 - ...id-last_rate-for-rx_bitrate-from-cpu.patch | 73 - ...ng-duplicate-beacons-in-PSC-channels.patch | 44 - ...ng-duplicate-beacons-in-PSC-channels.patch | 44 - ...k-Enable-lock-less-tx-netdevice-flag.patch | 48 - ...h12k-avoid-dma-sync-cpu-during-dp_tx.patch | 84 - ...d-soc-stats-for-REO-Rx-data-path-deb.patch | 196 - ...te-the-TCL-Data-command-when-SKB-has.patch | 320 - ...mware-assert-during-set-bitrate-comm.patch | 42 - ...sta-in-ath12k_mac_validate_fixed_rat.patch | 92 - ...callback-operation-for-dynamic-msduq.patch | 534 - ...k-sawf-add-default-q-mapping-support.patch | 733 -- ...uplink-configuration-paraeters-in-se.patch | 179 - ...2k-sawf-uplink-configuration-support.patch | 600 -- ...Hz-Band-capabilities-IE-advertisemen.patch | 43 - ...ct-offsets-for-handling-pci-and-ahb-.patch | 64 - ...ct-RING_MASK_4-and-handle-irq-config.patch | 84 - ...x-memory-leak-during-peer-frag-setup.patch | 298 - ...0211-add-framework-to-support-PPE-DS.patch | 230 - ...h12k-add-framework-to-support-PPE-DS.patch | 3624 ------- ...12k-Add-support-to-identify-dual-mac.patch | 61 - ...dd-the-cold-boot-calibration-support.patch | 89 - ...rong-regdomain-update-for-KR-country.patch | 36 - ...2k-Add-full-dump-support-for-IPQ5322.patch | 399 - ...d-support-for-AWGN-wmi-control-stats.patch | 274 - ...ed-interface-working.-Traffic-tested.patch | 3544 ------- ...d-ATH12K_DBG_PEER-for-serviceability.patch | 228 - ...eer-from-peer-id-instead-of-ast-inde.patch | 87 - ...are-assert-during-channel-switch-for.patch | 94 - ...t-value-of-station-dump-fields-in-SL.patch | 129 - ...ar-is-down-before-handling-mac-opera.patch | 77 - ...th12k-Modify-the-M3-SSR-Dump-address.patch | 48 - ...sable-pdev-for-non-supported-country.patch | 89 - ...2k-Modify-the-threshold-param-for-Rx.patch | 58 - ...c80211-RU-puncturing-support-for-STA.patch | 119 - ...h12k-Fill-vdev_id-for-fwtest-command.patch | 89 - ...ath12k-IPQ5332-spectral-scan-support.patch | 34 - ...ring-descriptor-and-srng-dump-prints.patch | 215 - ...er-freq-and-center-freq2-to-FW-for-E.patch | 41 - ...ee80211-tx-info-reference-in-tx-data.patch | 99 - ...12k-fix-skb_cb-corruption-in-tx-data.patch | 42 - ...-max-sta-bandwidth-during-peer-assoc.patch | 142 - ...-target-assert-during-channel-switch.patch | 150 - ..._stations-counter-for-each-interface.patch | 84 - ...channel-width-switch-command-support.patch | 424 - ...h12k-handle-the-vdev-id-mismatch-HTT.patch | 31 - ...ddress-validation-during-ML-peer-cre.patch | 412 - ...A_FROM_DEVICE-to-DMA_TO_DEVICE-when-.patch | 46 - ...-bw_40-flag-in-case-of-EHT40-in-6Ghz.patch | 31 - ...-for-setting-and-testing-flush-flags.patch | 596 -- ...reset_work-queue-for-cold_boot-calib.patch | 28 - ...rt-to-enqueue-mgmt-frame-at-MLD-leve.patch | 207 - ...ix-memory-leak-in-WMI-firmware-stats.patch | 62 - ...ient-connection-issue-on-repeater-AP.patch | 56 - ...75-wifi-mac80211-Changes-for-WDS-MLD.patch | 208 - ...12k-Enable-fwlog-support-for-IPQ5332.patch | 29 - ...k-add-support-for-Tx-Power-insertion.patch | 240 - ...-ath12k-Fix-tqm-release-reason-stats.patch | 107 - ...ath12k-link-stats-missed-for-complet.patch | 89 - ...correct-reo-desc-first-and-last-msdu.patch | 65 - ...fi-ath12k-Rx-data-path-optimizations.patch | 497 - ...tx-arvif-start-status-before-non-Tx-.patch | 52 - ...ase-grace-period-for-PRE-CAC-timeout.patch | 26 - ...ath12k-Add-Tx-limit-for-data-packets.patch | 137 - ...mize-the-mgmt-and-data-tx-pending-wa.patch | 156 - ...-the-tx-pending-wait-only-its-in-wai.patch | 177 - ...2k-sawf-add-telemetry-configurations.patch | 652 -- ...gn-pci-device-id-during-mhi-register.patch | 24 - ...9-wifi-ath12k-netdev-perlink-debugfs.patch | 552 - ...-Fix-WARN-ON-during-bit-rate-command.patch | 108 - ...ate-the-number-of-tx_desc-used-to-FW.patch | 44 - ...se-HW-checksum-offload-only-for-ethm.patch | 74 - ...efactor-the-mac-tx-mgmt-pending-free.patch | 146 - ...x-link-specific-tx-mgmt-pending-free.patch | 67 - ...ve-radio-structure-reference-from-th.patch | 57 - ...the-skb-data-when-pkt-offset-present.patch | 51 - ...1-fix-scan-issue-due-to-single-wiphy.patch | 158 - .../782-ath12k-PPEDS-SSR-Recovery-Fixes.patch | 854 -- ...roup-descriptor-limit-check-in-dp-tx.patch | 187 - ...-SAWF-and-Telemetry-under-conditiona.patch | 376 - ...wifi-ath11k-Fix-BCCA-counter-for-EMA.patch | 125 - ...wifi-ath12k-Fix-BCCA-counter-for-EMA.patch | 111 - ...ision-detection-firmware-sets-the-sc.patch | 31 - ...-ath12k-Add-peer-rhash-table-support.patch | 696 -- ...Add-support-to-bring-in-debug-levels.patch | 203 - ...ebugfs-support-to-enable-and-disable.patch | 169 - ...array-out-of-bound-in-undecap-native.patch | 113 - ...nwifi-header-length-check-in-tkip-pa.patch | 120 - ...ifi-ath12k-Add-sawf-tx-stats-support.patch | 473 - ...dd-support-to-handle-streaming-stats.patch | 608 -- ...h12k-Add-SAWF-tx-delay-stats-support.patch | 1186 --- ...th12k-Add-support-to-view-SAWF-stats.patch | 939 -- ...telemetry-agent-interface-and-config.patch | 1829 ---- ...user-country-setting-during-active-v.patch | 97 - ...-mac80211-fix-skb-and-sdata-mismatch.patch | 183 - ...deadlock-b-w-drain-tx-and-mgmt-tx-wo.patch | 116 - .../qca/786-01-ath12k_compilation_fixes.patch | 529 - ...-12k-Add-define-MAC80211_SFE_SUPPORT.patch | 165 - ...MAC-to-net_dev-structure-via-dev_add.patch | 38 - ...h12k-add-per-histogram-count-support.patch | 136 - ...raffic-stall-with-MLO-AP-Mon-coexist.patch | 74 - ...buffer-overflow-when-scanning-with-e.patch | 69 - ...ge-to-use-dynamic-memory-for-channel.patch | 73 - ...fault-wmm-values-to-individual-links.patch | 35 - ...-peer-delete-after-vdev-stop-of-stat.patch | 133 - ...anic-notifer-chain-for-driver-module.patch | 262 - ...handler-for-scan-event-WMI_SCAN_EVEN.patch | 48 - ...cate-scan-complete-for-scan-canceled.patch | 72 - ...cate-to-mac80211-scan-complete-with-.patch | 68 - ...ifi-ath12k-Add-UMAC-DP-reset-support.patch | 2026 ---- ...-peer-delete-if-ieee80211_sta-exsits.patch | 154 - ...support-to-parse-mlo-chip-crash-info.patch | 437 - ...Add-support-to-set-mode1-to-firmware.patch | 107 - ...-Add-support-to-send-umac_reset-flag.patch | 288 - ...dd-support-for-Mode-1-recovery-cache.patch | 2195 ---- ...2-ath12k-validate-peer-id-for-search.patch | 55 - ...support-to-enqueue-radio-measurement.patch | 143 - ...ble-IEEE80211_VHT_EXT_NSS_BW_CAPABLE.patch | 52 - ...ntries-if-ring-is-full-and-intrp-idl.patch | 151 - ...i-ath12k-Tx-compl-drop-for-NULL-desc.patch | 91 - ...ded-a-debugfs-to-dump-hal-srng-stats.patch | 152 - ...peer-flag-ext-WMI_PEER_EXT_320MHZ-wh.patch | 28 - ...-handle-hw-link-id-in-Rx-err-process.patch | 65 - ...rx_stats-while-enabling-ext_rx_stats.patch | 34 - ...pport-to-convert-multicast-to-unicas.patch | 318 - ...tch-msdu-in-dp_tx_completion_handler.patch | 14 - ...ats-support-for-Multicast-to-Unicast.patch | 113 - ...12k-Removing-mutex-unlock-after-free.patch | 82 - ...t-all-links-active-for-station-by-de.patch | 30 - ...ange-to-use-MLD-address-as-primary-l.patch | 33 - ...date-all-links-rx-nss-by-ieee80211_s.patch | 36 - ...icate-MLO-connection-info-for-NL8021.patch | 164 - ...x-recovery-fail-while-firmware-crash.patch | 39 - ...mp-remove-link_info_changed-callback.patch | 32 - ...h12k-send-vdev-down-before-vdev-stop.patch | 66 - ...1-mac80211-Fixes-for-sta-mlo-support.patch | 54 - ...-for-sta-mlo-support-in-single-wiphy.patch | 140 - ...ix-the-crash-during-associate-6G-slo.patch | 33 - ...80211-support-reporting-failed-links.patch | 134 - ...validating-ML-station-profile-length.patch | 61 - ...x-ML-element-common-size-calculation.patch | 40 - ...c80211-check-EHT-capability-size-cor.patch | 522 - ...rse-station-profile-from-association.patch | 275 - ...ocess-association-status-for-affilia.patch | 145 - ...e-use-ap_addr-instead-of-deflink-BSS.patch | 31 - ...vertise-TWT-requester-only-with-HW-s.patch | 95 - ...0211-transmit-AddBA-with-MLD-address.patch | 32 - ...0211-set-internal-scan-request-BSSID.patch | 31 - ...c80211-fix-AddBA-response-addressing.patch | 31 - ...-add-RCU-_check-link-access-variants.patch | 36 - ...ti-link-element-subelement-iteration.patch | 33 - ...me-fix-null-ptr-deref-on-failed-asso.patch | 59 - ...eck-link-ID-in-auth-assoc-continuati.patch | 63 - ...80211-mlme-mark-assoc-link-in-output.patch | 34 - ...0211-change-AddBA-deny-error-message.patch | 30 - ...n-t-clear-DTIM-period-after-setting-.patch | 80 - ...ohibit-IEEE80211_HT_CAP_DELAY_BA-wit.patch | 39 - ...1-relocate-the-function-s-definition.patch | 102 - ...rrect-SMPS-mode-in-HE-6-GHz-capabili.patch | 89 - ...ange-nl80211.h-to-match-nl80211_copy.patch | 40 - ...a-block-tx-per-link-basis-for-STA-di.patch | 50 - ...i-mac80211-handling-msdu-buffer-type.patch | 165 - ...th12k-Vif-Delete-Timeout-Cleanup-Fix.patch | 62 - .../825-ath12k-optimize-ppe-ds-rx-path.patch | 459 - ...Add-mhi_soc_reset-in-PCI-remove-flow.patch | 244 - ...2k_mac_op_switch_vif_chanctx-mac-ops.patch | 145 - ...ebug-enhancements-for-mode1-recovery.patch | 152 - ...add-support-for-low-latency-rate-cnt.patch | 185 - ...ing-memset-of-ppdu-info-for-next-skb.patch | 94 - ...ncturing-pattern-for-peers-after-CSA.patch | 99 - ...th12k-Add-API-to-print-q6-crash-dump.patch | 144 - ...partner-rx-replinish-support-in-wbm-.patch | 172 - ...80211-reg-add-no-EHT-regulatory-flag.patch | 61 - ...lidate-AP-phy-operation-before-start.patch | 58 - ...-parsing-of-phy-bitmap-for-reg-rules.patch | 97 - ...tx-activity-to-complete-before-delet.patch | 144 - ...use-of-uninitialized-variable-valid_.patch | 37 - ...port-DFS-CAC-usable-state-helper-fun.patch | 86 - ...CAC-running-state-during-virtual-int.patch | 80 - ...ange-BUG_ON-to-conditional-BUG_ON-in.patch | 61 - ...module-param-to-limit-tx-data-frames.patch | 60 - ...x-non-transmitting-BSS-profile-updat.patch | 207 - ...WMI-peer-kickout-sta-event-for-link-.patch | 63 - ...link_id-to-cfg80211_ch_switch_notify.patch | 32 - ...-dynamic-fragmentation-msdu-in-Multi.patch | 131 - ...n-rx-for-sta-associated-to-non-Tx-va.patch | 54 - ...Send-disassoc-to-MLD-sta-during-reco.patch | 278 - ...-ath12k-allow-primary-link-selection.patch | 340 - ...c80211-call-drv_sta_state-under-sdat.patch | 63 - ...EAM-wifi-mac80211-HW-restart-for-MLO.patch | 328 - ...c80211-implement-proper-AP-MLD-HW-re.patch | 91 - ...11-Make-link-addresses-deterministic.patch | 78 - feeds/ipq95xx/nat46/Makefile | 41 - .../nat46/patches/100-kernel-5.4-compat.patch | 34 - .../ipq95xx/nat46/patches/101-skb-reset.patch | 30 - feeds/ipq95xx/nat46/patches/102-mapt.patch | 199 - feeds/ipq95xx/nat46/patches/103-tos.patch | 56 - feeds/ipq95xx/nat46/patches/104-icmp.patch | 440 - .../patches/105-longest-prefix-match.patch | 639 -- .../nat46/patches/106-dummy_header.patch | 100 - feeds/ipq95xx/nat46/patches/107-stats.patch | 134 - feeds/ipq95xx/nat46/patches/108-ce_port.patch | 134 - ...agment_if_not_df_and_larger_than_mtu.patch | 30 - .../patches/110-icmp_error_not_handled.patch | 99 - .../111-fix_null_point_reference.patch | 40 - .../nat46/patches/112-fix_icmp_crash.patch | 40 - .../113-fix_delete_race_condition.patch | 51 - ...114-fix-get-release-instance-protect.patch | 51 - .../115-export-ip6_update_csm-api.patch | 33 - .../patches/116-rate-limit-the-print.patch | 34 - .../patches/117-fix-icmp-no-payload-bug.patch | 34 - ...ayload-length-wrong-in-fragment-case.patch | 145 - .../17-add-support-ipv6-udp-checksum-0.patch | 33 - .../nat46/patches/18-performance_fix.patch | 431 - .../nat46/patches/19-mapt-offloading-support | 19 - .../nat46/patches/20-sleeping_backtrace.patch | 58 - feeds/ipq95xx/qca-diag/Makefile | 72 - feeds/ipq95xx/qca-diag/src/Android.mk | 1 - feeds/ipq95xx/qca-diag/src/Makefile | 44 - feeds/ipq95xx/qca-diag/src/Makefile.am | 11 - .../qca-diag/src/PktRspTest/Android.mk | 28 - .../qca-diag/src/PktRspTest/Makefile.am | 23 - .../qca-diag/src/PktRspTest/PktRspTest.c | 214 - feeds/ipq95xx/qca-diag/src/autogen.sh | 10 - .../qca-diag/src/callback_sample/Android.mk | 29 - .../qca-diag/src/callback_sample/Makefile.am | 27 - .../callback_sample/diag_callback_sample.c | 184 - feeds/ipq95xx/qca-diag/src/configure.ac | 110 - .../qca-diag/src/dci_sample/Android.mk | 29 - .../qca-diag/src/dci_sample/Makefile.am | 28 - .../qca-diag/src/dci_sample/diag_dci_sample.c | 590 -- feeds/ipq95xx/qca-diag/src/diag.pc.in | 10 - feeds/ipq95xx/qca-diag/src/include/comdef.h | 54 - feeds/ipq95xx/qca-diag/src/include/diag.h | 232 - feeds/ipq95xx/qca-diag/src/include/diag_lsm.h | 567 - .../qca-diag/src/include/diag_lsm_dci.h | 212 - feeds/ipq95xx/qca-diag/src/include/diagcmd.h | 679 -- feeds/ipq95xx/qca-diag/src/include/diagi.h | 96 - feeds/ipq95xx/qca-diag/src/include/diaglogi.h | 203 - feeds/ipq95xx/qca-diag/src/include/diagpkt.h | 759 -- feeds/ipq95xx/qca-diag/src/include/event.h | 95 - .../ipq95xx/qca-diag/src/include/event_defs.h | 2764 ----- feeds/ipq95xx/qca-diag/src/include/log.h | 442 - .../ipq95xx/qca-diag/src/include/log_codes.h | 2990 ------ feeds/ipq95xx/qca-diag/src/include/msg.h | 1097 -- .../qca-diag/src/include/msg_arrays_i.h | 55 - .../qca-diag/src/include/msg_pkt_defs.h | 154 - feeds/ipq95xx/qca-diag/src/include/msg_qsr.h | 512 - feeds/ipq95xx/qca-diag/src/include/msgcfg.h | 7038 ------------ feeds/ipq95xx/qca-diag/src/include/msgtgt.h | 847 -- feeds/ipq95xx/qca-diag/src/klog/Android.mk | 28 - feeds/ipq95xx/qca-diag/src/klog/Makefile.am | 23 - feeds/ipq95xx/qca-diag/src/klog/diag_klog.c | 178 - feeds/ipq95xx/qca-diag/src/mdlog/Android.mk | 27 - feeds/ipq95xx/qca-diag/src/mdlog/Makefile.am | 28 - feeds/ipq95xx/qca-diag/src/mdlog/diag_mdlog.c | 893 -- feeds/ipq95xx/qca-diag/src/qdss_setup.sh | 66 - feeds/ipq95xx/qca-diag/src/qld_server.c | 221 - feeds/ipq95xx/qca-diag/src/registerReboot.c | 1199 --- .../qca-diag/src/socket_log/Android.mk | 29 - .../qca-diag/src/socket_log/Makefile.am | 27 - .../qca-diag/src/socket_log/diag_socket_log.c | 719 -- feeds/ipq95xx/qca-diag/src/src/Makefile.am | 63 - feeds/ipq95xx/qca-diag/src/src/diag.mk | 53 - feeds/ipq95xx/qca-diag/src/src/diag_logger.c | 290 - feeds/ipq95xx/qca-diag/src/src/diag_logger.h | 61 - feeds/ipq95xx/qca-diag/src/src/diag_lsm.c | 3460 ------ feeds/ipq95xx/qca-diag/src/src/diag_lsm_dci.c | 703 -- .../ipq95xx/qca-diag/src/src/diag_lsm_dci_i.h | 239 - .../ipq95xx/qca-diag/src/src/diag_lsm_event.c | 414 - .../qca-diag/src/src/diag_lsm_event_i.h | 38 - feeds/ipq95xx/qca-diag/src/src/diag_lsm_log.c | 844 -- .../ipq95xx/qca-diag/src/src/diag_lsm_log_i.h | 47 - feeds/ipq95xx/qca-diag/src/src/diag_lsm_msg.c | 959 -- .../ipq95xx/qca-diag/src/src/diag_lsm_msg_i.h | 61 - feeds/ipq95xx/qca-diag/src/src/diag_lsm_pkt.c | 1447 --- .../ipq95xx/qca-diag/src/src/diag_lsm_pkt_i.h | 52 - feeds/ipq95xx/qca-diag/src/src/diag_lsmi.h | 109 - .../src/src/diag_qshrink4_db_parser.c | 1266 --- .../ipq95xx/qca-diag/src/src/diag_shared_i.h | 182 - feeds/ipq95xx/qca-diag/src/src/diagdiag.h | 1273 --- feeds/ipq95xx/qca-diag/src/src/diaglib.mak | 53 - .../ipq95xx/qca-diag/src/src/diagsvc_malloc.c | 232 - .../ipq95xx/qca-diag/src/src/diagsvc_malloc.h | 117 - feeds/ipq95xx/qca-diag/src/src/eventi.h | 98 - feeds/ipq95xx/qca-diag/src/src/msg_arrays_i.c | 1083 -- feeds/ipq95xx/qca-diag/src/src/ts_linux.c | 201 - feeds/ipq95xx/qca-diag/src/src/ts_linux.h | 66 - feeds/ipq95xx/qca-diag/src/test/Android.mk | 28 - feeds/ipq95xx/qca-diag/src/test/Makefile.am | 22 - feeds/ipq95xx/qca-diag/src/test/test_diag.c | 551 - .../ipq95xx/qca-diag/src/uart_log/Android.mk | 29 - .../ipq95xx/qca-diag/src/uart_log/Makefile.am | 27 - .../qca-diag/src/uart_log/diag_uart_log.c | 394 - feeds/ipq95xx/qca-nss-dp/Makefile | 98 - .../ipq95xx/qca-nss-dp/files/qca-nss-dp.conf | 2 - .../ipq95xx/qca-nss-dp/files/qca-nss-dp.init | 52 - feeds/ipq95xx/qca-nss-ppe/Makefile | 163 - .../qca-nss-ppe/patches/100-compile.patch | 25 - feeds/ipq95xx/qca-psdk/Makefile | 71 - feeds/ipq95xx/qca-ssdk-shell/Makefile | 51 - feeds/ipq95xx/qca-ssdk/Makefile | 175 - feeds/ipq95xx/qca-ssdk/files/qca-ssdk | 291 - .../patches/0001-add-RTL8261N-support.patch | 5673 ---------- .../qca-ssdk/patches/100-compile.patch | 48 - .../ipq95xx/qca-ssdk/patches/101-aq_phy.patch | 28 - feeds/ipq95xx/wireguard/Makefile | 55 - .../wireguard/patches/100-compat.patch | 20 - 1677 files changed, 451059 deletions(-) delete mode 100644 feeds/ipq95xx/ath11k-firmware/Makefile delete mode 100644 feeds/ipq95xx/ath11k-wifi/Makefile delete mode 100644 feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 delete mode 100644 feeds/ipq95xx/ath12k-firmware/Makefile delete mode 100644 feeds/ipq95xx/ath12k-wifi/Makefile delete mode 100644 feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 delete mode 100755 feeds/ipq95xx/ath12k-wifi/board-2.bin.QCN9274 delete mode 100755 feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.ipq53xx delete mode 100755 feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.qcn9224 delete mode 100644 feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.ipq53xx delete mode 100644 feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.qcn9224 delete mode 100644 feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.ipq53xx delete mode 100644 feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.qcn9224 delete mode 100755 feeds/ipq95xx/ath12k-wifi/regdb.bin delete mode 100644 feeds/ipq95xx/batman-adv/Config.in delete mode 100644 feeds/ipq95xx/batman-adv/Makefile delete mode 100755 feeds/ipq95xx/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif delete mode 100755 feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv.sh delete mode 100755 feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_hardif.sh delete mode 100755 feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_vlan.sh delete mode 100644 feeds/ipq95xx/batman-adv/patches/0001-Revert-batman-adv-genetlink-move-to-smaller-ops-wher.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0002-Revert-batman-adv-Add-new-include-for-min-max-helper.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0003-batman-adv-Fix-build-of-multicast-code-against-Linux.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0004-Revert-batman-adv-Switch-to-kstrtox.h-for-kstrtou64.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0005-Revert-batman-adv-use-Linux-s-stdarg.h.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0006-batman-adv-make-mc_forwarding-atomic.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0007-batman-adv-compat-Add-atomic-mc_fowarding-support-fo.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0008-batman-adv-Request-iflink-once-in-batadv-on-batadv-c.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0009-batman-adv-Request-iflink-once-in-batadv_get_real_ne.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0010-batman-adv-Don-t-expect-inter-netns-unique-iflink-in.patch delete mode 100644 feeds/ipq95xx/batman-adv/patches/0011-batman-adv-Don-t-skb_split-skbuffs-with-frag_list.patch delete mode 100644 feeds/ipq95xx/batman-adv/src/compat-hacks.h delete mode 100755 feeds/ipq95xx/ftm/Makefile delete mode 100755 feeds/ipq95xx/ftm/files/compress_vart.sh delete mode 100755 feeds/ipq95xx/ftm/files/ftm.init delete mode 100755 feeds/ipq95xx/ftm/files/ftm_qcc710_start.sh delete mode 100755 feeds/ipq95xx/ftm/src/Android.mk delete mode 100755 feeds/ipq95xx/ftm/src/LICENSE delete mode 100755 feeds/ipq95xx/ftm/src/Makefile delete mode 100755 feeds/ipq95xx/ftm/src/Makefile.am delete mode 100755 feeds/ipq95xx/ftm/src/NOTICE delete mode 100755 feeds/ipq95xx/ftm/src/configure.ac delete mode 100755 feeds/ipq95xx/ftm/src/ftm_ant.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_ant_common.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_common.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_hci_hal.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal_linux.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_persist.cpp delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_persist.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_power_hal.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_power_pfal.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_bt_power_pfal_linux.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_common.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_dbg.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_fm.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_fm_common.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_fm_pfal.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux_3990.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_iot.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_iot.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_main.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfc.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfc.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq_test.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcnq_test.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcqti.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_nfcqti.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_wlan.c delete mode 100755 feeds/ipq95xx/ftm/src/ftm_wlan.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_wlan_win.h delete mode 100755 feeds/ipq95xx/ftm/src/ftm_write_to_flash.c delete mode 100755 feeds/ipq95xx/ftm/src/testcmd.h delete mode 100755 feeds/ipq95xx/ftm/src/wds/Android.mk delete mode 100755 feeds/ipq95xx/ftm/src/wds/wds_hci_pfal.h delete mode 100755 feeds/ipq95xx/ftm/src/wds/wds_hci_pfal_linux.c delete mode 100755 feeds/ipq95xx/ftm/src/wds/wds_main.c delete mode 100644 feeds/ipq95xx/hostapd.old/Config.in delete mode 100755 feeds/ipq95xx/hostapd.old/M delete mode 100644 feeds/ipq95xx/hostapd.old/files/hostapd-full.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/hostapd-macsec.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/hostapd-mesh.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/hostapd-mini.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/hostapd.sh delete mode 100644 feeds/ipq95xx/hostapd.old/files/multicall.c delete mode 100644 feeds/ipq95xx/hostapd.old/files/netifd.sh delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant-full.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant-macsec.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant-mesh.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant-mini.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant-p2p.config delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpa_supplicant.sh delete mode 100644 feeds/ipq95xx/hostapd.old/files/wpad.init delete mode 100644 feeds/ipq95xx/hostapd.old/files/wps-hotplug.sh delete mode 100644 feeds/ipq95xx/hostapd.old/patches/120-daemonize_fix.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/130-no_eapol_fix.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/140-disable_bridge_packet_workaround.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/200-multicall.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/300-noscan.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/310-rescan_immediately.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/320-optional_rfkill.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/330-nl80211_fix_set_freq.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/350-nl80211_del_beacon_bss.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/380-disable_ctrl_iface_mib.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/390-wpa_ie_cap_workaround.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/400-wps_single_auth_enc_type.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/410-limit_debug_messages.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/420-indicate-features.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/430-hostapd_cli_ifdef.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/431-wpa_cli_ifdef.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/450-scan_wait.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/461-driver_nl80211-use-new-parameters-during-ibss-join.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/462-wpa_s-support-htmode-param.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/501-hostapd-fix-compile-warnings-for-macsec.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/502-hostapd-support-802.1x-plug-re-establish-macsec-link.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/600-ubus_support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/a00-004-Add-provision-to-test-RADAR-detection-probablity-in-.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-001-hostapd-fix-an-issue-related-with-wpa_group_state.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-004-hostap-fix-compilation-issue.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-014-hostapd-add-ht40-allow-map.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-029-hostapd-disable-MAC-ACL-if-WPS-enabled.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-034-hostapd-Add-max-rate-information-into-STATUS-and-STA.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/b00-036-hostapd-disable-40mhz-scan.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/c00-002-hostapd-he-update-nl-header.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/c00-010-hostapd-fix-enabling-he-in-5G.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/c00-011-hostapd-add-mbo-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/d00-002-set-supp-chan-width-for-40mghz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/d00-003-wpa-supplicant-override-HE-toVHT-2G.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/d00-007-fixing-warning.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/d00-009-hostapd-update-muedca-params.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/e00-003-hostapd-chan-switch-6ghz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/e00-014-hostapd-update-cfs0-and-cfs1-for-160MHz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-001-bss-coloring-add-support-for-handling-collision-events-and-triggering-CCA.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-002-bss_coloring-add-the-code-required-to-generate-the-CCA-IE.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-002-hostap-Move-acl-related-code-to-generic-to-be-used-for-mesh.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-003-Extend-acl-config-support-to-mesh.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-003-bss-coloring-disable-BSS-color-during-CCA.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-004-bss-coloring-add-the-switch_color-handler-to-the-nl80211-driver.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-004-mesh-Dynamic-MAC-ACL-management-over-control-interface.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-005-bss-coloring-handle-the-collision-and-CCA-events-coming-from-the-kernel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-006-bss_coloring-allow-using-a-random-starting-color.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-007-bss_coloring-add-intelligence-color-choose-in-CCA.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-008-bss_coloring_add_support_to_change_bss_color_by_user.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-009-add-bcca-IE-with-countdown-zero-in-color-change-beacon.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/f00-010-bss_coloring-check-free-color-periodically.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/g00-003-hostapd-fix-int-in-bool-context-Werror.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/g00-004-hostapd-Initilize-chan-for-second-80-mhz-to-zero.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-001-wpa_supplicant-add-mesh-ID-IE-only-for-mesh-mode.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-002-hostapd-Enable-HE40-support-in-2G-11s-mesh.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-003-hostapd-allow-AP_VLAN-creation-for-dynamic-VLAN.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-004-hostapd-Add-support-for-beacon-tx-mode.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-007-b-hostapd-Fix-HE-chan-switch-command-to-use-proper-BW.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-007-hostapd-Setting-Spectrum-Management-bit-for-chan-swi.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-008-a-add-support-for-6ghz-tpc.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-008-b-add-support-for-6ghz-tpc.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-008-c-add-support-for-6ghz-tpc.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-008-d-add-support-for-6ghz-tpc.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/h00-008-e-Fill-6G-TPE-IE-for-non-US-countries.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/i00-001-compile-fix.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/j00-001-hostapd-update-missing-5.9GHz-channels.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/k00-001-hostapd-cli-allowed-bw-on-each-channel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/k00-001-hostapd-macsec-support-gcmaes256-cipher-suite-when-participant-act-as-key-server.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/k00-002-hostapd-Fix-channel-switch-on-6g.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/l00-001-hostapd-avoid-filling-group-mgmt-cipher-type-in-FD-R.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/l00-002-hostapd-fix-enabling-HE-thru-cli-in-2ghz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/m00-001-hostap-Avoid-adjacent-channel-selection-in-DFS-for-q.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/n00-001-hostapd-Add-support-to-awgn-mitigation-for-6Ghz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/n00-001-hostapd-add-support-for-6GHz-operation.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/n00-002-hostapd-add-support-for-6g-client-type.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/o00-001-hostapd-fix-6GHz-chan-switch-issue.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/p00-001-wpa-supplicant-support-5dot9-channels-in-mesh-160mhz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/p00-002-mesh-enable-more-160MHz-channels-in-6GHz.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/p00-003-hostapd-add-acs_exclude_6ghz_non_psc-option-for-acs-.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q00-001-crypto-Remove-unused-crypto_ec_point_solve_y_coord.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q00-002-EAP-pwd-Derive-the-y-coordinate-for-PWE-with-own-imp.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q00-003-SAE-Derive-the-y-coordinate-for-PWE-with-own-impleme.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q00-004-SAE-Move-sqrt-implementation-into-a-helper-function.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q00-005-EAP-pwd-Fix-the-prefix-in-a-debug-message.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q003-001-hostapd-Add-config-to-truncate-ext-capabilities.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-001-mbssid-add-configuration-options.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-001-tests-Initial-EHT-testing.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-002-mbssid-retrieve-driver-capabilities.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-003-mbssid-configure-all-BSSes-before-beacon-setup.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-004-mbssid-get-and-set-configuration-parameters.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-005-mbssid-add-multiple-BSSID-elements.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-006-mbssid-add-MBSSID-configuration-element.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-007-mbssid-add-non-inheritance-element.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-008-mbssid-make-the-AID-space-shared.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-009-mbssid-set-extended-capabilities.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-010-mbssid-DTIM-period-configuration-for-EMA-AP.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-011-mbssid-hidden-SSID-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-012-mbssid-process-known-BSSID-element.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-013-mbssid-add-nl80211-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-014-mbssid-RNR-for-EMA-AP.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-015-mbssid-Netlink-changes-for-RNR-offsets.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q01-016-mbssid-support-extended-rates-in-non-tx-profiles.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-001-hostapd-fix-unsol-config.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-001-nl80211-sync-kernel-definitions.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-002-eht-define-EHT-elements.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-003-eht-configuration-options-to-enable-disable-the-supp.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-004-eht-operating-channel-width-configuration.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-005-eht-beamforming-capabilities-configuration.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-006-eht-macro-for-320-MHZ-channel-width.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-007-eht-support-for-operating-class-137.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-008-eht-add-capabilities-element-in-management-frames.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-009-eht-add-operation-element-in-management-frames.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-010-nl80211-parse-EHT-capabilities-passed-by-kernel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-011-eht-parse-elements-received-in-management-frames.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-012-eht-process-association-request.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-013-eht-changes-in-STA-addition-path.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-014-nl80211-pass-station-s-EHT-capabilities-to-kernel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-015-eht-changes-to-the-neighbor-report-element.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-016-eht-additions-in-FILS-discovery-frames.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-017-eht-additions-to-hostapd_set_freq_params.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-018-eht-support-for-channel-switch-command.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-019-eht-add-checks-for-channel-switch-announcement.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-020-eht-changes-to-channel-switch-exchange-with-driver.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-021-nl80211-check-driver-capabilities-for-beacon-rates.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-022-eht-configuration-option-for-beacon-rates.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-023-nl80211-pass-EHT-beacon-rate-configuration-to-kernel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-024-hostapd-11BE-bringup-Fixes.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-025-hostapd-WAR-patch-for-prop-issue.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-031-ru_puncturing-retrieve-driver-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-032-ru_puncturing-add-configuration-option.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-033-ru_puncturing-add-bitmap-to-frequency-parameters.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-034-ru_puncturing-add-bitmap-to-EHT-operation-element.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-035-ru_puncturing-additions-to-channel-switch-command.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-036-ru_puncturing-send-bitmap-to-kernel.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-037-ulmumimo-parameter-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-041-acs-configuration-option-for-RU-puncturing-threshold.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-042-acs-generate-puncturing-bitmap.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-043-acs-validate-the-RU-puncturing-bitmap.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-044-01-hostapd-Add-320-MHz-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-044-02-ACS-Add-ACS-support-for-11be-mode.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-044-nl80211-sync-green-ap-changes.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-045-mesh_add_EHT_support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-046-hostapd-Add-5GHz-240MHz-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-046-hostapd-DFS-ACS-5GHz-240MHz-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-046-hostapd-add-support-to-disable-channel-switch-during.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-046-wpa_supplicant-add-RU-puncturing-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-047-hostapd-Fix-tx-power-envelope-for-non-PSD-countries.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-047-wpa_supplicant-Add-5GHz-240MHz-support-for-mesh.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-048-hostapd-Update-11be-EHT-elements-to-Draft-2.0-versio.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-048-mesh-Enable-80-160MHz-Mesh-DFS-channels.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-049-hostapd-fix-channel-switch-in-eht-40mhz-bandwidth-fa.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-049-hostapd-fix-he40-eht40-bringup-with-acs.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-050-hostapd-Add-freq-info-in-start-ap.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-050-wpa_supplicant-add-wpa_cli-support-for-cac.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-051-hostapd-Add-element-ID-extension-as-part-of-non-inhe.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-051-hostapd-add-awgn-support-for-320MHz-bw-in-6GHz-band.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-051-hostapd-fix-channel-switch-frequency-check.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-052-hostapd-make-probe-response-as-broadcast-for-6GHz-ba.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-053-hostapd-awgn-fix-new-channel-selection-logic.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-053-wpa_supplicant-set-interface-state-as-inactive-if-me.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-054-hostapd-Disable-6GHz-FILS-and-UBPR-for-mutli-band-AP.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-46-hostapd-Add-support-to-enable-disable-bss-color-coll.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-47-Changes-to-disable-compilation-errors-in-32-bit-arch.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-50-hostapd-240MHz-Q-Q-vendor-IE-support.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-51-hostapd-Fix-WDS-Repeater-assoc-fail-on-6G-with-160MH.patch delete mode 100644 feeds/ipq95xx/hostapd.old/patches/q02-51-hostapd-Set-duplicate-beacon-bit-in-HE-oper-IE.patch delete mode 100644 feeds/ipq95xx/hostapd/Config.in delete mode 100644 feeds/ipq95xx/hostapd/Makefile delete mode 100644 feeds/ipq95xx/hostapd/files/common.uc delete mode 100644 feeds/ipq95xx/hostapd/files/hostapd-basic.config delete mode 100644 feeds/ipq95xx/hostapd/files/hostapd-full.config delete mode 100644 feeds/ipq95xx/hostapd/files/hostapd-mini.config delete mode 100644 feeds/ipq95xx/hostapd/files/hostapd.sh delete mode 100644 feeds/ipq95xx/hostapd/files/hostapd.uc delete mode 100644 feeds/ipq95xx/hostapd/files/multicall.c delete mode 100644 feeds/ipq95xx/hostapd/files/wdev.uc delete mode 100644 feeds/ipq95xx/hostapd/files/wpa_supplicant-basic.config delete mode 100644 feeds/ipq95xx/hostapd/files/wpa_supplicant-full.config delete mode 100644 feeds/ipq95xx/hostapd/files/wpa_supplicant-mini.config delete mode 100644 feeds/ipq95xx/hostapd/files/wpa_supplicant-p2p.config delete mode 100644 feeds/ipq95xx/hostapd/files/wpa_supplicant.uc delete mode 100644 feeds/ipq95xx/hostapd/files/wpad.init delete mode 100644 feeds/ipq95xx/hostapd/files/wpad.json delete mode 100644 feeds/ipq95xx/hostapd/files/wpad_acl.json delete mode 100644 feeds/ipq95xx/hostapd/files/wps-hotplug.sh delete mode 100644 feeds/ipq95xx/hostapd/patches/001-wolfssl-init-RNG-with-ECC-key.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/021-fix-sta-add-after-previous-connection.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/022-hostapd-fix-use-of-uninitialized-stack-variables.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/023-ndisc_snoop-call-dl_list_del-before-freeing-ipv6-add.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/050-build_fix.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/110-mbedtls-TLS-crypto-option-initial-port.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/120-mbedtls-fips186_2_prf.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/130-mbedtls-annotate-with-TEST_FAIL-for-hwsim-tests.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/135-mbedtls-fix-owe-association.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/140-tests-Makefile-make-run-tests-with-CONFIG_TLS.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/150-add-NULL-checks-encountered-during-tests-hwsim.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/160-dpp_pkex-EC-point-mul-w-value-prime.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/180-driver_nl80211-fix-setting-QoS-map-on-secondary-BSSs.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/181-driver_nl80211-update-drv-ifindex-on-removing-the-fi.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/182-nl80211-move-nl80211_put_freq_params-call-outside-of.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/183-hostapd-cancel-channel_list_update_timeout-in-hostap.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/200-multicall.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/300-noscan.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/310-rescan_immediately.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/320-optional_rfkill.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/330-nl80211_fix_set_freq.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/341-mesh-ctrl-iface-channel-switch.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/380-disable_ctrl_iface_mib.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/381-hostapd_cli_UNKNOWN-COMMAND.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/390-wpa_ie_cap_workaround.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/400-wps_single_auth_enc_type.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/410-limit_debug_messages.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/420-indicate-features.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/430-hostapd_cli_ifdef.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/431-wpa_cli_ifdef.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/460-wpa_supplicant-add-new-config-params-to-be-used-with.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/464-fix-mesh-obss-check.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/470-survey_data_fallback.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/500-lto-jobserver-support.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/590-rrm-wnm-statistics.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/599-wpa_supplicant-fix-warnings.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/600-ubus_support.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/601-ucode_support.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/610-hostapd_cli_ujail_permission.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/701-reload_config_inline.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/710-vlan_no_bridge.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/711-wds_bridge_force.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/720-iface_max_num_sta.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/730-ft_iface.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/740-snoop_iface.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/750-qos_map_set_without_interworking.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/751-qos_map_ignore_when_unsupported.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/760-dynamic_own_ip.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/761-shared_das_port.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/770-radius_server.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/901-cfg-section.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/990-ctrl-make-WNM_AP-functions-dependant-on-CONFIG_AP.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/992-nl80211-add-extra-ies-only-if-allowed-by-driver.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/999-compile.patch delete mode 100644 feeds/ipq95xx/hostapd/patches/999-probe-request.patch delete mode 100644 feeds/ipq95xx/hostapd/src/hostapd/radius.c delete mode 100644 feeds/ipq95xx/hostapd/src/src/ap/ubus.c delete mode 100644 feeds/ipq95xx/hostapd/src/src/ap/ubus.h delete mode 100644 feeds/ipq95xx/hostapd/src/src/ap/ucode.c delete mode 100644 feeds/ipq95xx/hostapd/src/src/ap/ucode.h delete mode 100644 feeds/ipq95xx/hostapd/src/src/utils/build_features.h delete mode 100644 feeds/ipq95xx/hostapd/src/src/utils/ucode.c delete mode 100644 feeds/ipq95xx/hostapd/src/src/utils/ucode.h delete mode 100644 feeds/ipq95xx/hostapd/src/wpa_supplicant/ubus.c delete mode 100644 feeds/ipq95xx/hostapd/src/wpa_supplicant/ubus.h delete mode 100644 feeds/ipq95xx/hostapd/src/wpa_supplicant/ucode.c delete mode 100644 feeds/ipq95xx/hostapd/src/wpa_supplicant/ucode.h delete mode 100644 feeds/ipq95xx/ipq53xx/Makefile delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/board.d/01_leds delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/board.d/02_network delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/hotplug.d/firmware/ath12k-pdev-stats delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/init.d/ath12k delete mode 100755 feeds/ipq95xx/ipq53xx/base-files/etc/init.d/rtk_eth_fix delete mode 100644 feeds/ipq95xx/ipq53xx/base-files/etc/uci-defaults/30-uboot-envtools delete mode 100644 feeds/ipq95xx/ipq53xx/base-files/lib/upgrade/nand.sh delete mode 100644 feeds/ipq95xx/ipq53xx/base-files/lib/upgrade/platform.sh delete mode 100644 feeds/ipq95xx/ipq53xx/config-5.4 delete mode 100644 feeds/ipq95xx/ipq53xx/config-5.4-qsdk delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-cig-wf189.dts delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-edgecore-eap105.dts delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-mi01.2.dtsi.20231011 delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-sercomm-ap72tip.dts delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-sercomm-mi01.2.dtsi delete mode 100644 feeds/ipq95xx/ipq53xx/files/arch/arm64/boot/dts/qcom/ipq5332-sercomm.dtsi delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/realtek.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/Kconfig delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/Makefile delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/construct/conf_rtl8261n_c.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/construct/conf_rtl8264b.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/error.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_patch.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_patch.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_rtl8251b_patch.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_rtl8251b_patch.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_rtl826xb_patch.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/phy_rtl826xb_patch.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_osal.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_osal.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phy.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phylib.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phylib.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phylib_def.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phylib_rtl826xb.c delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/rtk_phylib_rtl826xb.h delete mode 100755 feeds/ipq95xx/ipq53xx/files/drivers/net/phy/rtk/type.h delete mode 100644 feeds/ipq95xx/ipq53xx/generic/config-default delete mode 100644 feeds/ipq95xx/ipq53xx/generic/target.mk delete mode 100644 feeds/ipq95xx/ipq53xx/image/Makefile delete mode 100644 feeds/ipq95xx/ipq53xx/image/ipq53xx.mk delete mode 100644 feeds/ipq95xx/ipq53xx/ipq95xx_32/config-default delete mode 100644 feeds/ipq95xx/ipq53xx/ipq95xx_32/target.mk delete mode 100644 feeds/ipq95xx/ipq53xx/modules.mk delete mode 100644 feeds/ipq95xx/ipq53xx/patches/001-ip6mr.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/002-dload_dis.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/100-GPIO-add-named-gpio-exports.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/102-kernel-extable.c-use-address-of-operator-on-section-.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/103-fix_mhi_bus_test.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/130-proxy-arp.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/140-gcc12-fixes.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/200-pstore.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/238-net-core-Allow-live-renaming-when-an-interface-is-up.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/300-pwm.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/301-button.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/301-diag_char.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/302-aq-phy.patch delete mode 100644 feeds/ipq95xx/ipq53xx/patches/303-realtek-phy.patch delete mode 100644 feeds/ipq95xx/ipq53xx/profiles/00-default.mk delete mode 100644 feeds/ipq95xx/ipq95xx/Makefile delete mode 100755 feeds/ipq95xx/ipq95xx/base-files/etc/board.d/01_network delete mode 100755 feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath11k-caldata delete mode 100755 feeds/ipq95xx/ipq95xx/base-files/etc/hotplug.d/firmware/10-ath12k-caldata delete mode 100644 feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/nand.sh delete mode 100644 feeds/ipq95xx/ipq95xx/base-files/lib/upgrade/platform.sh delete mode 100644 feeds/ipq95xx/ipq95xx/config-5.4 delete mode 100644 feeds/ipq95xx/ipq95xx/generic/config-default delete mode 100644 feeds/ipq95xx/ipq95xx/generic/target.mk delete mode 100644 feeds/ipq95xx/ipq95xx/image/Makefile delete mode 100644 feeds/ipq95xx/ipq95xx/image/Makefile.orig delete mode 100644 feeds/ipq95xx/ipq95xx/image/ipq95xx.mk delete mode 100644 feeds/ipq95xx/ipq95xx/ipq95xx_32/config-default delete mode 100644 feeds/ipq95xx/ipq95xx/ipq95xx_32/target.mk delete mode 100644 feeds/ipq95xx/ipq95xx/modules.mk delete mode 100644 feeds/ipq95xx/ipq95xx/patches/001-ip6mr.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/002-dload_dis.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/100-GPIO-add-named-gpio-exports.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/100-bpf-Fix-the-off-by-two-error-in-range-markings.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/102-kernel-extable.c-use-address-of-operator-on-section-.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/103-fix_mhi_bus_test.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/130-proxy-arp.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/140-gcc12-fixes.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/200-pstore.patch delete mode 100644 feeds/ipq95xx/ipq95xx/patches/238-net-core-Allow-live-renaming-when-an-interface-is-up.patch delete mode 100644 feeds/ipq95xx/ipq95xx/profiles/00-default.mk delete mode 100644 feeds/ipq95xx/iw/Makefile delete mode 100644 feeds/ipq95xx/iw/patches/001-nl80211_h_sync.patch delete mode 100644 feeds/ipq95xx/iw/patches/120-antenna_gain.patch delete mode 100644 feeds/ipq95xx/iw/patches/200-reduce_size.patch delete mode 100644 feeds/ipq95xx/iw/patches/505-Add-user-command-for-tid-specific-retry-count.patch delete mode 100644 feeds/ipq95xx/iw/patches/506-Add-user-command-for-tid-specific-aggr-conf.patch delete mode 100644 feeds/ipq95xx/iw/patches/507-Add-peer-address-in-noack-map-command delete mode 100644 feeds/ipq95xx/iw/patches/510-iw-wifi-config-vendor.patch delete mode 100644 feeds/ipq95xx/iw/patches/512-iw-add-wide-band-scan-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/517-iw-support-optional-argument-to-specify-6Ghz-channel.patch delete mode 100644 feeds/ipq95xx/iw/patches/519-iw-Add-HE-UL-MU-fixed-rate-setting.patch delete mode 100644 feeds/ipq95xx/iw/patches/521-iw-Add-aggregation-count-and-management-rtscts-control-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/523-iw-fix-compile-issues.patch delete mode 100644 feeds/ipq95xx/iw/patches/601-iw-update-nl80211.h.patch delete mode 100644 feeds/ipq95xx/iw/patches/602-iw-Support-EHT-rate-configuration.patch delete mode 100644 feeds/ipq95xx/iw/patches/603-iw-Add-320-MHz-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/604-iw-Add-support-to-set-static-puncturing-pattern.patch delete mode 100644 feeds/ipq95xx/iw/patches/604-iw-Add-the-support-for-green-ap.patch delete mode 100644 feeds/ipq95xx/iw/patches/605-iw-add-support-for-6-GHz-in-iw-reg-get-command.patch delete mode 100644 feeds/ipq95xx/iw/patches/607-Changes-needed-for-yocto.patch delete mode 100644 feeds/ipq95xx/iw/patches/608-iw-Add-support-for-background-CAC.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-02-iw-add-link-id-information-for-iw-dev.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-03-iw-add-link-id-for-iw-wlan-station-dump.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-04-iw-add-support-set-txpower-command-for-each-link.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-05-iw-add-support-set-bitrate-command-for-each-link.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-06-iw-add-support-for-rts-threshold-command-for-MLO.patch delete mode 100644 feeds/ipq95xx/iw/patches/609-iw-interface-combination-changes.patch delete mode 100644 feeds/ipq95xx/iw/patches/610-iw-sync-NL-Attribute-and-Ext-Feature-with-RRM-change.patch delete mode 100644 feeds/ipq95xx/iw/patches/611-add-sawf-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/611-iw-add-support-to-add-del-multi-chan-support-for-mon.patch delete mode 100644 feeds/ipq95xx/iw/patches/612-iw-Add-support-for-link-specific-station-dump-fields.patch delete mode 100644 feeds/ipq95xx/iw/patches/612-iw-default-q-map-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/613-iw-add-sawf-uplink-configuration-paramters-support.patch delete mode 100644 feeds/ipq95xx/iw/patches/614-iw-add-support-to-configure-telemetry.patch delete mode 100644 feeds/ipq95xx/iw/patches/615-01-iw-Add-support-to-handle-streaming-stats-in-target.patch delete mode 100644 feeds/ipq95xx/iw/patches/615-02-iw-Add-support-to-get-SAWF-stats.patch delete mode 100644 feeds/ipq95xx/iw/patches/616-01-iw-32-bit-compilation-fixes.patch delete mode 100644 feeds/ipq95xx/iw/patches/617-iw-print-NO-EHT-flags-for-reg-get-command.patch delete mode 100755 feeds/ipq95xx/libtcmd/Makefile delete mode 100644 feeds/ipq95xx/libtcmd/patches/100-compile.patch delete mode 100755 feeds/ipq95xx/libtcmd/src/Android.mk delete mode 100755 feeds/ipq95xx/libtcmd/src/Makefile delete mode 100755 feeds/ipq95xx/libtcmd/src/Makefile.am delete mode 100755 feeds/ipq95xx/libtcmd/src/libtcmd.c delete mode 100755 feeds/ipq95xx/libtcmd/src/libtcmd.h delete mode 100755 feeds/ipq95xx/libtcmd/src/nl80211.c delete mode 100755 feeds/ipq95xx/libtcmd/src/nl80211_drv.h delete mode 100755 feeds/ipq95xx/libtcmd/src/os.c delete mode 100755 feeds/ipq95xx/libtcmd/src/os.h delete mode 100644 feeds/ipq95xx/mac80211/Makefile delete mode 100644 feeds/ipq95xx/mac80211/ath.mk delete mode 100644 feeds/ipq95xx/mac80211/files/lib/netifd/wireless/mac80211.sh delete mode 100644 feeds/ipq95xx/mac80211/files/lib/wifi/mac80211.sh delete mode 100644 feeds/ipq95xx/mac80211/patches/pending/100-compile.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/pending/200-coldboot-cal.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/pending/201-firmware-load.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-a-Revert-mac80211-allow_AP_VLAN_operation_on_crypto_controlled_devices.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-b-Revert-net-fq_impl-use-skb_get_hash-instead-of-skb_get_hash_perturb.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-c-Revert-ath10k-fix-wmi-mgmt-tx-queue-full-due-to-race-condition.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-d-Revert-treewide-Replace-0-element-memcpy-destinations-with-flexible-arrays.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-e-Revert-ath11k-make-relay-callbacks-const.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-f-Revert-fq_codel-generalise-ce_threshold-marking-for-subset-of-traffic.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-g-Revert-fq_codel-implement-L4S-style-ce_threshold_ect1-marking.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-h-Revert-mac80211-use-eth_hw_addr_set.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-i-Revert-mac80211-Use-memset_after-to-clear-tx-status.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-j-Revert-ethtool-extend-ringparam-setting-getting-API-with-rx_buf_len.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/000-k-Revert-headers-Add-MHI-stuff-to-mod_devicetable.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/001-fix_build.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/002-disable_addr_notifier.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/003-ath_move_debug_code.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/004-ath_regd_optional.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/005-ath9k_compilation_fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/006-backport_skb_put_fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/007-fix_compilation_issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/008-Enabling_vht_capability_for_2G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/009-ath11k-Enable-VHT-for-2G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/010-mac80211-disable-signed-regulatory.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/012-ath11k-add-pktlog-debugfs-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/017-ath11k-factory-test-mode-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/020-ath11k-add-btcoex-config.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/022-ath11k-add-ap-ps-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/031-ath11k-print-stats-on-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/033-ath11k-fix-for-peer-memory-corruption.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/035-ath11k-load-appropriate-board-data-from-board-id.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/036-nl80211-add-wide-band-scan-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/037-ath11k-add-wide-band-scan-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/038-ath11k-Adding-support-for-QDSS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/061-mac80211-process-addba-req-during-invalid-ext-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/063-mac80211-fix-low-tput-for-mesh-forwarding.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/068-ath11k-add-rx-histogram-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/069-ath11k-add-HE-stats-in-peer-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/072-ath11k-support-hostapd-config-to-enable-disable-he-m.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/080-ath11k-ethernet-rx-decap-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/084-ath11k-fix-ul-ofdma-counter-always-zero-in-peer-stat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/085-ath11k-Fix-supported-capabilities-and-mcs-rates-in-he.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/087-ath11k-fix-ul-ofdma-counter-increamenting-improperly.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/088-ath11k-add-htt-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/090-ath11k-fix-fixrate-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/105-ath11k-adding-validation-for-tx-stats-and-rx-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/105-ath11k-fix-monitor-crash-if-tx-offload-is-enabled.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/107-ath11k-tid-counter-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/108-ath11k-enable-ul-ofdma-ru-allocation-in-peer-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/110-ath11k-boot-without-caldata.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/112-ath11k-add-btcoex-debugfs-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/113-ath11k-add-8023-undecap-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/116-ath11k-clean-up-monitor-vdev-del.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/118-ath11k-reset-bcc-counter.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/120-ath11k-enable-ppdu-stats-in-coexist-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/138-ath11k-fill-vdev-pdev-id-for-fwtest-cmd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/142-ath11k-adding-support-for-mgmt-frame-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/146-mac80211-enable-TKIP-when-using-encapsulation-offloading delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/147-fix-signal-station-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/164-ath11k-add-qcn9000-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/181-ath11k-remove-error-on-soc-debugfs-fail.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/188-ath11k-m3-ssr-dump-collection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/191-ath11k-add-mgmt-and-data-ack-rssi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/193-ath11k-add-htt-stats-30-ext-rx-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/194-ath11k-use-dev_coredumpm-API-to-collect-rddm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/195-ath11k-add-coldboot-calibration-for-qcn9000.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/196-ath11k-add-qdss-support-for-qcn9000.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/196-ath11k-tpc-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/197-ath11k-add-support-to-collect-q6mem-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/199-001-mac80211-add-nss-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/199-002-ath11k_nss-add-nss-driver-interface.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/199-003-ath11k-add-nss-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/199-mac80211-fix-xmit-callback-when-hwencap-enable-in-st.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/201-ath11k-check-valid-fixed-rate-settings.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/201-ath11k-ipq5018-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/203-mac80211-ath11k-fw-dynamic-muedca.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/204-ath11k-support-for-native-160MHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/204-frame-size-warning-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/207-ath11k-Add-support-for-dynamic-vlan.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/207-ath11k-Enable-512MB-profile-in-ath11k.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/207-mac80211-add-nss-redirect-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/210-ath11k-full-mon-support-for-qcn9000.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/211-001-ath11k-add-WDS-offload-changes-to-NSS-driver-interface.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/211-002-ath11k-add-WDS-offload-support-on-NSS-offload-for-STA-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/211-ath11k-add-obss-pd-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/211-ath11k-custom-aggregation-size-support-over-WMI.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/211-ath11k-use-reserved-memory-from-bootargs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/213-mac80211-ath11k-Add-HE-UL-MU-fixed-rate-setting.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/214-ath11k-Enable-WMI-based-FW-Logging.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/214-ath11k-qos-null-frame-tx-over-wmi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/215-ath11k-Add-offchannel-scanning-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/218-ath11k-add-support-to-enable-disable-color-collision.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/221-ath11k-add-debugfs-interface-to-read-write-from-memo.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/226-th11k-Update-CE-DP-irq-names-during-registration-fo.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/228-ath11k-add-debugfs-support-to-get-power-save-state-change-and-power-save-duration-of-STA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/228-ath11k-fix-rssi-station-dump-not-updated-in-qcn9000.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/231-ath11k-add-ATH11K_QMI_TARGET_MEM_MODE_256M-support-f.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/231-ath11k-add-wmi-ctrl-path-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/232-ath11k-qcn6122-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/233-001-ath11k-add-support-memory-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/233-002-mac80211-add-support-memory-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/233-ath11k-Disable-rx_header-tlv-for-2K-SKB.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/233-ath11k-QDSS-support-for-qcn6122.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/233-ath11k-add-ce-latency-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/234-001-ath11k-account-tx-rx-packets-flow.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/234-002-mac80211-account-tx-rx-packets-flow.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/234-ath11k-disabling-5-dot-9-channels.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-001-ath11k-Add-support-for-beacon-tx-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-001-mac80211-add-AP_VLAN-iftype-support-on-NSS-offload-case.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-002-ath11k-add-support-for-ext-vdev-in-NSS-for-AP_VLAN-vif-handling.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-002-mac80211-Add-support-for-beacon-tx-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-003-ath11k-add-AP_VLAN-vif-support-for-WDS-offload-in-NSS-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-ath11k-add-mod-param-support-to-skip-radio.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-ath11k-add-provison-to-use-segmentted-memory-on-hk10.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/235-ath11k-update-arvif-band-info.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/236-001-mac80211-add-dynamic-VLAN-support-on-NSS-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/236-002-ath11k-extend-ext-vdev-in-NSS-for-dynamic-VLAN-handling.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/236-003-ath11k-add-dynamic-VLAN-support-in-NSS-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/236-ath11k-add-debugfs-to-disable-dynamic-bandwidth-oper.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/237-002-ath11k-Add-provision-to-configure-rx-hashmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/237-003-ath11k-allocate-dst-ring-descriptors-from-cacheable-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/237-006-ath11k-Allow-fast-rx-by-bypassing-stats-update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/238-ath11k-add-cfr-support-for-ipq8074.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/239-ath11k-cfr-for-qcn9000.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/244-ath11k-dp-tx-perf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/245-ath11k-Fix-ce-interrupt-count.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/245-ath11k-add-new-parameters-for-tx-based-capture.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/245-compilation_fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/245-revert-dev-sw-netstats-txrx-add.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/246-ath11k-Add-htt-stats-for-phy-reset-case.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/300-ath11k-nss-mesh-offload-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/301-ath11k-nss-mcbc-exception.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/301-debugfs-support-for-ani-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/302-ath11k-Add-support-to-parse-new-wmi-event-for-6G-reg.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/302-ath11k-add-177-channel-to-5G-channel-list.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/303-ath11k-Fix-for-incorrect-PHY-mode-for-Legacy-modes-P.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/303-mac80211-support-to-track-mesh-beacon-miss-event.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/304-ath11k-remove-cal_done-check-during-probe.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/305-001-mac80211-Add-support-to-handle-AWGN-interference-for-6G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/305-002-ath11k-Add-support-to-handle-AWGN-interference-for-6G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/306-ath11k-sta-dbg-level-log.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/307-mac80211-support-to-dump-cont-tx-fail-count-in-mesh.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/309-ath11k-support-to-calculate-medium-busy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/310-ath11k-fix-max-peer-count-in-ipq5018-and-qcn6122.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/311-ath11k-configure-nss-thread-priority-during-pdev_ini.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/312-ath11k-add-ampdu-id-in-802.11-radiotap-header.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/312-mac80211-fix-invalid-nss-config.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/313-ath11k-fix-q6-crash-on-vdev-delete.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/314-ath11k-Fix-peer-lookup-failure-in-mgmt-tx-completion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/318-ath11k-add-support-for-tx-completion-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/318-ath11k-avoid-stack-corrupt-in-nwifi-undecap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/318-ath11k-fix-BUFFER_DONE-read-on-monitor-ring-rx-buffer.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/319-ath11k-fix-double-free-of-peer-rx_tid-during-reo-cmd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/321-001-qgic-api-compile-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/321-002-ath11k-use-gic-api-irq-allocation.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/321-ath11k-add-spectral-160mhz.dump delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/321-ath11k-add-support-to-config-spatial-streams.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/322-ath11k-fix-kernel-null-pointer-dereference.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/323-ath11k-add-debug-code-to-dump-peer-assoc-params.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/323-ath11k-radio-phy-probe-sequence.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/324-ath11k-Add-module-param-to-specific-caldata-file-loc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/324-ath11k-add-CFR-capture-support-for-ipq5018-qcn6122.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/324-ath11k-add-debugfs-support-for-tx-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/324-ath11k-ipq9574-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/325-ath11k-Add-support-to-packet-error-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/325-ath11k-Enhance-existing-htt-stats-tlv.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/325-ath11k-mon-intrp-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/326-ath11k-Add-support-to-bit-error-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/326-ath11k-add-smart-antenna-APIs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/326-ath11k-add-support-for-new-htt-stats-and-tlv-tags.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/327-ath11k-add-smart-antenna-debugfs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/329-ath11k-add-ftm-responder-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/330-ath11k-sync-wds_ast_entry-updates.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/331-ath11k-add-cbf-support-in-pktlog.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/332-0001-mac80211-Add-qos-tid-configuration-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/332-0002-ath11k-Add-tid-qos-configuration-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0008-cfg80211-save-power-spectral-density-psd-of-regulato.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0009-ath11k-add-support-to-select-6G-Regulatory-type.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-001-ath11k-Add-support-for-awgn-mitigation-in-6Ghz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0010-ath11k-build-6G-regd-based-on-vdev-type-and-6G-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0011-ath11k-get-6G-power-type-from-HE-operation-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0012-ath11k-save-power-spectral-density-psd-of-regulatory.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0013-ath11k-add-parse-of-transmit-power-envelope-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0014-ath11k-save-max-tx-power-in-vdev-start-response-even.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0015-ath11k-fill-parameters-for-vdev_set_tpc_power-wmi-co.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0016-ath11k-discard-BSS_CHANGED_TXPOWER-when-EXT_TPC_REG_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0017-ath11k-add-handler-for-WMI_VDEV_SET_TPC_POWER_CMDID.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0018-ath11k-send-TPC-power-to-firmware-for-6G-VDEV.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0019-ath11k-add-support-to-select-all-6G-regulatory-rules.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-002-mac80211-add-support-to-awgn-detection-and-mitigatio.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0020-mac80211-add-support-for-6G-channels-and-regulatory.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0021-ath11k-update-all-6G-reg-rules-in-sband.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0022-cfg80211-add-6g-power-mode-advertisement-in-nl8.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/333-0023-ath11k-update-the-eirp-power-based-on-ieee80211_get_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/334-ath11k-Add-support-to-threeway-coex.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0001-ath11k-optimize-tx-completions.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0002-ath11k-use-DECLARE_BITMAP-for-idr-operations.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0003-ath11k-skip-HAL_TCL_DATA_CMD_INFO2_TID_OVERWRITE-con.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0004-ath11k-use-single-TCL-ring-for-tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0005-mac80211-simple-tx-for-AP-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-0006-ath11k-add-simple-tx-handler-for-AP-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-ath11-fix-ar-ops-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-ath11k-Add-Support-to-send-dynamic-pageable-memory-t.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/335-mac80211-Mesh-Fast-xmit-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-0001-ath11k-idr-optimization.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-0002-ath11k-Use-idr_replace.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-ath11k-Fix-updating-rx-stats-with-monitor-vif-enable.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-ath11k-skip-status-ring-entry-processing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-mac80211-Mesh-Fast-rx-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/336-mac80211-fix-6GHz-AP-STA-concurrency-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/338-ath11k-fix-extended-array-buffer-display-in-htt-stat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/338-ath11k-fix-transmitting-packets-during-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/339-ath11k-Handle-failure-in-qmi-firmware-ready.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/339-ath11k-add-get_txpower-mac-ops.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/339-ath11k-disable-spectral-scan-during-spectral-deinit.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/340-ath11k-remove-intersection-support-for-regulatory-rules.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/341-ath11k-fix-support-for-ext-vdev-in-NSS-for-AP_VLAN-v.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/342-ath11k-provide-access-of-the-dma-buffer-back-to-dma-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/342-ath11k-retain-debugfs-during-firmware-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/342-mac80211-fix-unconditional-sta-usage.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/343-ath11k-Add-packet-latency-histogram-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/344-mac80211-fix-checksum-issue-in-mesh-fast-xmit-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/345-mac80211-fix-mixed-declaration.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/346-ath11k-Add-debugfs-entry-to-configure-bss-survey-mod.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/346-ath11k-add-pci3-and-pci4-domain-names-to-dp-ce_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/346-mac80211-fix-bw-change-to-40Mhz-during-channel-switc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/349-ath11k-add-tx-delay-to-tsf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-01-mac80211-MBSSID-and-EMA-beacon-handling-in-AP-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-03-ath11k-add-WMI-resource-config-for-EMA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-04-ath11k-set-MBSSID-and-EMA-driver-capabilities.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-05-ath11k-MBSSID-configuration-during-vdev-create-start.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-06-ath11k-create-a-structure-for-WMI-vdev-up-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-07-ath11k-configure-MBSSID-device-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-08-ath11k-move-vif-parameter-setting-in-a-different-fun.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-09-ath11k-EMA-beacon-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-10-ath11k-configure-WPA-and-RSNE-parameters-for-nontran.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-11-nl80211-add-RNR-for-EMA-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-12-mac80211-add-RNR-for-EMA-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-14-ath11k-6GHz-Add-support-to-send-beacon-in-configured.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-15-nl80211-FILS-discovery-template-definition.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/350-ath11k-Revert-clear-the-keys-properly-when-DISABLE_K.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/351-ath11k-add-qmi-changes-to-fetch-memory-region.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/351-ath11k-fix-scheduling-while-atomic-in-tbtt-offset-ha.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/352-ath11k-Fix-non-removal-of-debugfs-post-firmware-reco.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/352-ath11k-skip-caldata-fetch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/352-mac80211-allow-nss-change-only-upto-max_nss.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/353-ath11k-Fix-qmi_msg_handler-data-structure-initializa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/353-ath11k-fix-bandwidth-change-issue-for-peer-sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/353-ath11k-fix-monitor-vdev-creation-with-fw-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/353-ath11k-ignore-frags-from-uninitialized-peer-in-dp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/353-mac80211-fix-dynamic-vlan-warning-with-monitor-interface-restart.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/354-ath11k-Fix-unmapping-allocated-memory.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/354-ath11k-Update-the-Rate-Table-information-display.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/354-ath11k-fix-6g-station-association-failure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/355-ath11k-Fix-invalid-mgmt-rx-frame-length-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/356-ath11k-invalid-desc-sanity-check.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/357-ath11k-fix-clear-peer-keys-during-disassoc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/357-ath11k-prevent-monitor-interface-to-transmit-packet.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/358-ath11k-Disable-HW-checksum-advertisement-to-netdevic.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/358-ath11k-fix-tx-bitrate-retry-signal-in-station-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/358-ath11k-skip-caldb-alloc-in-seg-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/358-mac80211-Don-t-stop-queue-when-qdisc-is-noqueue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/359-ath11k-fix-tkip-encryption-traffic-failure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/359-cfg80211-Fix-mcs-divisor-value.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/360-ath11k-add-length-validation-before-skb_put-call.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/361-ath11k-Count-wbm_tx_status-reason-code-1-as-drop-pac.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/362-ath11k-fix-incorrect-ast-index-assignment-for-wds-peer.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/363-ath11k-Add-the-green-AP-enabling-set-command-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/364-ath11k-Encoding-regdb.bin-in-board-2.bin.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/365-01-ath11k-Add-support-for-ADFS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/365-02-ath11k-add-support-for-ADFS-radar.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/366-ath11k-wmm-sent-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/367-ath11k-wmm-received-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/368-ath11k-fail-sent-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/369-ath11k-fail-received-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/370-ath11k-add-support-to-get-rssi-value-of-non-associat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/371-ath11k-Fix-ppdu_id-from-firmware-PPDU-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/371-ath11k-Fix-the-wrong-regdomain-update-for-KR-country.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/372-ath11k-Add-Rate-table-for-peer-tx-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/373-ath11k-Add-retry-mechanism-for-update_rx_qu.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/374-ath11k-Check-skb_headroom-before-using-skb_push.patc delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/374-ath11k-fix-VLC-streaming-not-working-for-wan-to-wlan.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/375-001-mac80211-add-Radio-Measurement-Action-field-values.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/375-ath11k-add-support-for-Tx-Power-insertion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/376-ath11k-Add-nss-event-handler-support-for-link-desc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/376-ath11k-restrict-user-country-setting-during-active-v.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/377-ath11k-power-save-support-during-interface-down.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/380-mac80211-fix-compilation-issues-with-pkg-upgrd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/400-ath11k-fix-monitor-mode-bringup-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/401-ath11k-Fix-mutex-dead-lock-and-q6-dump-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/451-ath11k-Higher-RAM-support-for-third-party-platforms.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/452-ath11k-fix-memory-leak-caused-by-thermal-debug-regis.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/453-ath11k-compilation-error-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/454-ath11k-reap-CE-entries-if-ring-is-full-and-intrp-idl.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/455-ath11k-added-a-debugfs-to-dump-hal-srng-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/500-001-ath12k-hw_params-changes-for-RDP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/500-ath12k-add-bus-param-struct.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/501-ath12k-add-dts-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/502-ath12k-add-thermal-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/503-ath12k-add-debugfs.h.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/504-ath12k-add-debugfs-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/505-ath12k-add-spectral-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/506-ath12k-add-testmode-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/507-ath12k-add-unused-struct-ath12k_skb_cb-eid.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/508-ath12k-Use-reserved-host-DDR-addresses-from-DT-for-P.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/508-ath12k-add-ath12k_dp_tx_htt_h2t_vde.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/509-ath12k-remove-monitor-status-and-monitor-desc-rings.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/510-ath12k-rearrange-ring-type-enum-to-match-the-hal-rin.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/511-ath12k_fix_compilation_issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/512-ath12k-fix-qmi-server-arrive-callback-by-correcting.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/513-ath12k-Add-logic-to-write-qrtr-node-id-to-scratch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/514-ath12k-fix-pci-read-and-write.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/516-ath12k-fix-l1ss.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/518-ath12k-WAR-disable-caldata-since-it-is-not-supported.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/519-ath12k-fix-cc-ext-event-for-regulatory-build.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/520-ath12k-WAR-AP-bringup-crashes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/521-ath12k-change-dtsi-memory-region-name-to-ath-memory-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/523-ath12k-dp-tx-fixes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/528-ath12K-Enable-RAM-dump-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-a-mac80211-copy-MU-MIMO-and-OFDMA-HE-capability-flags-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-b-ath12k-push-HE-MU-MIMO-and-OFDMA-params-to-hardware-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-c-ath12k-moving-HE-MCS-mapper-to-a-separate-function.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-d-ath12k-add-support-for-setting-fixed-HE-rate-gi-ltf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-e-ath12k-add-support-for-80P80-and-160-MHz-bandwidth.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/529-f-ath12k-add-extended-NSS-bandwidth-support-for-160MHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-a-ath12k-add-channel-2-into-6-GHz-channel-list.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-ath12k-Add-support-for-VHT-in-2G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-b-ath12k-fix-packet-drops-due-to-incorrect-6-GHz-freq-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-c-ath12k-fix-survey-dump-collection-in-6-GHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-d-ath12k-add-6-GHz-params-in-peer-assoc-command.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/530-e-ath12k-support-SMPS-configuration-for-6-GHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/531-ath12k-Fix-setting-msdu_ext_desc-in-Ethernet-and-RAW.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/532-ath12k-Fix-Access-Violation-with-ath12k_pci-rmmod.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/533-ath12k-WMI-fixes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/535-ath12k-fix-typecast-error-for-32bit.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/536-ath12k-Fixed-8VAP-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/539-ath12k-Increasing-VDEV_SETUP_TIMEOUT-value-to-3s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/545-ath12k-11be-mumimo-and-ofdma-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/561-nl80211-fix-attribute-definition-for-older-kernels.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/564-nl80211-add-macro-for-maximum-EHT-NSS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/565-ieee80211-add-macro-for-EHT-RU-bitmask-position.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/566-ath12k-propagation-of-EHT-capabilities-from-firmware.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/567-mac80211-Adding-320-MHz-bandwidth-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/568-ath12k-Adding-320-MHz-bandwidth-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/569-ath12k-adding-EHT-PHY-modes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/570-nl80211-ensure-HE-capabilities-are-set-for-EHT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/571-nl80211-beacon-EHT-rate-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/572-ath12k-prepare-EHT-peer-assoc-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/573-ath12k-add-WMI-support-for-EHT-peer.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/574-ath12k-hw-settings-for-EHT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/575-ath12k-Update-driver-reg-flags-for-11be.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/577-mac80211-EHT-operation-element-support-in-AP-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/578-ath12k-EHT-operation-element-support-in-AP-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/579-mac80211-Add-320-Mhz-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/581-mac80211-Support-disabling-EHT-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/582-ath12k-add-support-for-setting-fixed-HE-rate-gi-ltf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/583-nl80211-add-EHT-GI-LTF-attributes-and-enums.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/584-ath12k-Add-EHT-fixed-rate-settings.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/585-ath12k-push-HE-MU-MIMO-and-OFDMA-params-to-hardware-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/586-mac80211-copy-MU-MIMO-and-OFDMA-EHT-capability-flags.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/587-ath12k-push-EHT-MU-MIMO-and-OFDMA-params-to-hardware.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/588-ath12k-11be-bringup-fixes-for-D1.3-compatibility.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/589-ath12k-workaround-to-match-STA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/590-nl80211-advertise-RU-puncturing-support-to-userspace.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/591-cfg80211-validate-RU-puncturing-bitmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/592-nl80211-validate-RU-puncturing-bitmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/593-mac80211-reset-puncturing-bitmap-during-width-downgr.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/594-ath12k-advertise-RU-puncturing-support-to-kernel.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/595-ath12k-configure-RU-puncturing-bitmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/596-ath12k-Add-support-for-QDSS-dump-collection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/597-ath12k-Add-support-for-wmi-based-fw-log.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/598-ath12k-Add-fw-recovery-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/598-ath12k-Add-support-to-display-EHT-rx-rate-info-in-iw-statio.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/599-cfg80211-Handle-driver-updated-MU-EDCA-params.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/600-ath12k-Enable-SSR-on-firmware-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/601-ath12k-Handle-FW-updated-MU-EDCA-params.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/602-ath12k-report-tx-bitrate-for-iw-wlan-station-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/603-ath12k-add-support-to-configure-spatial-reuse-par.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/604-ath12k-Enable-extended-tx-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/605-ath12k-skip-NULL-buff-segments-in-RDDM.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/606-dump-rx-desc-when-channel-freq-is-wrong-in-ph.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/607-ath12k-Fix-TX-completion-ring-mask-for-WBM2SW-ring-4.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/608-ath12k-Fix-rx-stats-support-by-enabling-monitor-ring.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/609-ath12k-Add-qdss-full-coredump-collection-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/610-ath12k-Add-support-for-1024-BlockAck-bitmap-for-EHT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/611-ath12k-Fixed-issue-in-reading-pdev-temperature-value.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-01-ath12k-add-WMI-resource-config-for-EMA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-02-ath12k-set-MBSSID-and-EMA-driver-capabilities.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-03-ath12k-MBSSID-configuration-during-vdev-create-start.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-04-ath12k-create-a-structure-for-WMI-vdev-up-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-05-ath12k-configure-MBSSID-device-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-06-ath12k-move-vif-parameter-setting-in-a-different-fun.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-07-ath12k-EMA-beacon-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-08-ath12k-configure-WPA-and-RSNE-parameters-for-nontran.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/612-09-ath12k-skip-sending-vdev-down-for-channel-switch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/613-ath12k-fix-kernel-panic-during-regd-update-in-6g.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/614-ath12k-Fix-firmware-assert-due-to-ce-count-mismatch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/615-01-ath12k-add-statistics-for-tx-RU-puncturing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/615-02-ath12k-add-statistics-for-rx-RU-puncturing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/616-ath12k-add-WMI-calls-to-manually-add-del-pause-resum.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/617-ath12k-add-debugfs-for-TWT-debug-calls.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/619-mac80211-support-320-Mhz-in-Wide-bandwidth-CSA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0001-ath12k-add-support-to-select-6-GHZ-Regulatory-type.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0002-ath12k-build-6-GHZ-regd-based-on-vdev-type-and-6-GHZ-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0003-ath12k-get-6-GHZ-power-type-from-HE-operation-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0004-ath12k-save-power-spectral-density-psd-of-regulatory.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0005-ath12k-add-parse-of-transmit-power-envelope-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0006-ath12k-save-max-tx-power-in-vdev-start-response-even.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0007-ath12k-fill-parameters-for-vdev_set_tpc_power-wmi-co.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0008-ath12k-discard-BSS_CHANGED_TXPOWER-when-EXT_TPC_REG_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0009-ath12k-add-handler-for-WMI_VDEV_SET_TPC_POWER_CMDID.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0010-ath12k-send-TPC-power-to-firmware-for-6-GHZ-VDEV.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0011-ath12k-add-support-to-select-all-6-GHZ-regulatory-rules.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0012-ath12k-update-all-6-GHZ-reg-rules-in-sband.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0013-ath12k-update-the-eirp-power-based-on-ieee80211_get_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0014-ath12k-porting-6-GHZ-regulatory-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0015-ath12k-fix-kernel-panic-during-mac.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0016-ath12k-Disable-6-GHz-Transmit-power-envelope-for-320.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/624-0017-ath12k-Enable-set-tpc-power-cmd-for-320.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/625-ath12k-Replace-HTT_DBG_OUT-with-scnprintf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/625-ath12k-supporting-5.9G-band-with-160Mhz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/626-ath12k-Rename-ARRAY_TO_STRING-to-PRINT_ARRAY_TO_BUF.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/626-mac80211-add-EHT-support-for-mesh.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/627-ath12k-Cleanup-checkpatch-warnings-in-htt-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/628-ath12k-Cleanup-unnecessary-NULL-termination-check.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/629-ath12k-Update-missing-stats-in-debugfs_htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/630-ath12k-Add-additional-debugfs_htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/631-ath12k-Add-support-for-new-htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/634-ath12k-Introduced-module-param-to-En-Dis-FW-segmente.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/635-ath12k-Add-pageable-mem-type-for-qcn9274.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/635-ath12k-Add-support-to-handle-AWGN-interference-for-6.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/635-ath12k-Comment-out-RX_MPDU_END-and-RX_MSDU_END-stats-parsing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/635-ath12k-fix-enabling-reoq-lut.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/635-ath12k_diag_support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/636-ath12k-Destroy-debugfs-during-firmware-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/636-ath12k-enable-vdev-stats-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/637-ath12k-Avoid-NULL-ptr-access-during-mgmt-tx-cleanup.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/637-mac80211-add-RU-puncturing-support-for-mesh.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/638-01-ath12k-Add-support-for-Green-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/638-02-cfg80211-Add-the-support-for-Green-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/638-03-mac80211-Add-the-support-for-Green-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/638-ath12k-Send-Puncturing-pattern-of-peer-mesh-during-a.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/638-ath12k-disable-spectral-scan-during-spectral-deinit.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-01-ath12k-add-wait-operation-for-tx-management-packets-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-02-ath12k-fix-potential-wmi_mgmt_tx_queue-race-conditio.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-03-ath12k-disabling-credit-flow-for-WMI-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-04-ath12k-fix-bss-chan-info-request-wmi-command.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-05-ath12k-tx-queue-length-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/639-ath12k-Add-coredump-segment-for-dynamic-paging.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-001-ath12k-Enable-monitor-interface-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-002-ath12k-refactor-monitor-stats-ring-processing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-003-ath12k-add-filter-settings-to-enable-monitor-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-004-ath12k-add-monitor-buffer-address-TLV-parsing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-005-ath12k-eht-tlv-parsing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-006-01-mac80211-Remove-unused-RX_FLAGS-from-mac80211_rx_fla.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-006-mac80211-add-eht-radiotap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-007-ath12k-add-EHT-radiotap-header.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-008-ath12k-fix-hal_rx-structures.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-ath12k-Ignore-frags-from-uninitialized-peer-in-dp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/640-ath12k-fix-secu-connection-due-to-auth-early.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-0001-ath12k-fix-4-addr-tx-failure-for-AP-and-STA-modes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-0002-ath12k-handle-4addr-NULL-EAPOL-frame-from-wbm-err-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-0003-ath12k-fix-4addr-multicast-packet-tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-ath12k-Add-support-for-PCSS-SSR-dump-collection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-ath12k-Add-support-for-recording-EHT-Tx-Rx-rate-info.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-ath12k-Update-the-Rate-Table-information-display.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/641-ath12k-add-hw_param-for-wakeup_mhi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/644-ath12k-Print-htt_peer_stats-only-when-enabled.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/646-ath12k-Fix-RU-allocation-incrementation-in-tx_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/647-01-ath12k-Add-5GHz-240MHz-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/647-02-cfg80211-Skip-punctured-channel-validation-for-5GHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/648-ath12k-Fix-invalid-mgmt-rx-frame-length-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/648-ath12k-fix-6g-station-association-failure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/648-ath12k-fix-target-assert-during-channel-switch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/648-ath12k-remove-intersection-support-for-regulatory-ru.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/649-ath12k-fill-pdev-id-for-fw-test-cmd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/649-ath12k-fix-double-free-of-peer-rx_tid-during-reo-cmd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/649-ath12k-fix-incorrect-handling-of-AMSDU-frames.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/649-ath12k-switch-to-using-ieee80211_tx_status_ext.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/649-nl80211-Add-support-to-enable-disable-bss-color-coll.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/650-ath12k-Add-support-for-bss-color-enablement.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/650-ath12k-Update-HTT-ppdu-stats-from-the-firmware-descr.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/650-ath12k-move-warn-prints-to-dbg-when-srng-is-full.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/651-ath12k-Add-debugfs-interface-to-configure-firmware-d.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-01-ath12k-single-wiphy-registration-per-SOC.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-02-ath12k-Update-hw-generic-mac-ops-handling.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-03-ath12k-vdev-statemachine-changes-for-single-wiphy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-04-ath12k-Support-scan-for-single-wiphy-architecture.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-05-ath12k-Cache-configs-for-vdev-before-actual-vdev-cre.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-06-ath12k-Add-additional-checks-for-vif-and-sta-iterato.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-07-ath12k-modify-regulatory-support-for-single-wiphy-ar.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-08-ath12k-Add-provision-for-common-log.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-09-ath12k-Add-support-for-multi-chip-wiphy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-10-ath12k-Enable-mac-based-registration-for-default-gro.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/652-ath12k-fix-fixrate-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-001-ath12k-allocate-dst-ring-descriptors-from-cacheable-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-002-ath12k-Allow-fast-rx-by-bypassing-stats-update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-003-Add-provision-to-configure-rx-hashmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-ath12k-Update-DP-irq-names-during-registration-for-a.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-ath12k-check-valid-fixed-rate-settings.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/653-mac80211-allow-bw-change-during-channel-switch-in-me.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/654-ath12k-Add-HE-UL-MU-fixed-rate-setting.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/654-ath12k-Add-pktlog-support-through-debugfs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/654-ath12k-Fix-memory-free-during-pci-power-down.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/655-ath12k-Enable-pktlog-decode-info-embed-into-pktlog-d.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/656-ath12k-fix-scheduling-while-atomic-in-beacon_tx_status.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/656-ath12k-fix-workqueue-not-getting-destroyed-after-rmm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/656-ath12k-pktlog-rx-filter-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/656-wifi-ath12k-fix-lock-unlock-issue-in-MLO-offset-even.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-Add-missing-per-peer-parameters.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-Fix-memory-leak.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-add-module-param-to-enable-disable-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-add-mutex_lock-for-ar-allocated_vdev_map-acces.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-fix-NSS-value-update-in-rx-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-ath12k-prevent-monitor-interface-to-transmit-packet.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/657-mac80211-Avoid-encapsulation-of-EAPOL-frames-if-OFFL.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/658-ath12k-Change-default-frame-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/660-ath12k-Account-correct-segment-count-in-coreudmp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/660-ath12k-Fix-vdev-restart-start-sequence-during-channe.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-001-ath12k-Modify-Rx-ring-size-and-buff-size.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-002-ath12k-Introduced-module-param-for-enabling-fwlog.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-Add-TPC-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-Fix-TPC-CMD-Info-s-sent-as-0.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-Update-mutex-lock-var-in-mac-ops.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-add-length-validation-before-skb_put-call.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-fill-peer-meta-data-during-reo_reinject.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/661-ath12k-fix-antenna-parameter-is-zero-in-iw-phyx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/662-ath12k-Fix-memory-leak-in-rx_desc-and-tx_desc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/662-ath12k-Fix-rx_per_chain_rssi_in_dbm-is-incorrect-in-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/662-ath12k-fix-clear-peer-keys-during-disassoc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/662-ath12k-fix-radar-detection-issue-in-160mhz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/662-mac80211-add-eht_capa-for-debugfs_sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/663-ath12k-Clear-auth-flag-only-for-actual-association.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/663-ath12k-Fix-memory-leak.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/663-ath12k-add-FTM-Mode-Support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-a-ath12k-add-alternate-tcl-ring-selection-logic.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-ath12k-change-kzalloc-to-vzalloc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-ath12k-increase-msi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-ath12k-prevent-monitor-memset.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-b-ath12k-Allow-fast-tx-completion-by-freeing-skb-when-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-c-ath12k-add-stats-for-TX-buffer-allocation-failures.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-d-ath12k-Remove-mod-operator-overhead-for-dst-ring-acc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-e-ath12k-do-not-parse-desctiptor-that-will-not-be-hand.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-f-ath12k-Optimize-tx-completions-in-case-of-stats-disa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-g-ath12k-fix-tx-status-reporting-api-when-encap-offloa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-h-ath12k-fix-transmitting-packets-during-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-i-ath12k-optimize-rcu-lock-access-in-dp_tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-j-ath12k-add-branch-predictors-in-dp_tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-k-ath12k-Make-use-of-TID-classification-offload.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/664-l-ath12k-skip-cache-synchronization-in-tx-completion-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/665-ath12k-Update-obss-color-detection-notify-to-queue-work.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/665-ath12k-Update-wbm_tx_stats-upon-tx-completion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/665-ath12k-add-register-changes-for-QCN9274-version-2.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/666-ath12k-Fixed-dma-unmapping-in-tx-desc-cleanup.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/666-ath12k-add-RAW-Mode-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/666-ath12k-fix-320Mhz-bytes-packets-counters-in-peer-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/666-mac80211-Fix-Green-AP-Crash-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/667-ath12k-Add-PPE-config-definition-to-enable-disable-P.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/667-ath12k-peer-pktlog-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/667-mac80211-Enable-PPE-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/668-ath12k-Enable-PPE-in-fast-Rx-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/668-ath12k-fix-memory-leaks-during-multicast-tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/668-ath12k-regdb-encoding-board-2-binary.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/669-ath12k-change-dma_map_single-to-virt_to_phys-in-rx-r.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/669-ath12k-configure-phymode-for-beacon-in-6Hz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-01-ath12k-Add-MLO-caps.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-02-ath12k-Add-mlo-wmi-setup-apis.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-03-ath12k-Setup-MLO-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-04-ath12k-add-MLO-global-memory-support-in-coredump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-ath12k-Add-support-for-cold-boot-calibartion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-ath12k-Adding-support-for-mgmt-frames-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/670-ath12k-enhance-peer-create-delete-log.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/671-ath12k-Fix-flush-error-options-71-to-127-are-not-present.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/672-ath12k-Fix-beacon-tx-mode-when-multiple-tx-vifs-st.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/672-ath12k-Fix-freeing-hal-reo-status-entry-in-host.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/672-ath12k-enable-ampdu-flag-for-data-frame.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/673-ath12k-Fix-avg-ack-info-not-shown-in-station-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/673-ath12k-RDP454-bringup.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/673-ath12k-enable-service-flag-for-survey-dump-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/674-Mac80211-Initialize-EWMA-fail-avg-to-1.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/674-ath12k-fix-rmmod-issue-in-SSR-case.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/674-mac80211-Fix-Channel-Switch-Announcement-6-GHz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-01-cfg80211-Extend-interface-combination-advertisement-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-01-nl80211-add-support-for-background-cac-stop.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-02-cfg80211-add-minimum-background-cac-timeout.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-02-nl80211-Send-multi-hw-channel-list-and-interface.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-03-ath12k-Advertise-interface-combination.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-ath12k-Fix-the-number-of-sounding-dimensions-above-8.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/675-ath12k-single-wiphy-incorrect-channel-survey-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-01-ath12k-prepare-vif-and-sta-for-MLO-handling.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-02-ath12k-MLO-vdev-bringup-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-03-ath12k-changes-for-handling-multi-link-sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-04-ath12k-setup-ML-reo-queue-LUT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-05-ath12k-set-idle-link-desc-buf-manager-based-on-chip.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-06-ath12k-perform-Tx-address-translation.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/676-ath12k-enable-qdss-config.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-01-wifi-cfg80211-get-correct-AP-link-chandef.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-02-wifi-cfg80211-Add-link_id-parameter-to-various-key-o.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-03-wifi-nl80211-send-MLO-links-channel-info-in-GET_INTE.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-04-wifi-cfg80211-Add-link_id-to-cfg80211_ch_switch_star.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-05-wifi-nl80211-use-link-ID-in-NL80211_CMD_SET_BSS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-06-wifi-mac80211-accept-STA-changes-without-link-change.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-07-wifi-mac80211-properly-set-old_links-when-removing-a.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-08-wifi-mac80211-set-link-BSSID.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-09-wifi-mac80211-use-link-in-TXQ-parameter-configuratio.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-10-wifi-mac80211-properly-implement-MLO-key-handling.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-11-wifi-cfg80211-add-link-id-to-txq-params.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-12-wifi-mac80211-add-link-information-in-ieee80211_rx_s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-13-wifi-mac80211-use-the-corresponding-link-for-stats-u.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-14-wifi-mac80211-use-link-ID-for-MLO-in-queued-frames.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-15-wifi-mac80211-mlme-don-t-add-empty-EML-capabilities.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-16-wifi-mac80211-fix-control-port-frame-addressing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-17-wifi-mac80211-fix-potential-deadlock-in-ieee80211_ke.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-18-wifi-mac80211-use-correct-rx-link_sta-instead-of-def.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-19-wifi-mac80211-maintain-link_id-in-link_sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-20-wifi-mac80211-make-smps_mode-per-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-21-wifi-mac80211-move-link-code-to-a-new-file.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-22-wifi-mac80211-isolate-driver-from-inactive-links.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-23-wifi-mac80211-add-vif-sta-link-RCU-dereference-macro.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-24-wifi-mac80211-use-link_id-in-ieee80211_change_bss.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/677-25-wifi-mac80211-remove-support-for-AddBA-with-fragment.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/678-ath12k-add-mac-ops-to-get-tx-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/679-01-wifi-ath12k-send-host-cap-until-all-the-chip-in-the-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/679-02-wifi-ath12k-add-phy-count-capability-learn.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/679-ath12k-Fix-the-avg-ack-signal-inconsistency-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/681-001-ath12k-allocate-ppdu_info-separately-during-pdev_dp-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/681-002-ath12k-Avoid-TLV-parsing-overhead-by-looping-till-sk.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/681-003-ath12k-handle-monitor-drop-TLVs-scenario.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/681-ath12k-Modify-ppdu-info-bandwidth-in-u_sig_cmn-TLV.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/683-ath12k-Debug-prints-to-prevent-buffer-overflow.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/683-ath12k-do-not-drop-data-frames-from-unassociated-sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-01-cfg80211-DFS-radar-detection-with-radar-bitmap.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-02-mac80211-radar-bitmap-during-DFS-radar-detection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-03-ath12k-radar-bitmap-generation-durin-DFS-radar-detec.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-04-ath12k-Add-debugfs-extended-support-radar-simulation.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-ath12k-Check-skb_headroom-before-using-skb_push.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-mac80211-Update-CCFS1-in-EHT-Operation-IE-for-11s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/684-mac80211-fix-RCU-stall-while-updating-mesh-PS-STA-st.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-01-wifi-ath12k-Moved-the-Tx-Descriptor-before-Rx-Descri.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-02-wifi-ath12k-Refactor-Tx-Rx-Descriptor-procedure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-03-wifi-ath12k-Refactor-SW-cookie-procedure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-ath12k-Fix-failed-to-remove-key-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-ath12k-fix-memory-leak-caused-by-thermal-debug-regis.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-mac80211-Revert-mac80211-reject-clear-user-rate-mask.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/685-mac80211-fix-mesh-EHT-operation-info-IE-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/686-mac80211-fix-RCU-stall-in-mesh-fast-xmit-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-01-wifi-ath12k-Added-MLO-capable-field-in-hw-group-stru.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-02-wifi-ath12k-Add-partner-Rxdma-buffer-processing-in-D.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-03-wifi-ath12k-Do-partner-rx-descriptor-init-in-each-So.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-ath12k-key-operations-for-Multi-link-Station-and-Acc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-ath12k-remove-reserve-member-of-wbm-completion-struct.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/688-cfg80211-get-channel-and-txpower-value-for-each-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-01-cfg80211-get-link-information-of-associated-station.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-01-mac80211-use-link-conf.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-02-ath12k-use-link-conf-for-all-bss-config-operations.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-02-mac80211-get-link-information-of-associated-station.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-03-ath12k-use-link-sta-instead-of-deflink.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-04-ath12k-use-link-for-ampdu-actions.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-05-mac80211-Fix-address-translation-for-multiple-bss-ca.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-ath12k-update-CSA-counter-in-probe-resp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/689-wifi-ath12k-Fix-pci-register-read-write.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-0001-ath12k-refactor-vdev-configuration-related-functions.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-0002-ath12k-add-multi-vdev-restart-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-01-cfg80211-get-tx-power-for-each-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-02-mac80211-get-tx-power-for-each-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-03-ath11k-get-txpower-for-each-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-04-ath12k-get-txpower-for-each-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-ath12k-board-id-read-from-OTP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/690-ath12k-improve-iterations-over-channel-contexts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-0001-cfg80211-mac80211-add-support-for-channel-switch-wit.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-0002-cfg80211-mac80211-update-beacon-counters-per-link-ba.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-0003-mac80211-add-Critical-Update-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-0004-ath12k-add-critical-update-support-during-set-beacon.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-ath12k-240MHz-Q-Q-vendor-IE-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-ath12k-Add-support-for-ADFS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-ath12k-Monitor-mode-bring-up-in-SLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-ath12k-sub-channel-enable-for-dfs-channel-puncturing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-cfg80211-exported-cfg80211_chandef_dfs_cac_time-api.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/691-mac80211-support-poll-sta-for-ML-clients.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/692-0001-cfg80211-mac80211-add-DFS-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/692-0002-ath12k-add-initial-DFS-MLO-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/692-ath12k-enable-MLO-dump-collection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/693-ath12k-Fix-double-free-during-BE-MU-MIMO-htt-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/693-ath12k-incorrect-paging.bin-size.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/693-mac80211-validate-link-status-before-deciding-on-off.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/694-ath12k-Update-reg_tpc_info-from-bss_conf-during-channel-switch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/695-ath12k-delete-the-timer-rx_replenish_retry-during-rm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/696-01-wifi-ath12k-Refactor-the-MLO-global-memory-request.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/696-02-wifi-ath12k-Add-MLO-global-memory-support-in-segment.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/696-UPSTREAM-cfg80211-fix-u8-overflow-in-cfg80211_update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/696-cfg80211-Skip-scan-entry-creation-for-duplicate-beac.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/697-UPSTREAM-cfg80211-mac80211-reject-bad-MBSSID-element.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/697-ath12k-Propagate-ML-capabilities.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/697-ath12k-fix-tkip-encryption-traffic-failure.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/698-UPSTREAM-mac80211-fix-MBSSID-parsing-use-after-free.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/699-UPSTREAM-cfg80211-fix-BSS-refcounting-bugs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/700-UPSTREAM-cfg80211-avoid-nontransmitted-BSS-list-corr.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/701-UPSTREAM-mac80211-fix-crash-in-beacon-protection-for.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/702-ath11k-fix-memory-leak-in-dp-rx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/702-ath12k-fixed-rate-2G-fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-01-cfg80211-add-support-for-set-bit-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-01-cfg80211-add-support-for-set-link-specific-tx-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-02-mac80211-add-support-for-set-bit-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-02-mac80211-add-support-for-set-link-specific-tx-power.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-03-ath12k-add-support-for-set-bit-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-04-ath11k-add-support-for-set-bit-rate.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath11k-regdb-binary-support-removal.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-11be-spectral-scan-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-Avoid-multiple-beacon-countdown-update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-Clear-qdesc-array-on-peer-tid-update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-Update-pending-desc-size-in-reo-cache-flush.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-fix-cold-boot-sequence-for-SoC-grouping.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-ath12k-handle-mac-op-scan-with-link-id.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/703-wifi-ath12k-fix-peer-id-and-non-primary-buffer-in-rx-dp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-01-ath12k-fix-Factery-Test-Mode-crash-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-02-ath12k-fix-firmware-assert-issue-for-Tx-test-case-in.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-a-ath12k-Add-support-for-new-htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-ath12k-enable-backward-compatibility-to-support-lega.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-ath12k-remove-reserve-member-of-wbm-completion-struct.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-ath12k-subscribe-required-word-mask-from-rx-tlv.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/704-b-ath12k-Add-support-for-new-htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/705-ath12k-fix-hal_rx_desc-skb-corruption.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/705-mac80211-fetch-fils-unsol-presp-template-by-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-01-mac80211-add-debugfs-support-for-links.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-02-ath12k-fix-single-wiphy-debugfs-issues.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-ath12k-Fix-search-flag-and-update-peer-map-event-for.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-ath12k-RDP454-split-phy-bringup-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-ath12k-move-config-caching-to-ahvif.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-mac80211-Add-support-to-enable-disable-FILS-UBPR-fra.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/706-nl80211-Add-power-mode-support-for-6G.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-01-mac80211-emlsr-capabalalites.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-02-ath12k-Enable-emlsr-mode-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-a-mac80211-framework-to-support-MLO-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-ath12k-Add-HTT_TX_PDEV_MU_MIMO_SCH_STATS_TLV-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-ath12k-Add-support-to-read-caldata-from-EEPROM.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-ath12k-Add-wmi-control-path-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-ath12k-add-awgn-support-for-320-MHz-in-6-GHz-band.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-ath12k-tx-and-rx-nss-changes-for-eht-mode.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-b-ath12k-add-support-for-MLO-SSR-Mode0.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-c-ath12k-fix-incorrect-rates-sent-to-firmware.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-cfg80211-Allow-non-public-action-frames-to-be-transm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-mac80211-pass-channel-info-in-AWGN-event.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/707-wifi-ath12k-add-link-id-support-in-wbm-error-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/708-ath12k-Add-support-to-set-tx-power-for-6G-via-iw.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/708-ath12k-Fix-unbalance-mutex-lock-in-mac-ops.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/708-ath12k-fix-memory-leak-in-dp-rx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/708-nl80211-add-agile-DFS-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/708-wifi-ath12k-add-proper-link-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/709-UPSTREAM-mac80211-fix-init-rx-link-and-rx-link-sta.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-0001-ath12k-symmetrize-scan-vdev-create-and-delete-during.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-0002-ath12k-do-not-return-invalid-link-id-for-scan-link.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-001-ath12k-Add-AHB-driver-support-for-ipq5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-002-ath12k-ath12k-Move-ath12k-module-initialization-to-c.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-003-ath12k-Add-IPQ5332-CE-config-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-004-ath12k-Add-and-initialize-hw-params-for-IPQ5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-005-ath12k-IPQ5332-qmi-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-006-ath12k-callbacks-to-read-write-to-cmem-space.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-007-ath12-Enable-AHB-driver-for-IPQ5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-008-ath12k-Disable-QDSS-firmware-log-for-ipq5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-010-ath12k-add-ipq5332-data-path-register-changes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/710-ath12k-fix-sta-association-in-mbssid-case.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-001-cfg80211-add-rts-threshold-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-002-mac80211-add-rts-threshold-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-003-ath12k-add-rts-threshold-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-004-ath11k-add-two-argument-to-ath11k_mac_op_set_rts_thr.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-01-ath12k-fwtest-MLO-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-02-cfg80211-fwtest-MLO-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-03-ath11k-fwtest-dummy-link-id-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-04-ath10k-fwtest-dummy-link-id-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-ath12k-athdiag-debugfs-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-ath12k-drop-packets-with-invalid-peer-id-in-dp_tx-pa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-ath12k-fix-qmi-handler-terminator-entry.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-ath12k-fix-register-access-after-power-down-the-targ.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/711-wifi-mac80211-add-accumulated-statistics-for-Multi-lin.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/712-01-cfg80211-add-support-rts-threshold-readable-command-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/712-02-ath12k-add-support-rts-threshold-readable-command-fo.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/712-UPSTREAM-cfg80211-Fix-bitrates-overflow-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/712-ath12k-Update-htt_stats-for-Rx-Tx-OFDMA-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/712-cfg80211-mac80211-add-MLO-support-for-HE-BSS-color-c.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/713-001-mac80211-update-sta-max-bandwith-during-peer-assoc-p.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/713-002-ath12k-update-sta-max-bandwith-during-peer-assoc-pre.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/713-ath12k-Add-supoort-for-mlo-in-cnss-daig-debug.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/713-ath12k-Performance-optimization-in-Rx-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/713-ath12k-fix-firmware-assert-during-insmod-in-memory-s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-01-UPSTREAM-wifi-mac80211-add-API-to-show-the-link-STAs-in-debug.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-02-wifi-mac80211-include-link-address-in-debugfs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-03-UPSTREAM-wifi-mac80211-add-pointer-from-link-STA-to-STA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-04-wifi-ath12k-move-link-sta-specific-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-ath12k-Introduce-module-param-for-NAPI-budget-proces.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/714-ath12k-add-support-to-get-rssi-value-of-non-associat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-01-wifi-ath12k-remove-the-local-rx_desc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-02-wifi-ath12k-avoid-hal-rx-descriptor-access-in-ath12k.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-03-wifi-ath12k-avoid-hal-rx-descriptor-access-in-rx-ppd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-04-wifi-ath12k-remove-the-unused-hal_ops-rx_desc_get_mp.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-a-mac80211-Add-link-id-support-for-op-sta-rc-update.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-ath12k-add-support-for-peer-meta-data-version.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-ath12k-btcoex-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-ath12k-ipq5332-SSR-Recovery-Support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-b-ath12k-Update-link-id-after-op-supports.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-c-ath11k-Add-link-id-argument.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-d-ath10k-Add-link-id-argument.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-e-ath9k-Add-link-id-argument.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-wifi-ath12k-Add-Dynamic-VLAN-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/715-wifi-ath12k-Modified-the-peer-id-bit-mask-in-monitor.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-001-wifi-cfg80211-Add-new-attribute-to-pass-TX-link-id-of-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-002-wifi-mac80211-restructure-vif-and-link-conf-for-mlo-mbssi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-003-wifi-ath12k-MLO-MBSSID-Support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-004-wifi-ath11k-fetch-mbssid-tx-vif-from-deflink.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-a-ath12k-Add-tx-datapath-related-soc-and-link-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-ath12k-AP-bringup-with-5G-Low-5G-High-in-dfs-channel.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-ath12k-sent-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/716-b-ath12k-Multicast-support-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/717-ath12k-fix-firmware-crash-issue-in-raw-mode-with-sof.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/717-ath12k-fix-tcl_metadata-vdev_id-info.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/717-ath12k-received-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/717-ath12k-update-unsupported-bandwidth-flags.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/717-cfg80211-precac-check-for-self-managed-wiphy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-a-ath12k-introduce-APIs-to-access-rings-without-locks.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-ath12k-Add-support-to-enable-QDSS-in-IPQ5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-ath12k-failed-sent-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-b-ath12k-Update-iowrite32-to-write_relaxed-to-boost-pe.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-c-ath12k-optimize-datapath-tx-completion-routine.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-cfg80211-fix-6GHz-AP-STA-concurrency-issue.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-d-ath12k-remove-locks-and-optimize-tx-completion-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-e-mac80211-Deliver-the-frame-to-driver-tx-ops-directly.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-f-ath12k-Add-ath12k_dp_tx_direct-for-faster-tx-process.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/718-g-ath12k-Avoid-too-many-dereference-to-find-the-rbm-id.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/719-a-ath12k-Use-precomputed-SW-TCL-descriptor.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/719-ath12k-failed-received-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/719-b-ath12k-Remove-locks-while-accessing-descriptors.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/719-c-ath12k-Program-the-RBM-ID-values-in-TCL-RBM-map-regi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/719-d-ath12k-Optimize-tx-descriptor-updates.-Avoid-FIELD_P.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-a-ath12k-Process-tx-completions-using-the-napi-budget.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-ath12k-add-mac-address-for-monitor-mode-vdev.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-b-ath12k-Optimize-the-tx-completion-routine.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-c-ath12k-Optimize-the-tx-completion-routine-by-avoid-a.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-d-ath12k-Avoid-initialization-of-all-the-variables-ear.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-e-ath12k-Optimize-Tx-direct-path-variable-init.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-f-ath12k-Enable-fast-recycling-the-skbs-for-performanc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-g-ath12k-Introduce-a-module_param-to-change-the-tx-com.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-h-ath12k-Avoid-register-address-caculations-on-a-per-p.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/720-mac80211-update-radar_required-in-channel-context-af.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/721-UPSTREAM-wifi-nl80211-fix-NULL-ptr-deref-in-offchan-check.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/721-a-ath12k-Add-locks-while-processing-Tx-completion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/721-b-ath12k-Set-correct-tx-bw-when-EHT-op-present.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/722-ath12k-fix-usage-of-same-vdev_id-for-same-soc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/722-cfg80211-add-support-for-mlo-mon-to-set-add-del-chan.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/723-mac80211-add-mlo-monitor-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/724-ath12k-avoid-deadlock-during-regulatory-update-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/725-ath12k-fix-incorrect-beacon-template-update-during-C.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/725-mac80211-fix-null-pointer-access-for-AP-VLAN.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/726-ath12k-add-beacon-protection-support-for-ath12k.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/726-cfg80211-mac80211-SLO-WDS-link-add.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/726-mac80211-fix-crash-when-accessing-null-pointer.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/727-ath12k-rate-info-is-not-properly-updated-for-tx-pkts.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/728-ath12k-drop-the-non-transmitted-failure-tx-frames.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/746-ath12k-parse-the-mlo-mem-and-get-the-reo-snapshot-de.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/747-ath12k-add-support-for-Mgmt-Rx-re-ordering.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/748-ath12k-add-BUG_ONs-for-debugging-purpose.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/749-ath12k-Map-to-cmem_remap-structure-when-parsing-ab-h.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/749-ath12k-Modify-request_firmware_nowarn-to-request_fir.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/749-ath12k-add-support-avg-signal-in-station-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/749-wifi-ath12k-refactor-peer-delete.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-01-ath12k-Add-SAWF-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-02-ath12k-Add-vendor-command-support-for-SAWF.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-03-ath12k-Add-support-to-send-service-class-params.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-04-ath12k-Add-WMI-support-for-SAWF.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-ath12k-Add-retry-mechanism-for-update_rx_queue-reo-cmd.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-ath12k-fix-memory-leak-in-ath12k_mac_setup_channels_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/750-wifi-ath12k-Skip-CPU-sync-for-REO-in-unmap-DMA-memor.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-ath12k-Add-framework-to-use-different-hashmap-for-ML.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-ath12k-Add-support-for-new-htt_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-ath12k-Fix-incorrect-value-of-rx_per_chain_rssi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-ath12k-Fixed-reboot-assert-issue-when-MLO-enabled.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-mac80211-Get-valid-last_rate-for-rx_bitrate-from-cpu.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-wifi-01-ath11k-Fix-missing-duplicate-beacons-in-PSC-channels.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-wifi-02-ath12k-Fix-missing-duplicate-beacons-in-PSC-channels.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-wifi-ath12k-Enable-lock-less-tx-netdevice-flag.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/751-wifi-ath12k-avoid-dma-sync-cpu-during-dp_tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/752-wifi-ath12k-added-soc-stats-for-REO-Rx-data-path-deb.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/753-01-ath12k-sawf-update-the-TCL-Data-command-when-SKB-has.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/753-01-cfg80211-Fix-firmware-assert-during-set-bitrate-comm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/753-02-ath12k-add-link_sta-in-ath12k_mac_validate_fixed_rat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/753-02-ath12k-sawf-add-callback-operation-for-dynamic-msduq.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/753-03-ath12k-sawf-add-default-q-mapping-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/754-01-ath12k-sawf-add-uplink-configuration-paraeters-in-se.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/754-02-ath12k-sawf-uplink-configuration-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/755-mac80211-Fix-6-GHz-Band-capabilities-IE-advertisemen.patch delete mode 100755 feeds/ipq95xx/mac80211/patches/qca/760-ath12k-Use-correct-offsets-for-handling-pci-and-ahb-.patch delete mode 100755 feeds/ipq95xx/mac80211/patches/qca/761-ath12k-Add-correct-RING_MASK_4-and-handle-irq-config.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/762-ath12k-Fix-memory-leak-during-peer-frag-setup.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/763-a-wifi-mac80211-add-framework-to-support-PPE-DS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/763-b-wifi-ath12k-add-framework-to-support-PPE-DS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/764-ath12k-Add-support-to-identify-dual-mac.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/764-ath12k-Add-the-cold-boot-calibration-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/764-ath12k-Fix-the-wrong-regdomain-update-for-KR-country.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/765-ath12k-Add-full-dump-support-for-IPQ5322.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/765-ath12k-Add-support-for-AWGN-wmi-control-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/765-ath12k-Bonded-interface-working.-Traffic-tested.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/766-ath12k-Add-ATH12K_DBG_PEER-for-serviceability.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/766-ath12k-Fix-get-peer-from-peer-id-instead-of-ast-inde.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/766-ath12k-fix-firmware-assert-during-channel-switch-for.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/767-Fix-the-incorrect-value-of-station-dump-fields-in-SL.patch delete mode 100755 feeds/ipq95xx/mac80211/patches/qca/767-ath12k-Check-if-ar-is-down-before-handling-mac-opera.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/767-ath12k-Modify-the-M3-SSR-Dump-address.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/767-ath12k-disable-pdev-for-non-supported-country.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/768-001-wifi-ath12k-Modify-the-threshold-param-for-Rx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/768-mac80211-RU-puncturing-support-for-STA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/770-ath12k-Fill-vdev_id-for-fwtest-command.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/771-ath12k-IPQ5332-spectral-scan-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/771-ath12k-add-ring-descriptor-and-srng-dump-prints.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/771-ath12k-pass-center-freq-and-center-freq2-to-FW-for-E.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/772-001-ath12k-remove-ieee80211-tx-info-reference-in-tx-data.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/772-002-ath12k-fix-skb_cb-corruption-in-tx-data.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-000-01-ath12k-use-max-sta-bandwidth-during-peer-assoc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-000-02-ath12k-Revert-fix-target-assert-during-channel-switch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-001-ath12k-add-num_stations-counter-for-each-interface.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-002-ath12k-add-peer-channel-width-switch-command-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-ath12k-handle-the-vdev-id-mismatch-HTT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/773-ath12k-perform-address-validation-during-ML-peer-cre.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/774-ath12k-Change-DMA_FROM_DEVICE-to-DMA_TO_DEVICE-when-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/774-ath12k-set-bw_40-flag-in-case-of-EHT40-in-6Ghz.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-ath12k-Add-locks-for-setting-and-testing-flush-flags.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-ath12k-Schedule-reset_work-queue-for-cold_boot-calib.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-ath12k-add-support-to-enqueue-mgmt-frame-at-MLD-leve.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-ath12k-fix-memory-leak-in-WMI-firmware-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-mac80211-Fix-client-connection-issue-on-repeater-AP.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/775-wifi-mac80211-Changes-for-WDS-MLD.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/776-ath12k-Enable-fwlog-support-for-IPQ5332.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/776-ath12k-add-support-for-Tx-Power-insertion.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/777-01-wifi-ath12k-Fix-tqm-release-reason-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/777-02-wifi-ath12k-fix-ath12k-link-stats-missed-for-complet.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/777-ath12k-Add-soc_dp_stats-for-incorrect-reo-desc-first-and-last-msdu.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/777-wifi-ath12k-Rx-data-path-optimizations.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/778-ath12k-Validate-tx-arvif-start-status-before-non-Tx-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/778-cfg80211-Increase-grace-period-for-PRE-CAC-timeout.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/778-wifi-ath12k-Add-Tx-limit-for-data-packets.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/779-01-wifi-ath12k-optimize-the-mgmt-and-data-tx-pending-wa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/779-02-wifi-ath12k-Wake-the-tx-pending-wait-only-its-in-wai.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/779-ath12k-sawf-add-telemetry-configurations.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/779-wifi-ath12k-Assign-pci-device-id-during-mhi-register.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/779-wifi-ath12k-netdev-perlink-debugfs.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/780-ath12k-Fix-WARN-ON-during-bit-rate-command.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/780-ath12k-Update-the-number-of-tx_desc-used-to-FW.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/780-mac80211-Advertise-HW-checksum-offload-only-for-ethm.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/781-01-wifi-ath12k-refactor-the-mac-tx-mgmt-pending-free.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/781-02-wifi-ath12k-fix-link-specific-tx-mgmt-pending-free.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/781-03-wifi-ath12k-remove-radio-structure-reference-from-th.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/781-04-wifi-ath12k-fix-the-skb-data-when-pkt-offset-present.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/781-cfg80211-mac80211-fix-scan-issue-due-to-single-wiphy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/782-ath12k-PPEDS-SSR-Recovery-Fixes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/782-ath12k-add-MLO-group-descriptor-limit-check-in-dp-tx.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/782-wifi-ath12k-Move-SAWF-and-Telemetry-under-conditiona.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/783-001-wifi-ath11k-Fix-BCCA-counter-for-EMA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/783-002-wifi-ath12k-Fix-BCCA-counter-for-EMA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/783-During-OBSS-collision-detection-firmware-sets-the-sc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/783-ath12k-Add-peer-rhash-table-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/783-ath12k-Add-support-to-bring-in-debug-levels.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-01-ath12k-Add-debugfs-support-to-enable-and-disable.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-01-wifi-ath12k-fix-array-out-of-bound-in-undecap-native.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-02-wifi-ath12k-Add-nwifi-header-length-check-in-tkip-pa.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-02-wifi-ath12k-Add-sawf-tx-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-03-wifi-ath12k-Add-support-to-handle-streaming-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-04-ath12k-Add-SAWF-tx-delay-stats-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-05-wifi-ath12k-Add-support-to-view-SAWF-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-06-ath12k-sawf-Add-telemetry-agent-interface-and-config.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-ath12k-restrict-user-country-setting-during-active-v.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/784-mac80211-fix-skb-and-sdata-mismatch.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/785-wifi-ath12k-Fix-deadlock-b-w-drain-tx-and-mgmt-tx-wo.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-01-ath12k_compilation_fixes.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-02-ath11-12k-Add-define-MAC80211_SFE_SUPPORT.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-03-mac80211-Copied-MAC-to-net_dev-structure-via-dev_add.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-ath12k-add-per-histogram-count-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-ath12k-fix-traffic-stall-with-MLO-AP-Mon-coexist.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/786-wifi-ath12k-Fix-buffer-overflow-when-scanning-with-e.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/787-wifi-ath12k-change-to-use-dynamic-memory-for-channel.patch delete mode 100755 feeds/ipq95xx/mac80211/patches/qca/788-mac80211-Add-default-wmm-values-to-individual-links.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/788-wifi-ath12k-move-peer-delete-after-vdev-stop-of-stat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/789-ath12k-Enable-panic-notifer-chain-for-driver-module.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/789-wifi-ath12k-add-handler-for-scan-event-WMI_SCAN_EVEN.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/790-wifi-ath12k-indicate-scan-complete-for-scan-canceled.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/791-wifi-ath12k-indicate-to-mac80211-scan-complete-with-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/800-wifi-ath12k-Add-UMAC-DP-reset-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/800-wifi-ath12k-skip-peer-delete-if-ieee80211_sta-exsits.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/801-01-wifi-ath12k-Add-support-to-parse-mlo-chip-crash-info.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/801-02-wifi-ath12k-Add-support-to-set-mode1-to-firmware.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/801-03-wifi-ath12k-Add-support-to-send-umac_reset-flag.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/801-04-wifi-ath12k-Add-support-for-Mode-1-recovery-cache.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/802-ath12k-validate-peer-id-for-search.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/802-wifi-ath12k-add-support-to-enqueue-radio-measurement.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/802-wifi-ath12k-enable-IEEE80211_VHT_EXT_NSS_BW_CAPABLE.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/803-ath12k-reap-CE-entries-if-ring-is-full-and-intrp-idl.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/803-wifi-ath12k-Tx-compl-drop-for-NULL-desc.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/804-ath12k-added-a-debugfs-to-dump-hal-srng-stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/805-wifi-ath12k-add-peer-flag-ext-WMI_PEER_EXT_320MHZ-wh.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/805-wifi-ath12k-handle-hw-link-id-in-Rx-err-process.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/806-ath12k-allocate-rx_stats-while-enabling-ext_rx_stats.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/807-a-ath12k-Enable-support-to-convert-multicast-to-unicas.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/807-ath12k-add-prefetch-msdu-in-dp_tx_completion_handler.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/807-b-ath12k-Enable-stats-support-for-Multicast-to-Unicast.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/807-wifi-Ath12k-Removing-mutex-unlock-after-free.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/807-wifi-mac80211-set-all-links-active-for-station-by-de.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/808-wifi-mac80211-change-to-use-MLD-address-as-primary-l.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/810-wifi-mac80211-update-all-links-rx-nss-by-ieee80211_s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/813-wifi-nl80211-indicate-MLO-connection-info-for-NL8021.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/814-wifi-mac80211-fix-recovery-fail-while-firmware-crash.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/815-wifi-mac80211-temp-remove-link_info_changed-callback.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/816-wifi-ath12k-send-vdev-down-before-vdev-stop.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/817-cfg80211-mac80211-Fixes-for-sta-mlo-support.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/818-wifi-ath12k-Changes-for-sta-mlo-support-in-single-wiphy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/819-wifi-ath12k-Fix-the-crash-during-associate-6G-slo.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-00-wifi-cfg80211-support-reporting-failed-links.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-01-wifi-ieee80211-Support-validating-ML-station-profile-length.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-02-wifi-cfg80211-mac80211-Fix-ML-element-common-size-calculation.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-03-wifi-cfg80211-mac80211-check-EHT-capability-size-cor.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-04-wifi-mac80211-Parse-station-profile-from-association.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-05-wifi-mac80211-Process-association-status-for-affilia.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-06-wifi-mac80211-wme-use-ap_addr-instead-of-deflink-BSS.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-07-wifi-mac80211-advertise-TWT-requester-only-with-HW-s.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-08-wifi-mac80211-transmit-AddBA-with-MLD-address.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-09-wifi-mac80211-set-internal-scan-request-BSSID.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-10-wifi-mac80211-fix-AddBA-response-addressing.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-11-wifi-mac80211-add-RCU-_check-link-access-variants.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-12-wifi-fix-multi-link-element-subelement-iteration.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-13-wifi-mac80211-mlme-fix-null-ptr-deref-on-failed-asso.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-14-wifi-mac80211-check-link-ID-in-auth-assoc-continuati.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-15-wifi-mac80211-mlme-mark-assoc-link-in-output.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-16-wifi-mac80211-change-AddBA-deny-error-message.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-17-wifi-mac80211-don-t-clear-DTIM-period-after-setting-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-18-wifi-mac80211-prohibit-IEEE80211_HT_CAP_DELAY_BA-wit.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-19-wifi-mac80211-relocate-the-function-s-definition.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-20-wifi-mac80211-correct-SMPS-mode-in-HE-6-GHz-capabili.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-21-wifi-mac80211-change-nl80211.h-to-match-nl80211_copy.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/821-22-wifi-mac80211-handle-csa-block-tx-per-link-basis-for-STA-di.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/822-wifi-mac80211-handling-msdu-buffer-type.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/825-ath12k-Vif-Delete-Timeout-Cleanup-Fix.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/825-ath12k-optimize-ppe-ds-rx-path.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/825-wifi-ath12k-Add-mhi_soc_reset-in-PCI-remove-flow.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/826-ath12k-fix-ath12k_mac_op_switch_vif_chanctx-mac-ops.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/828-wifi-ath12k-Debug-enhancements-for-mode1-recovery.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/829-ath12k-add-support-for-low-latency-rate-cnt.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/830-ath11k-Avoiding-memset-of-ppdu-info-for-next-skb.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/830-ath12k-fix-RU-puncturing-pattern-for-peers-after-CSA.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/831-ath12k-Add-API-to-print-q6-crash-dump.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/831-wifi-ath12k-Add-partner-rx-replinish-support-in-wbm-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/832-001-wifi-nl80211-reg-add-no-EHT-regulatory-flag.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/832-002-wifi-cfg80211-validate-AP-phy-operation-before-start.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/832-003-wifi-ath12k-add-parsing-of-phy-bitmap-for-reg-rules.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/832-ath12k-Wait-for-tx-activity-to-complete-before-delet.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/833-wifi-ath12k-fix-use-of-uninitialized-variable-valid_.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/834-0001-wifi-cfg80211-export-DFS-CAC-usable-state-helper-fun.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/834-0002-wifi-ath12k-fix-CAC-running-state-during-virtual-int.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/834-wifi-mac80211-change-BUG_ON-to-conditional-BUG_ON-in.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/835-wifi-ath12k-add-module-param-to-limit-tx-data-frames.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/835-wifi-cfg80211-fix-non-transmitting-BSS-profile-updat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/836-wifi-ath12k-fix-WMI-peer-kickout-sta-event-for-link-.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/837-mac80211-feed-the-link_id-to-cfg80211_ch_switch_notify.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/837-wifi-ath12k-Drop-dynamic-fragmentation-msdu-in-Multi.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/837-wifi-ath12k-Fix-beacon-rx-for-sta-associated-to-non-Tx-va.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/837-wifi-ath12k-Send-disassoc-to-MLD-sta-during-reco.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/837-wifi-ath12k-allow-primary-link-selection.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/838-01-UPSTREAM-wifi-mac80211-call-drv_sta_state-under-sdat.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/838-02-UPSTREAM-wifi-mac80211-HW-restart-for-MLO.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/838-03-UPSTREAM-wifi-mac80211-implement-proper-AP-MLD-HW-re.patch delete mode 100644 feeds/ipq95xx/mac80211/patches/qca/838-mac80211-Make-link-addresses-deterministic.patch delete mode 100644 feeds/ipq95xx/nat46/Makefile delete mode 100644 feeds/ipq95xx/nat46/patches/100-kernel-5.4-compat.patch delete mode 100644 feeds/ipq95xx/nat46/patches/101-skb-reset.patch delete mode 100644 feeds/ipq95xx/nat46/patches/102-mapt.patch delete mode 100644 feeds/ipq95xx/nat46/patches/103-tos.patch delete mode 100644 feeds/ipq95xx/nat46/patches/104-icmp.patch delete mode 100644 feeds/ipq95xx/nat46/patches/105-longest-prefix-match.patch delete mode 100644 feeds/ipq95xx/nat46/patches/106-dummy_header.patch delete mode 100644 feeds/ipq95xx/nat46/patches/107-stats.patch delete mode 100644 feeds/ipq95xx/nat46/patches/108-ce_port.patch delete mode 100644 feeds/ipq95xx/nat46/patches/109-fragment_if_not_df_and_larger_than_mtu.patch delete mode 100644 feeds/ipq95xx/nat46/patches/110-icmp_error_not_handled.patch delete mode 100644 feeds/ipq95xx/nat46/patches/111-fix_null_point_reference.patch delete mode 100644 feeds/ipq95xx/nat46/patches/112-fix_icmp_crash.patch delete mode 100644 feeds/ipq95xx/nat46/patches/113-fix_delete_race_condition.patch delete mode 100644 feeds/ipq95xx/nat46/patches/114-fix-get-release-instance-protect.patch delete mode 100644 feeds/ipq95xx/nat46/patches/115-export-ip6_update_csm-api.patch delete mode 100644 feeds/ipq95xx/nat46/patches/116-rate-limit-the-print.patch delete mode 100644 feeds/ipq95xx/nat46/patches/117-fix-icmp-no-payload-bug.patch delete mode 100644 feeds/ipq95xx/nat46/patches/16-fix-l3_payload-length-wrong-in-fragment-case.patch delete mode 100644 feeds/ipq95xx/nat46/patches/17-add-support-ipv6-udp-checksum-0.patch delete mode 100644 feeds/ipq95xx/nat46/patches/18-performance_fix.patch delete mode 100644 feeds/ipq95xx/nat46/patches/19-mapt-offloading-support delete mode 100644 feeds/ipq95xx/nat46/patches/20-sleeping_backtrace.patch delete mode 100755 feeds/ipq95xx/qca-diag/Makefile delete mode 100755 feeds/ipq95xx/qca-diag/src/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/Makefile delete mode 100755 feeds/ipq95xx/qca-diag/src/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/PktRspTest/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/PktRspTest/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/PktRspTest/PktRspTest.c delete mode 100755 feeds/ipq95xx/qca-diag/src/autogen.sh delete mode 100755 feeds/ipq95xx/qca-diag/src/callback_sample/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/callback_sample/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/callback_sample/diag_callback_sample.c delete mode 100755 feeds/ipq95xx/qca-diag/src/configure.ac delete mode 100755 feeds/ipq95xx/qca-diag/src/dci_sample/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/dci_sample/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/dci_sample/diag_dci_sample.c delete mode 100755 feeds/ipq95xx/qca-diag/src/diag.pc.in delete mode 100755 feeds/ipq95xx/qca-diag/src/include/comdef.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diag.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diag_lsm.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diag_lsm_dci.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diagcmd.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diagi.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diaglogi.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/diagpkt.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/event.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/event_defs.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/log.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/log_codes.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msg.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msg_arrays_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msg_pkt_defs.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msg_qsr.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msgcfg.h delete mode 100755 feeds/ipq95xx/qca-diag/src/include/msgtgt.h delete mode 100755 feeds/ipq95xx/qca-diag/src/klog/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/klog/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/klog/diag_klog.c delete mode 100755 feeds/ipq95xx/qca-diag/src/mdlog/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/mdlog/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/mdlog/diag_mdlog.c delete mode 100755 feeds/ipq95xx/qca-diag/src/qdss_setup.sh delete mode 100755 feeds/ipq95xx/qca-diag/src/qld_server.c delete mode 100755 feeds/ipq95xx/qca-diag/src/registerReboot.c delete mode 100755 feeds/ipq95xx/qca-diag/src/socket_log/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/socket_log/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/socket_log/diag_socket_log.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_logger.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_logger.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_dci.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_dci_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_event.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_event_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_log.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_log_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_msg.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_msg_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_pkt.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsm_pkt_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_lsmi.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_qshrink4_db_parser.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diag_shared_i.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diagdiag.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diaglib.mak delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diagsvc_malloc.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/diagsvc_malloc.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/eventi.h delete mode 100755 feeds/ipq95xx/qca-diag/src/src/msg_arrays_i.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/ts_linux.c delete mode 100755 feeds/ipq95xx/qca-diag/src/src/ts_linux.h delete mode 100755 feeds/ipq95xx/qca-diag/src/test/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/test/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/test/test_diag.c delete mode 100755 feeds/ipq95xx/qca-diag/src/uart_log/Android.mk delete mode 100755 feeds/ipq95xx/qca-diag/src/uart_log/Makefile.am delete mode 100755 feeds/ipq95xx/qca-diag/src/uart_log/diag_uart_log.c delete mode 100644 feeds/ipq95xx/qca-nss-dp/Makefile delete mode 100644 feeds/ipq95xx/qca-nss-dp/files/qca-nss-dp.conf delete mode 100644 feeds/ipq95xx/qca-nss-dp/files/qca-nss-dp.init delete mode 100644 feeds/ipq95xx/qca-nss-ppe/Makefile delete mode 100644 feeds/ipq95xx/qca-nss-ppe/patches/100-compile.patch delete mode 100755 feeds/ipq95xx/qca-psdk/Makefile delete mode 100644 feeds/ipq95xx/qca-ssdk-shell/Makefile delete mode 100644 feeds/ipq95xx/qca-ssdk/Makefile delete mode 100755 feeds/ipq95xx/qca-ssdk/files/qca-ssdk delete mode 100644 feeds/ipq95xx/qca-ssdk/patches/0001-add-RTL8261N-support.patch delete mode 100644 feeds/ipq95xx/qca-ssdk/patches/100-compile.patch delete mode 100644 feeds/ipq95xx/qca-ssdk/patches/101-aq_phy.patch delete mode 100644 feeds/ipq95xx/wireguard/Makefile delete mode 100644 feeds/ipq95xx/wireguard/patches/100-compat.patch diff --git a/feeds/ipq95xx/ath11k-firmware/Makefile b/feeds/ipq95xx/ath11k-firmware/Makefile deleted file mode 100644 index 55a13c0d8..000000000 --- a/feeds/ipq95xx/ath11k-firmware/Makefile +++ /dev/null @@ -1,37 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG_NAME:=ath11k-firmware -PKG_SOURCE_PROTO:=git -PKG_BRANCH:=main -PKG_SOURCE_URL:=https://github.com/quic/upstream-wifi-fw.git -PKG_MIRROR_HASH:=557505744764b0442c887be3f5bb0ce924323d785b6d207899f19fad992a6020 -PKG_SOURCE_VERSION:=3417bb86645c5ff4c58258db7cc33e43260b4222 - -PKG_MAINTAINER:=John Crispin - -include $(INCLUDE_DIR)/package.mk - -define Package/ath11k-firmware-default - SECTION:=firmware - CATEGORY:=Firmware - URL:=$(PKG_SOURCE_URL) - DEPENDS:= -endef - -define Package/ath11k-firmware-ipq95xx - $(Package/ath11k-firmware-default) - TITLE:=ath11k firmware for IPQ95xx devices - DEPENDS:=@TARGET_ipq95xx -endef - -define Build/Compile - -endef - -define Package/ath11k-firmware-ipq95xx/install - $(INSTALL_DIR) $(1)/lib/firmware/IPQ9574/ - $(INSTALL_DATA) $(PKG_BUILD_DIR)/ath11k-firmware/IPQ9574/hw1.0/2.9.0.1/WLAN.HK.2.9.0.1-01890-QCAHKSWPL_SILICONZ-1/* \ - $(1)/lib/firmware/IPQ9574/ -endef - -$(eval $(call BuildPackage,ath11k-firmware-ipq95xx)) diff --git a/feeds/ipq95xx/ath11k-wifi/Makefile b/feeds/ipq95xx/ath11k-wifi/Makefile deleted file mode 100644 index 300c3029c..000000000 --- a/feeds/ipq95xx/ath11k-wifi/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/version.mk - -PKG_NAME:=ath11k-wifi -PKG_RELEASE:=1 -PKG_FLAGS:=nonshared - -include $(INCLUDE_DIR)/package.mk - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Compile - -endef - -define Package/ath11k-wifi-default - SUBMENU:=ath11k Board-Specific Overrides - SECTION:=firmware - CATEGORY:=Firmware - DEPENDS:=@TARGET_ipq95xx - TITLE:=Custom Board -endef - -define Package/ath11k-wifi-qcom-ipq95xx -$(call Package/ath11k-wifi-default) - TITLE:=board-2.bin for QCOM IPQ9574 eval kits -endef - -define Package/ath11k-wifi-qcom-ipq95xx/install - $(INSTALL_DIR) $(1)/lib/firmware/ath11k/IPQ9574/hw1.0/ - $(INSTALL_DATA) ./board-2.bin.IPQ9574 $(1)/lib/firmware/ath11k/IPQ9574/hw1.0/board-2.bin -endef - -$(eval $(call BuildPackage,ath11k-wifi-qcom-ipq95xx)) diff --git a/feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 b/feeds/ipq95xx/ath11k-wifi/board-2.bin.IPQ9574 deleted file mode 100644 index bf1d9c8e9a1351b622e43de964ce3b048a3bc5b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286636 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 - -include $(INCLUDE_DIR)/package.mk - -define Package/ath12k-firmware-default - SECTION:=firmware - CATEGORY:=Firmware - URL:=$(PKG_SOURCE_URL) - DEPENDS:= -endef - -define Package/ath12k-firmware-qcn92xx-split-phy - $(Package/ath12k-firmware-default) - TITLE:=ath12k firmware for qcn92xx split phy devices - DEPENDS:=@(TARGET_ipq95xx||TARGET_ipq53xx) -endef - -define Package/ath12k-firmware-qcn92xx - $(Package/ath12k-firmware-default) - TITLE:=ath12k firmware for qcn92xx devices - DEPENDS:=@(TARGET_ipq95xx||TARGET_ipq53xx) -endef - -define Package/ath12k-firmware-ipq53xx - $(Package/ath12k-firmware-default) - TITLE:=ath12k firmware for ipq53xx devices - DEPENDS:=@TARGET_ipq53xx -endef - -define Package/ath12k-firmware-ipq53xx-wk-wk - $(Package/ath12k-firmware-default) - TITLE:=ath12k firmware for ipq53xx + wk + wk devices - DEPENDS:=@TARGET_ipq53xx -endef - -define Build/Compile - -endef - -define Package/ath12k-firmware-qcn92xx-split-phy/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 - $(CP) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0_split_phy/1.2.1/WLAN.WBE.1.2.1-00148-QCAHKSWPL_SILICONZ-1/* \ - $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 -endef - -define Package/ath12k-firmware-qcn92xx/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 - $(CP) $(PKG_BUILD_DIR)/ath12k-firmware/QCN9274/hw2.0/1.2.1/WLAN.WBE.1.2.1-00201-QCAHKSWPL_SILICONZ-1/* \ - $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 -endef - -define Package/ath12k-firmware-ipq53xx/install - $(INSTALL_DIR) $(1)/lib/firmware/IPQ5332/ - $(CP) $(PKG_BUILD_DIR)/ath12k-firmware//IPQ5322/hw1.0/1.2.1/WLAN.WBE.1.2.1-00201-QCAHKSWPL_SILICONZ-1/* \ - $(1)/lib/firmware/IPQ5332/ -endef - -define Package/ath12k-firmware-ipq53xx-wk-wk/install - $(INSTALL_DIR) $(1)/lib/firmware/IPQ5332/ - $(CP) $(PKG_BUILD_DIR)/ath12k-firmware/IPQ5322_QCN6432_QCN6432/hw1.0/testing/1.3/WLAN.WBE.1.3-02907-QCAHKSWPL_SILICONZ-1/* \ - $(1)/lib/firmware/IPQ5332/ -endef - -$(eval $(call BuildPackage,ath12k-firmware-qcn92xx)) -$(eval $(call BuildPackage,ath12k-firmware-qcn92xx-split-phy)) -$(eval $(call BuildPackage,ath12k-firmware-ipq53xx)) -$(eval $(call BuildPackage,ath12k-firmware-ipq53xx-wk-wk)) diff --git a/feeds/ipq95xx/ath12k-wifi/Makefile b/feeds/ipq95xx/ath12k-wifi/Makefile deleted file mode 100644 index 9fa25a674..000000000 --- a/feeds/ipq95xx/ath12k-wifi/Makefile +++ /dev/null @@ -1,78 +0,0 @@ -include $(TOPDIR)/rules.mk -include $(INCLUDE_DIR)/version.mk - -PKG_NAME:=ath12k-wifi -PKG_RELEASE:=1 -PKG_FLAGS:=nonshared - -include $(INCLUDE_DIR)/package.mk - -define Build/Prepare - mkdir -p $(PKG_BUILD_DIR) -endef - -define Build/Compile - -endef - -define Package/ath12k-wifi-default - SUBMENU:=ath12k Board-Specific Overrides - SECTION:=firmware - CATEGORY:=Firmware - DEPENDS:=@(TARGET_qcn9274||TARGET_ipq53xx) - TITLE:=Custom Board -endef - -define Package/ath12k-wifi-qcom-qcn9274 -$(call Package/ath12k-wifi-default) - TITLE:=board-2.bin for QCOM QCN9274 eval kits -endef - -define Package/ath12k-wifi-qcom-qcn9274/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN9274/hw1.0/ - $(INSTALL_DATA) ./board-2.bin.QCN9274 $(1)/lib/firmware/ath12k/QCN9274/hw1.0/board-2.bin -endef - -define Package/ath12k-wifi-cig-wf189 -$(call Package/ath12k-wifi-default) - TITLE:=board.bin for CIG WF189 -endef - -define Package/ath12k-wifi-edgecore-eap105 -$(call Package/ath12k-wifi-default) - TITLE:=board.bin for Edgecore EAP105 -endef - -define Package/ath12k-wifi-sercomm-ap72tip -$(call Package/ath12k-wifi-default) - TITLE:=board.bin for Sercomm WIFI-7 -endef - -define Package/ath12k-wifi-cig-wf189/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0 - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ - $(INSTALL_DATA) ./board-cig-wf189.bin.qcn9224 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board.bin - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ - $(INSTALL_DATA) ./board-cig-wf189.bin.ipq53xx $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board.bin -endef - -define Package/ath12k-wifi-edgecore-eap105/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0 - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ - $(INSTALL_DATA) ./board-edgecore-eap105.bin.qcn9224 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board.bin - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ - $(INSTALL_DATA) ./board-edgecore-eap105.bin.ipq53xx $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board.bin -endef - -define Package/ath12k-wifi-sercomm-ap72tip/install - $(INSTALL_DIR) $(1)/lib/firmware/ath12k/QCN92XX/hw1.0 $(1)/lib/firmware/ath12k/IPQ5332/hw1.0 - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/ - $(INSTALL_DATA) ./board-sercomm-ap72tip.bin.qcn9224 $(1)/lib/firmware/ath12k/QCN92XX/hw1.0/board.bin - $(INSTALL_DATA) ./regdb.bin $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/ - $(INSTALL_DATA) ./board-sercomm-ap72tip.bin.ipq53xx $(1)/lib/firmware/ath12k/IPQ5332/hw1.0/board.bin -endef - -$(eval $(call BuildPackage,ath12k-wifi-qcom-qcn9274)) -$(eval $(call BuildPackage,ath12k-wifi-cig-wf189)) -$(eval $(call BuildPackage,ath12k-wifi-edgecore-eap105)) -$(eval $(call BuildPackage,ath12k-wifi-sercomm-ap72tip)) diff --git a/feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 b/feeds/ipq95xx/ath12k-wifi/board-2.bin.IPQ9574 deleted file mode 100644 index bf1d9c8e9a1351b622e43de964ce3b048a3bc5b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286636 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 RfB*=900@8p2#h8I{|{XLi#-4U diff --git a/feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.ipq53xx b/feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.ipq53xx deleted file mode 100755 index 3cec1c58d9398f868a60bdaa83da45028e985374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63488 zcmeI*Uu;{|9S895IoC;i9VfA4H)-19I!@{~Nrk4iRMiBX7VS@|$`(N}=^v&tI*GEV zFCfa+ht_O)nKq$8=op}?ED|bgJn%3v!PulB@dUiU!yblIAyhgIi6Tu}2W5A^bMC#) zP2!|>{&*-q}Y!lMpMxdOcTx>l;o)|^wFJ4!Iyd+c`9ZV%Y) zLAyO<+rcz{-w*BfNF;9PP(i600Gdsk$MW&hT5h&|Exl|*ZdSQ~#xLy(UeYULAr7|Q zXJ)cdZsu92TA-4h$y9PfDwXwS71Puft^EaP9j_D}izlNulTS-lM``6~`RBxx6Vo~) z`!cdGBl|M4FC+Was4@3usBu@Kv$ByN#9N`q++EP)u0&^L6NkLCj6dS; zM*O7vb;QS|M|?t>uuy;k6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP+(aEG#oU`Sqq7(*<0lt1r`cWfC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1(shRCYPx@k1tAPBk1DbK5YSl$7R`mdPQh)*tBapzq8)mK1g|=eUjn<>_FU*mrAwOXs z526Gng6QwwZ-eLs@3cfp+MSbc$MB=$Fn!HFzpsh>z9#bfn&<`ZY|!puFFG<~3ak!+ zUzt}Aa(n0Pq@D0YP%jkxujYCpsGm6TAA9^*rTr(iepjV^!PZAB?YnLLK&8E(KdguO z!+MxM?ElW&pWuRX7Y;gzU2tChMxpSb&BqM|C_n)UEWbb!N6k-fs576|KUhbH{erP3Q&LoOCZpWT?@|A5u86b@}{4n-oJ26;qZdTuBBrdS=&sNzvxiPO*CEd z&u#3)w`%Er%{Cc~)Vt(s=4|u^S&XHP!I=AqJMK=nXWjFzhw1-b#}>SZO?U=U?bAFHmA_KY;=s3;N$C&y}3?zgRs)#~%V7cmVj$L16Q@ zfu38cn@l_m{8-w3SK1ZjrBct1>g|3l`Hltc=F4|n+8p{JaJw1TqH(cKJ{8!3+vIb$?_m`8;Xxe7Pvrgm1fIjBe0K8+{)9L1 zH@sE(Wal-Um!l_fKt9Ro#D!T`v^jJ9?rlAmD&ND+W#ep+&i%*DM1TuYt7BgvwEzW9c$rV7s`7#nRWD0`5nTz z{Qf|$AtG->o;vfp=TDvl{`e{+K4;@sXT+;!p}|CZaK7^XYPHRs^KC4Fbr`#@3to>s zc0B(#hl?9}LvVe|R9Z>{{U4VL);;VEdmmpk<;yRXyfQa8^RqSbNzdYdS6J_yymwhh z*@%C%EurP f3Q&Lo6rcbFC_n)UP=Epypa2CZKmiJ@aDo2=xp^CL diff --git a/feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.qcn9224 b/feeds/ipq95xx/ath12k-wifi/board-cig-wf189.bin.qcn9224 deleted file mode 100755 index cb2b068b4e496bfc2d2395fbb63a04449e0b062c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161792 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 EAKAtbkN^Mx diff --git a/feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.ipq53xx b/feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.ipq53xx deleted file mode 100644 index 2b5d7ddb615fe30cb1088490b8cd0456f3782d78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63488 zcmeI*TWl2983*wHnOWPr>$TT=!50k6dhJpYcxVkxXoF&vq{JlzA>tZyc}QEwi7G3- zr5F{duq5;$?OWW2HUwN*icpnERjVdYRf37b~ zUhK8acpu&pz(7 zkGt&SZX1WVJiV2x+Q)}V>WjLnpp*}QY7=uP9Xwcw^)spv%*p~5aPWPb{ZF0wu@NrT ze9>gGLjIZ;1yutTiANeD%NiPzx~!N`TO2310ge+a6ekdjl>RkGwF3oLIm&h9j~h^K zz;P1Nmyo`M^d+P(A${%A*QTmeM*7>GYNuWL*P;fWMGzYi!dlY~gq^jrd=#}9RS`An z)H$PWy&4TfoF5~KXVHLX5W^8vVUNW1s<=ApCRDE*S9_eK)9WmmC+Z#|pBA-1r%uIG z)|O7)Tk8FW(Dh=IWowfKpUAH*o0YXydBdD$t@G6m-ITA^Yn88R?RZtCoARmKs#5>Gb~U@G zclRx~@ojA}dB-!wW;uhQMmWbpNqO-`1i`(bID&^mQX7^U3k4`Z0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1?HK+RKFB!u7#+Y zXL&Lm3Q&Lo6rcbFDiz3GC0Xfcj-vntC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP~f8$2w=^uR#Am5xr+g&xFkSsjx84jDDOK7!r@s> zyhwwq@s8c{TIYMWv_K7d?Do0xtsLe6`N>V%+8{RE&`co&0yi`P2UCCo3tk|Me=PWI zsAL0b(HEL-+*4-B5h(8!R%&4kdwp-~A9=OswHdFD03)ViYmXIbxv^$x?(Kl7y3H2wc&Z&UgHi7R7?9cykgsTbv-ihS83mm z7i{~N(*7+jx+lAKNc*DOjZ7vZ?cuK7wmpcUp(bhH(Y4dIU&r`(MA~=Xb)RjY4rDTp zv_Gl7VB2T!-Z%7tv=3vKZSU`TWBh$-Kj^hz?8;>RvLH;EBn2oyfm=Z!f`0qiQvLAC z>^CPGwP#qa;DB6?dEmAbH#zV>obDUK@EWbUeze37N}M5AuZja~MZ z<)4e8r8S#UX$R{Rpuijp)ZsrJbDRQKPXP*0fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+pdx{KtgmRC85H%dAKdn8Zi?CdhGPTvRJ?9K17k?q zFqOR)RVoy&y5!n+9QXPee%+V^w#{~vuRG^r4@hD#W()>Hdqamq!=YoL6CsU>f6ky4 zC($g|Of}*V68JjeaunC%-?|#-bZ#Hdtm<8aOA@sK|zO%A2Uq}dm*`E;1+ znCCJIP+)NjjC>2|e;C-*2dw%W(DJFNJx0DMabK3WUWvO$;yR~^8DKROXYnnX5i8anroj9r3#zX1>zxooT)S zS??}yd+(UW#qa)jT-Mt!^X-uN$V zX9`e&0u-2AfhE{rPnfuYs_L3xC|nz8(E?b^jk#1Xgo36P|8Pn(V zAM|_rL;1X2E$0;4@Nsm?`N4be03O1_7{XI{2BUaE&b<5zzri@p;{yJOi+CSbea2XU*x7I6I-{ZWe%4&4)h^;6GIwtaKbs@H!i$4VfOPE{yd@0#?2RK zLcrV>5q;&Q$9DDhZQD$1lYBOvyxeQsi0GGRgSsa zMKNM>ySQXw)SBi0C8p@p$z;Ikm!BczeuALnu9?F>ICgCR{$%pxDd1_Z{<5tfKW_S8 zItht+&c>XQ{)JFlaKaw<3n5qLxVQzDV(|Y8&rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O T0SZun0u-PC1t>s)`77{0cAQ54 diff --git a/feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.qcn9224 b/feeds/ipq95xx/ath12k-wifi/board-edgecore-eap105.bin.qcn9224 deleted file mode 100644 index 04f618070a2455fb778d8092b7431b8b5cb0e4bb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161792 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 a5+DH*AOR8}0TLhq5+DH*Ac3=o!2bjH`^4D* diff --git a/feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.ipq53xx b/feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.ipq53xx deleted file mode 100644 index d1e74c2d8e758ceef04e4eb16ddaf2534833e3fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161792 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 Z6rcbFC_n)UP=Epypa2CZK!GbR@c&tQ;1U1; diff --git a/feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.qcn9224 b/feeds/ipq95xx/ath12k-wifi/board-sercomm-ap72tip.bin.qcn9224 deleted file mode 100644 index ec516440020f5448f3a579871f98566cf24bfa00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161792 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 diff --git a/feeds/ipq95xx/ath12k-wifi/regdb.bin b/feeds/ipq95xx/ath12k-wifi/regdb.bin deleted file mode 100755 index 2f1afba52ccf086e0f27c833875e1498afa965b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25656 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 -PKG_LICENSE:=GPL-2.0-only MIT -PKG_LICENSE_FILES:=LICENSES/preferred/GPL-2.0 LICENSES/preferred/MIT - -PKG_BUILD_PARALLEL:=1 - -STAMP_CONFIGURED_DEPENDS := $(STAGING_DIR)/usr/include/mac80211-backport/backport/autoconf.h - -PKG_CONFIG_DEPENDS += \ - CONFIG_BATMAN_ADV_BATMAN_V \ - CONFIG_BATMAN_ADV_BLA \ - CONFIG_BATMAN_ADV_DAT \ - CONFIG_BATMAN_ADV_NC \ - CONFIG_BATMAN_ADV_MCAST \ - CONFIG_BATMAN_ADV_DEBUG \ - CONFIG_BATMAN_ADV_TRACING - -include $(INCLUDE_DIR)/kernel.mk -include $(INCLUDE_DIR)/package.mk - -define KernelPackage/batman-adv - SUBMENU:=Network Support - TITLE:=B.A.T.M.A.N. Adv - URL:=https://www.open-mesh.org/ - DEPENDS:=+BATMAN_ADV_BLA:kmod-lib-crc16 +kmod-lib-crc32c +kmod-cfg80211 +batctl - FILES:=$(PKG_BUILD_DIR)/net/batman-adv/batman-adv.$(LINUX_KMOD_SUFFIX) - AUTOLOAD:=$(call AutoProbe,batman-adv) -endef - -define KernelPackage/batman-adv/description - B.A.T.M.A.N. (better approach to mobile ad-hoc networking) is - a routing protocol for multi-hop ad-hoc mesh networks. The - networks may be wired or wireless. See - https://www.open-mesh.org/ for more information and user space - tools. This package builds version $(PKG_VERSION) of the kernel - module. -endef - -define KernelPackage/batman-adv/config - source "$(SOURCE)/Config.in" -endef - -define Package/kmod-batman-adv/conffiles -/etc/config/batman-adv -endef - -PKG_EXTRA_KCONFIG:= \ - CONFIG_BATMAN_ADV=m \ - CONFIG_BATMAN_ADV_DEBUG=$(if $(CONFIG_BATMAN_ADV_DEBUG),y,n) \ - CONFIG_BATMAN_ADV_BLA=$(if $(CONFIG_BATMAN_ADV_BLA),y,n) \ - CONFIG_BATMAN_ADV_DAT=$(if $(CONFIG_BATMAN_ADV_DAT),y,n) \ - CONFIG_BATMAN_ADV_MCAST=$(if $(CONFIG_BATMAN_ADV_MCAST),y,n) \ - CONFIG_BATMAN_ADV_NC=$(if $(CONFIG_BATMAN_ADV_NC),y,n) \ - CONFIG_BATMAN_ADV_BATMAN_V=$(if $(CONFIG_BATMAN_ADV_BATMAN_V),y,n) \ - CONFIG_BATMAN_ADV_TRACING=$(if $(CONFIG_BATMAN_ADV_TRACING),y,n) \ - -PKG_EXTRA_CFLAGS:= \ - $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=m,%,$(filter %=m,$(PKG_EXTRA_KCONFIG)))) \ - $(patsubst CONFIG_%, -DCONFIG_%=1, $(patsubst %=y,%,$(filter %=y,$(PKG_EXTRA_KCONFIG)))) \ - -NOSTDINC_FLAGS = \ - $(KERNEL_NOSTDINC_FLAGS) \ - -I$(PKG_BUILD_DIR)/net/batman-adv \ - -I$(STAGING_DIR)/usr/include/mac80211-backport \ - -I$(STAGING_DIR)/usr/include/mac80211-backport/uapi \ - -I$(STAGING_DIR)/usr/include/mac80211 \ - -I$(STAGING_DIR)/usr/include/mac80211/uapi \ - -I$(PKG_BUILD_DIR)/include/ \ - -include backport/autoconf.h \ - -include backport/backport.h \ - -include $(PKG_BUILD_DIR)/compat-hacks.h \ - -DBATADV_SOURCE_VERSION=\\\"$(PKG_VERSION)-openwrt-$(PKG_RELEASE)\\\" - -define Build/Compile - $(MAKE) $(PKG_JOBS) -C "$(LINUX_DIR)" \ - $(KERNEL_MAKE_FLAGS) \ - M="$(PKG_BUILD_DIR)/net/batman-adv" \ - $(PKG_EXTRA_KCONFIG) \ - EXTRA_CFLAGS="$(PKG_EXTRA_CFLAGS)" \ - NOSTDINC_FLAGS="$(NOSTDINC_FLAGS)" \ - modules -endef - -define KernelPackage/batman-adv/install - $(CP) ./files/. $(1)/ -endef - -$(eval $(call KernelPackage,batman-adv)) diff --git a/feeds/ipq95xx/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif b/feeds/ipq95xx/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif deleted file mode 100755 index 258b7bd6a..000000000 --- a/feeds/ipq95xx/batman-adv/files/etc/uci-defaults/99-migrate-batadv_hardif +++ /dev/null @@ -1,97 +0,0 @@ -#!/bin/sh - -# This UCI-Defaults script will split the batadv proto network interfaces -# in batadv_hardif and batadv proto. The configuration options from -# /etc/config/batman-adv will be moved to the latter. - -. /lib/functions.sh - -proto_batadv_to_batadv_hardif() { - local section="$1" - local proto - local mesh - local routing_algo - - config_get proto "${section}" proto - config_get mesh "${section}" mesh - config_get routing_algo "${section}" routing_algo - - if [ -z "$mesh" -o "${proto}" != "batadv" ]; then - continue - fi - - uci set network."${section}".proto="batadv_hardif" - uci rename network."${section}".mesh="master" - uci delete network."${section}".routing_algo - - # create new section or adjust existing one - uci set network."${mesh}"=interface - uci set network."${mesh}".proto=batadv - [ -n "${routing_algo}" ] && uci set network."${mesh}".routing_algo="${routing_algo}" -} - -mv_batadv_config_section() { - local section="$1" - local aggregated_ogms - local ap_isolation - local bonding - local bridge_loop_avoidance - local distributed_arp_table - local fragmentation - local gw_bandwidth - local gw_mode - local gw_sel_class - local hop_penalty - local isolation_mark - local log_level - local multicast_mode - local network_coding - local orig_interval - - config_get aggregated_ogms "${section}" aggregated_ogms - config_get ap_isolation "${section}" ap_isolation - config_get bonding "${section}" bonding - config_get bridge_loop_avoidance "${section}" bridge_loop_avoidance - config_get distributed_arp_table "${section}" distributed_arp_table - config_get fragmentation "${section}" fragmentation - config_get gw_bandwidth "${section}" gw_bandwidth - config_get gw_mode "${section}" gw_mode - config_get gw_sel_class "${section}" gw_sel_class - config_get hop_penalty "${section}" hop_penalty - config_get isolation_mark "${section}" isolation_mark - config_get log_level "${section}" log_level - config_get multicast_mode "${section}" multicast_mode - config_get network_coding "${section}" network_coding - config_get orig_interval "${section}" orig_interval - - # update section in case it exists - [ -n "${aggregated_ogms}" ] && uci set network."${section}".aggregated_ogms="${aggregated_ogms}" - [ -n "${ap_isolation}" ] && uci set network."${section}".ap_isolation="${ap_isolation}" - [ -n "${bonding}" ] && uci set network."${section}".bonding="${bonding}" - [ -n "${bridge_loop_avoidance}" ] && uci set network."${section}".bridge_loop_avoidance="${bridge_loop_avoidance}" - [ -n "${distributed_arp_table}" ] && uci set network."${section}".distributed_arp_table="${distributed_arp_table}" - [ -n "${fragmentation}" ] && uci set network."${section}".fragmentation="${fragmentation}" - [ -n "${gw_bandwidth}" ] && uci set network."${section}".gw_bandwidth="${gw_bandwidth}" - [ -n "${gw_mode}" ] && uci set network."${section}".gw_mode="${gw_mode}" - [ -n "${gw_sel_class}" ] && uci set network."${section}".gw_sel_class="${gw_sel_class}" - [ -n "${hop_penalty}" ] && uci set network."${section}".hop_penalty="${hop_penalty}" - [ -n "${isolation_mark}" ] && uci set network."${section}".isolation_mark="${isolation_mark}" - [ -n "${log_level}" ] && uci set network."${section}".log_level="${log_level}" - [ -n "${multicast_mode}" ] && uci set network."${section}".multicast_mode="${multicast_mode}" - [ -n "${network_coding}" ] && uci set network."${section}".network_coding="${network_coding}" - [ -n "${orig_interval}" ] && uci set network."${section}".orig_interval="${orig_interval}" -} - -if [ -f /etc/config/batman-adv ]; then - config_load network - config_foreach proto_batadv_to_batadv_hardif 'interface' - uci commit network - - config_load batman-adv - config_foreach mv_batadv_config_section 'mesh' - uci commit network - - rm -f /etc/config/batman-adv -fi - -exit 0 diff --git a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv.sh b/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv.sh deleted file mode 100755 index edc14f4cb..000000000 --- a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv.sh +++ /dev/null @@ -1,123 +0,0 @@ -#!/bin/sh - -[ -n "$INCLUDE_ONLY" ] || { - . /lib/functions.sh - . ../netifd-proto.sh - init_proto "$@" -} - -proto_batadv_init_config() { - no_device=1 - available=1 - - proto_config_add_boolean 'aggregated_ogms:bool' - proto_config_add_boolean 'ap_isolation:bool' - proto_config_add_boolean 'bonding:bool' - proto_config_add_boolean 'bridge_loop_avoidance:bool' - proto_config_add_boolean 'distributed_arp_table:bool' - proto_config_add_boolean 'fragmentation:bool' - proto_config_add_string 'gw_bandwidth' - proto_config_add_string 'gw_mode' - proto_config_add_int 'gw_sel_class' - proto_config_add_int 'hop_penalty' - proto_config_add_string 'isolation_mark' - proto_config_add_string 'log_level' - proto_config_add_int 'multicast_fanout' - proto_config_add_boolean 'multicast_mode:bool' - proto_config_add_boolean 'network_coding:bool' - proto_config_add_int 'orig_interval' - proto_config_add_string 'routing_algo' -} - -proto_batadv_setup() { - local config="$1" - local iface="$config" - - local aggregated_ogms - local ap_isolation - local bonding - local bridge_loop_avoidance - local distributed_arp_table - local fragmentation - local gw_bandwidth - local gw_mode - local gw_sel_class - local hop_penalty - local isolation_mark - local log_level - local multicast_fanout - local multicast_mode - local network_coding - local orig_interval - local routing_algo - - json_get_vars aggregated_ogms - json_get_vars ap_isolation - json_get_vars bonding - json_get_vars bridge_loop_avoidance - json_get_vars distributed_arp_table - json_get_vars fragmentation - json_get_vars gw_bandwidth - json_get_vars gw_mode - json_get_vars gw_sel_class - json_get_vars hop_penalty - json_get_vars isolation_mark - json_get_vars log_level - json_get_vars multicast_fanout - json_get_vars multicast_mode - json_get_vars network_coding - json_get_vars orig_interval - json_get_vars routing_algo - - set_default routing_algo 'BATMAN_IV' - - batctl routing_algo "$routing_algo" - batctl meshif "$iface" interface create - - [ -n "$aggregated_ogms" ] && batctl meshif "$iface" aggregation "$aggregated_ogms" - [ -n "$ap_isolation" ] && batctl meshif "$iface" ap_isolation "$ap_isolation" - [ -n "$bonding" ] && batctl meshif "$iface" bonding "$bonding" - [ -n "$bridge_loop_avoidance" ] && batctl meshif "$iface" bridge_loop_avoidance "$bridge_loop_avoidance" 2>&- - [ -n "$distributed_arp_table" ] && batctl meshif "$iface" distributed_arp_table "$distributed_arp_table" 2>&- - [ -n "$fragmentation" ] && batctl meshif "$iface" fragmentation "$fragmentation" - - case "$gw_mode" in - server) - if [ -n "$gw_bandwidth" ]; then - batctl meshif "$iface" gw_mode "server" "$gw_bandwidth" - else - batctl meshif "$iface" gw_mode "server" - fi - ;; - client) - if [ -n "$gw_sel_class" ]; then - batctl meshif "$iface" gw_mode "client" "$gw_sel_class" - else - batctl meshif "$iface" gw_mode "client" - fi - ;; - *) - batctl meshif "$iface" gw_mode "off" - ;; - esac - - [ -n "$hop_penalty" ] && batctl meshif "$iface" hop_penalty "$hop_penalty" - [ -n "$isolation_mark" ] && batctl meshif "$iface" isolation_mark "$isolation_mark" - [ -n "$multicast_fanout" ] && batctl meshif "$iface" multicast_fanout "$multicast_fanout" - [ -n "$multicast_mode" ] && batctl meshif "$iface" multicast_mode "$multicast_mode" 2>&- - [ -n "$network_coding" ] && batctl meshif "$iface" network_coding "$network_coding" 2>&- - [ -n "$log_level" ] && batctl meshif "$iface" loglevel "$log_level" 2>&- - [ -n "$orig_interval" ] && batctl meshif "$iface" orig_interval "$orig_interval" - - proto_init_update "$iface" 1 - proto_send_update "$config" -} - -proto_batadv_teardown() { - local config="$1" - local iface="$config" - - batctl meshif "$iface" interface destroy -} - -add_protocol batadv diff --git a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_hardif.sh b/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_hardif.sh deleted file mode 100755 index b2f87dd6c..000000000 --- a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_hardif.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/sh - -[ -n "$INCLUDE_ONLY" ] || { - . /lib/functions.sh - . ../netifd-proto.sh - init_proto "$@" -} - -proto_batadv_hardif_init_config() { - proto_config_add_int 'elp_interval' - proto_config_add_int 'hop_penalty' - proto_config_add_string "master" - proto_config_add_string 'throughput_override' -} - -proto_batadv_hardif_setup() { - local config="$1" - local iface="$2" - - local elp_interval - local hop_penalty - local master - local throughput_override - - json_get_vars elp_interval - json_get_vars hop_penalty - json_get_vars master - json_get_vars throughput_override - - ( proto_add_host_dependency "$config" '' "$master" ) - - batctl meshif "$master" interface -M add "$iface" - - [ -n "$elp_interval" ] && batctl hardif "$iface" elp_interval "$elp_interval" - [ -n "$hop_penalty" ] && batctl hardif "$iface" hop_penalty "$hop_penalty" - [ -n "$throughput_override" ] && batctl hardif "$iface" throughput_override "$throughput_override" - - proto_init_update "$iface" 1 - proto_send_update "$config" -} - -proto_batadv_hardif_teardown() { - local config="$1" - local iface="$2" - - local master - - json_get_vars master - - batctl meshif "$master" interface -M del "$iface" || true -} - -add_protocol batadv_hardif diff --git a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_vlan.sh b/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_vlan.sh deleted file mode 100755 index 115e61cde..000000000 --- a/feeds/ipq95xx/batman-adv/files/lib/netifd/proto/batadv_vlan.sh +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/sh - -. /lib/functions.sh -. ../netifd-proto.sh -init_proto "$@" - -proto_batadv_vlan_init_config() { - proto_config_add_boolean 'ap_isolation:bool' -} - -proto_batadv_vlan_setup() { - local config="$1" - local iface="$2" - - # batadv_vlan options - local ap_isolation - - json_get_vars ap_isolation - - [ -n "$ap_isolation" ] && batctl vlan "$iface" ap_isolation "$ap_isolation" - proto_init_update "$iface" 1 - proto_send_update "$config" -} - -add_protocol batadv_vlan diff --git a/feeds/ipq95xx/batman-adv/patches/0001-Revert-batman-adv-genetlink-move-to-smaller-ops-wher.patch b/feeds/ipq95xx/batman-adv/patches/0001-Revert-batman-adv-genetlink-move-to-smaller-ops-wher.patch deleted file mode 100644 index 68187b0ac..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0001-Revert-batman-adv-genetlink-move-to-smaller-ops-wher.patch +++ /dev/null @@ -1,128 +0,0 @@ -From: Sven Eckelmann -Date: Sat, 24 Oct 2020 22:51:23 +0200 -Subject: Revert "batman-adv: genetlink: move to smaller ops wherever possible" - -The netlink genl_ops interface was splitted into two parts for Linux 5.10. -The batman-adv code changed to the new one because it doesn't use the more -complex policy handling of genl_ops. But the backports-5.8-1 version in -OpenWrt doesn't yet support the new genl_small_ops. - -This patch must be dropped directly when OpenWrt switches to backports-5.10 -or newer - otherwise it will not work as expected. - -This reverts commit 725b4ef5be840cfcd0ca33b9393c14dee40c10f7. - ---- a/compat-include/net/genetlink.h -+++ b/compat-include/net/genetlink.h -@@ -31,17 +31,15 @@ void batadv_genl_dump_check_consistent(s - #endif /* LINUX_VERSION_IS_LESS(4, 15, 0) */ - - --#if LINUX_VERSION_IS_LESS(5, 10, 0) -- - #if LINUX_VERSION_IS_LESS(5, 2, 0) -+ - enum genl_validate_flags { - GENL_DONT_VALIDATE_STRICT = BIT(0), - GENL_DONT_VALIDATE_DUMP = BIT(1), - GENL_DONT_VALIDATE_DUMP_STRICT = BIT(2), - }; --#endif /* LINUX_VERSION_IS_LESS(5, 2, 0) */ - --struct batadv_genl_small_ops { -+struct batadv_genl_ops { - int (*doit)(struct sk_buff *skb, - struct genl_info *info); - int (*dumpit)(struct sk_buff *skb, -@@ -70,9 +68,9 @@ struct batadv_genl_family { - struct genl_info *info); - void (*post_doit)(const struct genl_ops *ops, struct sk_buff *skb, - struct genl_info *info); -- const struct batadv_genl_small_ops *small_ops; -+ const struct batadv_genl_ops *ops; - const struct genl_multicast_group *mcgrps; -- unsigned int n_small_ops; -+ unsigned int n_ops; - unsigned int n_mcgrps; - struct module *module; - -@@ -96,32 +94,24 @@ static inline int batadv_genl_register_f - family->family.pre_doit = family->pre_doit; - family->family.post_doit = family->post_doit; - family->family.mcgrps = family->mcgrps; -- family->family.n_ops = family->n_small_ops; -+ family->family.n_ops = family->n_ops; - family->family.n_mcgrps = family->n_mcgrps; - family->family.module = family->module; - -- ops = kzalloc(sizeof(*ops) * family->n_small_ops, GFP_KERNEL); -+ ops = kzalloc(sizeof(*ops) * family->n_ops, GFP_KERNEL); - if (!ops) - return -ENOMEM; - - for (i = 0; i < family->family.n_ops; i++) { -- ops[i].doit = family->small_ops[i].doit; -- ops[i].dumpit = family->small_ops[i].dumpit; -- ops[i].done = family->small_ops[i].done; -- ops[i].cmd = family->small_ops[i].cmd; -- ops[i].internal_flags = family->small_ops[i].internal_flags; -- ops[i].flags = family->small_ops[i].flags; --#if LINUX_VERSION_IS_GEQ(5, 2, 0) -- ops[i].validate = family->small_ops[i].validate; --#else -+ ops[i].doit = family->ops[i].doit; -+ ops[i].dumpit = family->ops[i].dumpit; -+ ops[i].done = family->ops[i].done; -+ ops[i].cmd = family->ops[i].cmd; -+ ops[i].internal_flags = family->ops[i].internal_flags; -+ ops[i].flags = family->ops[i].flags; - ops[i].policy = family->policy; --#endif - } - --#if LINUX_VERSION_IS_GEQ(5, 2, 0) -- family->family.policy = family->policy; --#endif -- - family->family.ops = ops; - family->copy_ops = ops; - -@@ -136,7 +126,7 @@ typedef struct genl_ops batadv_genl_ops_ - #define batadv_post_doit(__x, __y, __z) \ - batadv_post_doit(const batadv_genl_ops_old *ops, __y, __z) - --#define genl_small_ops batadv_genl_small_ops -+#define genl_ops batadv_genl_ops - #define genl_family batadv_genl_family - - #define genl_register_family(family) \ -@@ -160,6 +150,6 @@ batadv_genl_unregister_family(struct bat - genlmsg_multicast_netns(&(_family)->family, _net, _skb, _portid, \ - _group, _flags) - --#endif /* LINUX_VERSION_IS_LESS(5, 10, 0) */ -+#endif /* LINUX_VERSION_IS_LESS(5, 2, 0) */ - - #endif /* _NET_BATMAN_ADV_COMPAT_NET_GENETLINK_H_ */ ---- a/net/batman-adv/netlink.c -+++ b/net/batman-adv/netlink.c -@@ -1357,7 +1357,7 @@ static void batadv_post_doit(const struc - } - } - --static const struct genl_small_ops batadv_netlink_ops[] = { -+static const struct genl_ops batadv_netlink_ops[] = { - { - .cmd = BATADV_CMD_GET_MESH, - .validate = GENL_DONT_VALIDATE_STRICT | GENL_DONT_VALIDATE_DUMP, -@@ -1491,8 +1491,8 @@ struct genl_family batadv_netlink_family - .pre_doit = batadv_pre_doit, - .post_doit = batadv_post_doit, - .module = THIS_MODULE, -- .small_ops = batadv_netlink_ops, -- .n_small_ops = ARRAY_SIZE(batadv_netlink_ops), -+ .ops = batadv_netlink_ops, -+ .n_ops = ARRAY_SIZE(batadv_netlink_ops), - .mcgrps = batadv_netlink_mcgrps, - .n_mcgrps = ARRAY_SIZE(batadv_netlink_mcgrps), - }; diff --git a/feeds/ipq95xx/batman-adv/patches/0002-Revert-batman-adv-Add-new-include-for-min-max-helper.patch b/feeds/ipq95xx/batman-adv/patches/0002-Revert-batman-adv-Add-new-include-for-min-max-helper.patch deleted file mode 100644 index 6f4b56fbe..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0002-Revert-batman-adv-Add-new-include-for-min-max-helper.patch +++ /dev/null @@ -1,116 +0,0 @@ -From: Sven Eckelmann -Date: Thu, 28 Jan 2021 21:06:51 +0100 -Subject: Revert "batman-adv: Add new include for min/max helpers" - -The OpenWrt kernel sources and backports sources are currently missing this -header. - -This reverts commit 1810de05310d5c5e9140f870ac21052f38bc06b8. - -Signed-off-by: Sven Eckelmann - ---- a/compat-include/linux/minmax.h -+++ /dev/null -@@ -1,20 +0,0 @@ --/* SPDX-License-Identifier: GPL-2.0 */ --/* Copyright (C) B.A.T.M.A.N. contributors: -- * -- * Marek Lindner, Simon Wunderlich -- * -- * This file contains macros for maintaining compatibility with older versions -- * of the Linux kernel. -- */ -- --#ifndef _NET_BATMAN_ADV_COMPAT_LINUX_MINMAX_H_ --#define _NET_BATMAN_ADV_COMPAT_LINUX_MINMAX_H_ -- --#include --#if LINUX_VERSION_IS_GEQ(5, 10, 0) --#include_next --#else --#include --#endif -- --#endif /* _NET_BATMAN_ADV_COMPAT_LINUX_MINMAX_H_ */ ---- a/net/batman-adv/bat_v.c -+++ b/net/batman-adv/bat_v.c -@@ -15,7 +15,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/bat_v_elp.c -+++ b/net/batman-adv/bat_v_elp.c -@@ -18,7 +18,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/bat_v_ogm.c -+++ b/net/batman-adv/bat_v_ogm.c -@@ -18,7 +18,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/fragmentation.c -+++ b/net/batman-adv/fragmentation.c -@@ -14,8 +14,8 @@ - #include - #include - #include -+#include - #include --#include - #include - #include - #include ---- a/net/batman-adv/hard-interface.c -+++ b/net/batman-adv/hard-interface.c -@@ -17,7 +17,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/main.c -+++ b/net/batman-adv/main.c -@@ -23,7 +23,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/netlink.c -+++ b/net/batman-adv/netlink.c -@@ -23,7 +23,6 @@ - #include - #include - #include --#include - #include - #include - #include ---- a/net/batman-adv/tp_meter.c -+++ b/net/batman-adv/tp_meter.c -@@ -23,7 +23,6 @@ - #include - #include - #include --#include - #include - #include - #include diff --git a/feeds/ipq95xx/batman-adv/patches/0003-batman-adv-Fix-build-of-multicast-code-against-Linux.patch b/feeds/ipq95xx/batman-adv/patches/0003-batman-adv-Fix-build-of-multicast-code-against-Linux.patch deleted file mode 100644 index 6fecb6cd3..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0003-batman-adv-Fix-build-of-multicast-code-against-Linux.patch +++ /dev/null @@ -1,34 +0,0 @@ -From: Sven Eckelmann -Date: Fri, 14 May 2021 19:34:35 +0200 -Subject: batman-adv: Fix build of multicast code against Linux < 5.13 - -Fixes: 007b4c4b031f ("batman-adv: convert ifmcaddr6 to RCU") -Signed-off-by: Sven Eckelmann - ---- a/net/batman-adv/multicast.c -+++ b/net/batman-adv/multicast.c -@@ -422,9 +422,14 @@ batadv_mcast_mla_softif_get_ipv6(struct - return 0; - } - -+#if LINUX_VERSION_IS_LESS(5, 13, 0) -+ read_lock_bh(&in6_dev->lock); -+ for (pmc6 = in6_dev->mc_list; pmc6; pmc6 = pmc6->next) { -+#else - for (pmc6 = rcu_dereference(in6_dev->mc_list); - pmc6; - pmc6 = rcu_dereference(pmc6->next)) { -+#endif - if (IPV6_ADDR_MC_SCOPE(&pmc6->mca_addr) < - IPV6_ADDR_SCOPE_LINKLOCAL) - continue; -@@ -453,6 +458,9 @@ batadv_mcast_mla_softif_get_ipv6(struct - hlist_add_head(&new->list, mcast_list); - ret++; - } -+#if LINUX_VERSION_IS_LESS(5, 13, 0) -+ read_unlock_bh(&in6_dev->lock); -+#endif - rcu_read_unlock(); - - return ret; diff --git a/feeds/ipq95xx/batman-adv/patches/0004-Revert-batman-adv-Switch-to-kstrtox.h-for-kstrtou64.patch b/feeds/ipq95xx/batman-adv/patches/0004-Revert-batman-adv-Switch-to-kstrtox.h-for-kstrtou64.patch deleted file mode 100644 index 8a2c0e251..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0004-Revert-batman-adv-Switch-to-kstrtox.h-for-kstrtou64.patch +++ /dev/null @@ -1,19 +0,0 @@ -From: Sven Eckelmann -Date: Tue, 14 Sep 2021 21:02:10 +0200 -Subject: Revert "batman-adv: Switch to kstrtox.h for kstrtou64" - -This header is only available after Linux 5.14 - -This reverts commit c9a69cb4048ebef3a4d91835669011a26d9b7dab. - ---- a/net/batman-adv/gateway_common.c -+++ b/net/batman-adv/gateway_common.c -@@ -10,7 +10,7 @@ - #include - #include - #include --#include -+#include - #include - #include - #include diff --git a/feeds/ipq95xx/batman-adv/patches/0005-Revert-batman-adv-use-Linux-s-stdarg.h.patch b/feeds/ipq95xx/batman-adv/patches/0005-Revert-batman-adv-use-Linux-s-stdarg.h.patch deleted file mode 100644 index ce2df718c..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0005-Revert-batman-adv-use-Linux-s-stdarg.h.patch +++ /dev/null @@ -1,19 +0,0 @@ -From: Sven Eckelmann -Date: Tue, 14 Sep 2021 21:07:34 +0200 -Subject: Revert "batman-adv: use Linux's stdarg.h" - -This header is only available since Linux 5.15 - -This reverts commit 36d059797a14f0e373fdc3c79df7b467435925ad. - ---- a/net/batman-adv/log.c -+++ b/net/batman-adv/log.c -@@ -7,7 +7,7 @@ - #include "log.h" - #include "main.h" - --#include -+#include - - #include "trace.h" - diff --git a/feeds/ipq95xx/batman-adv/patches/0006-batman-adv-make-mc_forwarding-atomic.patch b/feeds/ipq95xx/batman-adv/patches/0006-batman-adv-make-mc_forwarding-atomic.patch deleted file mode 100644 index d72882ee2..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0006-batman-adv-make-mc_forwarding-atomic.patch +++ /dev/null @@ -1,27 +0,0 @@ -From: Eric Dumazet -Date: Wed, 2 Mar 2022 20:05:13 +0100 -Subject: batman-adv: make mc_forwarding atomic - -This fixes minor data-races in ip6_mc_input() and -batadv_mcast_mla_rtr_flags_softif_get_ipv6() - -Signed-off-by: Eric Dumazet -Signed-off-by: David S. Miller -[sven@narfation.org: Add ugly hack to get it building with old kernels] -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/56db7c0540e733a1f063ccd6bab1b537a80857eb - ---- a/net/batman-adv/multicast.c -+++ b/net/batman-adv/multicast.c -@@ -134,7 +134,11 @@ static u8 batadv_mcast_mla_rtr_flags_sof - { - struct inet6_dev *in6_dev = __in6_dev_get(dev); - -+#if LINUX_VERSION_IS_GEQ(5, 18, 0) // UGLY_HACK_NEW -+ if (in6_dev && atomic_read(&in6_dev->cnf.mc_forwarding)) -+#else // UGLY_HACK_OLD - if (in6_dev && in6_dev->cnf.mc_forwarding) -+#endif // UGLY_HACK_STOP - return BATADV_NO_FLAGS; - else - return BATADV_MCAST_WANT_NO_RTR6; diff --git a/feeds/ipq95xx/batman-adv/patches/0007-batman-adv-compat-Add-atomic-mc_fowarding-support-fo.patch b/feeds/ipq95xx/batman-adv/patches/0007-batman-adv-compat-Add-atomic-mc_fowarding-support-fo.patch deleted file mode 100644 index 9d5f0ac07..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0007-batman-adv-compat-Add-atomic-mc_fowarding-support-fo.patch +++ /dev/null @@ -1,23 +0,0 @@ -From: Sven Eckelmann -Date: Fri, 15 Apr 2022 15:12:45 +0200 -Subject: batman-adv: compat: Add atomic mc_fowarding support for stable kernels - -Fixes: 56db7c0540e7 ("batman-adv: make mc_forwarding atomic") -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/350adcaec82fbaa358a2406343b6130ac8dad126 - ---- a/net/batman-adv/multicast.c -+++ b/net/batman-adv/multicast.c -@@ -134,7 +134,11 @@ static u8 batadv_mcast_mla_rtr_flags_sof - { - struct inet6_dev *in6_dev = __in6_dev_get(dev); - --#if LINUX_VERSION_IS_GEQ(5, 18, 0) // UGLY_HACK_NEW -+#if (LINUX_VERSION_IS_GEQ(5, 4, 189) && LINUX_VERSION_IS_LESS(5, 5, 0)) || /* UGLY_HACK */ \ -+ (LINUX_VERSION_IS_GEQ(5, 10, 111) && LINUX_VERSION_IS_LESS(5, 11, 0)) || /* UGLY_HACK */ \ -+ (LINUX_VERSION_IS_GEQ(5, 15, 34) && LINUX_VERSION_IS_LESS(5, 16, 0)) || /* UGLY_HACK */ \ -+ (LINUX_VERSION_IS_GEQ(5, 16, 20) && LINUX_VERSION_IS_LESS(5, 17, 0)) || /* UGLY_HACK */ \ -+ LINUX_VERSION_IS_GEQ(5, 17, 3) // UGLY_HACK_NEW - if (in6_dev && atomic_read(&in6_dev->cnf.mc_forwarding)) - #else // UGLY_HACK_OLD - if (in6_dev && in6_dev->cnf.mc_forwarding) diff --git a/feeds/ipq95xx/batman-adv/patches/0008-batman-adv-Request-iflink-once-in-batadv-on-batadv-c.patch b/feeds/ipq95xx/batman-adv/patches/0008-batman-adv-Request-iflink-once-in-batadv-on-batadv-c.patch deleted file mode 100644 index c117cca3f..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0008-batman-adv-Request-iflink-once-in-batadv-on-batadv-c.patch +++ /dev/null @@ -1,44 +0,0 @@ -From: Sven Eckelmann -Date: Wed, 2 Mar 2022 19:49:44 +0100 -Subject: batman-adv: Request iflink once in batadv-on-batadv check - -There is no need to call dev_get_iflink multiple times for the same -net_device in batadv_is_on_batman_iface. And since some of the -.ndo_get_iflink callbacks are dynamic (for example via RCUs like in -vxcan_get_iflink), it could easily happen that the returned values are not -stable. The pre-checks before __dev_get_by_index are then of course bogus. - -Fixes: 3d48811b27f5 ("batman-adv: prevent using any virtual device created on batman-adv as hard-interface") -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/f6c0c45356fe3ab9c5e01b81d060f8a436658037 - ---- a/net/batman-adv/hard-interface.c -+++ b/net/batman-adv/hard-interface.c -@@ -148,22 +148,23 @@ static bool batadv_is_on_batman_iface(co - struct net *net = dev_net(net_dev); - struct net_device *parent_dev; - struct net *parent_net; -+ int iflink; - bool ret; - - /* check if this is a batman-adv mesh interface */ - if (batadv_softif_is_valid(net_dev)) - return true; - -+ iflink = dev_get_iflink(net_dev); -+ - /* no more parents..stop recursion */ -- if (dev_get_iflink(net_dev) == 0 || -- dev_get_iflink(net_dev) == net_dev->ifindex) -+ if (iflink == 0 || iflink == net_dev->ifindex) - return false; - - parent_net = batadv_getlink_net(net_dev, net); - - /* recurse over the parent device */ -- parent_dev = __dev_get_by_index((struct net *)parent_net, -- dev_get_iflink(net_dev)); -+ parent_dev = __dev_get_by_index((struct net *)parent_net, iflink); - /* if we got a NULL parent_dev there is something broken.. */ - if (!parent_dev) { - pr_err("Cannot find parent device\n"); diff --git a/feeds/ipq95xx/batman-adv/patches/0009-batman-adv-Request-iflink-once-in-batadv_get_real_ne.patch b/feeds/ipq95xx/batman-adv/patches/0009-batman-adv-Request-iflink-once-in-batadv_get_real_ne.patch deleted file mode 100644 index d0e12708f..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0009-batman-adv-Request-iflink-once-in-batadv_get_real_ne.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Sven Eckelmann -Date: Wed, 2 Mar 2022 19:49:45 +0100 -Subject: batman-adv: Request iflink once in batadv_get_real_netdevice - -There is no need to call dev_get_iflink multiple times for the same -net_device in batadv_get_real_netdevice. And since some of the -ndo_get_iflink callbacks are dynamic (for example via RCUs like in -vxcan_get_iflink), it could easily happen that the returned values are not -stable. The pre-checks before __dev_get_by_index are then of course bogus. - -Fixes: 2b45bb6c3aad ("batman-adv: additional checks for virtual interfaces on top of WiFi") -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/445f477ec3e805425186f5fbe8ed0fe89cc226b6 - ---- a/net/batman-adv/hard-interface.c -+++ b/net/batman-adv/hard-interface.c -@@ -214,14 +214,16 @@ static struct net_device *batadv_get_rea - struct net_device *real_netdev = NULL; - struct net *real_net; - struct net *net; -- int ifindex; -+ int iflink; - - ASSERT_RTNL(); - - if (!netdev) - return NULL; - -- if (netdev->ifindex == dev_get_iflink(netdev)) { -+ iflink = dev_get_iflink(netdev); -+ -+ if (netdev->ifindex == iflink) { - dev_hold(netdev); - return netdev; - } -@@ -231,9 +233,8 @@ static struct net_device *batadv_get_rea - goto out; - - net = dev_net(hard_iface->soft_iface); -- ifindex = dev_get_iflink(netdev); - real_net = batadv_getlink_net(netdev, net); -- real_netdev = dev_get_by_index(real_net, ifindex); -+ real_netdev = dev_get_by_index(real_net, iflink); - - out: - batadv_hardif_put(hard_iface); diff --git a/feeds/ipq95xx/batman-adv/patches/0010-batman-adv-Don-t-expect-inter-netns-unique-iflink-in.patch b/feeds/ipq95xx/batman-adv/patches/0010-batman-adv-Don-t-expect-inter-netns-unique-iflink-in.patch deleted file mode 100644 index 1a7859cb3..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0010-batman-adv-Don-t-expect-inter-netns-unique-iflink-in.patch +++ /dev/null @@ -1,86 +0,0 @@ -From: Sven Eckelmann -Date: Wed, 2 Mar 2022 19:49:46 +0100 -Subject: batman-adv: Don't expect inter-netns unique iflink indices - -The ifindex doesn't have to be unique for multiple network namespaces on -the same machine. - - $ ip netns add test1 - $ ip -net test1 link add dummy1 type dummy - $ ip netns add test2 - $ ip -net test2 link add dummy2 type dummy - - $ ip -net test1 link show dev dummy1 - 6: dummy1: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 - link/ether 96:81:55:1e:dd:85 brd ff:ff:ff:ff:ff:ff - $ ip -net test2 link show dev dummy2 - 6: dummy2: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 - link/ether 5a:3c:af:35:07:c3 brd ff:ff:ff:ff:ff:ff - -But the batman-adv code to walk through the various layers of virtual -interfaces uses this assumption because dev_get_iflink handles it -internally and doesn't return the actual netns of the iflink. And -dev_get_iflink only documents the situation where ifindex == iflink for -physical devices. - -But only checking for dev->netdev_ops->ndo_get_iflink is also not an option -because ipoib_get_iflink implements it even when it sometimes returns an -iflink != ifindex and sometimes iflink == ifindex. The caller must -therefore make sure itself to check both netns and iflink + ifindex for -equality. Only when they are equal, a "physical" interface was detected -which should stop the traversal. On the other hand, vxcan_get_iflink can -also return 0 in case there was currently no valid peer. In this case, it -is still necessary to stop. - -Fixes: 3d48811b27f5 ("batman-adv: prevent using any virtual device created on batman-adv as hard-interface") -Fixes: 2b45bb6c3aad ("batman-adv: additional checks for virtual interfaces on top of WiFi") -Reported-by: Sabrina Dubroca -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/0aac7a9fbbbeec25f2f54a9e6d53ea91217ba720 - ---- a/net/batman-adv/hard-interface.c -+++ b/net/batman-adv/hard-interface.c -@@ -156,13 +156,15 @@ static bool batadv_is_on_batman_iface(co - return true; - - iflink = dev_get_iflink(net_dev); -- -- /* no more parents..stop recursion */ -- if (iflink == 0 || iflink == net_dev->ifindex) -+ if (iflink == 0) - return false; - - parent_net = batadv_getlink_net(net_dev, net); - -+ /* iflink to itself, most likely physical device */ -+ if (net == parent_net && iflink == net_dev->ifindex) -+ return false; -+ - /* recurse over the parent device */ - parent_dev = __dev_get_by_index((struct net *)parent_net, iflink); - /* if we got a NULL parent_dev there is something broken.. */ -@@ -222,8 +224,7 @@ static struct net_device *batadv_get_rea - return NULL; - - iflink = dev_get_iflink(netdev); -- -- if (netdev->ifindex == iflink) { -+ if (iflink == 0) { - dev_hold(netdev); - return netdev; - } -@@ -234,6 +235,14 @@ static struct net_device *batadv_get_rea - - net = dev_net(hard_iface->soft_iface); - real_net = batadv_getlink_net(netdev, net); -+ -+ /* iflink to itself, most likely physical device */ -+ if (net == real_net && netdev->ifindex == iflink) { -+ real_netdev = netdev; -+ dev_hold(real_netdev); -+ goto out; -+ } -+ - real_netdev = dev_get_by_index(real_net, iflink); - - out: diff --git a/feeds/ipq95xx/batman-adv/patches/0011-batman-adv-Don-t-skb_split-skbuffs-with-frag_list.patch b/feeds/ipq95xx/batman-adv/patches/0011-batman-adv-Don-t-skb_split-skbuffs-with-frag_list.patch deleted file mode 100644 index 4f6f30e87..000000000 --- a/feeds/ipq95xx/batman-adv/patches/0011-batman-adv-Don-t-skb_split-skbuffs-with-frag_list.patch +++ /dev/null @@ -1,46 +0,0 @@ -From: Sven Eckelmann -Date: Sat, 16 Apr 2022 14:24:34 +0200 -Subject: batman-adv: Don't skb_split skbuffs with frag_list - -The receiving interface might have used GRO to receive more fragments than -MAX_SKB_FRAGS fragments. In this case, these will not be stored in -skb_shinfo(skb)->frags but merged into the frag list. - -batman-adv relies on the function skb_split to split packets up into -multiple smaller packets which are not larger than the MTU on the outgoing -interface. But this function cannot handle frag_list entries and is only -operating on skb_shinfo(skb)->frags. If it is still trying to split such an -skb and xmit'ing it on an interface without support for NETIF_F_FRAGLIST, -then validate_xmit_skb() will try to linearize it. But this fails due to -inconsistent information. And __pskb_pull_tail will trigger a BUG_ON after -skb_copy_bits() returns an error. - -In case of entries in frag_list, just linearize the skb before operating on -it with skb_split(). - -Reported-by: Felix Kaechele -Tested-by: Felix Kaechele -Fixes: 9de347143505 ("batman-adv: layer2 unicast packet fragmentation") -Signed-off-by: Sven Eckelmann -Origin: upstream, https://git.open-mesh.org/batman-adv.git/commit/d467720acaf1b22b0cee58144eeaf9ef6c5e285c - ---- a/net/batman-adv/fragmentation.c -+++ b/net/batman-adv/fragmentation.c -@@ -475,6 +475,17 @@ int batadv_frag_send_packet(struct sk_bu - goto free_skb; - } - -+ /* GRO might have added fragments to the fragment list instead of -+ * frags[]. But this is not handled by skb_split and must be -+ * linearized to avoid incorrect length information after all -+ * batman-adv fragments were created and submitted to the -+ * hard-interface -+ */ -+ if (skb_has_frag_list(skb) && __skb_linearize(skb)) { -+ ret = -ENOMEM; -+ goto free_skb; -+ } -+ - /* Create one header to be copied to all fragments */ - frag_header.packet_type = BATADV_UNICAST_FRAG; - frag_header.version = BATADV_COMPAT_VERSION; diff --git a/feeds/ipq95xx/batman-adv/src/compat-hacks.h b/feeds/ipq95xx/batman-adv/src/compat-hacks.h deleted file mode 100644 index 99a1bb39f..000000000 --- a/feeds/ipq95xx/batman-adv/src/compat-hacks.h +++ /dev/null @@ -1,179 +0,0 @@ -/* Please avoid adding hacks here - instead add it to mac80211/backports.git */ - -#undef CONFIG_MODULE_STRIPPED - -#include /* LINUX_VERSION_CODE */ -#include - -#if LINUX_VERSION_IS_LESS(5, 10, 0) - -#include - -struct batadv_br_ip { - union { - __be32 ip4; -#if IS_ENABLED(CONFIG_IPV6) - struct in6_addr ip6; -#endif - } dst; - __be16 proto; - __u16 vid; -}; - -struct batadv_br_ip_list { - struct list_head list; - struct batadv_br_ip addr; -}; - -#if 0 -/* "static" dropped to force compiler to evaluate it as part of multicast.c - * might need to be added again and then called in some kind of dummy - * compat.c in case this header is included in multiple files. - */ -inline void __batadv_br_ip_list_check(void) -{ - BUILD_BUG_ON(sizeof(struct batadv_br_ip_list) != sizeof(struct br_ip_list)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip_list, list) != offsetof(struct br_ip_list, list)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip_list, addr) != offsetof(struct br_ip_list, addr)); - - BUILD_BUG_ON(sizeof(struct batadv_br_ip) != sizeof(struct br_ip)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip, dst.ip4) != offsetof(struct br_ip, u.ip4)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip, dst.ip6) != offsetof(struct br_ip, u.ip6)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip, proto) != offsetof(struct br_ip, proto)); - BUILD_BUG_ON(offsetof(struct batadv_br_ip, vid) != offsetof(struct br_ip, vid)); -} -#endif - -#define br_ip batadv_br_ip -#define br_ip_list batadv_br_ip_list - -#endif /* LINUX_VERSION_IS_LESS(5, 10, 0) */ - -#if LINUX_VERSION_IS_LESS(5, 14, 0) - -#include -#include - -#if IS_ENABLED(CONFIG_IPV6) -static inline bool -br_multicast_has_router_adjacent(struct net_device *dev, int proto) -{ - struct list_head bridge_mcast_list = LIST_HEAD_INIT(bridge_mcast_list); - struct br_ip_list *br_ip_entry, *tmp; - int ret; - - if (proto != ETH_P_IPV6) - return true; - - ret = br_multicast_list_adjacent(dev, &bridge_mcast_list); - if (ret < 0) - return true; - - ret = false; - - list_for_each_entry_safe(br_ip_entry, tmp, &bridge_mcast_list, list) { - if (br_ip_entry->addr.proto == htons(ETH_P_IPV6) && - ipv6_addr_is_ll_all_routers(&br_ip_entry->addr.dst.ip6)) - ret = true; - - list_del(&br_ip_entry->list); - kfree(br_ip_entry); - } - - return ret; -} -#else -static inline bool -br_multicast_has_router_adjacent(struct net_device *dev, int proto) -{ - return true; -} -#endif - -#endif /* LINUX_VERSION_IS_LESS(5, 14, 0) */ - -#if LINUX_VERSION_IS_LESS(5, 15, 0) - -static inline void batadv_eth_hw_addr_set(struct net_device *dev, - const u8 *addr) -{ - ether_addr_copy(dev->dev_addr, addr); -} -#define eth_hw_addr_set batadv_eth_hw_addr_set - -#endif /* LINUX_VERSION_IS_LESS(5, 15, 0) */ - -/* */ - -#include -#include_next - -#include - -#ifdef DECLARE_EWMA -#undef DECLARE_EWMA -#endif /* DECLARE_EWMA */ - -/* - * Exponentially weighted moving average (EWMA) - * - * This implements a fixed-precision EWMA algorithm, with both the - * precision and fall-off coefficient determined at compile-time - * and built into the generated helper funtions. - * - * The first argument to the macro is the name that will be used - * for the struct and helper functions. - * - * The second argument, the precision, expresses how many bits are - * used for the fractional part of the fixed-precision values. - * - * The third argument, the weight reciprocal, determines how the - * new values will be weighed vs. the old state, new values will - * get weight 1/weight_rcp and old values 1-1/weight_rcp. Note - * that this parameter must be a power of two for efficiency. - */ - -#define DECLARE_EWMA(name, _precision, _weight_rcp) \ - struct ewma_##name { \ - unsigned long internal; \ - }; \ - static inline void ewma_##name##_init(struct ewma_##name *e) \ - { \ - BUILD_BUG_ON(!__builtin_constant_p(_precision)); \ - BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp)); \ - /* \ - * Even if you want to feed it just 0/1 you should have \ - * some bits for the non-fractional part... \ - */ \ - BUILD_BUG_ON((_precision) > 30); \ - BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp); \ - e->internal = 0; \ - } \ - static inline unsigned long \ - ewma_##name##_read(struct ewma_##name *e) \ - { \ - BUILD_BUG_ON(!__builtin_constant_p(_precision)); \ - BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp)); \ - BUILD_BUG_ON((_precision) > 30); \ - BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp); \ - return e->internal >> (_precision); \ - } \ - static inline void ewma_##name##_add(struct ewma_##name *e, \ - unsigned long val) \ - { \ - unsigned long internal = READ_ONCE(e->internal); \ - unsigned long weight_rcp = ilog2(_weight_rcp); \ - unsigned long precision = _precision; \ - \ - BUILD_BUG_ON(!__builtin_constant_p(_precision)); \ - BUILD_BUG_ON(!__builtin_constant_p(_weight_rcp)); \ - BUILD_BUG_ON((_precision) > 30); \ - BUILD_BUG_ON_NOT_POWER_OF_2(_weight_rcp); \ - \ - WRITE_ONCE(e->internal, internal ? \ - (((internal << weight_rcp) - internal) + \ - (val << precision)) >> weight_rcp : \ - (val << precision)); \ - } - -/* */ diff --git a/feeds/ipq95xx/ftm/Makefile b/feeds/ipq95xx/ftm/Makefile deleted file mode 100755 index d09f53a50..000000000 --- a/feeds/ipq95xx/ftm/Makefile +++ /dev/null @@ -1,82 +0,0 @@ -include $(TOPDIR)/rules.mk - -PKG:=ftm -PKG_NAME:=$(PKG) -PKG_RELEASE:=1 - -LOCAL_SRC:=$(TOPDIR)/qca/src/common-tools/ftm - -PKG_VERSION:=12.3 - -#PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG) - -include $(INCLUDE_DIR)/package.mk - -define Package/$(PKG_NAME) - SECTION:=QCA - CATEGORY:=QTI software - URL:=http://www.qca.qualcomm.com - MAINTAINER:=Qualcomm Atheros - TITLE:= QCA ftm utils - DEPENDS:= @TARGET_ipq_ipq807x||TARGET_ipq_ipq807x_64||TARGET_ipq_ipq60xx||TARGET_ipq_ipq60xx_64||TARGET_ipq_ipq50xx||TARGET_ipq_ipq50xx_64||TARGET_ipq807x||TARGET_ipq50xx||TARGET_ipq60xx||TARGET_ipq95xx||TARGET_ipq53xx +libnl +libtcmd +qca-diag +librt +kmod-diag-char -endef - -define Package/$(PKG_NAME)/description/Default - FTM Package Support for QCA WIFI 11 drivers -endef - -TARGET_CFLAGS += -DCONFIG_FTM_WLAN -DDEBUG -DFTM_DEBUG -DWIN_AP_HOST -TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/qca-diag -TARGET_CFLAGS += -MMD -O2 -Wall -g -TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include -TARGET_CFLAGS += -fpie -TARGET_LDFLAGS += -ldiag -lnl-3 -lnl-genl-3 -lrt -ltcmd -TARGET_CSRCS := ftm_main.c ftm_wlan.c ftm_write_to_flash.c -TARGET_LDFLAGS += -pie - -ifeq ($(CONFIG_FEATURE_IPQ_PROVISION_SUPPORT),y) - TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/qti-mfg-provision - TARGET_CFLAGS += -DWIN_AP_AFC - TARGET_LDFLAGS += -lprovision -endif - -ifneq ($(CONFIG_PACKAGE_kmod-mac80211),) - TARGET_CFLAGS+=-DWIN_AP_HOST_OPEN=1 -endif - -ifeq ($(CONFIG_FEATURE_QCA_IOT),y) -TARGET_CFLAGS += -DIPQ_AP_HOST_IOT -DIPQ_AP_HOST_IOT_QCA402X -ggdb3 -DCONFIG_DAEMON_MODE -TARGET_CSRCS += ftm_iot.c -TARGET_LDFLAGS += -lpthread -TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/qca-iot -TARGET_LDFLAGS += -ldiag_demo -endif - -ifeq ($(CONFIG_FEATURE_IPQ_IOT_SUPPORT),y) -TARGET_CFLAGS += -DIPQ_AP_HOST_IOT -DIPQ_AP_HOST_IOT_IPQ -ggdb3 -I$(STAGING_DIR)/usr/include/btdaemon -TARGET_CSRCS += ftm_iot.c -TARGET_LDFLAGS += -lpthread -lbtdaemon -endif - -define Build/Compile -$(MAKE) -C $(PKG_BUILD_DIR) \ - CC="$(TARGET_CC)" \ - CFLAGS="$(TARGET_CFLAGS)" \ - LDFLAGS="$(TARGET_LDFLAGS)" \ - CSRCS="$(TARGET_CSRCS)" -endef - -define Package/$(PKG_NAME)/install - $(INSTALL_DIR) $(1)/usr/sbin - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) $(PKG_BUILD_DIR)/ftm $(1)/usr/sbin/ - $(INSTALL_BIN) ./files/ftm.init $(1)/etc/init.d/ftm - $(INSTALL_DIR) $(1)/lib/wifi - $(INSTALL_BIN) ./files/compress_vart.sh $(1)/lib/compress_vart.sh -ifneq (, $(findstring ipq95xx, $(CONFIG_TARGET_BOARD))) - $(INSTALL_DIR) $(1)/sbin - $(INSTALL_BIN) ./files/ftm_qcc710_start.sh $(1)/sbin/ftm_qcc710_start -endif -endef - -$(eval $(call BuildPackage,ftm)) diff --git a/feeds/ipq95xx/ftm/files/compress_vart.sh b/feeds/ipq95xx/ftm/files/compress_vart.sh deleted file mode 100755 index 212a26199..000000000 --- a/feeds/ipq95xx/ftm/files/compress_vart.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2020 Qualcomm Technologies, Inc. -# -# All Rights Reserved. -# Confidential and Proprietary - Qualcomm Technologies, Inc. -# -# - -[ -e /lib/functions.sh ] && . /lib/functions.sh -[ -e /lib/ipq806x.sh ] && . /lib/ipq806x.sh -[ -e /lib/functions/boot.sh ] && . /lib/functions/boot.sh - -low_mem_compress_art() -{ - local mtdblock=$(find_mtd_part 0:ART) - - if [ -z "$mtdblock" ]; then - # read from mmc - mtdblock=$(find_mmc_part 0:ART) - fi - - [ -n "$mtdblock" ] || return - - local apmp="/tmp" - - lzma -zvfk -4 ${apmp}/virtual_art.bin 2> /dev/null || { - echo "Error Compressing Virtual ART" > /dev/console - return - } - - dd if=${apmp}/virtual_art.bin.lzma of=${mtdblock} - echo "Success compressing Virtual ART(${mtdblock})" > /dev/console - return -} - -normal_art() -{ - local mtdblock=$(find_mtd_part 0:ART) - - if [ -z "$mtdblock" ]; then - # read from mmc - mtdblock=$(find_mmc_part 0:ART) - fi - - [ -n "$mtdblock" ] || return - - local apmp="/tmp" - - dd if=${apmp}/virtual_art.bin of=${mtdblock} - echo "Success writing to ART(${mtdblock})" > /dev/console - return -} - -write_caldata() -{ - local board - [ -f /tmp/sysinfo/board_name ] && { - board=ap$(cat /tmp/sysinfo/board_name | awk -F 'ap' '{print$2}') - } - - if [ -e /sys/firmware/devicetree/base/compressed_art ] - then - echo "Compressed ART Supported Platform $board " > /dev/console - low_mem_compress_art - else - echo "Non Compressed ART Platform $board " > /dev/console - normal_art - fi -} - -if [ "$1" = "write_caldata" ] -then - write_caldata -fi diff --git a/feeds/ipq95xx/ftm/files/ftm.init b/feeds/ipq95xx/ftm/files/ftm.init deleted file mode 100755 index 9254d38e1..000000000 --- a/feeds/ipq95xx/ftm/files/ftm.init +++ /dev/null @@ -1,99 +0,0 @@ -#!/bin/sh /etc/rc.common -# -# Copyright (c) 2013, 2017, 2020 Qualcomm Technologies, Inc. -# -# All Rights Reserved. -# Confidential and Proprietary - Qualcomm Technologies, Inc. -# -# 2013 Qualcomm Atheros, Inc. -# -# All Rights Reserved. -# Qualcomm Atheros Confidential and Proprietary -# - -[ -e /lib/functions.sh ] && . /lib/functions.sh -[ -e /lib/ipq806x.sh ] && . /lib/ipq806x.sh -[ -e /lib/functions/boot.sh ] && . /lib/functions/boot.sh - -START=97 -SERVICE_DAEMONIZE=1 -SERVICE_WRITE_PID=1 - -MTD_ART_PART_NAME="art" - -compressed_art_read() { - local mtdblock=$(find_mtd_part 0:ART) - - if [ -z "$mtdblock" ]; then - #read from mmc - mtdblock=$(find_mmc_part 0:ART) - fi - - [ -n "$mtdblock" ] || return - - local apmp="/tmp" - - dd if=${mtdblock} of=${apmp}/virtual_art.bin.lzma - lzma -fdv --single-stream ${apmp}/virtual_art.bin.lzma || { - # Create dummy virtual_art.bin file of size 512K - dd if=/dev/zero of=${apmp}/virtual_art.bin bs=1024 count=512 - } - echo "Uncompressed and Copied ART content from ${mtdblock} to /tmp/virtual_art.bin" > /dev/console -} - -raw_art_read() { - local mtdblock=$(find_mtd_part 0:ART) - - if [ -z "$mtdblock" ]; then - #read from mmc - mtdblock=$(find_mmc_part 0:ART) - fi - - [ -n "$mtdblock" ] || return - - local apmp="/tmp" - - dd if=${mtdblock} of=${apmp}/virtual_art.bin - echo "Copy ART caldata from ${mtdblock} to /tmp/virtual_art.bin" > /dev/console -} - -retrieve_caldata() { - local board - [ -f /tmp/sysinfo/board_name ] && { - board=ap$(cat /tmp/sysinfo/board_name | awk -F 'ap' '{print$2}') - } - echo "**** Platform Name: $board *****" > /dev/console - - if [ -e /sys/firmware/devicetree/base/compressed_art ] - then - compressed_art_read - else - raw_art_read - fi -} - - -start() { - local emmc_flash="" - local nor_flash="" - - emmc_flash=$(find_mmc_part 0:ART 2> /dev/null) - mtd_name=$(grep -i -w ${MTD_ART_PART_NAME} /proc/mtd | cut -f1 -d:) - nor_flash=`find /sys/bus/spi/devices/*/mtd -name ${mtd_name} 2> /dev/null` - - if [ -n "$emmc_flash" ]; then - [ -L /dev/caldata ] || \ - ln -s $emmc_flash /dev/caldata - elif [ -n "$nor_flash" ]; then - [ -L /dev/caldata ] || \ - ln -s /dev/${mtd_name//mtd/mtdblock} /dev/caldata - elif [ -n "$mtd_name" ]; then - [ -L /dev/caldata ] || \ - ln -s /dev/${mtd_name//mtd/mtdblock} /dev/caldata - fi - retrieve_caldata -} - -stop() { - [ -L /dev/caldata ] && rm /dev/caldata -} diff --git a/feeds/ipq95xx/ftm/files/ftm_qcc710_start.sh b/feeds/ipq95xx/ftm/files/ftm_qcc710_start.sh deleted file mode 100755 index fb41758c6..000000000 --- a/feeds/ipq95xx/ftm/files/ftm_qcc710_start.sh +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/sh -# -# Copyright (c) 2021 Qualcomm Technologies, Inc. -# -# All Rights Reserved. -# Confidential and Proprietary - Qualcomm Technologies, Inc. -# -# - -# QCC710 v1.0 reset for BT bringup -qcc710_reset() { - reset_gpio_pin=$(cat /proc/device-tree/soc/pinctrl@1000000/QCC710_pins/QCC710_reset/pins | sed s/"gpio"//) - [[ -z $reset_gpio_pin ]] && return - gpio_base=$(cat /sys/class/gpio/gpiochip*/base | head -n1) - gpio_reset=$(( gpio_base + reset_gpio_pin )) - if [[ ! -e /sys/class/gpio/gpio$gpio_reset ]]; then - [ -z ${SLEEP} ] && echo -e "Enter sleep value for reset. Options:\n10 \n1" && read -p "Enter : " SLEEP - [ -z ${SLEEP} ] && SLEEP=10 - echo $gpio_reset > /sys/class/gpio/export - echo out > /sys/class/gpio/gpio$gpio_reset/direction - echo "Performing QCC710 reset ...." > /dev/console - { echo 1 > /sys/class/gpio/gpio$gpio_reset/value ; \ - sleep $SLEEP; \ - echo 0 > /sys/class/gpio/gpio$gpio_reset/value; \ - echo "QCC710 reset complete ...." > /dev/console; } - fi -} - -while [ -n "$1" ]; do - case "$1" in - -h|--help) HELP=1; break;; - -a|--ipaddr) SERVERIP="$2";shift;; - -s|--sleep) SLEEP="$2";shift;; - -r|--baud-rate) BAUDRATE="$2";shift;; - -*) - echo "Invalid option: $1" - ERROR=1; - break - ;; - *)break;; - esac - shift -done -[ -n "$HELP" -o -n "$ERROR" ] && { - cat < -r -s - -version 1 : ./sbin/ftm_qcc710_start -a 192.168.1.121 -r 2000000 -s 10 -version 2 : ./sbin/ftm_qcc710_start -a 192.168.1.121 -r 115200 -s 1 -EOF - # If we requested the help flag, then exit normally. - # Else, it's probably an error so report it as such. - [ -n "$HELP" ] && exit 0 - exit 1 -} - -[ -z ${SERVERIP} ] && SERVERIP=$(grep -oh "serverip.*#" /proc/cmdline | awk -F '#' '{print $2}') -[ -z ${SERVERIP} ] && read -p "No serverip in cmdline, please enter the serverip : " SERVERIP -[ -z ${BAUDRATE} ] && echo -e "Enter baudrate for stack bringup. Options:\n2000000\n115200" && read -p "Enter : " BAUDRATE -[ -z ${BAUDRATE} ] && BAUDRATE=2000000 -qcc710_reset -DIAG_PID=$(ps | grep diag_socket_app | grep -v grep | awk '{print $1}') -while [ -n "$DIAG_PID" ] -do - kill -s SIGTERM $DIAG_PID - DIAG_PID=$(ps | grep diag_socket_app | grep -v grep | awk '{print $1}') -done -echo "Stopped previous instances of diag_socket_app process" -[ -z "$DIAG_PID" ] && /usr/sbin/diag_socket_app -a $SERVERIP -p 2500 & - -FTM_PID=$(ps | grep "ftm " | grep -v grep | awk '{print $1}') -while [ -n "$FTM_PID" ] -do - kill -s SIGTERM $FTM_PID - FTM_PID=$(ps | grep "ftm " | grep -v grep | awk '{print $1}') -done -echo "Stopped previous instances ftm process" -[ -z "$FTM_PID" ] && /usr/sbin/ftm -n -dd -r $BAUDRATE diff --git a/feeds/ipq95xx/ftm/src/Android.mk b/feeds/ipq95xx/ftm/src/Android.mk deleted file mode 100755 index 6d1349939..000000000 --- a/feeds/ipq95xx/ftm/src/Android.mk +++ /dev/null @@ -1,133 +0,0 @@ -ifeq ($(call is-vendor-board-platform,QCOM),true) - -# Build only if board has BT/FM/WLAN -ifeq ($(findstring true, $(BOARD_HAVE_QCOM_FM) $(BOARD_HAVE_BLUETOOTH) $(BOARD_HAS_ATH_WLAN_AR6320)),true) - -LOCAL_PATH:= $(call my-dir) - -BDROID_DIR:= system/bt -ifeq ($(TARGET_SUPPORTS_WEARABLES),true) -QTI_DIR := hardware/qcom/bt/msm8909/libbt-vendor -else -QTI_DIR := hardware/qcom/bt/libbt-vendor -endif - - -include $(CLEAR_VARS) - -LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/diag/include \ -LOCAL_C_INCLUDES += vendor/qcom/proprietary/diag/src \ -LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/common/inc \ -LOCAL_C_INCLUDES += vendor/qcom/proprietary/bt/hci_qcomm_init \ -LOCAL_C_INCLUDES += vendor/qcom/opensource/fm/helium \ -LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include \ -LOCAL_C_INCLUDES += $(BDROID_DIR)/hci/include \ -LOCAL_C_INCLUDES += $(QTI_DIR)/include -ifeq ($(TARGET_SUPPORTS_WEARABLES),true) -LOCAL_C_INCLUDES += device/qcom/msm8909w/opensource/bluetooth/tools/hidl_client/inc -else -LOCAL_C_INCLUDES += vendor/qcom/opensource/bluetooth/tools/hidl_client/inc -endif - -LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr - -LOCAL_CFLAGS:= \ - -DANDROID \ - -DDEBUG - -#LOCAL_CFLAGS += -include bionic/libc/include/sys/socket.h -#LOCAL_CFLAGS += -include bionic/libc/include/netinet/in.h - -ifneq ($(DISABLE_BT_FTM),true) -LOCAL_CFLAGS += -DCONFIG_FTM_BT -endif - -ifeq ($(BOARD_HAVE_QCOM_FM),true) -LOCAL_CFLAGS += -DCONFIG_FTM_FM -endif - -ifeq ($(BOARD_HAS_QCA_FM_SOC), "cherokee") -LOCAL_CFLAGS += -DFM_SOC_TYPE_CHEROKEE -endif - -ifneq ($(BOARD_ANT_WIRELESS_DEVICE), ) -LOCAL_CFLAGS += -DCONFIG_FTM_ANT -endif -LOCAL_CFLAGS += -DCONFIG_FTM_NFC - -ifeq ($(BOARD_HAVE_BLUETOOTH_BLUEZ), true) - LOCAL_CFLAGS += -DHAS_BLUEZ_BUILDCFG -endif # BOARD_HAVE_BLUETOOTH_BLUEZ - -LOCAL_SRC_FILES:= \ - ftm_main.c \ - ftm_nfc.c \ - ftm_nfcnq.c \ - ftm_nfcqti.c \ - ftm_nfcnq_fwdl.c \ - ftm_nfcnq_test.c - -ifneq ($(DISABLE_BT_FTM),true) -LOCAL_SRC_FILES += \ - ftm_bt.c \ - ftm_bt_power_pfal_linux.c \ - ftm_bt_hci_pfal_linux.c \ - ftm_bt_persist.cpp -endif - -ifeq ($(call is-platform-sdk-version-at-least,23),true) -LOCAL_CFLAGS += -DANDROID_M -endif - -ifeq ($(BOARD_HAVE_QCOM_FM),true) -ifeq ($(BOARD_HAS_QCA_FM_SOC), "cherokee") -LOCAL_SRC_FILES += ftm_fm.c ftm_fm_pfal_linux_3990.c -else -LOCAL_SRC_FILES += ftm_fm.c ftm_fm_pfal_linux.c -endif -endif - -ifneq ($(BOARD_ANT_WIRELESS_DEVICE), ) -LOCAL_SRC_FILES += ftm_ant.c -endif - -ifeq ($(findstring true, $(BOARD_HAS_ATH_WLAN) $(BOARD_HAS_ATH_WLAN_AR6320)),true) -LOCAL_CFLAGS += -DBOARD_HAS_ATH_WLAN_AR6320 -LOCAL_CFLAGS += -DCONFIG_FTM_WLAN -LOCAL_CFLAGS += -DCONFIG_FTM_WLAN_AUTOLOAD -LOCAL_STATIC_LIBRARIES += libtcmd -LOCAL_SHARED_LIBRARIES += libnl -LOCAL_C_INCLUDES += $(TARGET_OUT_HEADERS)/libtcmd -LOCAL_SRC_FILES += ftm_wlan.c -endif - -LOCAL_SHARED_LIBRARIES += libdl - -ifneq ($(DISABLE_BT_FTM),true) -LOCAL_SHARED_LIBRARIES += libbt-hidlclient -endif - -LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) -LOCAL_MODULE:= ftmdaemon -LOCAL_CLANG := true -ifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) -LOCAL_PROPRIETARY_MODULE := true -endif -LOCAL_MODULE_TAGS := optional -LOCAL_SHARED_LIBRARIES += libdiag -LOCAL_SHARED_LIBRARIES += libcutils liblog libhardware - -ifneq ($(DISABLE_BT_FTM),true) -LOCAL_SHARED_LIBRARIES += libbtnv -endif - -# By default NV persist gets used -LOCAL_CFLAGS += -DBT_NV_SUPPORT - -LDFLAGS += -ldl - -include $(BUILD_EXECUTABLE) -include $(call all-makefiles-under,$(LOCAL_PATH)) - -endif # filter -endif # is-vendor-board-platform diff --git a/feeds/ipq95xx/ftm/src/LICENSE b/feeds/ipq95xx/ftm/src/LICENSE deleted file mode 100755 index 53f3da5eb..000000000 --- a/feeds/ipq95xx/ftm/src/LICENSE +++ /dev/null @@ -1,181 +0,0 @@ -This text file is provided to comply with the attribution requirements of -the licenses herein, but see NOTICE for license terms of this software. -The Apache 2.0 license can be found at -http://www.apache.org/licenses/LICENSE-2.0.html - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS diff --git a/feeds/ipq95xx/ftm/src/Makefile b/feeds/ipq95xx/ftm/src/Makefile deleted file mode 100755 index 54e2ec30b..000000000 --- a/feeds/ipq95xx/ftm/src/Makefile +++ /dev/null @@ -1,12 +0,0 @@ -#CC := $(ATH_CROSS_COMPILE_TYPE)gcc -TARGET_TYPE ?= AR9888 -TARGET_VERS ?= v2 - -#Sources to compile -CSRCS := ftm_main.c ftm_wlan.c ftm_write_to_flash.c - -all: - $(CC) $(CFLAGS) $(LDFLAGS) -g3 -Wall \ - $(CSRCS) -o ftm -clean: - rm -f ftm diff --git a/feeds/ipq95xx/ftm/src/Makefile.am b/feeds/ipq95xx/ftm/src/Makefile.am deleted file mode 100755 index 6a100c571..000000000 --- a/feeds/ipq95xx/ftm/src/Makefile.am +++ /dev/null @@ -1,86 +0,0 @@ -AM_CFLAGS = -Wall \ - -g -O0 \ - $(DIAG_CFLAGS) - -AM_CPPFLAGS = -Wall \ - -g -O0 \ - $(DIAG_CFLAGS) - -AM_CFLAGS += -I${WORKSPACE}/system/bt/hci/include -AM_CFLAGS += -I${WORKSPACE}/vendor/qcom/proprietary/bt/hci_qcomm_init/ - -AM_CPPFLAGS += -I${WORKSPACE}/system/bt/hci/include -AM_CPPFLAGS += -I${WORKSPACE}/vendor/qcom/proprietary/bt/hci_qcomm_init/ - -if DEBUG -AM_CFLAGS += -DDEBUG -AM_CPPFLAGS += -DDEBUG -endif - -requiredlibs = -lrt $(DIAG_LIBS) - -if USE_GLIB -AM_CFLAGS += -DUSE_GLIB $(GLIB_CFLAGS) -AM_CPPFLAGS += -DUSE_GLIB $(GLIB_CFLAGS) -requiredlibs += $(GLIB_LIBS) -endif - -#By default build for MDM_LE -AM_CFLAGS += -DMDM_LE -AM_CPPFLAGS += -DMDM_LE - -if MDM_ROME -AM_CFLAGS += -DBT_SOC_TYPE_ROME -AM_CPPFLAGS += -DBT_SOC_TYPE_ROME -else -if MDM_PRONTO -AM_CFLAGS += -DHCI_USE_MCT -AM_CPPFLAGS += -DHCI_USE_MCT -endif -endif - -c_sources = ftm_main.c - -if CONFIG_FTM_BT -AM_CFLAGS += -DCONFIG_FTM_BT -DBT_NV_SUPPORT -AM_CPPFLAGS += -DCONFIG_FTM_BT -DBT_NV_SUPPORT -c_sources += ftm_bt.c -c_sources += ftm_bt_power_pfal_linux.c -c_sources += ftm_bt_hci_pfal_linux.c -c_sources += ftm_bt_persist.cpp -endif - -if CONFIG_FTM_FM -AM_CFLAGS += -DCONFIG_FTM_FM -c_sources += ftm_fm.c -c_sources += ftm_fm_pfal_linux.c -endif - -if CONFIG_FTM_ANT -AM_CFLAGS += -DCONFIG_FTM_ANT -c_sources += ftm_ant.c -endif - -if CONFIG_FTM_NFC -AM_CFLAGS += -DCONFIG_FTM_NFC -c_sources += ftm_nfc.c -c_sources += ftm_nfcnq.c -c_sources += ftm_nfcqti.c -c_sources += ftm_nfcnq_fwdl.c -c_sources += ftm_nfcnq_test.c -endif - -if CONFIG_FTM_WLAN - -AM_CFLAGS += -DCONFIG_FTM_WLAN -DCONFIG_FTM_WLAN_AUTOLOAD -AM_CFLAGS += $(LIBNL_CFLAGS) $(ATH6KL_UTILS_CFLAGS) -AM_CPPFLAGS += $(LIBNL_CFLAGS) $(ATH6KL_UTILS_CFLAGS) - -requiredlibs += $(ATH6KL_UTILS_LIBS) $(LIBNL_LIBS) - -c_sources += ftm_wlan.c -endif - -ftmdaemon_SOURCES = $(c_sources) -ftmdaemon_LDADD = -ldl $(requiredlibs) -lbtnv -bin_PROGRAMS = ftmdaemon diff --git a/feeds/ipq95xx/ftm/src/NOTICE b/feeds/ipq95xx/ftm/src/NOTICE deleted file mode 100755 index a74fbfab1..000000000 --- a/feeds/ipq95xx/ftm/src/NOTICE +++ /dev/null @@ -1,72 +0,0 @@ -This NOTICE file contains certain notices of software components included -with the software that Qualcomm Technologies, Inc. ("Qualcomm Technologies") -is required to provide you. Notwithstanding anything in the notices in this -file, your use of these software components together with the -Qualcomm Technologies software (Qualcomm Technologies software hereinafter -referred to as "Software") is subject to the terms of your license from -Qualcomm Technologies. Compliance with all copyright laws and software -license agreements included in the notice section of this file are the -responsibility of the user. Except as may be granted by separate express -written agreement, this file provides no license to any patents, -trademarks, copyrights, or other intellectual property. - -Copyright (c) 2016 Qualcomm Technologies, Inc. -All rights reserved. -Qualcomm is a registered trademark and registered service mark of -QUALCOMM Incorporated. All other trademarks and service marks are the -property of their respective owners. -________________________________________ -NOTICES -________________________________________ - -Copyright (C) 2010 The Android Open Source Project - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -________________________________________ - -Copyright (C) 2015 NXP Semiconductors -The original Work has been changed by NXP Semiconductors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -________________________________________ - -Copyright (C) 2015 The Android Open Source Project - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - -http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -________________________________________ - -Note: Any files for which the above Apache License notices are required -to be provided are not contributions. - -A copy of the Apache 2.0 license is included in the file LICENSE -for attribution purposes only. diff --git a/feeds/ipq95xx/ftm/src/configure.ac b/feeds/ipq95xx/ftm/src/configure.ac deleted file mode 100755 index 9dc5973f3..000000000 --- a/feeds/ipq95xx/ftm/src/configure.ac +++ /dev/null @@ -1,149 +0,0 @@ -# -*- Autoconf -*- - -# configure.ac -- Autoconf script for ftm. -# - -# Process this file with autoconf to produce a configure script - -# Requires autoconf tool later than 2.61 -AC_PREREQ(2.61) -# Initialize the ftm package version 1.0.0 -AC_INIT([ftm],1.0.0) -# Does not strictly follow GNU Coding standards -AM_INIT_AUTOMAKE([foreign]) -# Disables auto rebuilding of configure, Makefile.ins -AM_MAINTAINER_MODE -# defines some macros variable to be included by source -AC_CONFIG_HEADERS([config.h]) -AC_CONFIG_MACRO_DIR([m4]) - -# Checks for programs. -AC_PROG_CC -AC_PROG_CXX -AM_PROG_CC_C_O -AC_PROG_LIBTOOL -AC_PROG_AWK -AC_PROG_CPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET - -# Checks for libraries. -PKG_CHECK_MODULES([DIAG], [diag]) -AC_SUBST([DIAG_CFLAGS]) -AC_SUBST([DIAG_LIBS]) - -has_libnl_ver=0 -# libnl-2 provides only libnl-2.0.pc file, so we check for separate libnl-genl-3.0.pc -# pkg-config file just for libnl-3.0 case. -# -PKG_CHECK_MODULES([LIBNL], [libnl-3.0 >= 3.0 libnl-genl-3.0 >= 3.0], [has_libnl_ver=3], [ - PKG_CHECK_MODULES([LIBNL], [libnl-2.0 >= 2.0], [has_libnl_ver=2], [ - PKG_CHECK_MODULES([LIBNL], [libnl-1], [has_libnl_ver=1], [has_libnl_ver=0])])]) - -if (test "$has_libnl_ver" -eq 0); then - AC_MSG_ERROR(libnl and libnl-genl are required but were not found) -fi - -if (test "$has_libnl_ver" -gt 1); then - AC_DEFINE([HAVE_LIBNL20], [1], [Define if you have libnl-2.0 or higher]) -fi - -AC_SUBST([LIBNL_CFLAGS]) -AC_SUBST([LIBNL_LIBS]) - -PKG_CHECK_MODULES([ATH6KL_UTILS], [ath6kl-utils]) -AC_SUBST([ATH6KL_UTILS_CFLAGS]) -AC_SUBST([ATH6KL_UTILS_LIBS]) - -AC_ARG_WITH([glib], - AC_HELP_STRING([--with-glib], - [enable glib, building FTM Daemon which use glib])) - -if (test "x${with_glib}" = "xyes"); then - PKG_CHECK_MODULES(GTHREAD, gthread-2.0 >= 2.16, dummy=yes, - AC_MSG_ERROR(GThread >= 2.16 is required)) - PKG_CHECK_MODULES(GLIB, glib-2.0 >= 2.16, dummy=yes, - AC_MSG_ERROR(GLib >= 2.16 is required)) - GLIB_CFLAGS="$GLIB_CFLAGS $GTHREAD_CFLAGS" - GLIB_LIBS="$GLIB_LIBS $GTHREAD_LIBS" - - AC_SUBST(GLIB_CFLAGS) - AC_SUBST(GLIB_LIBS) -fi -AM_CONDITIONAL(USE_GLIB, test "x${with_glib}" = "xyes") - -AC_ARG_ENABLE([debug], - [ --enable-debug Turn on debugging], - [case "${enableval}" in - yes) debug=true ;; - no) debug=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-debug]) ;; - esac],[debug=false]) - -AM_CONDITIONAL([DEBUG], [test x$debug = xtrue]) - -AC_ARG_ENABLE([all], - [ --enable-all Enable all FTM functionality], - [case "${enableval}" in - yes) all=true ;; - no) all=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-all]) ;; - esac],[all=false]) - -AM_CONDITIONAL([CONFIG_FTM_BT], [test x$all = xtrue]) -AM_CONDITIONAL([CONFIG_FTM_FM], [test x$all = xtrue]) -AM_CONDITIONAL([CONFIG_FTM_ANT], [test x$all = xtrue]) -AM_CONDITIONAL([CONFIG_FTM_NFC], [test x$all = xtrue]) - -AC_ARG_ENABLE([wlan], - [ --enable-wlan Enable WLAN FTM functionality], - [case "${enableval}" in - yes) wlan=true ;; - no) wlan=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-wlan]) ;; - esac],[wlan=false]) - -AM_CONDITIONAL([CONFIG_FTM_WLAN], [test x$wlan = xtrue -o x$all = xtrue]) - -AC_ARG_ENABLE([bt], - [ --enable-bt Enable BT FTM functionality], - [case "${enableval}" in - yes) bt=true ;; - no) bt=false ;; - *) AC_MSG_ERROR([bad value ${enableval} for --enable-bt]) ;; - esac],[bt=false]) - -AM_CONDITIONAL([CONFIG_FTM_BT], [test x$bt = xtrue -o x$all = xtrue]) - - -AC_ARG_ENABLE(target, - [AS_HELP_STRING([--enable-target=TARGET], [Specify the target product to build])], - [TARGET=$enableval], - [TARGET=none] -) -AM_CONDITIONAL([MDM_ROME], [test "x$TARGET" = "xmdm9607" -o "x$TARGET" = "xmdm9635" -o "x$TARGET" = "xmdm9640" -o "x$TARGET" = "xmdmcalifornium"]) -AM_CONDITIONAL([MDM_PRONTO], [test "x$TARGET" = "xapq8009" -o "x$TARGET" = "xapq8017" -o "x$TARGET" = "xapq8053"]) - -# Checks for typedefs, structures, and compiler characteristics. -AC_HEADER_STDBOOL -AC_HEADER_STDC -AC_C_INLINE -AC_TYPE_INT64_T -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_TYPE_SSIZE_T -AC_TYPE_UINT16_T -AC_TYPE_UINT32_T -AC_TYPE_UINT8_T - -# Checks for library functions. -AC_FUNC_ERROR_AT_LINE -AC_FUNC_FORK -AC_FUNC_MALLOC - -AC_CONFIG_FILES([ \ - Makefile \ - ]) -AC_OUTPUT - diff --git a/feeds/ipq95xx/ftm/src/ftm_ant.c b/feeds/ipq95xx/ftm/src/ftm_ant.c deleted file mode 100755 index 5adb48ba1..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_ant.c +++ /dev/null @@ -1,585 +0,0 @@ -/*========================================================================== - - FTM ANT Source File - -Description - FTM platform independent processing of packet data - -# Copyright (c) 2010-2012 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -05/16/12 ankurn Adding support for ANT commands -11/28/12 c_ssugas implements efficent method for Ant cmd transfer - and implements Rx thread for event handling. -===========================================================================*/ -#include "event.h" -#include "msg.h" -#include "log.h" - -#include "diag_lsm.h" -#include "diagpkt.h" -#include "diagcmd.h" -#include "diag.h" -#include "termios.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bt_vendor_qcom.h" -#include "ftm_ant_common.h" -#include "ftm_bt.h" -#include -#include "hidl_client.h" - -#ifdef ANDROID -#include -#endif - -#ifdef ANDROID -extern int soc_type; -#endif - -#define ANT_CTRL_PACKET_TYPE 0x0c -#define ANT_DATA_PACKET_TYPE 0x0e - -#define UNUSED(x) (void)(x) - -int init_transport_ant(int on); -// The following functions are dummy implementations of the callbacks required by libbt-vendor. -static void vendor_fwcfg_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_scocfg_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_lpm_vnd_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_audio_state_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void* vendor_alloc(int size) { - UNUSED(size); - return NULL; -} -static void vendor_dealloc(void *p_buf) { - UNUSED(p_buf); -} -static uint8_t vendor_xmit_cb(uint16_t opcode, void *p_buf, tINT_CMD_CBACK p_cback) { - UNUSED(opcode); - UNUSED(p_buf); - UNUSED(p_cback); - return 0; -} -static void vendor_epilog_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_a2dp_offload_cb(bt_vendor_op_result_t result, bt_vendor_opcode_t op, unsigned char handle) { - UNUSED(result); - UNUSED(op); - UNUSED(handle); -} - -// This struct is used to regsiter the dummy callbacks with libbt-vendor -static bt_vendor_interface_t *vendor_interface=NULL; -static const bt_vendor_callbacks_t vendor_callbacks = { - sizeof(bt_vendor_callbacks_t), - vendor_fwcfg_cb, - vendor_scocfg_cb, - vendor_lpm_vnd_cb, - vendor_audio_state_cb, - vendor_alloc, - vendor_dealloc, - vendor_xmit_cb, - vendor_epilog_cb, - vendor_a2dp_offload_cb -}; - -/* Transport file descriptor */ -int fd_transport_ant_cmd; -extern int first_ant_command; -/* Reader thread handle */ -pthread_t ant_cmd_thread_hdl; -/* Pipe file descriptors for cancelling read operation */ -int ant_pipefd[2]; - -/* Enable FTM_DEBUG to turn on Debug messages */ -//#define FTM_DEBUG - -/*=========================================================================== -FUNCTION ftm_ant_readerthread - -DESCRIPTION - Thread Routine to perfom asynchrounous handling of events coming on Smd - descriptor. It invokes a callback to the FTM ANT layer to intiate a request - to read event bytes. - -DEPENDENCIES - The LifeTime of ReaderThraad is dependent on the status returned by the - call to ftm_ant_qcomm_handle_event - -RETURN VALUE - RETURN NULL - -SIDE EFFECTS - None - -===========================================================================*/ -void *ftm_ant_readerthread(void *ptr) -{ - boolean status = FALSE; - int retval; - fd_set readfds; - int buf; - - UNUSED(ptr); -#ifdef FTM_DEBUG - printf("ftm_ant_readerthread --> \n"); -#endif - do - { - FD_ZERO(&readfds); - FD_SET(fd_transport_ant_cmd, &readfds); - FD_SET(ant_pipefd[0],&readfds); - retval = select((fd_transport_ant_cmd>ant_pipefd[0]?fd_transport_ant_cmd - :ant_pipefd[0]) + 1, &readfds, NULL, NULL, NULL); - if(retval == -1) - { - printf("select failed\n"); - break; - } - if(FD_ISSET(ant_pipefd[0],&readfds)) - { -#ifdef FTM_DEBUG - printf("Pipe descriptor set\n"); -#endif - read(ant_pipefd[0],&buf,1); - if(buf == 1) - break; - } - if(FD_ISSET(fd_transport_ant_cmd,&readfds)) - { -#ifdef FTM_DEBUG - printf("Read descriptor set\n"); -#endif - status = ftm_ant_qcomm_handle_event(); - if(TRUE != status) - break; - } - } - while(1); -#ifdef FTM_DEBUG - printf("\nReader thread exited\n"); -#endif - return 0; -} - -/*=========================================================================== -FUNCTION ftm_ant_open_channel - -DESCRIPTION - Open the SMD transport associated with ANT - -DEPENDENCIES - NIL - -RETURN VALUE - int value indicating success or failure - -SIDE EFFECTS - NONE - -===========================================================================*/ -static bool ftm_ant_open_channel() -{ - struct termios term_port; - int opts; - - printf("%s: \n",__func__ ); - switch (soc_type) - { - case BT_SOC_ROME: - case BT_SOC_CHEROKEE: - case BT_SOC_NAPIER: - //Use hidl_client_initialize for chip initialization - if (hidl_client_initialize(MODE_ANT,&fd_transport_ant_cmd) == false) { - printf("%s: HIDL client initialization failed, opening port with init_transpor_ant\n", __func__); - //Use libbt-vendor for chip initialization - fd_transport_ant_cmd = init_transport_ant(TRUE); - if (fd_transport_ant_cmd == -1) { - printf("%s: ANT Device open Failed, fd:%d: \n", __func__, fd_transport_ant_cmd); - return false; - } - } - break; - case BT_SOC_AR3K: - case BT_SOC_SMD: -#ifdef FTM_DEBUG - printf("ftm_ant_open_channel --> \n"); -#endif - - fd_transport_ant_cmd = open(APPS_RIVA_ANT_CMD_CH, (O_RDWR)); - if (fd_transport_ant_cmd == -1) { - printf("Ant Device open Failed= %d\n ", fd_transport_ant_cmd); - return false; - } - - // Blocking Read - opts = fcntl(fd_transport_ant_cmd, F_GETFL); - if (opts < 0) { - perror("fcntl(F_GETFL)"); - exit(EXIT_FAILURE); - } - - opts = opts & (~O_NONBLOCK); - if (fcntl(fd_transport_ant_cmd, F_SETFL, opts) < 0) { - perror("fcntl(F_SETFL)"); - exit(EXIT_FAILURE); - } - - if (tcgetattr(fd_transport_ant_cmd, &term_port) < 0) - close(fd_transport_ant_cmd); - cfmakeraw(&term_port); - if (tcsetattr(fd_transport_ant_cmd, TCSANOW, &term_port) < 0) { - printf("\n Error while setting attributes\n"); - return false; - } - - tcflush(fd_transport_ant_cmd, TCIFLUSH); -#ifdef FTM_DEBUG - printf("ftm_ant_open_channel success \n"); -#endif - break; - default: - ALOGE("%s:Unknown soc type.",__func__); - return false; - } - if (pipe(ant_pipefd) == -1) - { - printf("pipe create error"); - return STATUS_FAIL; - } - /* Creating read thread which listens for various masks & pkt requests */ - pthread_create( &ant_cmd_thread_hdl, NULL, ftm_ant_readerthread, NULL); - return true; -} - -int init_transport_ant(int on) { - - void *so_handle; - unsigned char bdaddr[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; - int fd[CH_MAX], powerstate, ret = -1; - char ref_count[PROPERTY_VALUE_MAX]; - int value; - - if (on) { - so_handle = dlopen("libbt-vendor.so", RTLD_NOW); - if (!so_handle) - { - ALOGE("Failed to load vendor component"); - return -1; - } - - vendor_interface = (bt_vendor_interface_t *) dlsym(so_handle, "BLUETOOTH_VENDOR_LIB_INTERFACE"); - if (!vendor_interface) - { - ALOGE("Failed to accesst bt vendor interface"); - return -1; - } - - vendor_interface->init(&vendor_callbacks, bdaddr); - - ALOGI("Turn On BT power"); - powerstate = BT_VND_PWR_ON; - ret = vendor_interface->op(BT_VND_OP_POWER_CTRL, &powerstate); - if (ret < 0) - { - ALOGE("Failed to turn on power from bt vendor interface"); - return -1; - } - for (int i = 0; i < CH_MAX; i++) - fd[i] = -1; - -#ifdef ANDROID - if (soc_type == BT_SOC_ROME || soc_type == BT_SOC_CHEROKEE || soc_type == BT_SOC_NAPIER) { - /*call ANT_USERIAL_OPEN to get ANT handle*/ - ret = vendor_interface->op((bt_vendor_opcode_t)BT_VND_OP_ANT_USERIAL_OPEN, fd); - } -#else -#ifdef BT_SOC_TYPE_ROME - /*call ANT_USERIAL_OPEN to get ANT handle*/ - ret = vendor_interface->op((bt_vendor_opcode_t)BT_VND_OP_ANT_USERIAL_OPEN, fd); -#endif -#endif - ALOGE("ret value: %d", ret); - if (ret != 1) - { - ALOGE("Failed to get fd from bt vendor interface"); - return -1; - } else { - ALOGE("FD: %x", fd[0]); - return fd[0]; - } - } else { - if (vendor_interface) { - ALOGE("Close and cleanup the interfaces"); - -#ifdef ANDROID - if (soc_type == BT_SOC_ROME || soc_type == BT_SOC_CHEROKEE || soc_type == BT_SOC_NAPIER) { - int ret = vendor_interface->op((bt_vendor_opcode_t)BT_VND_OP_ANT_USERIAL_CLOSE, NULL); - } -#else -#ifdef BT_SOC_TYPE_ROME - int ret = vendor_interface->op((bt_vendor_opcode_t)BT_VND_OP_ANT_USERIAL_CLOSE, NULL); -#endif -#endif - - ALOGE("ret value: %d", ret); - ALOGI("Turn off BT power"); - powerstate = BT_VND_PWR_OFF; - ret = vendor_interface->op(BT_VND_OP_POWER_CTRL, &powerstate); - if (ret < 0) - { - ALOGE("Failed to turn off power from bt vendor interface"); - return -1; - } - vendor_interface->cleanup(); - vendor_interface = NULL; - return 0; - } else { - - ALOGE("Not able to find vendor interface handle"); - return -1; - } - } -} - -/*=========================================================================== -FUNCTION ftm_log_send_msg - -DESCRIPTION - Processes the buffer sent and sends it to the libdiag for sending the Cmd - response - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_ant_log_send_msg(const uint8 *pEventBuf,int event_bytes) -{ - int result = log_status(LOG_FTM_VER_2_C); - ftm_ant_log_pkt_type* ftm_ant_log_pkt_ptr = NULL; - - if((pEventBuf == NULL) || (event_bytes == 0)) - return; -#ifdef FTM_DEBUG - printf("ftm_ant_log_send_msg --> \n"); -#endif - if(result == 1) - { - ftm_ant_log_pkt_ptr = (ftm_ant_log_pkt_type *)log_alloc(LOG_FTM_VER_2_C, - FTM_ANT_LOG_HEADER_SIZE + (event_bytes-1)); - if(ftm_ant_log_pkt_ptr != NULL) - { - /* FTM ANT Log PacketID */ - ftm_ant_log_pkt_ptr->ftm_log_id = FTM_ANT_LOG_PKT_ID; - memcpy((void *)ftm_ant_log_pkt_ptr->data,(void *)pEventBuf,event_bytes); - log_commit( ftm_ant_log_pkt_ptr ); - } - } -} - -/*=========================================================================== -FUNCTION ftm_ant_dispatch - -DESCRIPTION - Dispatch routine for the various FM Rx/Tx commands. Copies the data into - a global union data structure before calling the processing routine - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -void * ftm_ant_dispatch(ftm_ant_pkt_type *ant_ftm_pkt, uint16 pkt_len) -{ - ftm_ant_generic_sudo_res *rsp; - int err = 0, i; - int data_len = ant_ftm_pkt->cmd_data_len; - bool resp = false; - unsigned char *pdata = NULL, *ptemp; -#ifdef FTM_DEBUG - printf("ftm_ant_dispatch --> \n"); -#endif - - UNUSED(pkt_len); - - if (first_ant_command == 0) { - first_ant_command = 1; - ftm_ant_open_channel(); - } - - rsp = (ftm_ant_generic_sudo_res*)diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_ANT_CMD_CODE - , sizeof(ftm_ant_generic_sudo_res) - ); - if(rsp == NULL) - { - printf("%s Failed to allocate resource",__func__); - return NULL; - } - - switch (soc_type) { - //Rome shares the same UART transport for ANT and BT. Hence, to differenciate the - //packets by controller, adding one extra byte for ANT data and control packets - case BT_SOC_ROME: - case BT_SOC_CHEROKEE: - case BT_SOC_NAPIER: - data_len = data_len + 1; - pdata = (unsigned char *) malloc(data_len); - if (pdata == NULL) { - ALOGE("Failed to allocate the memory for ANT command packet"); - rsp->result = FTM_ANT_FAIL; - return (void *) rsp; - } - //To be compatible with Legacy, SMD based PLs, send all the packets - //with cmd opcode 0x0c - pdata[0] = 0x0c; - memcpy(pdata+1, ant_ftm_pkt->data, data_len-1); - err = write(fd_transport_ant_cmd, pdata, data_len); - ptemp = pdata; - break; - case BT_SOC_AR3K: - case BT_SOC_SMD: - /* Send the packet to controller and send a dummy response back to host*/ - err = write(fd_transport_ant_cmd, ant_ftm_pkt->data, data_len); - ptemp = ant_ftm_pkt->data; - break; - default: - ALOGE("%s:Unknown soc type", __func__); - break; - } - if (err == data_len) { - rsp->result = FTM_ANT_SUCCESS; - printf("ANT CMD: "); - for (i = 1; iresult = FTM_ANT_FAIL; - printf("FTM ANT write fail len: %d\n", err); - } - if (pdata) - free(pdata); - return (void *)rsp; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_qcomm_handle_event - -DESCRIPTION - Routine called by the HAL layer reader thread to process the HCI events - The post conditions of each event is covered in a state machine pattern - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_ant_qcomm_handle_event () -{ - boolean status = TRUE; - int nbytes,i,len =0; - int event_type; - ftm_ant_generic_res *res = (ftm_ant_generic_res *)diagpkt_subsys_alloc( - DIAG_SUBSYS_FTM - , FTM_ANT_CMD_CODE - , sizeof(ftm_ant_generic_res) - ); - if(res == NULL) - { - printf("%s Failed to allocate res",__func__); - tcflush(fd_transport_ant_cmd, TCIFLUSH); - return FALSE; - } -#ifdef FTM_DEBUG - printf("ftm_ant_hci_qcomm_handle_event --> \n"); -#endif - - /* Read length and event type of Ant Resp event*/ - nbytes = read(fd_transport_ant_cmd, (void *)res->evt, 2); - if(nbytes <= 0) { - status = FALSE; - printf("ftm_ant_qcomm_handle_event read fail len=%d\n", nbytes); - return status; - } - event_type = res->evt[0]; - len = res->evt[1]; -#ifdef FTM_DEBUG - printf(" event type =%d\n",event_type); - printf("length of event =%d\n",len); -#endif - /* Read out the Ant Resp event*/ - if (len <= (int)sizeof(res->evt)) - { - nbytes = read(fd_transport_ant_cmd, (void *)res->evt, len); - if (nbytes != len) { - res->result = FTM_ANT_FAIL; - status = FALSE; - printf("ftm_ant_qcomm_handle_event read fail len=%d\n", nbytes); - } - else { - res->result = FTM_ANT_SUCCESS; - printf("ANT EVT: "); - for (i=0; ievt[i]); - } - printf("\n"); - ftm_ant_log_send_msg(res->evt, nbytes); - tcflush(fd_transport_ant_cmd, TCIOFLUSH); - } - } - else - { - res->result = FTM_ANT_FAIL; - status = FALSE; - printf("ftm_ant_qcomm_handle_event read fail len=%d is more than sizeof(res->evt)=%d\n", len, (int)sizeof(res->evt)); - } - return status; -} diff --git a/feeds/ipq95xx/ftm/src/ftm_ant_common.h b/feeds/ipq95xx/ftm/src/ftm_ant_common.h deleted file mode 100755 index c40e1caf8..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_ant_common.h +++ /dev/null @@ -1,124 +0,0 @@ -/*========================================================================== - - FTM FM Common Header File - -Description - Global Data declarations of the ftm ant component. - -# Copyright (c) 2012,2014 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -05/16/2012 ankurn Adding support for ANT+ -11/28/12 c_ssugas Adds data structures and macro for ant log event support. -===========================================================================*/ - -#ifdef CONFIG_FTM_ANT - -#include "diagpkt.h" -#include "log.h" -#include "ftm_bt_common.h" - -#include - -#define APPS_RIVA_ANT_CMD_CH "/dev/smd5" -#define APPS_RIVA_ANT_DATA_CH "/dev/smd6" - -#define FTM_ANT_CMD_CODE 94 -#define OPCODE_OFFSET 5 - -#define FTM_ANT_LOG_HEADER_SIZE (sizeof(ftm_ant_log_pkt_type) - 1) -#define FTM_ANT_LOG_PKT_ID 0x0D - -/* FTM Log Packet - Used to send back the event of a ANT Command */ -typedef PACKED struct -{ - log_hdr_type hdr; - word ftm_log_id; /* FTM log id */ - byte data[1]; /* Variable length payload, - look at FTM log id for contents */ -} ftm_ant_log_pkt_type; - -/* Generic result, used for any command that only returns an error code */ -typedef enum { - FTM_ANT_FAIL, - FTM_ANT_SUCCESS, -} ftm_ant_api_result_type; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; -} ftm_ant_generic_sudo_res; - - -/* Generic Response */ -typedef PACKED struct -{ - diagpkt_subsys_header_type header; /*Diag header*/ - uint8 evt[18]; /*allocates memory to hold longest valid event */ - char result; /* result */ -}__attribute__((packed)) ftm_ant_generic_res; - -/* FTM ANT request type */ -typedef PACKED struct -{ - diagpkt_cmd_code_type cmd_code; - diagpkt_subsys_id_type subsys_id; - diagpkt_subsys_cmd_code_type subsys_cmd_code; - uint8 cmd_id; /* command id (required) */ - uint8 cmd_data_len; - byte data[1]; -}__attribute__((packed))ftm_ant_pkt_type; - - - -/*=========================================================================== -FUNCTION ftm_ant_dispatch - -DESCRIPTION - Dispatch routine for the various ANT commands. Copies the data into - a global union data structure before calling the processing routine - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the FTM ANT packet - -SIDE EFFECTS - None - -===========================================================================*/ - -void * ftm_ant_dispatch(ftm_ant_pkt_type *ftm_ant_pkt, uint16 length ); - -/*=========================================================================== -FUNCTION ftm_ant_qcomm_handle_event - -DESCRIPTION - Handler for the various ANT Events received. Sends data as log packets - using diag to upper layers. -DEPENDENCIES - NIL - -RETURN VALUE - Status value TRUE if event received successfuly - otherwise returns status value FALSE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_ant_qcomm_handle_event (); - -#endif /* CONFIG_FTM_ANT */ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt.c b/feeds/ipq95xx/ftm/src/ftm_bt.c deleted file mode 100755 index 4f0475140..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt.c +++ /dev/null @@ -1,2013 +0,0 @@ -/*========================================================================== - - FTM BT Task Source File - -Description - FTM state machine and platform independent routines for BT - -# Copyright (c) 2010-2013 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -02/29/12 rrr Added/Modified LE & BR/EDR power class configuration -09/27/11 bneti Added packet indicator for hci events for msm8960 -09/28/11 rrr Moved peristent NV item related APIs to CPP, - for having BD address being programmed twice if previous - BD address was random generated. -06/07/11 bneti Add support smd support for msm8960 -09/03/11 agaja Added support for NV_READ and NV_WRITE Commands to write - onto Persist File system -02/08/11 braghave Reading the HCI commands from binary file - for non-Android case -01/19/11 rakeshk Added the connectivity test implementation -01/07/11 rakeshk Updated the debug log warnings related to typecasting -07/07/10 rakeshk Updated the function name of BT power set routine - of pointers -06/18/10 rakeshk Created a source file to implement routines for FTM - states and command processing -==========================================================================*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "ftm_bt_power_hal.h" -#include "ftm_fm_common.h" -#include "ftm_bt_hci_hal.h" -#include "ftm_common.h" -#include -#ifdef BT_NV_SUPPORT -#include "ftm_bt_persist.h" -#endif -#include "hidl_client.h" - -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0])) -#define I2C_SLAVE_ADDR 0x0C -#define MAX_PIN_CONFIGS 8 - -#define NVM_PAYLOAD_MAXLENGTH (1024) -#define MAX_FILE_NAME (255) -#define LOG_FTM_FM_C ((uint16) 0x14CC) - -extern uint8_t is_slim_bus_test; -int fd_pintest = -1; -FILE *fp; -unsigned char *nvm_cmd; -typedef struct pintest { - char *gpiostring; - /* GPIO number */ - int gpionum; - /* Pin control register */ - int pinctrlreg; - /* Data register */ - int datareg; - /* Bit position in Data register */ - int bitpos; - /* Direction of the Pin */ - char direction; -} pintest; - -typedef struct platformpintest { - /* MSM number for pin test*/ - int platform; - /* Pin test config */ - pintest pinconfig[MAX_PIN_CONFIGS]; - /* Pin direction config register 0 */ - int pinctloe0; - /* Pin direction config register 1 */ - int pinctloe1; - /* Data register 0 */ - int pinctldata0; - /* Data register 1 */ - int pinctldata1; - /* PIN CTL enable value */ - int pinctlenable; - /* Output enable mask for UART pins */ - int hcioeenablemask; - /* Output enable mask for AUX PCM pins */ - int pcmoeenablemask; -}platformpintest; - -const platformpintest pintestconfigs[] = { - { - .platform = 8660, - .pinconfig = { - { - .gpiostring = "53",/*UARTDM_TX*/ - .gpionum = 53, - .pinctrlreg = 0x87,/*BT_HCI_0_MODE*/ - .datareg = 0x0D,/*PIN_CTL_DATA0*/ - .bitpos = 7, - .direction = 1, - }, - { - .gpiostring = "54",/*UARTDM_RX*/ - .gpionum = 54, - .pinctrlreg = 0x86,/*BT_HCI_1_MODE*/ - .datareg = 0x0D,/*PIN_CTL_DATA0*/ - .bitpos = 6, - .direction = 0, - }, - { - .gpiostring = "55",/*UARTDM_CTS*/ - .gpionum = 55, - .pinctrlreg = 0x84,/*BT_HCI_3_MODE*/ - .datareg = 0x0D,/*PIN_CTL_DATA0*/ - .bitpos = 4, - .direction = 0, - }, - { - .gpiostring = "56",/*UARTDM_RFR*/ - .gpionum = 56, - .pinctrlreg = 0x85,/*BT_HCI_2_MODE*/ - .datareg = 0x0D,/*PIN_CTL_DATA0*/ - .bitpos = 5, - .direction = 1, - }, - { - .gpiostring = "111",/*AUX_PCM_DOUT_S*/ - .gpionum = 111, - .pinctrlreg = 0x89,/*BT_PCM_DIN_MODE */ - .datareg = 0x0E,/*PIN_CTL_DATA1*/ - .bitpos = 1, - .direction = 1, - }, - { - .gpiostring = "112",/*AUX_PCM_DIN_S*/ - .gpionum = 112, - .pinctrlreg = 0x8A,/*BT_PCM_DOUT_MODE*/ - .datareg = 0x0E,/*PIN_CTL_DATA1*/ - .bitpos = 2, - .direction = 0, - }, - { - .gpiostring = "113",/*AUX_PCM_SYNC_S*/ - .gpionum = 113, - .pinctrlreg = 0x8B,/*BT_PCM_SYNC_MODE*/ - .datareg= 0x0E,/*PIN_CTL_DATA1*/ - .bitpos = 3, - .direction = 1, - }, - { - .gpiostring = "114",/*AUX_PCM_CLK_S*/ - .gpionum = 114, - .pinctrlreg = 0x88,/* BT_PCM_BCLK_MODE */ - .datareg = 0x0E,/*PIN_CTL_DATA1*/ - .bitpos = 0, - .direction = 1, - }, - }, - .pinctloe0 = 0xA, - .pinctloe1 = 0xB, - .pinctldata0 = 0xD, - .pinctldata1 = 0xE, - .pinctlenable = 0x15, - .hcioeenablemask = 0x50, - .pcmoeenablemask = 0x04, - }, -}; -platformpintest *pintestconfig= (platformpintest *)&pintestconfigs[0]; -/* I2C bus and GPIO mux entry drivers */ -#define I2C_PATH "/dev/i2c-4" -#define PINTEST_ENABLE_PATH "/sys/kernel/debug/btpintest/enable" - -const char HIGH = '1'; -const char LOW = '0'; - -/* ------------------------------------------------------------------------- -** Definitions and Declarations -** ------------------------------------------------------------------------- */ - -/*Flag to manage the verbose output */ -extern int verbose; -/* HCI Command buffer */ -static uint8 bt_ftm_buffer[BT_FTM_CMD_RSP_LEN]; -/* HCI Event buffer */ -static uint8 event_buf[HC_VS_MAX_ACL]; -/* Varibale to handle the stages of Sleep disable cmds */ -static int sleep_stage =0; -/* FTM Global state variable */ -static ftm_state global_state = FTM_SOC_NOT_INITIALISED; -/* pointer to the SOC version string */ -static uint8 *bt_soc_app_version_string = NULL; -/*variable to identify the msm type*/ -static boolean is_transportSMD = 0; -/* Variables to identify the platform */ -extern char transport_type[PROPERTY_VALUE_MAX]; -/* Default hw version register contents for 4020BD B0, if it's different than it's 4020BD B1 */ -static uint8 bt_soc_hw_version[] = -{ - 0x05, 0x00, 0x00, 0x00 -}; -/* Default Bluetooth address if read from NV fails, same in AMSS */ -static const uint8 default_bt_bd_addr[] = -{ - 0x34, 0x12, 0x78, 0x56, 0xBC, 0x9A -}; -/* Uart Protocol config tag*/ -static const bt_qsoc_cfg_tbl_struct_type bt_qsoc_tag17 = -{ - 0x8, {0x01, 0x11, 0x05, 0x0A, 0x01, 0x00, 0x00, 0x00,} -}; - -/* Uart Protocol config tag for latest hw */ -static const bt_qsoc_cfg_tbl_struct_type bt_qsoc_tag17_latest_hw = -{ - 0x0B, {0x01, 0x11, 0x08, 0x02,0x01,0x0E,0x08,0x04,0x32,0x0A,0x00} -}; - -/* FTM status log size*/ -const uint8 logsize = 2; -/* HCI user Cmd pass Log Packet */ -const uint8 event_buf_user_cmd_pass[2] = {0x0f,FTM_BT_DRV_NO_ERR}; -/* HCI user Cmd fail Log Packet */ -const uint8 event_buf_user_cmd_fail[2] = {0x0f,FTM_BT_DRV_CONN_TEST_FAILS}; -/* HCI user Cmd timed out Log Packet */ -const uint8 event_buf_user_cmd_timeout[2] = {0x0f,FTM_BT_DRV_NO_SOC_RSP_TOUT}; -/* HCI user Cmd Unknown error Log Packet */ -const uint8 event_buf_user_unknown_err[2] = {0x0f,FTM_BT_DRV_UNKNOWN_ERR}; - -struct first_cmd ptr_powerup; -#ifdef USE_LIBSOCCFG -/* Run time SoC Cfg paramters */ -ftm_bt_soc_runtime_cfg_type soc_cfg_parameters; -#endif -/* Peek table Loop count for 4025 R3 SoC */ -uint loopCount; -/* Command Queue front pointer */ -cmdQ *front = NULL; -/* Command Queue rear pointer */ -cmdQ *rear = NULL; -/* cmd count for unprocessed cmds in queue */ -uint32 num_pending_cmds = 0; -/* Descriptors for connectivity test */ -static int fd_i2c; -static char ctime_buf[10]; - -char *get_current_time(void) -{ - struct timeval tv; - time_t ctime; - - gettimeofday(&tv, NULL); - ctime = tv.tv_sec; - strftime(ctime_buf, 10, "%T", localtime(&ctime)); - return ctime_buf; -} -/*=========================================================================== -FUNCTION qinsert_cmd - -DESCRIPTION - Command Queue insert routine. Add the FTM BT packet to the Queue - -DEPENDENCIES - NIL - -RETURN VALUE - RETURNS FALSE without adding queue entry in failure - to allocate a new Queue item - else returns TRUE - -SIDE EFFECTS - increments the number of commands queued - -===========================================================================*/ -boolean qinsert_cmd(ftm_bt_pkt_type *ftm_bt_pkt) -{ - cmdQ *newitem; -#ifdef FTM_DEBUG - printf("qinsert_cmd > rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif - if(num_pending_cmds == 20) - { - ftm_log_send_msg(&event_buf_user_unknown_err[0],logsize); - return FALSE; - } - newitem = (cmdQ*)malloc(sizeof(cmdQ)); - if(newitem == NULL) - { - ftm_log_send_msg(&event_buf_user_unknown_err[0],logsize); - return FALSE; - } - newitem->next=NULL; - newitem->data = (void *)malloc(ftm_bt_pkt->ftm_hdr.cmd_data_len); - if(newitem->data == NULL) - { - free(newitem); - ftm_log_send_msg(&event_buf_user_unknown_err[0],logsize); - return FALSE; - } - /* Copy the data into the queue buffer */ - memcpy(newitem->data,(void*)ftm_bt_pkt->data, ftm_bt_pkt->ftm_hdr.cmd_data_len); - /* Set Flag to notify BT command*/ - newitem->bt_command = 1; - newitem->cmd_len = ftm_bt_pkt->ftm_hdr.cmd_data_len; - - if(front==NULL && rear==NULL) - { - front=newitem; - rear=newitem; - } - else - { - (rear)->next=newitem; - rear=newitem; - } - num_pending_cmds++; -#ifdef FTM_DEBUG - printf("qinsert_cmd < rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif - return TRUE; -} - -/*=========================================================================== -FUNCTION dequeue_send - -DESCRIPTION - Command Queue delete and calls HCI send routine. Dequeues the HCI data from - the queue and sends it to HCI HAL layer. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - decrements the number of command queued - -===========================================================================*/ -void dequeue_send() -{ - cmdQ *delitem; /* Node to be deleted */ -#ifdef FTM_DEBUG - printf("dequeue_send > rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif - if((front)==NULL && (rear)==NULL) - printf("\nQueue is empty to delete any element\n"); - else - { - delitem=front; - if(delitem) - { - ftm_bt_dispatch(delitem->data,delitem->cmd_len); - front=front->next; - if(front == NULL) - { - rear = NULL; - num_pending_cmds = 0; - } - free(delitem->data); - free(delitem); - num_pending_cmds--; - } - } -#ifdef FTM_DEBUG - printf("dequeue_send < rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif -} - -/*=========================================================================== -FUNCTION cleanup_pending_cmd_queue - -DESCRIPTION - Command Queue delete routine. Dequeues the HCI cmds from the - queue. This routine is useful in case the HCI interface has - hung up and a FTM module restart is immimnent. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - NONE - -===========================================================================*/ - -void cleanup_pending_cmd_queue() -{ - cmdQ *delitem; /* Node to be deleted */ -#ifdef FTM_DEBUG - printf("cleanup_pending_cmd_queue > rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif - if((front==NULL) && (rear==NULL)) - { - printf("\nQueue is empty to delete any element\n"); - } - else - { - while(front != NULL) - { - delitem=front; - front=front->next; - if(front == NULL) - rear = NULL; - free(delitem->data); - free(delitem); - } - } -#ifdef FTM_DEBUG - printf("cleanup_pending_cmd_queue < rear = 0x%x front = 0x%x\n", - (unsigned int)rear,(unsigned int)front); -#endif -} - -/*=========================================================================== -FUNCTION ftm_bt_err_timedout - -DESCRIPTION - This routine triggers the shutdown of the HCI and Power resources in case - a HCI command previously sent times out. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - NONE - -===========================================================================*/ -void ftm_bt_err_timedout() -{ - ftm_bt_hci_hal_deinit_transport(); - if(!is_transportSMD) - ftm_bt_power_hal_set(BT_OFF); -#ifdef FTM_DEBUG - printf("\nTimed out \n"); -#endif - global_state = FTM_SOC_NOT_INITIALISED; - cleanup_pending_cmd_queue(); - ftm_log_send_msg(&event_buf_user_cmd_timeout[0],logsize); -} - -/*=========================================================================== -FUNCTION export_gpio - -DESCRIPTION - Writes the gpio number passed in the argumnet to export a sysfs entry - -DEPENDENCIES - NIL - -RETURN VALUE - number of bytes written - -SIDE EFFECTS - None - -===========================================================================*/ -int export_gpio(int fd,char *gpionum) -{ - int sz; - sz = write(fd,gpionum,strlen(gpionum)); - return sz; -} -/*=========================================================================== -FUNCTION ftm_bt_conn_init - -DESCRIPTION - Initialises the connectivity test settings - 1. Exports the sysfs entries for MSM GPIOs - 2. Configures the TLMM settings on BT SoC to be in I2C PIN - control mode and directions. - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE,if the init fails - TRUE,if it passes - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_conn_init(void) -{ - char out[] = "out"; - char in[] = "in"; - int sz,i; - unsigned char buffer; - char direction_path[64]; - int fd_gpio = -1; - int fd = -1; -#ifdef FTM_DEBUG - printf("ftm_bt_conn_init start \n"); -#endif - fd_gpio = open("/sys/class/gpio/export", O_WRONLY); - - if(fd_gpio < 0) - return FALSE; - - for(i = 0; i < MAX_PIN_CONFIGS; i++) - { -#ifdef FTM_DEBUG - printf("pintestconfig->gpiostring = %s\n",pintestconfig->pinconfig[i].gpiostring); -#endif - sz = export_gpio(fd_gpio,pintestconfig->pinconfig[i].gpiostring); - if (sz < 0) - { - goto out; - } - } -#ifdef FTM_DEBUG - printf("Enabling pin test path\n"); -#endif - /* Configure the TLMM settings for the GPIOs requested using export */ - fd = open(PINTEST_ENABLE_PATH, O_WRONLY); - if(fd < 0) - goto out; - - buffer = HIGH; - sz = write(fd,&buffer,sizeof(buffer)); - if (sz < 0) - { - goto out; - } - close(fd); -#ifdef FTM_DEBUG - printf("open I2C_PATH\n"); -#endif - fd_i2c = open(I2C_PATH,O_RDWR); - - if(fd_i2c < 0) - { - goto out; - } - - buffer = pintestconfig->pinctlenable; - for(i = 0; i < MAX_PIN_CONFIGS ; i++) - { -#ifdef FTM_DEBUG - printf("pintestconfig->pinconfig[i]pinctrlreg = 0x%x\n",pintestconfig->pinconfig[i].pinctrlreg); -#endif - sz = i2c_write(fd_i2c,pintestconfig->pinconfig[i].pinctrlreg,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - if (sz < 0) - { - goto out; - } - } - - buffer = pintestconfig->hcioeenablemask; - sz = i2c_write(fd_i2c,pintestconfig->pinctloe0,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - if (sz < 0) - { - goto out; - } - for(i = 0; i < MAX_PIN_CONFIGS; i++) - { - snprintf(direction_path,sizeof(direction_path), - "/sys/class/gpio/gpio%d/direction", pintestconfig->pinconfig[i].gpionum); - fd = open(direction_path,O_WRONLY); - if(fd < 0) - goto out; - if(pintestconfig->pinconfig[i].direction) - sz = write(fd,&out,sizeof(out)); - else - sz = write(fd,&in,sizeof(in)); - if (sz < 0) - { - goto out; - } - close(fd); - } - - buffer = pintestconfig->pcmoeenablemask; - sz = i2c_write(fd_i2c,pintestconfig->pinctloe1,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - -out : -#ifdef FTM_DEBUG - printf("ftm_bt_conn_init end\n"); -#endif - if(fd >= 0) - close(fd); - if(fd_gpio >= 0) - close(fd_gpio); - - if ((sz < 0) || (fd < 0) || (fd_gpio < 0)) - { - return FALSE; - } - return TRUE; - -} - -/*=========================================================================== -FUNCTION ftm_bt_conn_outputpin_test - -DESCRIPTION - Executes the connectivity test for a output pin on - MSM 8660 to input pin on BT SOC - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE,if the connectivity test fails - TRUE,if it passes for all pins combination - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_conn_outputpin_test(const pintest *config) -{ - int fd_gpioN = -1; - int bit; - unsigned char wr_gpio_value = HIGH,rd_reg_value = 0; - char value_path[64]; -#ifdef FTM_DEBUG - printf("ftm_bt_conn_outputpin_test\n"); -#endif - /* Test UART Tx --> HCI0(RX on SoC) */ - snprintf(value_path,sizeof(value_path), - "/sys/class/gpio/gpio%d/value", config->gpionum); - fd_gpioN = open(value_path,O_WRONLY); - wr_gpio_value = HIGH; - /* Write a HIGH on the GPIO line on MSM */ - write(fd_gpioN,&wr_gpio_value,sizeof(wr_gpio_value)); - - i2c_read(fd_i2c,config->datareg,&rd_reg_value,sizeof(rd_reg_value),I2C_SLAVE_ADDR); - - bit = ((rd_reg_value & (1 << config->bitpos)) >> config->bitpos); - /* Check the Bit position in the Pin's Data register on SoC for a 1 */ - if(bit != 1) - { - close(fd_gpioN); - printf("OUT :HIGH Test GPIO %d FAIL data reg = %d\n",config->gpionum,config->datareg); - return FALSE; - } - - wr_gpio_value = LOW; - /* Write a LOW on the GPIO line on MSM*/ - write(fd_gpioN,&wr_gpio_value,sizeof(wr_gpio_value)); - - i2c_read(fd_i2c,config->datareg,&rd_reg_value,sizeof(rd_reg_value),I2C_SLAVE_ADDR); - - bit = ((rd_reg_value & (1 << config->bitpos)) >> config->bitpos); - /* Check if the bit position in the Pin's data register on SoC is cleared */ - if(bit != 0) - { - close(fd_gpioN); - printf("OUT : HIGH Test GPIO %d FAIL data reg = %d\n",config->gpionum,config->datareg); - return FALSE; - } - close(fd_gpioN); - - printf("OUT : Test GPIO %d PASS \n",config->gpionum); - - return TRUE; - -} - -/*=========================================================================== -FUNCTION ftm_bt_conn_inputpin_test - -DESCRIPTION - Executes the connectivity test for a input pin on - MSM 8660 from output pin on BT SOC - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE,if the connectivity test fails - TRUE,if it passes for all pins combination - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_conn_inputpin_test(const pintest *config) -{ - int fd_gpioN = -1; - unsigned char wr_reg_value = HIGH,rd_gpio_value; - char value_path[64]; -#ifdef FTM_DEBUG - printf("ftm_bt_conn_inputpin_test\n"); -#endif - - snprintf(value_path,sizeof(value_path), - "/sys/class/gpio/gpio%d/value", config->gpionum); - fd_gpioN = open(value_path,O_RDONLY); - - /* Write a 1 to the Pins bit position on SoC */ - wr_reg_value = (1 << config->bitpos); - i2c_write(fd_i2c,config->datareg,&wr_reg_value,sizeof(wr_reg_value),I2C_SLAVE_ADDR); - - read(fd_gpioN,&rd_gpio_value,sizeof(rd_gpio_value)); - /* Check if the value is high on the MSM GPIO line */ - if(rd_gpio_value != HIGH) - { - close(fd_gpioN); - printf("IN : HIGH Test GPIO %d FAIL data reg = %d\n",config->gpionum,config->datareg); - return FALSE; - } - - close(fd_gpioN); - fd_gpioN = open(value_path,O_RDONLY); - /* Clear the Pins bit position on SoC */ - wr_reg_value = wr_reg_value & ~(1 << config->bitpos); - i2c_write(fd_i2c,config->datareg,&wr_reg_value,sizeof(wr_reg_value),I2C_SLAVE_ADDR); - - read(fd_gpioN,&rd_gpio_value,sizeof(rd_gpio_value)); - - /* Check if the value is low on the MSM GPIO line */ - if(rd_gpio_value != LOW) - { - close(fd_gpioN); - printf("IN : LOW Test GPIO %d FAIL data reg = %d\n",config->gpionum,config->datareg); - return FALSE; - } - close(fd_gpioN); - - printf("IN : Test GPIO %d PASS \n",config->gpionum); - - return TRUE; -} - - -/*=========================================================================== -FUNCTION ftm_bt_conn_test_execute - -DESCRIPTION - Executes the connectivity test for MSM 8660-Bahama SOC - MSM 8660 Bahama SoC - ======== ========== - UART Tx ------> UART Rx - UART Rx <------ UART Tx - UART RTS ------> UART CTS - UART CTS <------ UART RTS - - AUX_PCM_CLK ------> PCM_BCLK - AUX_PCM_SYNC ------> PCM_SYNC - AUX_PCM_DOUT ------> PCM_DIN - AUX_PCM_DIN <------ PCM_DOUT - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE,if the connectivity test fails - TRUE,if it passes for all pins combination - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_conn_test_execute(void) -{ - - int i = 0,ret = 0; - - printf("Conn test begin \n"); - - for(i = 0; i < MAX_PIN_CONFIGS; i++) - { - if(pintestconfig->pinconfig[i].direction) - ret = ftm_bt_conn_outputpin_test(&pintestconfig->pinconfig[i]); - else - ret = ftm_bt_conn_inputpin_test(&pintestconfig->pinconfig[i]); - - if(ret != TRUE) - return FALSE; - } - printf("Conn test successfully done \n"); - return TRUE; -} - -/*=========================================================================== -FUNCTION ftm_bt_conn_deinit - -DESCRIPTION - Deinitialise the resources allocated for connectivity tests which includes - 1. unexport the GPIO sysfs entries - 2. Reset the settings in I2C registers of Bahama top level module - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_bt_conn_deinit(void) -{ - int sz,fd,i; - int fd_gpio; - unsigned char buffer; - -#ifdef FTM_DEBUG - printf("ftm_bt_conn_deinit start\n"); -#endif - /* Restore the Mux settings of the requested GPIOs*/ - fd = open(PINTEST_ENABLE_PATH, O_WRONLY); - buffer = '0'; - sz = write(fd,&buffer,sizeof(buffer)); - close(fd); - /* Unexport all the GPIOs */ - fd_gpio = open("/sys/class/gpio/unexport", O_WRONLY); - - if(fd_gpio < 0) - return ; - - for(i = 0; i < MAX_PIN_CONFIGS; i++) - { - sz = export_gpio(fd_gpio,pintestconfig->pinconfig[i].gpiostring); - if (sz < 0) - { - break; - } - } - - for(i = 0; i < MAX_PIN_CONFIGS; i++) - { - if(pintestconfig->pinconfig[i].gpionum >= 53 && pintestconfig->pinconfig[i].gpionum <= 56) - buffer = 0x40; - else - buffer = 0xC0; - - sz = i2c_write(fd_i2c,pintestconfig->pinconfig[i].pinctrlreg,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - if (sz < 0) - { - break; - } - } - buffer = 0x00; - i2c_write(fd_i2c,pintestconfig->pinctloe0,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - i2c_write(fd_i2c,pintestconfig->pinctloe1,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - i2c_write(fd_i2c,pintestconfig->pinctldata0,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - i2c_write(fd_i2c,pintestconfig->pinctldata1,&buffer,sizeof(buffer),I2C_SLAVE_ADDR); - - close(fd_gpio); - close(fd_i2c); - fd_i2c = -1; -#ifdef FTM_DEBUG - printf("ftm_bt_conn_deinit end\n"); -#endif - return; -} - -/*=========================================================================== -FUNCTION ftm_bt_conn_test - -DESCRIPTION - Executes the connectivity test for MSM 8660-Bahama SOC - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE,if the connectivity test fails - TRUE,if it passes - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_conn_test(void) -{ - boolean ret; - unsigned int i = 0; -#ifdef FTM_DEBUG - printf("ftm_bt_conn_test = %d\n",pintestconfigs[i].platform); -#endif - /* Walk through the avaialble pin test configs*/ - for(i = 0; i < ARRAY_SIZE(pintestconfigs);i++) - { - printf("board type = %d stored type = %d \n",boardtype,pintestconfigs[i].platform); - if(boardtype == pintestconfigs[i].platform) - { - pintestconfig = (platformpintest *)&pintestconfigs[i]; - break; - } - } - /* If we dont find a matching test config return here itself */ - if(i == ARRAY_SIZE(pintestconfigs)) - { - printf("Board type not supported %d\n",boardtype); - return FALSE; - } - /* Initialise the connectivity test - * related settings - */ - if((ret = ftm_bt_conn_init())) - { - /* Execute the test */ - ret = ftm_bt_conn_test_execute(); - } - /* Deinitliase the pin settings and i2c resources/mux - * settings - */ - ftm_bt_conn_deinit(); - return ret; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_vs_event - -DESCRIPTION - Processes the VS event buffer and stores the App version and HW version - -DEPENDENCIES - NIL - -RETURN VALUE - NIL, Error in the event buffer will mean a NULL App version and Zero HW - version - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_bt_hci_hal_vs_event -( - const uint8* pEventBuffer, - uint8 nLength -) -{ - const uint8 poke_reg_addr[] = { 0xFF,0x0B,BT_QSOC_EDL_CMD_CODE,0x01, - 0x34,0x00,0x00,0x8C,0x04}; - if ( nLength > 3 ) - { - if ( ( pEventBuffer[ 0] == 0xFF) /* VS Event */ - && (pEventBuffer[1] > 5) /* VS Length > 5*/ - && (pEventBuffer[2] == BT_QSOC_EDL_CMD_CODE) - && (pEventBuffer[3] == BT_QSOC_VS_EDL_APPVER_RESP) - ) - { - if( NULL != bt_soc_app_version_string ) - { - free(bt_soc_app_version_string); - bt_soc_app_version_string = NULL; - } - bt_soc_app_version_string = (uint8 *)malloc(nLength-5); - if( NULL != bt_soc_app_version_string ) - { - memmove(bt_soc_app_version_string, - &pEventBuffer[5],nLength-5); - } - } - else if ( (nLength > 12) // make sure we have enough event bytes - && (!memcmp(pEventBuffer,poke_reg_addr,sizeof(poke_reg_addr)))) - { - bt_soc_hw_version[0] = pEventBuffer[9]; - bt_soc_hw_version[1] = pEventBuffer[10]; - bt_soc_hw_version[2] = pEventBuffer[11]; - bt_soc_hw_version[3] = pEventBuffer[12]; - } - } -} /* ftm_bt_hci_hal_vs_event */ - -int is_snoop_log_enabled () -{ - char value[PROPERTY_VALUE_MAX] = {'\0'}; - property_get("persist.service.bdroid.snooplog", value, "false"); - return (strcmp(value, "true") == 0); -} - -/*=========================================================================== -FUNCTION ftm_log_send_msg - -DESCRIPTION - Processes the buffer sent and sends it to the libdiag for sending the Cmd - response - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ - - -void ftm_log_send_msg(const uint8 *pEventBuf,int event_bytes) -{ - if (strcasecmp(transport_type, "smd") || ((pEventBuf != NULL) && (pEventBuf[0] == FTM_BT_CMD_NV_READ))) - { - /* ftmdaemon uses log opcode 0x1366 to send the HCI Event logs to QRCT via DIAG - * but Riva/Pronto also uses the same opcode to send the events over DIAG. - * So this is causing the QRCT to recv some time 2 events for one cmd and some - * time pkt corruption. - * With this change ftmdaemon wont send any logs to QRCT in case of Riva/Pronto - */ - ftm_bt_log_pkt_type* ftm_bt_log_pkt_ptr = NULL; - - if((pEventBuf == NULL) || (event_bytes == 0)) - return; - - if(!is_snoop_log_enabled()) - { - if(pEventBuf[0] == BT_HCI_ACL_PKT && log_status(LOG_BT_HCI_RX_ACL_C)) - { - ftm_bt_log_pkt_ptr = (ftm_bt_log_pkt_type *)log_alloc(LOG_BT_HCI_RX_ACL_C, - FTM_BT_LOG_HEADER_SIZE + (event_bytes-1)); - } - else if(pEventBuf[0] == BT_HCI_EVT_PKT && log_status(LOG_BT_HCI_EV_C)) - { - ftm_bt_log_pkt_ptr = (ftm_bt_log_pkt_type *)log_alloc(LOG_BT_HCI_EV_C, - FTM_BT_LOG_HEADER_SIZE + (event_bytes-1)); - } - } - if(pEventBuf[0] == FM_HCI_EVT_PKT ) - { - ftm_bt_log_pkt_ptr = (ftm_bt_log_pkt_type *)log_alloc(LOG_FTM_FM_C, - FTM_BT_LOG_HEADER_SIZE + (event_bytes-1)); - } - if(ftm_bt_log_pkt_ptr != NULL) - { - /* We should not send HCI event code 0x04 for the log opcode 0x1366. Hence - * move the pointer to the next location to skip first byte in HCI event. - */ - pEventBuf++; - memcpy((void *)ftm_bt_log_pkt_ptr->data,(void *)pEventBuf, event_bytes-1); - log_commit( ftm_bt_log_pkt_ptr ); - } - else - { - printf("ftm_log_send_msg: Dropping packet\n"); - return; - } - } -} -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_send_reset_cmd - -DESCRIPTION - Sends the HCI packet to reset the BT SoC - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE: If write Fails, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_hal_send_reset_cmd() -{ - const uint8 ResetCmd[4] = {0x01, 0x03, 0x0C, 0x00}; - global_state = FTM_SOC_RESET; - return ((ftm_bt_hci_hal_nwrite((uint8*)(&ResetCmd[0]), 4) == STATUS_SUCCESS) - ? TRUE: FALSE); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_retrieve_send_nvm - -DESCRIPTION - Retrieves the NVM commands from the NVM parser module - and packages the VS HCI packet before calling ftm_bt_hci_hal_vs_sendcmd - When NVM entries are exhausted it Calls the next stage of Init to - disable sleep - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE: If Failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -#ifdef USE_LIBSOCCFG -boolean ftm_bt_hci_hal_retrieve_send_nvm() -{ - bt_qsoc_nvm_status nvm_status; - uint8 * nvm_ptr=NULL; - static const bt_qsoc_cfg_tbl_struct_type bt_qsoc_tag27 = - { - 0x04, {0x01, 0x1B, 0x01, 0x00} - }; - - /* Get the next NVM "string" */ - nvm_status = bt_qsoc_nvm_get_next_cmd(&nvm_ptr); - if(nvm_status == BT_QSOC_NVM_STATUS_SUCCESS) - { - if( nvm_ptr != NULL ) - { - return ftm_bt_hci_hal_vs_sendcmd( BT_QSOC_NVM_ACCESS_OPCODE, - (uint8 *)(&nvm_ptr[1]),(uint8)(nvm_ptr[0]) ); - } - } - else - { - bt_qsoc_nvm_close(); - sleep_stage = 0; - global_state = FTM_SOC_SLEEP_DISABLE; - if ( (ftm_bt_hci_hal_vs_sendcmd ( - BT_QSOC_NVM_ACCESS_OPCODE, - (uint8 *)(bt_qsoc_tag27.vs_cmd_data), - bt_qsoc_tag27.vs_cmd_len ) - ) != TRUE ) - return FALSE; - sleep_stage++; - } - - return TRUE; -} -#endif -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_vs_sendcmd - -DESCRIPTION - Helper Routine to process the VS HCI cmd and constucts the HCI packet before - calling ftm_bt_hci_send_cmd routine - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_hal_vs_sendcmd -( - uint16 opcode, - uint8 *pCmdBuffer, - uint8 nSize -) -{ - uint8 cmd[HC_VS_MAX_CMD_EVENT]; //JN: change this - request_status status = FALSE; - - int nwrite; - cmd[0] = BT_HCI_CMD_PKT; // JN: bluetooth header files in linux has a define - // HCI_COMMAND_PKT for this but do we want to use - // something thats command between QC platforms. - cmd[1] = (uint8)(opcode & 0xFF); - cmd[2] = (uint8)( (opcode>>8) & 0xFF); - cmd[3] = (uint8)(nSize); - - memcpy(&cmd[HCI_CMD_HDR_SIZE], pCmdBuffer, nSize); - - status = ftm_bt_hci_hal_nwrite((&cmd[0]), (HCI_CMD_HDR_SIZE+nSize)); - - if (status != STATUS_SUCCESS) - { - printf("Error->Send Header failed : %d\n",status); - return FALSE; - } - return TRUE; -} -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_read_app_version - -DESCRIPTION - Helper Routine to package the VS HCI cmd to read the Application version - and calls the ftm_bt_hci_hal_vs_sendcmd - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_hal_read_app_version() -{ - const uint8 getAppVerCmd[] = {0x06}; - global_state = FTM_SOC_READ_APP_VER; - ALOGV("ftm_bt_hci_hal_read_app_version:global_state = %d\n",global_state); - return ftm_bt_hci_hal_vs_sendcmd(BT_QSOC_EDL_CMD_OPCODE,(uint8 *)&getAppVerCmd[0],1); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_read_hw_version - -DESCRIPTION - Helper Routine to package the VS HCI cmd to read the HW version - and calls the ftm_bt_hci_hal_vs_sendcmd - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_hal_read_hw_version() -{ - const uint8 getHWVerRegCmd[] = {0x0D, 0x34, 0x00, 0x00, 0x8C, 0x04 }; - global_state = FTM_SOC_READ_HW_VER; - return ftm_bt_hci_hal_vs_sendcmd(BT_QSOC_EDL_CMD_OPCODE,(uint8 *)&getHWVerRegCmd[0],6); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_nvm_download_init - -DESCRIPTION - Routine to lookup the Soc type and initiate a Poke Table in case of a R3 - Soc type or else go ahead and proceed with the NvM open with runtime parameters - in AUTO MODE -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -#ifdef USE_LIBSOCCFG -boolean ftm_bt_hci_hal_nvm_download_init() -{ - bt_qsoc_config_params_struct_type run_time_params; - bt_qsoc_lookup_param soc_data; - bt_qsoc_nvm_status nvm_status; - bt_qsoc_enum_type soc_type; - boolean returnStatus = TRUE; - int loopCount; - bt_qsoc_enum_nvm_mode nvm_mode = NVM_AUTO_MODE; - - soc_data.app_ver_str = (char *)bt_soc_app_version_string; - soc_data.hw_ver_str = (char *)bt_soc_hw_version; - soc_type = bt_qsoc_type_look_up(&soc_data); - - if (soc_type == BT_QSOC_R2B) - { - printf("bt_hci_qcomm_init Failed R2B Not supported\n"); - returnStatus = FALSE; - } - else if (soc_type == BT_QSOC_R2C) - { - printf("bt_hci_qcomm_init Failed R2C Not supported"); - returnStatus = FALSE; - } - else - { -#ifdef FTM_DEBUG - printf("\nbt_hci_qcomm_init : Found QSoC type %d.\n", soc_type); -#endif - } - // default run-time parameters for SOC - memmove((uint8*)(&run_time_params.bd_address[0]), - (const uint8 *)(&(default_bt_bd_addr[0])), - BT_QSOC_MAX_BD_ADDRESS_SIZE); - run_time_params.refclock_type = BT_SOC_REFCLOCK_19P2MHZ; - run_time_params.clock_sharing =BT_SOC_CLOCK_SHARING_ENABLED; - run_time_params.soc_logging = 0; - run_time_params.bt_2_1_lisbon_disabled = 0; - /* ROM defualt LE & BR/EDR SoC power class configurations - */ - run_time_params.bt_qsoc_bredr_dev_class = BT_QSOC_DEV_CLASS1; - run_time_params.bt_qsoc_le_dev_class = BT_QSOC_DEV_CLASS2; - - /* After the Firmware is detected, start intializing the Poke table */ - if ( returnStatus != FALSE) - { - /* Patch: Pokes Only specific to R3 */ - global_state = FTM_SOC_POKE8_TBL_INIT; - if ( soc_type == BT_QSOC_R3 ) - { - printf("bt_hci_qcomm_init - Initialize R3 Poke table"); - loopCount = 0; - if ( (ftm_bt_hci_hal_vs_sendcmd( - BT_QSOC_EDL_CMD_OPCODE, - (uint8 *)bt_qsoc_vs_poke8_tbl_r3[loopCount].vs_poke8_data, - bt_qsoc_vs_poke8_tbl_r3[loopCount].vs_poke8_data_len) - ) != TRUE) - { - printf("bt_hci_qcomm_init Failed Poke VS Set Cmds"); - returnStatus = FALSE; - return returnStatus; - } - loopCount++; - } - memcpy(&soc_cfg_parameters.run_time_params,&run_time_params, - sizeof(bt_qsoc_config_params_struct_type)); - soc_cfg_parameters.soc_type = soc_type; - soc_cfg_parameters.nvm_mode = nvm_mode; - } - else - { - nvm_status = bt_qsoc_nvm_open(soc_type, nvm_mode, &run_time_params); - - if(nvm_status != BT_QSOC_NVM_STATUS_SUCCESS) - return FALSE; - global_state = FTM_SOC_DOWNLOAD_NVM; - /* Send all the NVM data to the SOC */ - returnStatus = ftm_bt_hci_hal_retrieve_send_nvm(); - } - - return returnStatus; -} -#endif -/*=========================================================================== -FUNCTION ftm_bt_hal_soc_init - -DESCRIPTION - Opens the handle to UART/SMD, configures the BT SoC high level power, - and initiates a read for application version - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hal_soc_init(int mode) -{ - request_status ret = 0; - int i,init_success = 0; - char value; - - if(!is_transportSMD && !isLatestTarget()){ - if(ftm_bt_power_hal_check() != BT_ON) - { - ret = ftm_bt_power_hal_set(BT_ON); - if(ret != STATUS_SUCCESS) - { - return FALSE; - } - } - else - return FALSE; - } - - ret = ftm_bt_hci_hal_init_transport(mode) ; -#ifdef FTM_DEBUG - printf("Transport open ret = %d\n",ret); -#endif - if(ret != STATUS_SUCCESS) - { - return FALSE; - } - if(mode != MODE_FM) { - /*ToDo: this can be featuturized under USE_LIBSOCCFG */ - return ftm_bt_hci_hal_read_app_version(); - } - return TRUE; -} - -/*=========================================================================== -FUNCTION ftm_bt_dispatch - -DESCRIPTION - Processes the BT FTM packet and dispatches the command to FTM HCI driver - -DEPENDENCIES - NIL - -RETURN VALUE - NIL,The error in the Command Processing is sent to the DIAG App on PC via - log packets - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_bt_dispatch(void *ftm_bt_pkt ,int cmd_len ) -{ - int ret; - memcpy(bt_ftm_buffer, (void*)ftm_bt_pkt, cmd_len); - ret = ftm_bt_hci_send_cmd((uint8 *) bt_ftm_buffer, cmd_len); - if (ret != TRUE) - { - ftm_log_send_msg(&event_buf_user_unknown_err[0],logsize); - printf("Error->Send FTM command failed:: %d\n", ret); - /** We had a premature exit here even before the command is Queued - * So notify the semaphore to wait for the next command - */ - sem_post(&semaphore_cmd_complete); - return ; - } - return ; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_send_cmd - -DESCRIPTION - Helper Routine to process the HCI cmd and invokes the sub routines to intialise - /deinitialise the SoC if needed based on the state of the FTM module - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_send_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -) -{ - request_status ret = 0; - boolean status = FALSE; - if(NULL == cmd_buf) - { - return FALSE; - } - #ifdef BT_NV_SUPPORT - if (*cmd_buf == FTM_BT_CMD_NV_READ) - { - status = ftm_bt_send_nv_read_cmd(cmd_buf, cmd_len); - return status; - } - if (*cmd_buf == FTM_BT_CMD_NV_WRITE) - { - status = ftm_bt_send_nv_write_cmd(cmd_buf, cmd_len); - return status; - } -#endif /* End of BT_NV_SUPPORT */ - - if (*cmd_buf == FTM_BT_DRV_START_TEST) - { - /** Deinit the queue only if we are not initialised */ - if(global_state != FTM_SOC_NOT_INITIALISED) - { - ftm_bt_hci_hal_deinit_transport(); - if(!is_transportSMD && !isLatestTarget() ) - ftm_bt_power_hal_set(BT_OFF); - } - if(ftm_bt_conn_test() != TRUE) - return FALSE; -#ifdef FTM_DEBUG - printf("\nBT Soc Shutdown\n"); -#endif - global_state = FTM_SOC_NOT_INITIALISED; - } - - if(global_state == FTM_SOC_NOT_INITIALISED) - { -#ifdef HAS_BLUEZ_BUILDCFG - // BT disabled for FTM to procceed - // BT test is only aplicable for BLUEZ stack - if(system("/system/xbin/bttest disable") != 0) - { - printf("\nbttest disable failed"); - } - else - { - /* Bluetooth resources like bluetoothd & hciattach (if applicable - * based on transport) are asynchronously cleaned. - * This delay ensures that the transport device is released before - * being used by BT-FTM module. - * Note: This delay as expected is < 5 seconds timeout set up for - * the command complete of the received BT FTM commmand. */ - printf("\nsleep for 2 seconds"); - usleep(2000000); - } -#endif - ptr_powerup.cmd_buf = cmd_buf; - ptr_powerup.cmd_len = cmd_len; - /*To identify the transport based on the target name*/ - is_transportSMD = ftm_bt_hci_hal_set_transport(); - /* Creating power up thread for asynchronous completion of request */ - status = ftm_bt_hal_soc_init(MODE_BT); - if (*cmd_buf == FM_HCI_CMD_PKT) - status = ftm_bt_hal_soc_init(MODE_FM); - } - else - { - ret = ftm_bt_hci_hal_nwrite((uint8 *) cmd_buf, cmd_len); - if(ret == STATUS_SUCCESS) - status = TRUE; - } - return status; -} -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_read_event - -DESCRIPTION - Helper Routine to read the HCI event by invoking the UART/SMD HAL read routines - and returns the event in the pointer passed - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_hal_read_event (uint8 * event_buf_ptr) -{ - boolean status = FALSE; - boolean long_event = FALSE; - request_status rx_status; - int event_bytes; - int i, ret_val; - /*hci packet is not required to carry the Packet indicator (for UART interfaces) for msm8960 - as it is using share memory interface */ - rx_status = ftm_bt_hci_hal_nread(event_buf_ptr , PROTOCOL_BYTE_SIZE); - if (rx_status == STATUS_SHORT_READ) - { - printf("ftm_bt_hci_qcomm_handle_event: VERY SHORT READ!\n"); - return status; - } - - printf("%s:protocol byte: %02X\n", __FUNCTION__, event_buf_ptr[0]); - /* else get rest of the packet */ - if(event_buf_ptr[0] == BT_HCI_ACL_PKT) - { - rx_status = ftm_bt_hci_hal_nread(event_buf_ptr + PROTOCOL_BYTE_SIZE, HCI_ACL_HDR_SIZE - PROTOCOL_BYTE_SIZE); - if (rx_status == STATUS_SHORT_READ) - { - printf("ftm_bt_hci_qcomm_handle_event: VERY SHORT READ!\n"); - return status; - } - - event_bytes = ( event_buf_ptr[HCI_ACL_HDR_SIZE - 1 ] << 8 ) | ( event_buf_ptr[HCI_ACL_HDR_SIZE - 2 ] ) ; - if (HC_VS_MAX_ACL < event_bytes) - { - printf("ftm_bt_hci_qcomm_handle_event: LONG ACL PKT!\n"); - long_event = TRUE; - event_bytes = HC_VS_MAX_ACL; - } - - rx_status = ftm_bt_hci_hal_nread(&(event_buf_ptr[HCI_ACL_HDR_SIZE]), event_bytes); - - if (rx_status == STATUS_SUCCESS) - { - status = TRUE; - } - else - { - printf("ftm_bt_hci_qcomm_handle_event: SHORT READ!\n"); - fflush (stderr); - } - - event_bytes += HCI_ACL_HDR_SIZE; - } - else if((event_buf_ptr[0] == BT_HCI_EVT_PKT) || (event_buf_ptr[0] == FM_HCI_EVT_PKT)) - { - rx_status = ftm_bt_hci_hal_nread(event_buf_ptr + PROTOCOL_BYTE_SIZE, HCI_EVT_HDR_SIZE - PROTOCOL_BYTE_SIZE); - if (rx_status == STATUS_SHORT_READ) - { - printf("ftm_bt_hci_qcomm_handle_event: VERY SHORT READ!\n"); - return status; - } - - event_bytes = event_buf_ptr[HCI_EVT_HDR_SIZE - 1 ]; - if (HC_VS_MAX_CMD_EVENT < event_bytes) - { - printf("ftm_bt_hci_qcomm_handle_event: LONG EVENT!\n"); - long_event = TRUE; - event_bytes = HC_VS_MAX_CMD_EVENT; - } - rx_status = ftm_bt_hci_hal_nread(&(event_buf_ptr[HCI_EVT_HDR_SIZE]), event_bytes); - - if (rx_status == STATUS_SUCCESS) - { - status = TRUE; - } - else - { - printf("ftm_bt_hci_qcomm_handle_event: SHORT READ!\n"); - fflush (stderr); - } - - event_bytes += HCI_EVT_HDR_SIZE; - } - else - { - printf("ftm_bt_hci_qcomm_handle_event: Unknown packet type!\n"); - return status; - } - - /* - ** Validate if the loopback command event has arrived and has succsfull - ** response from FW, if yes enable slimbus to validate pinc connectivity - ** test - */ - - if ( event_buf_ptr[0] == BT_HCI_EVT_PKT && - event_buf_ptr[LOOP_BACK_EVT_OGF_BIT] == LOOP_BACK_EVT_OGF && - event_buf_ptr[LOOP_BACK_EVT_OCF_BIT] == LOOP_BACK_EVT_OCF && - event_buf_ptr[LOOP_BACK_EVT_STATUS_BIT] == LOOP_BACK_EVT_STATUS && - is_slim_bus_test == 1) - { - printf("\nInitializing slim bus for pin-connectivity\n"); - fd_pintest = open("/dev/pintest",O_RDONLY, O_NONBLOCK); - if(fd_pintest < 0) - printf("\nfailed to open\n"); - ret_val = ioctl(fd_pintest, BT_CMD_SLIM_TEST, NULL); - event_buf_ptr[PIN_CON_EVENT_LEN_BIT] = PIN_CON_EVENT_LEN; - event_buf_ptr[PIN_CON_EVT_OCF_BIT] = PIN_CON_CMD_OCF; - event_buf_ptr[PIN_CON_EVT_OGF_BIT] = PIN_CON_CMD_OGF; - event_buf_ptr[PIN_CON_EVT_SUB_OP_BIT] = PIN_CON_CMD_SUB_OP; - event_buf_ptr[PIN_CON_INTERFACE_ID_EVT_BIT] = PIN_CON_INTERFACE_ID; - event_bytes += EXT_PIN_CON_LEN; - if( ret_val < 0) { - event_buf_ptr[PIN_CON_EVT_STATUS_BIT] = ret_val; - printf("\nFailed to initialise slim bus %d\n", ret_val); - status = FALSE; - } else { - event_buf_ptr[PIN_CON_EVT_STATUS_BIT] = 0; - printf("\nSlim bus initiazed succesfully\n"); - } - } - - if (verbose == 1) - { - if((event_buf_ptr[0] == BT_HCI_EVT_PKT) || (event_buf_ptr[0] == FM_HCI_EVT_PKT)) - { - printf("[%s] %s: EVT:", get_current_time(), __FUNCTION__); - for (i = 0; i < event_bytes; i++) - { - printf(" %02X", event_buf_ptr[i]); - } - - printf(long_event? " ...\n": "\n"); - } - else if (event_buf_ptr[0] == BT_HCI_ACL_PKT) - { - printf("[%s] %s: ACL packet: %d bytes\n", get_current_time(), __FUNCTION__, event_bytes); - - printf(long_event? " ...\n": "\n"); - } - } - ftm_log_send_msg(event_buf_ptr,event_bytes); - return status; -} - -boolean ftm_bt_hci_hal_retrieve_nvm_and_send_efs(FILE* fp) -{ - unsigned char payload[NVM_PAYLOAD_MAXLENGTH]; - unsigned char header[HCI_CMD_HDR_SIZE]; - int n = 0; - int len=0; - static const bt_qsoc_cfg_tbl_struct_type bt_qsoc_tag27 = - { - 0x04, {0x01, 0x1B, 0x01, 0x00} - }; - - n = fread(header, 1, HCI_CMD_HDR_SIZE, fp); - - if(feof(fp)) - { - if(nvm_cmd) - free(nvm_cmd); - fclose(fp); - sleep_stage = 0; - if(!isLatestTarget()){//Do not disable sleep for ROME - global_state = FTM_SOC_SLEEP_DISABLE; - if ( (ftm_bt_hci_hal_vs_sendcmd ( - BT_QSOC_NVM_ACCESS_OPCODE,(uint8 *)(bt_qsoc_tag27.vs_cmd_data), - bt_qsoc_tag27.vs_cmd_len )) != TRUE ) - return FALSE; - sleep_stage++; - } - return TRUE; - } - - /*Last byte gives the length*/ - len = (int)header[3]; - - printf("PayLoad length: %d\n", len); - n = fread(payload, 1, len, fp); - - /*Form the resultant buffer*/ - if(nvm_cmd) - { - /*Delete the previous buffer*/ - free(nvm_cmd); - } - nvm_cmd = (unsigned char*)malloc(HCI_CMD_HDR_SIZE+len); - if(nvm_cmd) - { - memcpy(nvm_cmd, header, HCI_CMD_HDR_SIZE); - memcpy(nvm_cmd+HCI_CMD_HDR_SIZE, payload, len); - - global_state = FTM_SOC_DOWNLOAD_NVM_EFS; - - if(ftm_bt_hci_hal_nwrite((uint8 *) &nvm_cmd[0],HCI_CMD_HDR_SIZE+len) == STATUS_SUCCESS) - return TRUE; - } - return FALSE; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_qcomm_handle_event - -DESCRIPTION - Routine called by the HAL layer reader thread to process the HCI events - The post conditions of each event is covered in a state machine pattern - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_qcomm_handle_event () -{ - boolean status = TRUE; - char filename[MAX_FILE_NAME]; -#ifdef USE_LIBSOCCFG - bt_qsoc_nvm_status nvm_status; -#endif - int ret = 0; -#ifdef FTM_DEBUG - printf("ftm_bt_hci_qcomm_handle_event global_state --> %d\n",global_state); -#endif - switch(global_state) - { - case FTM_SOC_READ_APP_VER: - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) { - printf("Failed to read VS event"); - return FALSE; - } - ftm_bt_hci_hal_vs_event(&event_buf[1], 2 + event_buf[2]); - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) { - printf("Failed to read HCI event"); - return FALSE; - } - /* Until libsoccfg is part of the Android system - * we will use the system call to perform the - * soc initialisation - */ -#ifndef USE_LIBSOCCFG - if(!isLatestTarget()) - { - ret = system("/system/bin/hci_qcomm_init -e -H"); - if(ret != 0) - { - return FALSE; - } - else - { - global_state = FTM_SOC_INITIALISED; - } - } - else - { -#if 0//Do not Disable Sleep for ROME - global_state = FTM_SOC_SLEEP_DISABLE; - if ( (ftm_bt_hci_hal_vs_sendcmd(BT_QSOC_NVM_ACCESS_OPCODE, - (uint8 *)(bt_qsoc_tag17_latest_hw.vs_cmd_data), - bt_qsoc_tag17.vs_cmd_len )) != TRUE ) - { - return FALSE; - } -#endif - if(ftm_bt_hci_hal_send_reset_cmd() != TRUE) - return FALSE; - } - printf("\nFTM Global state = %d\n",global_state); - // Dont send HCI reset before inband sleep disable - if (!isLatestTarget()) - { - if(ptr_powerup.cmd_buf[0] == FTM_BT_DRV_START_TEST) - { - ftm_log_send_msg(&event_buf_user_cmd_pass[0],logsize); - sem_post(&semaphore_cmd_complete); - return TRUE; - } - if(ftm_bt_hci_hal_nwrite((uint8 *) ptr_powerup.cmd_buf, - ptr_powerup.cmd_len) != STATUS_SUCCESS) - return FALSE; - } -#else - if(ftm_bt_hci_hal_read_hw_version() != TRUE) - return FALSE; -#ifdef FTM_DEBUG - printf("FTM_SOC_READ_APP_VER Done\n"); -#endif -#endif - break; -#ifdef USE_LIBSOCCFG - case FTM_SOC_READ_HW_VER: - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - ftm_bt_hci_hal_vs_event(&event_buf[1], 2 + event_buf[2]); - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - - if(ftm_bt_hci_hal_nvm_download_init() != TRUE) - return FALSE; -#ifdef FTM_DEBUG - printf("FTM_SOC_READ_HW_VER Done\n"); -#endif - break; - case FTM_SOC_POKE8_TBL_INIT : - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - if(loopCount < BT_QSOC_R3_POKETBL_COUNT) - { - if ( (ftm_bt_hci_hal_vs_sendcmd( - BT_QSOC_EDL_CMD_OPCODE, - (uint8 *)bt_qsoc_vs_poke8_tbl_r3[loopCount].vs_poke8_data, - bt_qsoc_vs_poke8_tbl_r3[loopCount].vs_poke8_data_len) - ) != TRUE) - { - printf("bt_hci_qcomm_init Failed Poke VS Set Cmds"); - return FALSE; - } - loopCount++; - } - else - { - nvm_status = bt_qsoc_nvm_open(soc_cfg_parameters.soc_type, - soc_cfg_parameters.nvm_mode, - &soc_cfg_parameters.run_time_params); - - if(nvm_status != BT_QSOC_NVM_STATUS_SUCCESS) - return FALSE; - global_state = FTM_SOC_DOWNLOAD_NVM; - /* Send all the NVM data to the SOC */ - if(ftm_bt_hci_hal_retrieve_send_nvm() != TRUE) - return FALSE; - } - break; - case FTM_SOC_DOWNLOAD_NVM: - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - if(ftm_bt_hci_hal_retrieve_send_nvm()!= TRUE) - return FALSE; -#ifdef FTM_DEBUG - printf("FTM_SOC_DOWNLOAD_NVM in progress\n"); -#endif - break; -#endif //USE_LIBSOCCFG - - case FTM_SOC_DOWNLOAD_NVM_EFS: - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - if(ftm_bt_hci_hal_retrieve_nvm_and_send_efs(fp) != TRUE) - return FALSE; - printf("FTM_SOC_DOWNLOAD_NVM in progress\n"); - break; - - case FTM_SOC_SLEEP_DISABLE: - /* Read the VS event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - if(sleep_stage == 1) - { -#ifdef FTM_DEBUG - printf("Sleep Stage tag 17 set\n"); -#endif - if ( (ftm_bt_hci_hal_vs_sendcmd(BT_QSOC_NVM_ACCESS_OPCODE, - (uint8 *)(bt_qsoc_tag17.vs_cmd_data), - bt_qsoc_tag17.vs_cmd_len )) != TRUE ) - { - return FALSE; - } - sleep_stage++; - return TRUE; - } - if(ftm_bt_hci_hal_send_reset_cmd() != TRUE) - return FALSE; -#ifdef FTM_DEBUG - printf("FTM_SOC_SLEEP_DISABLE done\n"); -#endif - break; - case FTM_SOC_RESET: - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - global_state = FTM_SOC_INITIALISED; - if(ptr_powerup.cmd_buf[0] == FTM_BT_DRV_START_TEST) - { - ftm_log_send_msg(&event_buf_user_cmd_pass[0],logsize); - sem_post(&semaphore_cmd_complete); - return TRUE; - } - if(ftm_bt_hci_hal_nwrite((uint8 *) ptr_powerup.cmd_buf, - ptr_powerup.cmd_len) != STATUS_SUCCESS) - return FALSE; -#ifdef FTM_DEBUG - printf("FTM_SOC_RESET done queued the Command\n"); -#endif - break; - case FTM_SOC_INITIALISED : - /* Read out the HCI event*/ - if(ftm_bt_hci_hal_read_event(event_buf) != TRUE) - return FALSE; - sem_post(&semaphore_cmd_complete); - break; - default : - return FALSE; - } - return status; -} - -/*=========================================================================== -FUNCTION isLatestTarget - -DESCRIPTION -For all the target/solution which has Bluedroid as stack and libbt-vendor as -vendor initialization component considered as latest target - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean isLatestTarget() -{ -#ifdef ANDROID - int ret = 0; - char bt_soc_type[PROPERTY_VALUE_MAX]; - ret = property_get("qcom.bluetooth.soc", bt_soc_type, NULL); - if (ret != 0) - { - if (!strncasecmp(bt_soc_type, "ath3k", sizeof("ath3k"))) - { - return FALSE; - } - } - return TRUE; -#else - return TRUE; -#endif -} diff --git a/feeds/ipq95xx/ftm/src/ftm_bt.h b/feeds/ipq95xx/ftm/src/ftm_bt.h deleted file mode 100755 index c807977e5..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt.h +++ /dev/null @@ -1,289 +0,0 @@ -/*========================================================================== - - FTM BT Task Header File - -Description - Global Data declarations of the ftm bt component. - -# Copyright (c) 2010-2011, 2013-2014 by Qualcomm Technologies, Inc. -# All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -09/28/11 rrr Moved peristent NV item related APIs to CPP, - for having BD address being programmed twice if previous - BD address was random generated. -09/03/11 agaja Added support for NV_READ and NV_WRITE Commands to write - onto Persist File system -02/08/11 braghave Changes to read the HCI commands from a binary file for - non-Android case -06/18/10 rakeshk Created a header file to hold the definitons for ftm bt - task -===========================================================================*/ - -#ifdef CONFIG_FTM_BT - -#include "diagpkt.h" -#include -#ifdef USE_LIBSOCCFG -#include "btqsocnvm.h" -#include "btqsocnvmutils.h" -#endif - -/* ------------------------------------------------------------------------- -** Definitions and Declarations -** ------------------------------------------------------------------------- */ - -#define FTM_BT_CMD_CODE 4 /* BT FTM Command code */ -#define FTM_FM_CMD_CODE 28 /* FM FTM Command code */ -#define HCI_EVT_HDR_SIZE 3 -#define HCI_ACL_HDR_SIZE 5 -#define PROTOCOL_BYTE_SIZE 1 -#define HC_VS_MAX_CMD_EVENT 260 -#define HC_VS_MAX_ACL 1200 -#define FTM_BT_HCI_USER_CMD 0 -#define BT_FTM_CMD_RSP_LEN 1100 -#define FTM_BT_DRV_START_TEST 0xA - -/* MACROS for pin connectivty test*/ -#define BT_CMD_SLIM_TEST 0xBFAC -#define LOOP_BACK_EVT_OGF 0x02 -#define LOOP_BACK_EVT_OCF 0x18 -#define LOOP_BACK_EVT_STATUS 0x00 -#define LOOP_BACK_EVT_OGF_BIT 0x04 -#define LOOP_BACK_EVT_OCF_BIT 0x05 -#define LOOP_BACK_EVT_STATUS_BIT 0x06 - - -#define FTM_BT_LOG_HEADER_SIZE (sizeof(ftm_bt_log_pkt_type) - 1) - - -/* Vendor Specific command codes */ -#define BT_QSOC_EDL_CMD_OPCODE (0xFC00) -#define BT_QSOC_NVM_ACCESS_OPCODE (0xFC0B) - -#define BT_QSOC_EDL_CMD_CODE (0x00) -#define BT_QSOC_NVM_ACCESS_CODE (0x0B) -#define BT_QSOC_VS_EDL_APPVER_RESP (0x02) - -#ifndef HC_VS_MAX_CMD_EVENT -#define HC_VS_MAX_CMD_EVENT 260 -#endif /* HC_VS_MAX_CMD_EVENT */ - -#define BT_QSOC_MAX_NVM_CMD_SIZE 0x64 /* Maximum size config (NVM) cmd */ -#define BT_QSOC_MAX_BD_ADDRESS_SIZE 0x06 /**< Length of BT Address */ - -#ifndef HCI_CMD_HDR_SIZE -#define HCI_CMD_HDR_SIZE 4 -#endif /* HCI_CMD_HDR_SIZE */ - -#ifndef HCI_EVT_HDR_SIZE -#define HCI_EVT_HDR_SIZE 3 -#endif /* HCI_EVT_HDR_SIZE */ - -#define FTM_BT_LOG_PKT_ID 0x01 - - -#define BT_HCI_CMD_PKT 0x01 -#define BT_HCI_ACL_PKT 0x02 -#define BT_HCI_EVT_PKT 0x04 - -#define BT_HCI_CMD_CMPLT_EVT 0x0E -#define FM_HCI_EVT_PKT 0x14 -#define FM_HCI_CMD_PKT 0x11 - -extern int boardtype; - -/* VS command structure */ -typedef struct -{ - uint8 vs_cmd_len; - uint8 vs_cmd_data[BT_QSOC_MAX_NVM_CMD_SIZE]; -} bt_qsoc_cfg_tbl_struct_type; - -/* First Commamd structure - Used to store the First command for later -* processing -*/ -struct first_cmd -{ - uint8 *cmd_buf; - int cmd_len; -}; - -/* FTM Global State - Enum defines the various states of the FTM -* module -*/ -typedef enum ftm_state -{ - FTM_SOC_NOT_INITIALISED, - FTM_SOC_READ_APP_VER, - FTM_SOC_READ_HW_VER, - FTM_SOC_POKE8_TBL_INIT, - FTM_SOC_DOWNLOAD_NVM, - FTM_SOC_DOWNLOAD_NVM_EFS, - FTM_SOC_SLEEP_DISABLE, - FTM_SOC_RESET, - FTM_SOC_INITIALISED -}ftm_state; -/* FTM CMD status */ -typedef enum ftm_log_packet_type -{ - FTM_USER_CMD_PASS, - FTM_USER_CMD_FAIL, - FTM_HCI_EVENT -}ftm_log_packet_type; - -/* FTM Log Packet - Used to send back the event of a HCI Command */ -typedef PACKED struct -{ - log_hdr_type hdr; - byte data[1]; /* Variable length payload, - look at FTM log id for contents */ -} ftm_bt_log_pkt_type; - - -/* FTM (BT) PKT Header */ -typedef PACKED struct -{ - word cmd_id; /* command id (required) */ - word cmd_data_len; /* request pkt data length, excluding the diag and ftm headers - (optional, set to 0 if not used)*/ - word cmd_rsp_pkt_size; /* rsp pkt size, size of response pkt if different then req pkt - (optional, set to 0 if not used)*/ -} ftm_bt_cmd_header_type; - -/* Bluetooth FTM packet */ -typedef PACKED struct -{ - diagpkt_subsys_header_type diag_hdr; - ftm_bt_cmd_header_type ftm_hdr; - byte data[1]; -} ftm_bt_pkt_type; - -/* SoC Cfg open Struct*/ -#ifdef USE_LIBSOCCFG -typedef struct -{ - bt_qsoc_config_params_struct_type run_time_params; - bt_qsoc_enum_nvm_mode nvm_mode; - bt_qsoc_enum_type soc_type; -}ftm_bt_soc_runtime_cfg_type; -#endif - -/*=========================================================================== -FUNCTION ftm_bt_err_timedout - -DESCRIPTION - This routine triggers the shutdown of the HCI and Power resources in case - a HCI command previously sent times out. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - NONE - -===========================================================================*/ -void ftm_bt_err_timedout(); - -/*=========================================================================== -FUNCTION ftm_bt_dispatch - -DESCRIPTION - Processes the BT FTM packet and dispatches the command to FTM HCI driver - -DEPENDENCIES - NIL - -RETURN VALUE - NIL,The error in the Command Processing is sent to the DIAG App on PC via - log packets - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_bt_dispatch(void *ftm_bt_pkt ,int cmd_len ); - -/*=========================================================================== -FUNCTION bt_hci_send_ftm_cmd - -DESCRIPTION - Helper Routine to process the HCI cmd and invokes the sub routines to intialise - the SoC if needed based on the state of the FTM module - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ - -boolean ftm_bt_hci_send_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -); - -/*=========================================================================== -FUNCTION bt_hci_hal_vs_sendcmd - -DESCRIPTION - Helper Routine to process the VS HCI cmd and constucts the HCI packet before - calling bt_hci_send_ftm_cmd routine - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_hal_vs_sendcmd -( -uint16 opcode, /* Opcode */ -uint8 *pCmdBuffer, /* Pointer to Payload*/ -uint8 nSize /* Cmd Size */ -); - -/*=========================================================================== -FUNCTION isLatestTarget - -DESCRIPTION -For all the target/solution which has Bluedroid as stack and libbt-vendor as -vendor initialization component considered as latest target - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean isLatestTarget(); -char *get_current_time(void); -#endif /* CONFIG_FTM_BT */ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_common.h b/feeds/ipq95xx/ftm/src/ftm_bt_common.h deleted file mode 100755 index 5704ba65e..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_common.h +++ /dev/null @@ -1,115 +0,0 @@ -/*========================================================================== - - FTM BT Commom Header File - -Description - The header file includes helper enums for request_status and bt_power_state. - -# Copyright (c) 2010-2011, 2014 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -09/28/11 rrr Common utility API abstracted, -06/18/10 rakeshk Created a header file to hold the helper enums for - request_status and bt_power_state -========================================================================*/ - -#ifdef CONFIG_FTM_BT - -#include "event.h" -#include "msg.h" -#include "log.h" - -#include "diag_lsm.h" -#include - -#ifndef __FTM_BT_COMMON_H__ - -#define __FTM_BT_COMMON_H__ - -#define TRUE 1 -#define FALSE 0 - -/* request_status - enum to encapuslate the status of a HAL request*/ -typedef enum request_status -{ - STATUS_SUCCESS, - STATUS_FAIL, - STATUS_NO_RESOURCES, - STATUS_SHORT_WRITE, - STATUS_SHORT_READ -}request_status; - -/* request_status - enum to encapuslate the possible statea of BT power*/ -typedef enum bt_power_state -{ - BT_OFF = 0x30, /* Its the value 0 to be input to rfkill driver */ - BT_ON = 0x31 /* ASCII value for '1'*/ -}bt_power_state; - -typedef enum -{ - FTM_BT_DRV_NO_ERR = 0, - FTM_BT_DRV_CONN_TEST_FAILS, - FTM_BT_DRV_QSOC_POWERUP_FAILS, - FTM_BT_DRV_RX_PKT_TYPE_NOT_SUPPORTED, - FTM_BT_DRV_SIO_OPEN_FAILS, - FTM_BT_DRV_NO_SOC_RSP_TOUT, - FTM_BT_DRV_BAD_NVM, -#ifdef BT_NV_SUPPORT - FTM_BT_NV_READ_FAIL, - FTM_BT_NV_WRITE_FAIL, -#endif - FTM_BT_DRV_UNKNOWN_ERR -} ftm_bt_drv_err_state_type; - -/*=========================================================================== -FUNCTION ftm_bt_hci_qcomm_handle_event - -DESCRIPTION - Routine called by the HAL layer reader thread to process the HCI events - The post conditions of each event is covered in a state machine pattern - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_qcomm_handle_event(); - -/*=========================================================================== -FUNCTION ftm_log_send_msg - -DESCRIPTION - Processes the buffer sent and sends it to the libdiag for sending the Cmd - response - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ - - -void ftm_log_send_msg(const uint8 *pEventBuf,int event_bytes); -#endif //__FTM_BT_COMMON_H__ -#endif /* CONFIG_FTM_BT */ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_hci_hal.h b/feeds/ipq95xx/ftm/src/ftm_bt_hci_hal.h deleted file mode 100755 index c1b82efa1..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_hci_hal.h +++ /dev/null @@ -1,161 +0,0 @@ -/*========================================================================== - - FTM BT HCI PFAL Header File - -Description - Warpper API definitions of the ftm bt hci hal component. - -# Copyright (c) 2010 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a header file to hold the wrapper HAL - definitions for HCI UART control -===========================================================================*/ - -#include "ftm_bt_common.h" -#include "ftm_bt_hci_pfal.h" -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_set_transport - -DESCRIPTION - sets the type of transport based on the msm type - -DEPENDENCIES - NIL - -RETURN VALUE -returns the type of transport - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_hal_set_transport() -{ - return ftm_bt_hci_pfal_set_transport(); -} -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_deinit_transport - -DESCRIPTION - Platform independent wrapper API which intiatea a De-intialise of UART/SMD - resources with PFAL layer and returns the status of the PFAL operation - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_hal_deinit_transport() -{ - return ftm_bt_hci_pfal_deinit_transport(); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_init_transport - -DESCRIPTION - Platform independent wrapper API which intiatea a intialise of UART/SMD - resources with PFAL layer and returns the status of the PFAL operation - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_hal_init_transport (int mode) -{ - return ftm_bt_hci_pfal_init_transport(mode); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_nwrite - -DESCRIPTION - Platform independent wrapper API which intiates a write operation - with the PFAL layer and returns the status of the PFAL operation. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_hal_nwrite(uint8 *buf, int size) -{ - return ftm_bt_hci_pfal_nwrite(buf,size); - -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_nread - -DESCRIPTION - Platform independent wrapper API which intiates a read operation - with the PFAL layer and returns the status of the PFAL operation. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_hal_nread(uint8 *buf, int size) -{ - return ftm_bt_hci_pfal_nread(buf,size); -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_hal_changebaudrate - -DESCRIPTION - Platform independent wrapper API which intiatea a UART baud rate change - with the PFAL layer and returns the status of the PFAL request. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - TRUE if SUCCESS, else FAIL - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_hal_changebaudrate (uint32 new_baud) -{ - return ftm_bt_hci_pfal_changebaudrate(new_baud); -} - diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal.h b/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal.h deleted file mode 100755 index 7bc199e41..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal.h +++ /dev/null @@ -1,177 +0,0 @@ -/*========================================================================== - - FTM BT HCI PFAL Header File - -Description - PFAL API declarations of the ftm bt hci pfal component. - -# Copyright (c) 2010 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a header file to hold the PFAL declarations for - HCI UART programming -===========================================================================*/ -#include "ftm_bt_common.h" - -#ifndef __FTM_BT_HCI_PFAL_H__ -#define __FTM_BT_HCI_PFAL_H__ - -#define PIN_CON_CMD_OGF 0xFC -#define PIN_CON_CMD_OCF 0x0C -#define PIN_CON_CMD_SUB_OP 0x38 -#define PIN_CON_INTERFACE_ID 0x01 -#define PIN_CON_EVENT_LEN 0x06 -#define EXT_PIN_CON_LEN 0x02 - -#define PIN_CON_CMD_OCF_BIT 0x01 -#define PIN_CON_CMD_OGF_BIT 0x02 -#define PIN_CON_CMD_SUBOP_BIT 0x04 -#define PIN_CON_CMD_INTER_BIT 0x05 - -#define PIN_CON_EVT_OGF_BIT 0x05 -#define PIN_CON_EVT_OCF_BIT 0x04 -#define PIN_CON_EVT_SUB_OP_BIT 0x07 -#define PIN_CON_INTERFACE_ID_EVT_BIT 0x08 -#define PIN_CON_EVENT_LEN_BIT 0x02 -#define PIN_CON_EVT_STATUS_BIT 0x06 - -#define LOG_TAG "ftmdaemon" - -#define PRI_INFO " I" -#define PRI_WARN " W" -#define PRI_ERROR " E" -#define PRI_DEBUG " D" -#define PRI_VERB " V" - -#define ALOG(pri, tag, fmt, arg...) fprintf(stderr, tag pri ": " fmt"\n", ##arg) -#define ALOGV(fmt, arg...) ALOG(PRI_VERB, LOG_TAG, fmt, ##arg) -#define ALOGD(fmt, arg...) ALOG(PRI_DEBUG, LOG_TAG, fmt, ##arg) -#define ALOGI(fmt, arg...) ALOG(PRI_INFO, LOG_TAG, fmt, ##arg) -#define ALOGW(fmt, arg...) ALOG(PRI_WARN, LOG_TAG, fmt, ##arg) -#define ALOGE(fmt, arg...) ALOG(PRI_ERROR, LOG_TAG, fmt, ##arg) - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_set_transport - -DESCRIPTION - sets the type of transport based on the msm type - -DEPENDENCIES - NIL - -RETURN VALUE -returns the type of transport - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_pfal_set_transport(void); - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_deinit_transport - -DESCRIPTION - Platform specific routine to de-intialise the UART/SMD resource. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_deinit_transport(); - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_init_transport - -DESCRIPTION - Platform specific routine to intialise the UART/SMD resources. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_init_transport (); - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_nwrite - -DESCRIPTION - Platform specific routine to write the data in the argument to the UART/SMD - port intialised. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_nwrite(uint8 *buf, int size); - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_nread - -DESCRIPTION - Platform specific routine to read data from the UART/SMD port intialised into - the buffer passed in argument. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_nread(uint8 *buf, int size); - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_changebaudrate - -DESCRIPTION - Platform specific routine to intiate a change in baud rate - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - TRUE if SUCCESS, else FALSE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_pfal_changebaudrate (uint32 new_baud); - -#endif //__FTM_BT_HCI_PFAL_H__ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal_linux.c b/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal_linux.c deleted file mode 100755 index e339567b7..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_hci_pfal_linux.c +++ /dev/null @@ -1,674 +0,0 @@ -/*========================================================================== - - FTM Platform specfic HCI UART/SMD File - -Description - Platform specific routines to program the UART/SMD descriptors - -# Copyright (c) 2010-2011, 2013 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/07/11 bneti Add support smd support for msm8960 -06/18/10 rakeshk Created a source file to implement platform specific - routines for UART -07/07/10 rakeshk Removed the conversion of 3.2 Mbps baud rate -01/07/10 rakeshk Added support for verbose logging of Cmd and events -===========================================================================*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "bt_vendor_lib.h" -#include "ftm_bt_hci_pfal.h" -#include "ftm_common.h" -#include -#include "log.h" -#include -#include "hidl_client.h" - -#ifdef ANDROID -#define VENDOR_LIB "libbt-vendor.so" -#else -#define VENDOR_LIB "libbt-vendor.so.0" -#endif - -uint8_t is_slim_bus_test = 0; -#define UNUSED(x) (void)(x) - -/*identify the transport type*/ -static char *transport_dev; - -typedef enum { - BT_SOC_DEFAULT = 0, - BT_SOC_SMD = BT_SOC_DEFAULT, - BT_SOC_AR3K, - BT_SOC_ROME, - BT_SOC_CHEROKEE, - BT_SOC_NAPIER, - /* Add chipset type here */ - BT_SOC_RESERVED -} bt_soc_type; - -static void vendor_fwcfg_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_scocfg_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_lpm_vnd_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_audio_state_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void* vendor_alloc(int size) { - UNUSED(size); - return NULL; -} -static void vendor_dealloc(void *p_buf) { - UNUSED(p_buf); -} -static uint8_t vendor_xmit_cb(uint16_t opcode, void *p_buf, tINT_CMD_CBACK p_cback) { - UNUSED(opcode); - UNUSED(p_buf); - UNUSED(p_cback); - return 0; -} -static void vendor_epilog_cb(bt_vendor_op_result_t result) { - UNUSED(result); -} -static void vendor_a2dp_offload_cb(bt_vendor_op_result_t result, bt_vendor_opcode_t op, unsigned char handle) { - UNUSED(result); - UNUSED(op); - UNUSED(handle); -} - - -bt_vendor_interface_t *vendor_interface=NULL; -static const bt_vendor_callbacks_t vendor_callbacks = { - sizeof(bt_vendor_callbacks_t), - vendor_fwcfg_cb, - vendor_scocfg_cb, - vendor_lpm_vnd_cb, - vendor_audio_state_cb, - vendor_alloc, - vendor_dealloc, - vendor_xmit_cb, - vendor_epilog_cb, - vendor_a2dp_offload_cb -}; - - -/*BT HS UART TTY DEVICE */ -#define BT_HS_UART_DEVICE "/dev/ttyHS0" - -/*BT RIVA-SMD CHANNELS */ -#define APPS_RIVA_BT_ACL_CH "/dev/smd2" -#define APPS_RIVA_BT_CMD_CH "/dev/smd3" - -/* Variables to identify the platform */ -char transport_type[PROPERTY_VALUE_MAX]; -static boolean is_transportSMD; - -extern int soc_type; - -/* Reader thread handle */ -pthread_t hci_cmd_thread_hdl; -/* Pipe file descriptors for cancelling read operation */ -int pipefd[2]; -/* Transport file descriptor */ -int fd_transport; -/* Starting baud rate to init the tty device */ -int starting_baud = 115200; -/* Verbose output monitoring variable */ -int verbose = 1; -/* Defintion to convert integer baud rate to the - * Data type understood by tty device - */ -#define BAUDCLAUS(i) case (i): return ( B##i ) - -/*=========================================================================== -FUNCTION convert_baud - -DESCRIPTION - Routine to convert the integer baud rate to type speed_t - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - Converted Baud rate, else default 0 - -SIDE EFFECTS - None - -===========================================================================*/ -static speed_t convert_baud(uint32 baud_rate) -{ - switch (baud_rate) - { - BAUDCLAUS(50); - BAUDCLAUS(75); - BAUDCLAUS(110); - BAUDCLAUS(134); - BAUDCLAUS(150); - BAUDCLAUS(200); - BAUDCLAUS(300); - BAUDCLAUS(600); - BAUDCLAUS(1200); - BAUDCLAUS(1800); - BAUDCLAUS(2400); - BAUDCLAUS(4800); - BAUDCLAUS(9600); - BAUDCLAUS(19200); - BAUDCLAUS(38400); - BAUDCLAUS(57600); - BAUDCLAUS(115200); - BAUDCLAUS(230400); - BAUDCLAUS(460800); - BAUDCLAUS(500000); - BAUDCLAUS(576000); - BAUDCLAUS(921600); - BAUDCLAUS(1000000); - BAUDCLAUS(1152000); - BAUDCLAUS(1500000); - BAUDCLAUS(2000000); - BAUDCLAUS(2500000); - BAUDCLAUS(3000000); - BAUDCLAUS(3500000); - BAUDCLAUS(4000000); - - default: return 0; - } -} - -/*=========================================================================== -FUNCTION ftm_readerthread - -DESCRIPTION - Thread Routine to perfom asynchrounous handling of events coming on Uart/Smd - descriptor. It invokes a callback to the FTM BT layer to intiate a request - to read event bytes. - -DEPENDENCIES - The LifeTime of ReaderThraad is dependent on the status returned by the - call to ftm_bt_hci_qcomm_handle_event - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void *ftm_readerthread(void *ptr) -{ - UNUSED(ptr); - boolean status = FALSE; - int retval; - fd_set readfds; - int buf; - - do - { - FD_ZERO(&readfds); - FD_SET(fd_transport, &readfds); - FD_SET(pipefd[0],&readfds); - retval = select((pipefd[0] > fd_transport? pipefd[0] : fd_transport) + 1, - &readfds, NULL, NULL, NULL); - if(retval == -1) - { - printf("select failed\n"); - break; - } - if(FD_ISSET(pipefd[0],&readfds)) - { -#ifdef FTM_DEBUG - printf("Pipe descriptor set\n"); -#endif - read(pipefd[0],&buf,1); - if(buf == 1) - break; - } - if(FD_ISSET(fd_transport,&readfds)) - { -#ifdef FTM_DEBUG - printf("Read descriptor set\n"); -#endif - status = ftm_bt_hci_qcomm_handle_event(); - if(TRUE != status) - break; - } - } - while(1); -#ifdef FTM_DEBUG - printf("\nReader thread exited\n"); -#endif - return 0; -} -/*=========================================================================== -FUNCTION ftm_bt_pfal_set_transport - -DESCRIPTION - sets the type of transport based on the msm type - -DEPENDENCIES - NIL - -RETURN VALUE -returns the type of transport -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_pfal_set_transport(void) -{ - if (soc_type == BT_SOC_ROME || soc_type == BT_SOC_CHEROKEE || soc_type == BT_SOC_NAPIER) { - strlcpy(transport_type, "uart", sizeof(transport_type)); - printf("[%s]: Transport type is: %s\n", __FUNCTION__, transport_type); - is_transportSMD = 0; - transport_dev = BT_HS_UART_DEVICE; - } else { - strlcpy(transport_type, "smd", sizeof(transport_type)); - printf("[%s]: Transport type is: %s\n", __FUNCTION__, transport_type); - is_transportSMD = 1; - transport_dev = APPS_RIVA_BT_CMD_CH; - } - return is_transportSMD; -} - - -int init_transport_bdroid(boolean on) { - - void *so_handle; - unsigned char bdaddr[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06}; - request_status st; - int fd[CH_MAX], powerstate, ret; - - if (on) { - so_handle = dlopen(VENDOR_LIB, RTLD_NOW); - if (!so_handle) - { - ALOGE("Failed to load vendor component %s", dlerror()); - return -1; - } - - vendor_interface = (bt_vendor_interface_t *) dlsym(so_handle, "BLUETOOTH_VENDOR_LIB_INTERFACE"); - if (!vendor_interface) - { - ALOGE("Failed to accesst bt vendor interface"); - return -1; - } - - vendor_interface->init(&vendor_callbacks, bdaddr); - - ALOGI("Turn On BT power"); - powerstate = BT_VND_PWR_ON; - ret = vendor_interface->op(BT_VND_OP_POWER_CTRL, &powerstate); - if (ret < 0) - { - ALOGE("Failed to turn on power from bt vendor interface"); - return -1; - } - ret = vendor_interface->op(BT_VND_OP_USERIAL_OPEN, fd); - ALOGE("ret value: %d", ret); - /* This is just a hack; needs to be removed */ - ret = 1; - ALOGE("setting ret value to 1 manually"); - if (ret != 1) - { - ALOGE("Failed to get fd from bt vendor interface"); - return -1; - } else { - ALOGE("FD: %x", fd[0]); - return fd[0]; - } - } else { - if (vendor_interface) { - ALOGE("Close and cleanup the interfaces"); - int ret = vendor_interface->op(BT_VND_OP_USERIAL_CLOSE, NULL); - - ALOGE("ret value: %d", ret); - vendor_interface->cleanup(); - return 0; - } else { - - ALOGE("Not able to find vendor interface handle"); - return -1; - } - } -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_deinit_transport - -DESCRIPTION - Platform specific routine to de-intialise the UART/SMD resource. - -PLATFORM SPECIFIC DESCRIPTION - Closes the TTY/SMD file descriptor and sets the descriptor value to -1 - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - The Close of the descriptor will trigger a failure in the Reader Thread - and hence cause a Deinit of the ReaderThread - -===========================================================================*/ -request_status ftm_bt_hci_pfal_deinit_transport() -{ - int buf = 1; - write(pipefd[1],&buf,1); - if(!isLatestTarget()) - { - close(fd_transport); - fd_transport = -1; - } - else - { - //Use libbt-vendor for chip de-initialization - init_transport_bdroid(FALSE); - } - return STATUS_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_init_uart - -DESCRIPTION - Platform specific routine to intialise the UART/SMD resources. - -PLATFORM SPECIFIC DESCRIPTION - Opens the TTY/SMD device file descriptor, congiures the TTY/SMD device for CTS/RTS - flow control,sets 115200 for TTY as the default baudrate and starts the Reader - Thread - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_init_transport(int mode) -{ - struct termios term; - if(isLatestTarget()) - { - printf("%s: ",__func__ ); - //Use hidl_client_initialize for chip initialization - if (hidl_client_initialize(mode, &fd_transport) == false) { - printf("%s: HIDL client initialization failed \n", __func__); - return STATUS_NO_RESOURCES; - } - printf("%s: , fd:%d: ", __func__, fd_transport); - } - else - { - fd_transport = open(transport_dev, (O_RDWR | O_NOCTTY)); - - if (-1 == fd_transport) - { - return STATUS_NO_RESOURCES; - } - - if (tcflush(fd_transport, TCIOFLUSH) < 0) - { - close(fd_transport); - return STATUS_FAIL; - } - - if (tcgetattr(fd_transport, &term) < 0) - { - close(fd_transport); - return STATUS_FAIL; - } - - cfmakeraw(&term); - /* Set RTS/CTS HW Flow Control*/ - term.c_cflag |= (CRTSCTS | CLOCAL); - - if (tcsetattr(fd_transport, TCSANOW, &term) < 0) - { - close(fd_transport); - return STATUS_FAIL; - } - - /* Configure the /dev/ttyHS0 device to operate at 115200. - no need for msm8960 as it is using smd as transport - */ - if (!is_transportSMD) - if (ftm_bt_hci_pfal_changebaudrate(starting_baud) == FALSE) - { - close(fd_transport); - return STATUS_FAIL; - } - } - if (pipe(pipefd) == -1) - { - printf("pipe create error"); - return STATUS_FAIL; - } - if(mode != MODE_FM) { - /* Creating read thread which listens for various masks & pkt requests */ - pthread_create( &hci_cmd_thread_hdl, NULL, ftm_readerthread, NULL); - } - return STATUS_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_nwrite - -DESCRIPTION - Platform specific routine to write the data in the argument to the UART/SMD - port intialised. - -PLATFORM SPECIFIC DESCRIPTION - Write the buffer to the tty device and ensure it is completely written - In case of short write report error to the BT FTM layer. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_nwrite(uint8 *buf, int size) -{ - int tx_bytes = 0, nwrite; - int i = 0, buf_size = size; - uint8 loop_back_cmd[6] = {0x1, 0x02, 0x18, 0x01, 0x01}; - /*hci packet is not required to carry the Packet indicator (for UART interfaces) for msm8960 - as it is using share memory interface */ - int hci_uart_pkt_ind = 0; - - if(fd_transport < 0) - return STATUS_NO_RESOURCES; - if ( buf[PIN_CON_CMD_OGF_BIT] == PIN_CON_CMD_OGF && - buf[PIN_CON_CMD_OCF_BIT] == PIN_CON_CMD_OCF && - (size > PIN_CON_CMD_SUBOP_BIT) && - buf[PIN_CON_CMD_SUBOP_BIT] == PIN_CON_CMD_SUB_OP && - (size > PIN_CON_CMD_INTER_BIT) && - buf[PIN_CON_CMD_INTER_BIT] == PIN_CON_INTERFACE_ID) - { - is_slim_bus_test = 1; - printf("\nPinConnectivityTest: Sending loopback command to SOC before initiasing slimbus\n"); - strlcpy(buf, loop_back_cmd, size); - } - do - { - nwrite = write(fd_transport, (buf + hci_uart_pkt_ind + tx_bytes), (size - hci_uart_pkt_ind - tx_bytes)); - - if (nwrite < 0) - { - printf("Error while writing ->\n"); - return STATUS_SHORT_WRITE; - } - if (nwrite == 0) - { - printf("ftm_bt_hci_pfal_nwrite: zero-length write\n"); - return STATUS_SHORT_WRITE; - } - - tx_bytes += nwrite; - size -= nwrite; - } while (tx_bytes < size - hci_uart_pkt_ind); - - if (verbose == 1) - { - printf("[%s] %s: CMD:", get_current_time(), __FUNCTION__); - for (i = 0; i < buf_size; i++) - { - printf(" %02X", buf[i]); - } - printf("\n"); - } - - return STATUS_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_nread - -DESCRIPTION - Platform specific routine to read data from the UART/SMD port intialised into - the buffer passed in argument. - -PLATFORM SPECIFIC DESCRIPTION - Read from the tty device into the buffer and ensure the read request is - completed, in case of short read report error to the BT FTM layer. - - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_hci_pfal_nread(uint8 *buf, int size) -{ - int rx_bytes = 0, nread; - - if(fd_transport < 0) - return STATUS_NO_RESOURCES; - - do - { - nread = read(fd_transport, (buf + rx_bytes), (size - rx_bytes)); - if (nread < 0) - { - printf("Error while reading ->\n"); - return STATUS_SHORT_READ; - } - - rx_bytes += nread; - - } while (rx_bytes < size); - - return STATUS_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_bt_hci_pfal_changebaudrate - -DESCRIPTION - Platform specific routine to intiate a change in baud rate - -PLATFORM SPECIFIC DESCRIPTION - Convert the Baud rate passed to the speed_t type and program the - Baud rate change after ensuring all transmit is drained at the - current baud rate - -DEPENDENCIES - It is expected that the Upper layer will intiate a Flow Off to the - BT SoC, to signal the stop of receive if the baud rate change is - initiated while SoC init is in progress - -RETURN VALUE - RETURN VALUE - TRUE if SUCCESS, else FALSE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_hci_pfal_changebaudrate (uint32 new_baud) -{ - struct termios term; - boolean status = TRUE; - speed_t baud_code; - speed_t actual_baud_code; - - if (tcgetattr(fd_transport, &term) < 0) - { - printf("Can't get port settings\n"); - status = FALSE; - } - else - { - baud_code = convert_baud(new_baud); - (void) cfsetospeed(&term, baud_code); - if (tcsetattr(fd_transport, TCSADRAIN, &term) < 0) /* don't change speed until last write done */ - { - printf("bt_hci_qcomm_pfal_changebaudrate: tcsetattr:\n"); - status = FALSE; - } - /* make sure that we reportedly got the speed we tried to set */ - if (1 < verbose) - { - if (tcgetattr(fd_transport, &term) < 0) - { - printf("bt_hci_qcomm_pfal_changebaudrate: tcgetattr:\n"); - status = FALSE; - } - if (baud_code != (actual_baud_code = cfgetospeed(&term))) - { - printf("bt_hci_qcomm_pfal_changebaudrate: new baud %u FAILED, got 0x%x\n", new_baud, actual_baud_code); - } - else - { - printf("bt_hci_qcomm_pfal_changebaudrate: new baud %u SUCCESS, got 0x%x\n", new_baud, actual_baud_code); - } - } - } - - return status; -} diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_persist.cpp b/feeds/ipq95xx/ftm/src/ftm_bt_persist.cpp deleted file mode 100755 index e1e659bf2..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_persist.cpp +++ /dev/null @@ -1,278 +0,0 @@ -/*========================================================================== - - BT persist NV items access source file - -Description - Read/Write APIs for retreiving NV items from persist memory. - -# Copyright (c) 2011-12 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -05/25/12 jav Added FTM log that will display bt address while testing. -09/27/11 rrr Moved persist related API for c/c++ compatibility, needed - for random BD address to be persistent across target - reboots. -==========================================================================*/ - -#include "ftm_bt_persist.h" -#include - -#ifdef BT_NV_SUPPORT -#include "bt_nv.h" - -/* Semaphore shared by the Event handler and main thread */ -extern sem_t semaphore_cmd_complete; -/*Flag to manage the verbose output */ -extern int verbose; - -/*=========================================================================== -FUNCTION ftm_bt_send_nv_read_cmd - -DESCRIPTION - Helper Routine to process the nv read command - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_send_nv_read_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -) -{ - nv_persist_item_type my_nv_item; - nv_persist_stat_enum_type cmd_result; - boolean result = TRUE; - - if(cmd_len >1) - { - switch(*(cmd_buf+1)) - { - case NV_BD_ADDR_I: - cmd_result = (nv_persist_stat_enum_type)bt_nv_cmd(NV_READ_F, NV_BD_ADDR_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - if (verbose > 0) - { - fprintf (stderr, "nv_cmd_remote failed to get BD_ADDR from NV, code %d\n", cmd_result); - } - /* Send fail response */ - result = FALSE; - } - else - { - /* copy bytes */ - event_buf_nv_read_response[0] = FTM_BT_CMD_NV_READ; - event_buf_nv_read_response[1] = NV_BD_ADDR_I; - event_buf_nv_read_response[7] = my_nv_item.bd_addr[5]; - event_buf_nv_read_response[6] = my_nv_item.bd_addr[4]; - event_buf_nv_read_response[5] = my_nv_item.bd_addr[3]; - event_buf_nv_read_response[4] = my_nv_item.bd_addr[2]; - event_buf_nv_read_response[3] = my_nv_item.bd_addr[1]; - event_buf_nv_read_response[2] = my_nv_item.bd_addr[0]; - /* send BD_ADDR in the response */ - fprintf (stderr, "nv_cmd_remote got NV_BD_ADDR_I from NV: %x:%x:%x:%x:%x:%x\n", - (unsigned int) my_nv_item.bd_addr[5], (unsigned int) my_nv_item.bd_addr[4], - (unsigned int) my_nv_item.bd_addr[3], (unsigned int) my_nv_item.bd_addr[2], - (unsigned int) my_nv_item.bd_addr[1], (unsigned int) my_nv_item.bd_addr[0]); - - ftm_log_send_msg((const uint8 *)event_buf_nv_read_response,nv_read_response_size); - result = TRUE; - } - break; - - case NV_BT_SOC_REFCLOCK_TYPE_I: - cmd_result = (nv_persist_stat_enum_type)bt_nv_cmd(NV_READ_F, NV_BT_SOC_REFCLOCK_TYPE_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - if (verbose > 0) - { - fprintf (stderr, "nv_cmd_remote failed to get BD_ADDR from NV, code %d\n", cmd_result); - } - /* Send fail response */ - result = FALSE; - } - else - { - event_buf_nv_read_response[0] = FTM_BT_CMD_NV_READ; - event_buf_nv_read_response[1] = NV_BT_SOC_REFCLOCK_TYPE_I; - event_buf_nv_read_response[2] = (uint8) my_nv_item.bt_soc_refclock_type ; - event_buf_nv_read_response[7] = 0x0; - event_buf_nv_read_response[6] = 0x0; - event_buf_nv_read_response[5] = 0x0; - event_buf_nv_read_response[4] = 0x0; - event_buf_nv_read_response[3] = 0x0; - fprintf (stderr, "nv_cmd_remote got NV_BT_SOC_REFCLOCK_TYPE_I from NV: 0x%x\n", - (unsigned int) my_nv_item.bt_soc_refclock_type); - ftm_log_send_msg((const uint8 *)event_buf_nv_read_response,nv_read_response_size); - result = TRUE; - } - break; - - case NV_BT_SOC_CLK_SHARING_TYPE_I: - cmd_result = (nv_persist_stat_enum_type)bt_nv_cmd(NV_READ_F, NV_BT_SOC_CLK_SHARING_TYPE_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - if (verbose > 0) - { - fprintf (stderr, "nv_cmd_remote failed to get CLK_SHARING from NV, code %d\n", cmd_result); - } - /* Send fail response */ - result = FALSE; - } - else - { - event_buf_nv_read_response[0] = FTM_BT_CMD_NV_READ; - event_buf_nv_read_response[1] = NV_BT_SOC_CLK_SHARING_TYPE_I; - event_buf_nv_read_response[2] = (uint8) my_nv_item.bt_soc_clk_sharing_type ; - event_buf_nv_read_response[7] = 0x0; - event_buf_nv_read_response[6] = 0x0; - event_buf_nv_read_response[5] = 0x0; - event_buf_nv_read_response[4] = 0x0; - event_buf_nv_read_response[3] = 0x0; - fprintf (stderr, "nv_cmd_remote got NV_BT_SOC_CLK_SHARING_TYPE_I from NV: 0x%x\n", - (unsigned int) my_nv_item.bt_soc_refclock_type); - ftm_log_send_msg((const uint8 *)event_buf_nv_read_response,nv_read_response_size); - result = TRUE; - } - break; - } - if(result == FALSE) - ftm_log_send_msg(event_buf_nv_read_response_fail,nv_read_response_size_fail); - - sem_post(&semaphore_cmd_complete); - return result; - } - return TRUE; -} -/*=========================================================================== -FUNCTION ftm_bt_send_nv_write_cmd - -DESCRIPTION - Helper Routine to process the nv write command - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_send_nv_write_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -) -{ - nv_persist_item_type my_nv_item; - nv_persist_stat_enum_type cmd_result; - boolean result = TRUE; - if(cmd_len >1) - { - switch(*(cmd_buf+1)) - { - case NV_BD_ADDR_I: - memcpy(&my_nv_item.bd_addr, (cmd_buf+2), NV_BD_ADDR_SIZE); - cmd_result = (nv_persist_stat_enum_type)bt_nv_cmd(NV_WRITE_F, NV_BD_ADDR_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - if (verbose > 0) - { - fprintf (stderr, "nv_cmd_remote failed to get BD_ADDR from NV, code %d\n", cmd_result); - } - /* Send fail response */ - result = FALSE; - } - else - { - result = TRUE; - } - break; - - case NV_BT_SOC_REFCLOCK_TYPE_I: - switch (*(cmd_buf+2)) - { - case NV_PS_BT_SOC_REFCLOCK_32MHZ: - case NV_PS_BT_SOC_REFCLOCK_19P2MHZ: - my_nv_item.bt_soc_refclock_type = (nv_ps_bt_soc_refclock_enum_type)(*(cmd_buf+2)) ; - break; - default: - fprintf (stderr, "Invalid Ref Clock option\n"); - result = FALSE; - } - if (result != FALSE) - { - cmd_result= (nv_persist_stat_enum_type)bt_nv_cmd(NV_WRITE_F, NV_BT_SOC_REFCLOCK_TYPE_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - fprintf (stderr, "nv_cmd_remote failed to write SOC_REFCLOCK_TYPE to NV, code %d\n", cmd_result); - result = FALSE; - } - else - { - result = TRUE; - } - break; - } - case NV_BT_SOC_CLK_SHARING_TYPE_I: - switch (*(cmd_buf+2)) - { - case NV_PS_BT_SOC_CLOCK_SHARING_ENABLED: - case NV_PS_BT_SOC_CLOCK_SHARING_DISABLED: - my_nv_item.bt_soc_clk_sharing_type = (nv_ps_bt_soc_clock_sharing_enum_type)(*(cmd_buf+2)) ; - break; - default: - fprintf (stderr, "Invalid Clock Sharing option\n"); - result = FALSE; - } - if (result != FALSE) - { - cmd_result= (nv_persist_stat_enum_type)bt_nv_cmd(NV_WRITE_F, NV_BT_SOC_CLK_SHARING_TYPE_I, &my_nv_item); - if (NV_SUCCESS != cmd_result) - { - fprintf (stderr, "nv_cmd_remote failed to write SOC_CLK_SHARING_TYPE to NV, code %d\n", cmd_result); - result = FALSE; - } - else - { - result = TRUE; - } - break; - } - } - if(result == FALSE) - { - ftm_log_send_msg(event_buf_bt_nv_write_fail,nv_write_response_size); - sem_post(&semaphore_cmd_complete); - } - else - { - ftm_log_send_msg((const uint8 *)event_buf_bt_nv_write_pass,nv_write_response_size); - sem_post(&semaphore_cmd_complete); - } - return result; - } - return TRUE; -} -#endif /* End of BT_NV_SUPPORT */ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_persist.h b/feeds/ipq95xx/ftm/src/ftm_bt_persist.h deleted file mode 100755 index 353c12faa..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_persist.h +++ /dev/null @@ -1,113 +0,0 @@ -#ifndef _FTM_BT_PERSIST_H_ -#define _FTM_BT_PERSIST_H_ - -/*========================================================================== - - BT persist NV items access source file - -Description - Read/Write APIs for retreiving NV items from persist memory. - -# Copyright (c) 2011 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -09/27/11 rrr Moved persist related API for c/c++ compatibility, needed - for random BD address to be persistent across target - reboots. -==========================================================================*/ - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include -#include -#include -#include "ftm_bt_common.h" -#include - - -#ifdef BT_NV_SUPPORT - -#define FTM_BT_CMD_NV_READ 0xB -#define FTM_BT_CMD_NV_WRITE 0xC - -const uint8 nv_read_response_size = 8; -const uint8 nv_read_response_size_fail = 2; -const uint8 nv_write_response_size = 2; - -/* NV Write Responses */ -const uint8 event_buf_bt_nv_write_pass[2] = { FTM_BT_CMD_NV_WRITE, FTM_BT_DRV_NO_ERR}; -const uint8 event_buf_bt_nv_write_fail[2] = { FTM_BT_CMD_NV_WRITE, FTM_BT_NV_WRITE_FAIL}; - -/* NV Read Responses */ -const uint8 event_buf_nv_read_response_fail[8] = -{ - FTM_BT_CMD_NV_READ, FTM_BT_NV_READ_FAIL, 0x0, 0x0,0x0,0x0,0x0,0x0 -}; - -uint8 event_buf_nv_read_response[8]; -#endif /* BT_NV_SUPPORT */ - -/*=========================================================================== -FUNCTION ftm_bt_send_nv_read_cmd - -DESCRIPTION - Helper Routine to process the nv read command - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_send_nv_read_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -); - -/*=========================================================================== -FUNCTION ftm_bt_send_nv_write_cmd - -DESCRIPTION - Helper Routine to process the nv write command - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - FALSE = failure, else TRUE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean ftm_bt_send_nv_write_cmd -( - uint8 * cmd_buf, /* pointer to Cmd */ - uint16 cmd_len /* Cmd length */ -); - -#ifdef __cplusplus -} -#endif - -#endif /* _FTM_BT_PERSIST_H_ */ - diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_power_hal.h b/feeds/ipq95xx/ftm/src/ftm_bt_power_hal.h deleted file mode 100755 index 2c861b92b..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_power_hal.h +++ /dev/null @@ -1,76 +0,0 @@ -/*========================================================================== - - FTM BT POWER HAL Header File - -Description - Wrapper API definitions of the ftm bt power hal component. - -# Copyright (c) 2010 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a header file to include the wrapper API - definitions for BT power control -07/07/10 rakeshk Modified the function name of BT power set HAL routine -===========================================================================*/ -#include "ftm_bt_common.h" -#include "ftm_bt_power_pfal.h" - - -#ifndef __FTM_BT_POWER_HAL_H__ -#define __FTM_BT_POWER_HAL_H__ -/*=========================================================================== -FUNCTION ftm_bt_power_hal_set - -DESCRIPTION - Platform independent wrapper API which sets a BT power from PFAL - layer and returns the status of the PFAL operation. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_power_hal_set(bt_power_state state) -{ - return ftm_bt_power_pfal_set(state); -} -/*=========================================================================== -FtUNCTION ftm_bt_power_hal_check - -DESCRIPTION - - Platform independent wrapper API which gets the BT power from PFAL - layer and returns the current state of the BT HW. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - Current BT power state - -SIDE EFFECTS - None - -===========================================================================*/ -bt_power_state ftm_bt_power_hal_check() -{ - return ftm_bt_power_pfal_check(); -} - -#endif //__FTM_BT_POWER_HAL_H__ diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal.h b/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal.h deleted file mode 100755 index d81c47fb3..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal.h +++ /dev/null @@ -1,71 +0,0 @@ -/*========================================================================== - - FTM BT POWER PFAL Header File - -Description - PFAL API declarations of the ftm bt power pfal component. - -# Copyright (c) 2010 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a header file to hold the PFAL declarations for - BT power programming -07/07/10 rakeshk Modified the function name of BT power set PFAL routine -===========================================================================*/ -#include "ftm_bt_common.h" - -#ifndef __FTM_BT_POWER_PFAL_H__ -#define __FTM_BT_POWER_PFAL_H__ - -/*=========================================================================== -FUNCTION ftm_bt_power_pfal_set - -DESCRIPTION - Platform dependent interface API which sets the BT power - and returns the status of the toggle operation. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_power_pfal_set(bt_power_state state); - -/*=========================================================================== -FUNCTION ftm_bt_power_pfal_check - -DESCRIPTION - - Platform dependent interface API which intiates a BT power read/check - and returns the current state of the BT HW. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - Current BT power state - -SIDE EFFECTS - None - -===========================================================================*/ -bt_power_state ftm_bt_power_pfal_check(); - -#endif - diff --git a/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal_linux.c b/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal_linux.c deleted file mode 100755 index aa45bd01a..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_bt_power_pfal_linux.c +++ /dev/null @@ -1,197 +0,0 @@ -/*========================================================================== - - FTM Platform specfic BT power File - -Description - Platform specific routines to toggle/read the BT power state - -# Copyright (c) 2010-2011 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a source file to implement platform specific - routines for BT power. -07/07/10 rakeshk Added routine to find the sysfs entry for bluetooth in - runtime -07/07/10 rakeshk Added call to init the rfkill state path in case of first - read -===========================================================================*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include "ftm_bt_power_pfal.h" -#include - -/* Bluetooth Rfkill Entry for Android */ -static char *rfkill_state_path = NULL; -/*=========================================================================== -FUNCTION init_rfkill_path - -DESCRIPTION - Opens the sysfs entry for different types of rfkill and finds the one - which matches Bluetooth by iterating through the rfkill entries - and checking for bluetooth - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - TRUE if SUCCESS, else FALSE - -SIDE EFFECTS - None - -===========================================================================*/ -boolean init_rfkill_path() -{ - int fd; - int readsize; - int rfkillid; - char rfkill_path[64]; - char buf[16]; - - for (rfkillid = 0; ; rfkillid++) - { - /* Open the different rfkill type entries and check if type macthes bluetooth */ - snprintf(rfkill_path, sizeof(rfkill_path), "/sys/class/rfkill/rfkill%d/type", rfkillid); - fd = open(rfkill_path, O_RDONLY); - if (fd < 0) - { - printf("open(%s) failed: \n", rfkill_path); - return FALSE; - } - readsize = read(fd, &buf, sizeof(buf)); - close(fd); - - if (memcmp(buf, "bluetooth", 9) == 0) - { - break; - } - } - - asprintf(&rfkill_state_path, "/sys/class/rfkill/rfkill%d/state", rfkillid); - return TRUE; -} - -/*=========================================================================== -FUNCTION ftm_bt_power_pfal_set - -DESCRIPTION - Platform dependent interface API which sets the BT power state - and returns the status of the toggle operation. - -PLATFORM SPECIFIC DESCRIPTION - Opens the rfkill entry for Bleutooth and initiates a write of the value - passed as argument. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - STATUS_SUCCESS if SUCCESS, else other reasons - -SIDE EFFECTS - None - -===========================================================================*/ -request_status ftm_bt_power_pfal_set(bt_power_state state) -{ - int sz; - int fd = -1; - request_status ret = STATUS_FAIL; - const char buffer = state; - if(rfkill_state_path == NULL) - { - if(init_rfkill_path() != TRUE) - goto out; - } - - fd = open(rfkill_state_path, O_WRONLY); - if (fd < 0) - { - ret = STATUS_NO_RESOURCES; - goto out; - } - sz = write(fd, &buffer, 1); - if (sz < 0) - { - goto out; - } - ret = STATUS_SUCCESS; - -out: - if (fd >= 0) - close(fd); - return ret; -} - -/*=========================================================================== -FUNCTION ftm_bt_power_pfal_check - -DESCRIPTION - - Platform dependent interface API which intiates a BT power read/check - and returns the current state of the BT HW. - -PLATFORM SPECIFIC DESCRIPTION - Opens the rfkill entry for Bleutooth and initiates a read on the rfkill - descriptor. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN VALUE - Current BT power state - -SIDE EFFECTS - None - -===========================================================================*/ -bt_power_state ftm_bt_power_pfal_check() -{ - int sz; - bt_power_state state= BT_OFF; - int fd = -1; - char buffer = '0'; - - if(rfkill_state_path == NULL) - { - if(init_rfkill_path() != TRUE) - goto out; - } - fd = open(rfkill_state_path, O_RDONLY); - if (fd < 0) - { - goto out; - } - sz = read(fd, &buffer, 1); - if (sz < 0) - { - goto out; - } - -out: - if (fd >= 0) - close(fd); - state = (bt_power_state)buffer; - return state; -} - diff --git a/feeds/ipq95xx/ftm/src/ftm_common.h b/feeds/ipq95xx/ftm/src/ftm_common.h deleted file mode 100755 index 48bb478a9..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_common.h +++ /dev/null @@ -1,141 +0,0 @@ -/*========================================================================== - - FTM BT HCI PFAL Header File - -Description - Queue insert/delete routines and data structures - -# Copyright (c) 2010-2011, 2014 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created -11/09/10 rakeshk Added two APIs to perform read/write of BT Top level - I2C registers -===========================================================================*/ - -#if defined(CONFIG_FTM_BT) || defined(CONFIG_FTM_FM) -#include -#include "ftm_bt.h" -#include -#include -/* Semaphore shared by the Event handler and main thread */ -extern sem_t semaphore_cmd_complete; -/* Structure used by the FTM BT/FM component to - * queue the FTM packet contents - */ - -pthread_mutex_t fm_event_lock; -pthread_cond_t fm_event_cond; -extern int fm_passthrough; - -typedef struct cmdQ -{ - int command_id;/*Command id */ - void *data; /* Command data */ - boolean bt_command; /* whether BT or FM command */ - int cmd_len; /* Command length */ - struct cmdQ *next; /* pointer to next CmdQ item */ -}cmdQ; - -/* Callback declaration for BT FTM packet processing */ -void *bt_ftm_diag_dispatch(void *req_pkt, uint16 pkt_len); - -/*=========================================================================== -FUNCTION qinsert_cmd - -DESCRIPTION - Command Queue insert routine. Add the FTM BT packet to the Queue - -DEPENDENCIES - NIL - -RETURN VALUE - RETURNS FALSE without adding queue entry in failure - to allocate a new Queue item - else returns TRUE - -SIDE EFFECTS - increments the number of commands queued - -===========================================================================*/ -boolean qinsert_cmd(ftm_bt_pkt_type *ftm_bt_pkt); -/*=========================================================================== -FUNCTION dequeue_send - -DESCRIPTION - Command Queue delete and calls HCI send routine. Dequeues the HCI data from - the queue and sends it to HCI HAL layer. - -DEPENDENCIES - NIL - -RETURN VALUE - RETURN NIL - -SIDE EFFECTS - decrements the number of command queued - -===========================================================================*/ -void dequeue_send(); - -/*=========================================================================== -FUNCTION i2c_write - -DESCRIPTION - Helper function to construct the I@C request to be sent to the FM I2C - driver - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ -int i2c_write -( -int fd, -unsigned char offset, -const unsigned char* buf, -unsigned char len, -unsigned int slave_addr -); - -/*=========================================================================== -FUNCTION i2c_read - -DESCRIPTION - Helper function to construct the I2C request to read data from the FM I2C - driver - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ -int i2c_read -( -int fd, -unsigned char offset, -const unsigned char* buf, -unsigned char len, -unsigned int slave_addr -); -#endif diff --git a/feeds/ipq95xx/ftm/src/ftm_dbg.h b/feeds/ipq95xx/ftm/src/ftm_dbg.h deleted file mode 100755 index 934381e39..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_dbg.h +++ /dev/null @@ -1,43 +0,0 @@ -/*========================================================================== - - FTM WLAN Source File - -# Copyright (c) 2013-2014 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ -#ifndef _FTM_DBG_H_ -#define _FTM_DBG_H_ -#include - -#define FTM_DBG_ERROR 0x00000001 -#define FTM_DBG_INFO 0x00000002 -#define FTM_DBG_TRACE 0x00000004 - -#define FTM_DBG_DEFAULT (FTM_DBG_ERROR) - -extern unsigned int g_dbg_level; - -struct ftm_config -{ - int total_num_slots; - uint32_t slot_id[4]; - uint32_t slot_size[4]; -}; -extern struct ftm_config ftm_cfg; - -#ifdef DEBUG -void current_time(); -#define DPRINTF(_level, _x...)\ - do {\ - if (g_dbg_level & (_level))\ - {\ - fprintf(stderr, _x);\ - }\ - } while (0); - -#else -#define DPRINTF(_level, x...) do { } while (0); -#endif - -#endif /* _FTM_DBG_H_ */ diff --git a/feeds/ipq95xx/ftm/src/ftm_fm.c b/feeds/ipq95xx/ftm/src/ftm_fm.c deleted file mode 100755 index f266b10bf..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_fm.c +++ /dev/null @@ -1,3804 +0,0 @@ -/*========================================================================== - - FTM FM Source File - -Description - FTM platform independent processing of packet data - -# Copyright (c) 2010-2012 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -08/03/2011 uppalas Adding support for new ftm commands -06/18/10 rakeshk Created a source file to implement routines for FTM - command processing for FM -07/06/10 rakeshk Updated the ftm_fm_dispatch with new commands -01/07/11 rakeshk Removed the check condition in FM bus read/write for - FM On. This is due to the reason that the top level i2c - read/write of the Bahama/Marimba SoC doesnot depend on FM - SoC being intialised. - Added support for new FM FTM APIS -02/09/11 rakeshk Added support for BLER FTM APIs -04/03/11 ananthk Added support for FM FTM Transmit APIs -===========================================================================*/ -#include -#include "event.h" -#include "msg.h" -#include "log.h" - -#include "diag_lsm.h" - -#include "diagpkt.h" -#include "diagcmd.h" -#include "diag.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "ftm_fm_pfal.h" -#include "ftm_common.h" -#include -#include -#include -#include -#include - -#define UNUSED(x) (void)(x) - -#define FTM_DEBUG -const int PROP_SET_SUCC = 0; -const int init_audio_vlm = 50; //set the initial volume to 50 -const char *const fm_audio_disable = "quit"; -const char *const audio_ftm_cmds = "/data/vendor/misc/audio/ftm_commands"; -/* Global union type for FM params */ -fm_cfg_request fmrequestparams; -static uint8 fm_audio_output = -1; -static uint8 enable_mm_fmconfig = 0; -extern int ftm_audio_fd; -volatile fm_power_state fmPowerState = FM_POWER_OFF; -fm_i2c_params common_handle; -extern fm_station_params_available fm_global_params; -/*=========================================================================== -FUNCTION ftm_send_async_msg - -DESCRIPTION - Processes the log buffer sent and writes it to the libdiag for sending the Cmd - response - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ - -void ftm_send_async_msg( - uint8 EvName, - /**< Event ID indicates which event is being returned. */ - - FmEvResultType EvResult, - /**< Event result indicates success or failure. */ - - PACKED void* response, - /**< Event body contains the returned event information. */ - - uint16 length - /**< Event response length. */) -{ - int result = log_status(LOG_FTM_FM_C); - ftm_fm_log_pkt_type* ftm_fm_log_pkt_ptr = NULL; - - if((response == NULL) || (length == 0)) - { - return; - } - - if(result == 1) - { - ftm_fm_log_pkt_ptr = (ftm_fm_log_pkt_type *)log_alloc(LOG_FTM_FM_C,FTM_FM_LOG_HEADER_SIZE + (length-1)); - if(ftm_fm_log_pkt_ptr != NULL) - { - /* FTM LOG FM ID */ - ftm_fm_log_pkt_ptr->EvName = EvName; - ftm_fm_log_pkt_ptr->EvResult = EvResult; - memcpy((void *)ftm_fm_log_pkt_ptr->data,(void *)response,length); - log_commit( ftm_fm_log_pkt_ptr ); - } - } -} - -/*=========================================================================== -FUNCTION convert_cmdstatus_to_ftmstatus - -DESCRIPTION - Helper routine to convert the FM command status to FTM command status - -DEPENDENCIES - NIL - -RETURN VALUE - FTM command status - -SIDE EFFECTS - None - -===========================================================================*/ -ftm_fm_api_result_type convert_cmdstatus_to_ftmstatus(fm_cmd_status_type cmdStatus) -{ - switch(cmdStatus) - { - case FM_CMD_SUCCESS: - return FTM_FM_SUCCESS; - case FM_CMD_NO_RESOURCES: - return FTM_NO_RESOURCES; - case FM_CMD_INVALID_PARAM: - return FTM_INVALID_PARAM; - case FM_CMD_DISALLOWED: - return FTM_FM_DISALLOWED; - case FM_CMD_UNRECOGNIZED_CMD: - return FTM_FM_UNRECOGNIZED_CMD; - case FM_CMD_FAILURE: - return FTM_FAIL; - case FM_CMD_PENDING: - return FTM_FM_PENDING; - default : - return FTM_FAIL; - } -} - -/*=========================================================================== -FUNCTION ftm_fm_copy_request_data - -DESCRIPTION - Helper routine to copy the FTM command data to the global union data type - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void ftm_fm_copy_request_data -( - PACKED void * request , - uint16 length -) -{ - ftm_fm_pkt_type* req_pkt; - int i; - req_pkt = (ftm_fm_pkt_type *) request; - /* Copy any params into our union if they exist. */ - memmove((void*)(&fmrequestparams), - (void*)(&req_pkt->data), - (length)); -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_enable_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - EnableReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Enable Receiver - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_enable_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - if(fmPowerState == FM_TX_ON || fmPowerState == FM_POWER_TRANSITION) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - else if (fmPowerState == FM_RX_ON) - return response; - - ftm_fm_run_mm(); - cmdStatus = EnableFM(&fmrequestparams.cfg_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_enable_transmitter - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - EnableTransmitter, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Enable Transmitter - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_enable_transmitter -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - printf("\n Inside ftm_fm_tx_enable_transmitter() function...\n"); - - response->result = FTM_FM_SUCCESS; - if(fmPowerState == FM_RX_ON || fmPowerState == FM_POWER_TRANSITION) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - else if (fmPowerState == FM_TX_ON) - return response; - - fmrequestparams.cfg_param.is_fm_tx_on = 1; - cmdStatus = EnableFM(&fmrequestparams.cfg_param); - - printf("\nValue of 'cmdStatus' is %d",cmdStatus); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_tx_ps_info - -DESCRIPTION - This routine is used to send the RDS PS Info over the transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Enable Transmitter - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_ps_info -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - printf("\n Inside ftm_fm_tx_ps_info() function...\n"); - - cmdStatus = TransmitPS(&fmrequestparams.tuFmPSParams); - - printf("\nValue of 'cmdStatus' is %d",cmdStatus); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_stop_ps_info - -DESCRIPTION - This routine is used to stop transmitting the RDS PS info - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the stopTransmitPS - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_stop_ps_info -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - printf("\n Inside ftm_fm_tx_stop_ps_info() function...\n"); - - cmdStatus = stopTransmitPS(); - - printf("\nValue of 'cmdStatus' is %d",cmdStatus); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*=========================================================================== */ - - -/*=========================================================================== -FUNCTION ftm_fm_tx_rt_info - -DESCRIPTION - This routine is used to send the RDS RT Info over the transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the RT Start - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_rt_info -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - printf("\n Inside ftm_fm_tx_rt_info() function...\n"); - - cmdStatus = TransmitRT(&fmrequestparams.tuFmRTParams); - - printf("\nValue of 'cmdStatus' is %d",cmdStatus); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== */ -/*=========================================================================== -FUNCTION ftm_fm_tx_stop_rt_info - -DESCRIPTION - This routine is used to stop transmitting the RDS RT info - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the stopTransmitRT - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_stop_rt_info -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - printf("\n Inside ftm_fm_tx_stop_rt_info() function...\n"); - - cmdStatus = stopTransmitRT(); - - printf("\nValue of 'cmdStatus' is %d",cmdStatus); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*=========================================================================== */ - -/*=========================================================================== -FUNCTION ftm_fm_tx_get_ps_features - -DESCRIPTION - This routine is used to get all the supported TX PS features - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the getTxPSFeatures() - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_get_ps_features -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - -#ifdef FTM_DEBUG - printf("\n Inside ftm_fm_tx_get_ps_features function...\n"); -#endif - - cmdStatus = getTxPSFeatures(); - -#ifdef FTM_DEBUG - printf("\nValue of 'cmdStatus' is %d",cmdStatus); -#endif - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - - -/*=========================================================================== - -FUNCTION ftm_fm_disable_audio - -DESCRIPTION - This function is used to disable FTM FM audio. - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_disable_audio -( -void -) -{ - int ret; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( generic_response ) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - printf("enter ftm_fm_disable_audio\n"); - - if (response != NULL) { - response->result = FTM_FM_SUCCESS; - ret = property_set("ftm.fm_stop", "true"); - if (ret != PROP_SET_SUCC) { - response->result = FTM_FAIL; - return response; - } - } else - printf("ftm_fm_disable_audio unable to allocate memory for response packet \n"); - if (ftm_audio_fd > 0) - close(ftm_audio_fd); - printf("Disable audio\n"); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_disable_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - DisableFM, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the DisableFM - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_disable_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - - if(fmPowerState == FM_POWER_OFF) - return response; - - else if(fmPowerState == FM_TX_ON || fmPowerState == FM_POWER_TRANSITION) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - cmdStatus = DisableFM(&fmrequestparams.cfg_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - fmPowerState = FM_POWER_OFF; - ftm_fm_disable_audio(); - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_tx_disable_transmitter - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - DisableFM, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the DisableFM - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_disable_transmitter -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - - if(fmPowerState == FM_POWER_OFF) - return response; - else if (fmPowerState == FM_RX_ON || fmPowerState == FM_POWER_TRANSITION) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } - - cmdStatus = DisableFM(&fmrequestparams.cfg_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - fmPowerState = FM_POWER_OFF; - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_configure_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - ConfigureFM, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the ConfigureFM - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_configure_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - fmrequestparams.cfg_param.is_fm_tx_on = 0; - cmdStatus = ConfigureFM(&fmrequestparams.cfg_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_configure_transmitter - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - ConfigureFM, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the ConfigureFM - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_configure_transmitter -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - fmrequestparams.cfg_param.is_fm_tx_on = 1; - cmdStatus = ConfigureFM(&fmrequestparams.cfg_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_setfrequency_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - SetFrequencyReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Frequency - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setfrequency_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetFrequencyReceiver(fmrequestparams.freq); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_setfrequency_transmitter - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - SetFrequencyTransmitter, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Frequency - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_setfrequency_transmitter -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetFrequencyTransmitter(fmrequestparams.freq); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_setmutemode_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - SetMuteModeReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Mute Mode - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setmutemode_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - mutemode_response * response = (mutemode_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(mutemode_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetMuteModeReceiver(fmrequestparams.mute_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - response->mutemode = fmrequestparams.mute_param; - return response; -} - - -/*=========================================================================== -FUNCTION ftm_fm_set_soft_mute_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - SetMuteModeReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Mute Mode - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_set_soft_mute_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetSoftMuteModeReceiver(fmrequestparams.soft_mute_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_set_antenna - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - setAntenna, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Antenna - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_set_antenna -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = SetAntenna(fmrequestparams.antenna_type); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_peek_riva_word - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmRivaPeekData, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the peek riva word - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_peek_riva_word -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - rivaData_response * response = (rivaData_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(rivaData_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - - cmdStatus = FmRivaPeekData(fmrequestparams.riva_peek_params); - response->start_address = fm_global_params.riva_data_access_params.startaddress; - response->length = fm_global_params.riva_data_access_params.payload_length; - memcpy(&response->data[0], &fm_global_params.riva_data_access_params.data[0], - response->length); - response->sub_opcode = fm_global_params.riva_data_access_params.subOpcode; - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; - -} - -/*=========================================================================== -FUNCTION ftm_fm_poke_riva_word - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmRivaPokeData, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the poke riva word - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_poke_riva_word -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = FmRivaPokeData(fmrequestparams.riva_data_access_params); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; - -} - -/*=========================================================================== -FUNCTION ftm_fm_poke_ssbi_reg - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmSSBIPokeData, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the poke ssbi reg - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_poke_ssbi_reg -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; -#ifdef FTM_DEBUG - printf("ssbi address = %x \n", fmrequestparams.ssbi_access_params.startaddress); - printf("ssbi data = %x \n",fmrequestparams.ssbi_access_params.data); -#endif - - cmdStatus = FmSSBIPokeData(fmrequestparams.ssbi_access_params); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_peek_ssbi_reg - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmSSBIPeekData, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the poke ssbi reg - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_peek_ssbi_reg -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - ssbiPeek_response * response = (ssbiPeek_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(ssbiPeek_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; -#ifdef FTM_DEBUG - printf("SSBI peek address = %x",fmrequestparams.ssbi_access_params.startaddress); -#endif - - cmdStatus = FmSSBIPeekData(fmrequestparams.ssbi_access_params); - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - response->data = fm_global_params.ssbi_peek_data; - return response; - -} - -/*=========================================================================== -FUNCTION ftm_fm_set_get_reset_agc - -DESCRIPTION - This is a synchronous command for Set/Get Gain State and Reset AGC. - -DEPENDENCIES - NIL - -RETURN VALUE - Current AGC Gain State - AGC Gain State one Change ago - AGC Gain State two Changes ago - AGC Gain State three changes ago - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_set_get_reset_agc -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - set_get_reset_agc_response * response = (set_get_reset_agc_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(set_get_reset_agc_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) //&& (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - -#ifdef FM_SOC_TYPE_CHEROKEE - response->result = FTM_FM_SUCCESS; - - printf("AGC req. ucctrl params = %x\n",fmrequestparams.set_get_agc_req_parameters.ucCtrl); - printf("AGC req. params state = %x\n",fmrequestparams.set_get_agc_req_parameters.ucGainState); - - cmdStatus = FmSetGetResetAGC(fmrequestparams.set_get_agc_req_parameters); - - sleep(1); //In order to get the current value which can be delayed. - - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - response->uccurrentgainstate = fm_global_params.set_get_reset_agc_params.ucCurrentGainState; - response->ucgainstatechange1 = fm_global_params.set_get_reset_agc_params.ucGainStateChange1; - response->ucgainstatechange2 = fm_global_params.set_get_reset_agc_params.ucGainStateChange2; - response->ucgainstatechange3 = fm_global_params.set_get_reset_agc_params.ucGainStateChange3; - - printf("response->result = %d\n", response->result); - - if (fmrequestparams.set_get_agc_req_parameters.ucCtrl == 0x00) { - printf("AGC states set successfully\n"); - } else if (fmrequestparams.set_get_agc_req_parameters.ucCtrl == 0x02) { - printf("AGC states reset successfully\n"); - } else { - printf("AGC response: \nCurrentGainState: %x\nGainStateChangeBack1: %x\nGainStateChangeBack2:\ - %x\nGainStateChangeBack3: %x\n", response->uccurrentgainstate, response->ucgainstatechange1, - response->ucgainstatechange2, response->ucgainstatechange3); - } - - return response; - -#else - printf("response->result = %d\n", response->result); - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - -#endif - -} - -/*=========================================================================== -FUNCTION ftm_fm_read_rds_grp_cntrs - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmReadRdsGrpCntrs, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Read RDS Grp - counters FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - - -PACKED void * ftm_fm_read_rds_grp_cntrs -( -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - ReadRDSCntrs_responce * response = (ReadRDSCntrs_responce *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(ReadRDSCntrs_responce) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = FmRDSGrpcntrs(fmrequestparams.rds_grp_counters); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - memcpy(&response->read_rds_cntrs.totalRdsSBlockErrors , - &fm_global_params.rds_group_counters,sizeof(fm_rds_grp_cntrsparams)); - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_read_rds_grp_cntrs_ext - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmReadRdsGrpCntrsExt, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Read RDS Grp - counters FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - - -PACKED void * ftm_fm_read_rds_grp_cntrs_ext -( -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - ReadRDSCntrs_ext_response * response = (ReadRDSCntrs_ext_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(ReadRDSCntrs_ext_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - -#ifdef FM_SOC_TYPE_CHEROKEE - response->result = FTM_FM_SUCCESS; - cmdStatus = FmRDSGrpcntrsExt(fmrequestparams.rds_grp_counters_ext); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - memcpy(&response->read_rds_cntrs_ext.totalRdsSyncLoss , - &fm_global_params.rds_group_counters_extended,sizeof(fm_rds_grpcntrs_extendedparams)); - return response; -#else - printf("response->result = %d\n", response->result); - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; -#endif -} - -/*=========================================================================== -FUNCTION ftm_fm_default_read - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - FmDefaultRead, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Read Default FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_default_read -( -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - default_read_rsp * response = (default_read_rsp *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(default_read_rsp) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if ((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->status= convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } -#ifdef FTM_DEBUG - printf("\n Inside ftm_fm_read_defaults() function...\n"); -#endif - - cmdStatus = FmDefaultRead(fmrequestparams.rd_default); - response->status = convert_cmdstatus_to_ftmstatus(cmdStatus); -#ifdef FTM_DEBUG - printf("\nValue of 'response->status'is %d",response->status); -#endif - if (response->status == FTM_FM_SUCCESS) { - response->data_length = fm_global_params.default_read_data.data_length; - memcpy(&response->data[0], &fm_global_params.default_read_data.data[0], - response->data_length); - } - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_default_write - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - DefaultWrite, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the write Default FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_default_write -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if ((fmPowerState != FM_RX_ON) && (fmPowerState != FM_TX_ON)) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_DISALLOWED); - return response; - } -#ifdef FTM_DEBUG - printf("\n Inside ftm_fm_rx_write_defaults() function...\n"); -#endif - cmdStatus = FmDefaultWrite(&fmrequestparams.wr_default); -#ifdef FTM_DEBUG - printf("\nValue of 'cmdStatus' is %d",cmdStatus); -#endif - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); -#ifdef FTM_DEBUG - printf("\nValue of 'response->result' is %d",response->result); -#endif - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_pwr_lvl_cfg - -DESCRIPTION - - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the tx power level - configuration command - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_pwr_lvl_cfg -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc(DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if (fmPowerState != FM_TX_ON) { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; -#ifdef FTM_DEBUG - printf("FM Tx power configuration to = %x", fmrequestparams.tx_pwr_cfg); -#endif - - cmdStatus = FmTxPwrLvlCfg(fmrequestparams.tx_pwr_cfg); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_tx_tone_generation - -DESCRIPTION - - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the tx tonoe generator - command - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_tx_tone_generation -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_TX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - -#ifdef FTM_DEBUG - printf("FM Tx tone type is setting to = %x",fmrequestparams.tx_tone_param); -#endif - - cmdStatus = FmTxToneGen(fmrequestparams.tx_tone_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_set_hlsi - -DESCRIPTION - - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set HlSi - command - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_set_hlsi -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - -#ifdef FTM_DEBUG - printf("FM Rx HlSi is setting to = %x",fmrequestparams.hlsi); -#endif - - cmdStatus = FmSetHlSi(fmrequestparams.hlsi); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_set_notch_filter - -DESCRIPTION - - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set notch filter - command - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_set_notch_filter -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - -#ifdef FTM_DEBUG - printf("FM Rx Notch filter is setting to = %x",fmrequestparams.notch); -#endif - - cmdStatus = FmSetNotchFilter(fmrequestparams.notch); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - printf("responce->staus= %d",response->result); - return response; -} - - - - -/*=========================================================================== -FUNCTION ftm_fm_rx_setstereomode_receiver - -DESCRIPTION - HAL routine to process the response from the PFAL layer call - SetStereoModeReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set Stereo Mode - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setstereomode_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - stereomode_response * response = (stereomode_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(stereomode_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetStereoModeReceiver(fmrequestparams.stereo_param); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - response->stereomode = fmrequestparams.stereo_param; - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_getstationparameters_receiver - -DESCRIPTION - HAL routine to aggregrate the reponse from the PFAL layer call - GetStationParametersReceiver, also constructs the response packet - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Get Station - parameters FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getstationparameters_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - fm_station_params_available getparamavble; - fm_rx_get_station_parameters_response * response = (fm_rx_get_station_parameters_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(fm_rx_get_station_parameters_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = GetStationParametersReceiver(&getparamavble); - if(cmdStatus == FM_CMD_SUCCESS) - { - response->result = FTM_FM_SUCCESS; - response->stationFreq = getparamavble.current_station_freq; - response->servAvble = getparamavble.service_available; - response->rssi = getparamavble.rssi; - response->stereoProgram = getparamavble.stype; - response->rdsSyncStatus = getparamavble.rds_sync_status; - response->muteMode = getparamavble.mute_status; - } - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_rx_setrdsoptions_receiver - -DESCRIPTION - HAL routine to set the RDS options for the RDS/RDBS subsystem. - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set RDS options - FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setrdsoptions_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetRdsOptionsReceiver(fmrequestparams.rds_options); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_setrdsgroupproc_receiver - -DESCRIPTION - HAL routine to set the RDS group process options for the RDS/RDBS - subsystem. - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the Set RDS group proc - options FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - -PACKED void * ftm_fm_rx_setrdsgroupproc_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetRdsGroupProcReceiver(fmrequestparams.rds_group_options); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_setpowermode_receiver - -DESCRIPTION - HAL routine to set the power mode of FM Receiver Operation - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setpowermode_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetPowerModeReceiver(fmrequestparams.power_mode); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_setsignalthreshold_receiver - -DESCRIPTION - HAL routine to set the signal threshold of FM Receiver - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_setsignalthreshold_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SetSignalThresholdReceiver(fmrequestparams.signal_threshold); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_getsignalthreshold_receiver - -DESCRIPTION - HAL routine to get the signal threshold of FM Receiver - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getsignalthreshold_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - threshold_response * response = (threshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(threshold_response) - ); - uint8 threshold; - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = GetSignalThresholdReceiver(&threshold); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - response->threshold = threshold; - return response; -} - - -/*=========================================================================== -FUNCTION ftm_fm_rx_getrssilimit_receiver - -DESCRIPTION - HAL routine to print the rssi limit of FM Receiver - This command is used for debug purposes - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getrssilimit_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = GetRSSILimits(); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_getpsinfo_receiver - -DESCRIPTION - HAL routine to print the PS info of tuned channel on the Diag - This command is used for debug purposes - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getpsinfo_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - fmrdsps_response * response = (fmrdsps_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(fmrdsps_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - memcpy(response->string, fm_global_params.pgm_services, - fm_global_params.fm_ps_length); - response->length = fm_global_params.fm_ps_length; - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_getrtinfo_receiver - -DESCRIPTION - HAL routine to print the Radio text data of tuned channel on the Diag - This command is used for debug purposes - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getrtinfo_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - fmrdsrt_response * response = (fmrdsrt_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(fmrdsrt_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - memcpy(response->string, fm_global_params.radio_text, - fm_global_params.fm_rt_length); - response->length = fm_global_params.fm_rt_length; - return response; -} - - -/*=========================================================================== -FUNCTION ftm_fm_rx_getafinfo_receiver - -DESCRIPTION - HAL routine to print the Alternate Frequency list of current tuned channel - on the Diag. This command is used for debug purposes - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - None - -===========================================================================*/ -PACKED void * ftm_fm_rx_getafinfo_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = GetAFInfoReceiver(); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_searchstations_receiver - -DESCRIPTION - HAL routine to search for stations from the currently tuned frequency - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - The Result of the search will be output on the Diag through debug messages - -===========================================================================*/ -PACKED void * ftm_fm_rx_searchstations_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SearchStationsReceiver(fmrequestparams.search_stations_options); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_searchrdsstations_receiver - -DESCRIPTION - HAL routine to search for stations from the currently tuned frequency with - a specific program type match - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - The Result of the search will be output on the Diag through debug messages - -===========================================================================*/ -PACKED void * ftm_fm_rx_searchrdsstations_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SearchRdsStationsReceiver(fmrequestparams.search_rds_stations_options); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== -FUNCTION ftm_fm_rx_searchstationslist_receiver - -DESCRIPTION - HAL routine to search for list of stations from the currently tuned frequency with - a specific program type match,signal quality etc - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - The Result of the search will be output on the Diag through debug messages - -===========================================================================*/ -PACKED void * ftm_fm_rx_searchstationslist_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = SearchStationListReceiver(fmrequestparams.search_list_stations_options); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - - -/*=========================================================================== -FUNCTION ftm_fm_rx_cancelsearch_receiver - -DESCRIPTION - HAL routine to cancel the previous search for stations - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - NONE - -===========================================================================*/ -PACKED void * ftm_fm_rx_cancelsearch_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = CancelSearchReceiver(); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*=========================================================================== -FUNCTION ftm_fm_rx_fmbuswrite_receiver - -DESCRIPTION - HAL routine to perform a I2C bus write operation to FM Slave ID - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - NONE - -===========================================================================*/ -PACKED void * ftm_fm_rx_fmbuswrite_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = FmBusWriteReceiver(fmrequestparams.i2c_params); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - - -/*=========================================================================== -FUNCTION ftm_fm_rx_fmbusread_receiver - -DESCRIPTION - HAL routine to perform a I2C bus read operation to FM Slave ID - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the generic response to the FTM FM - packet - -SIDE EFFECTS - NONE - -===========================================================================*/ -PACKED void * ftm_fm_rx_fmbusread_receiver -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - fmbusread_response * response = (fmbusread_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(fmbusread_response) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - response->result = FTM_FM_SUCCESS; - cmdStatus = FmBusReadReceiver(&fmrequestparams.i2c_params); - response->length = fmrequestparams.i2c_params.payload_length; - memcpy(response->data,fmrequestparams.i2c_params.data,fmrequestparams.i2c_params.payload_length); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - - -/*=========================================================================== - -FUNCTION ftm_fm_rx_get_af_threshold - -DESCRIPTION - This function is used to get the current AF threshold of the FM SoC - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_rx_get_af_threshold -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - fmrxsetafthreshold_response * response = (fmrxsetafthreshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetafthreshold_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - /* Populate the registers 0x20-0x2F */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x0F; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - usleep(WAIT_ON_ISR_DELAY); - - /* Read the RDS AF threshold value */ - common_handle.offset = AFTH_OFFSET; - common_handle.payload_length = 0x02; - - /* Clear buffer */ - memset(&common_handle.data[0], - 0, - sizeof(common_handle.data)); - - if (FM_CMD_SUCCESS != FmBusReadReceiver(&common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - printf(" Get AF threshold data [0] = 0x%x data[1] = 0x%x\n",common_handle.data[0],common_handle.data[1]); - -out : - response->afthreshold = (common_handle.data[0] << 8) | (common_handle.data[1]); - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" ftm_fm_get_af_threshold Failure - %d", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" ftm_fm_get_af_threshold - FM_CMD_SUCCESS\n"); - printf(" ftm_fm_get_af_threshold = 0x%x \n", response->afthreshold); - response->result = FTM_FM_SUCCESS; - } - - return response; -} - -/*=========================================================================== - -FUNCTION ftm_fm_rx_get_rssi_check_timer - -DESCRIPTION - This function is used to get the configured periodic timer to monitor - channel quality - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_rx_get_rssi_check_timer -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - fmrxsetrssichecktimer_response * response = (fmrxsetrssichecktimer_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetrssichecktimer_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - /* Populate the registers 0x20-0x2C */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x16; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - usleep(WAIT_ON_ISR_DELAY); - - /* Read the CHCOND value */ - common_handle.offset = CHCOND_OFFSET; - common_handle.payload_length = 0x01; - - /* Clear buffer */ - memset(&common_handle.data[0], - 0, - sizeof(common_handle.data)); - - if (FM_CMD_SUCCESS != FmBusReadReceiver(&common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - } -out : - response->rssitimer = common_handle.data[0]; - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" ftm_fm_get_rssi_check_timer Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" ftm_fm_get_rssi_check_timer - FM_CMD_SUCCESS\n"); - printf(" ftm_fm_get_rssi_check_timer = 0x%x \n", response->rssitimer); - response->result = FTM_FM_SUCCESS; - } - return response; -} - -/*=========================================================================== - -FUNCTION ftm_fm_rx_get_rds_pi_timer - -DESCRIPTION - This function is used to get the time set to wait for an RDS interrupt before - reporting no RDS data - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_rx_get_rds_pi_timer -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - fmrxsetrdspitimer_response * response = (fmrxsetrdspitimer_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetrdspitimer_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - /* Populate the registers 0x20-0x2C */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x16; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - usleep(WAIT_ON_ISR_DELAY); - /* Read the RDS timeout value */ - common_handle.offset = RDSTIMEOUT_OFFSET; - common_handle.payload_length = 0x01; - - /* Clear buffer */ - memset(&common_handle.data[0], - 0, - sizeof(common_handle.data)); - - if (FM_CMD_SUCCESS != FmBusReadReceiver(&common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - } - -out : - response->rdspitimer = common_handle.data[0]; - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" ftm_fm_get_rds_pi_timer Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" ftm_fm_get_rds_pi_timer - FM_CMD_SUCCESS\n"); - printf(" ftm_fm_get_rds_pi_timer = 0x%x \n", response->rdspitimer); - response->result = FTM_FM_SUCCESS; - } - return response; -} -/*=========================================================================== - -FUNCTION ftm_fm_rx_set_af_threshold - -DESCRIPTION - This function is used to set the AF threshold of the FM SoC - -DEPENDENCIES - none - -===========================================================================*/ - -PACKED void* ftm_fm_rx_set_af_threshold -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - fmrxsetafthreshold_response * response = (fmrxsetafthreshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetafthreshold_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - /* Populate the registers 0x20-0x2F */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x0F; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - /* Wait for 15 ms to allow the SoC to poulate the registers 0x20-0x2F */ - usleep(WAIT_ON_ISR_DELAY); - - /* Override the RDS AF threshold value */ - common_handle.offset = AFTH_OFFSET; - common_handle.data[0] = ((fmrequestparams.rx_af_threshold >> 8) & 0xFF); - common_handle.data[1] = ((fmrequestparams.rx_af_threshold) & 0xFF); - common_handle.payload_length = 0x02; - - printf(" Set AF threshold data [0] = 0x%x data[1] = 0x%x\n",common_handle.data[0],common_handle.data[1]); - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - /* Apply back the new values */ - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x8F; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - -out : - response->afthreshold = fmrequestparams.rx_af_threshold; - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" FmApi_SetAfThreshold Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" FmApi_SetAfThreshold - fmrequestparams.rx_af_threshold = 0x%x\n", fmrequestparams.rx_af_threshold); - response->result = FTM_FM_SUCCESS; - } - - return response; - -} - -/*=========================================================================== - -FUNCTION ftm_fm_rx_set_rssi_check_timer - -DESCRIPTION - This function is used to set the periodic timer to monitor channel quality - -DEPENDENCIES - none - -===========================================================================*/ - -PACKED void* ftm_fm_rx_set_rssi_check_timer -( -void -) -{ - fm_cmd_status_type fmCmdStatus= FM_CMD_SUCCESS; - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - fmrxsetrssichecktimer_response * response = (fmrxsetrssichecktimer_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetrssichecktimer_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - printf(" ftm_fm_set_rssi_check_timer gtsFtmFM.tuFmParams.ucRxRssichecktimer = %d\n",fmrequestparams.rx_rssi_checktimer); - /* Populate the registers 0x20-0x2C */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x16; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - /* Wait for 15 ms to allow the SoC to poulate the registers 0x20-0x2C */ - usleep(WAIT_ON_ISR_DELAY); - - /* Override the CHCOND value */ - common_handle.offset = CHCOND_OFFSET; - common_handle.data[0] = (fmrequestparams.rx_rssi_checktimer & 0xFF); - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - /* Apply back the new values */ - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x96; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - -out : - response->rssitimer = fmrequestparams.rx_rssi_checktimer; - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" FmApi_SetRssiCheckTimer Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" FmApi_SetRssiCheckTimer - fmrequestparams.rx_rssi_checktimer = %d\n", - fmrequestparams.rx_rssi_checktimer); - response->result = FTM_FM_SUCCESS; - } - - return response; -} - -/*=========================================================================== - -FUNCTION ftm_fm_rx_set_rds_pi_timer - -DESCRIPTION - This function is used to set the time to wait for an RDS interrupt before - reporting no RDS data - -DEPENDENCIES - none - -===========================================================================*/ - -PACKED void* ftm_fm_rx_set_rds_pi_timer -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - - /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ - - fmrxsetrdspitimer_response * response = (fmrxsetrdspitimer_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( fmrxsetrdspitimer_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - printf(" ftm_fm_set_rds_pi_timer gtsFtmFM.tuFmParams.ucRxRdsPItimer = %d\n",fmrequestparams.rx_rds_pi_timer); - /* Populate the registers 0x20-0x2C */ - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x16; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - /* Wait for 15 ms to allow the SoC to poulate the registers 0x20-0x2C */ - usleep(WAIT_ON_ISR_DELAY); - - /* Override the RDS timeout value */ - common_handle.offset = RDSTIMEOUT_OFFSET; - common_handle.data[0] = (fmrequestparams.rx_rds_pi_timer & 0xFF); - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - - /* Apply back the new values */ - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = 0x96; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - -out : - response->rdspitimer = fmrequestparams.rx_rds_pi_timer; - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" FmApi_SetRdsPiTimer Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" FmApi_SetRdsPiTimer - fmrequestparams.rx_rds_pi_timer = %d\n", - fmrequestparams.rx_rds_pi_timer); - response->result = FTM_FM_SUCCESS; - } - - return response; - -} -/*=========================================================================== - -FUNCTION ftm_fm_rx_get_sinr_samples - -DESCRIPTION - This function is used to get the signal to noise ratio samples - -DEPENDENCIES - none - -===========================================================================*/ - -PACKED void * ftm_fm_rx_get_sinr_samples -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - getsinrsamples_response * response = (getsinrsamples_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(getsinrsamples_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = GetSINRSamples(); - response->sinr_sample = fm_global_params.sinr_samples; - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*=========================================================================== - -FFUNCTION ftm_fm_rx_set_sinr_samples - -DESCRIPTION - This function is used to set the signal to noise ratio samples to take into - accounts for SINR avg calculation - -DEPENDENCIES - none - -===========================================================================*/ - -PACKED void * ftm_fm_rx_set_sinr_samples -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = SetSINRSamples( fmrequestparams.sinr_samples ); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*======================================================================== - FUNCTION ftm_fm_rx_get_sinr_threshold - -DESCRIPTION - This function is used to get the SINR threshold - -DEPENDENCIES - none - -==========================================================================*/ -PACKED void * ftm_fm_rx_get_sinr_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - getsinrthreshold_response * response = (getsinrthreshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(getsinrthreshold_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = GetSINRThreshold(); - response->sinr_threshold = fm_global_params.sinr_threshold; - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*======================================================================== - FUNCTION ftm_fm_rx_set_sinr_threshold - -DESCRIPTION - This function is used to set the SINR threshold - -DEPENDENCIES - none - -==========================================================================*/ -PACKED void * ftm_fm_rx_set_sinr_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = SetSINRThreshold( fmrequestparams.sinr_threshold ); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*======================================================================== - FUNCTION ftm_fm_rx_get_onchannel_threshold - -DESCRIPTION - This function is used to get the on channel threshold - -DEPENDENCIES - none - -==========================================================================*/ -PACKED void * ftm_fm_rx_get_onchannel_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - getonchannelthreshold_response * response = (getonchannelthreshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(getonchannelthreshold_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = GetOnChannelThreshold(); - response->sinr_on_th = fm_global_params.On_channel_threshold; - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*======================================================================== - FUNCTION ftm_fm_rx_set_onchannel_threshold - -DESCRIPTION - This function is used to set the on channel threshold - -DEPENDENCIES - none - -==========================================================================*/ - -PACKED void * ftm_fm_rx_set_onchannel_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = SetOnChannelThreshold( fmrequestparams.On_channel_threshold ); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - -/*======================================================================== - FUNCTION ftm_fm_rx_get_offchannel_threshold - -DESCRIPTION - This function is used to get the Off channel threshold - -DEPENDENCIES - none - -==========================================================================*/ -PACKED void * ftm_fm_rx_get_offchannel_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - getoffchannelthreshold_response * response = (getoffchannelthreshold_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(getoffchannelthreshold_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = GetOffChannelThreshold(); - response->sinr_off_th = fm_global_params.Off_channel_threshold; - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} -/*======================================================================== - FUNCTION ftm_fm_rx_set_offchannel_threshold - -DESCRIPTION - This function is used to set the off channel threshold - -DEPENDENCIES - none - -==========================================================================*/ -PACKED void * ftm_fm_rx_set_offchannel_threshold -( - void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof(generic_response) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - if(fmPowerState != FM_RX_ON) - { - response->result = convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - return response; - } - response->result = FTM_FM_SUCCESS; - cmdStatus = SetOffChannelThreshold( fmrequestparams.Off_channel_threshold ); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - return response; -} - - -/*=========================================================================== - -FUNCTION ftm_fm_rx_get_rds_block_err - -DESCRIPTION - This function is used to get the current RDS block error parameters - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_rx_get_rds_block_err -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - - - rds_err_count_response * response = (rds_err_count_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( rds_err_count_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - common_handle.data[0] = FTM_FM_RDS_COUNT; - common_handle.payload_length = 0x01; - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - usleep(WAIT_ON_ISR_DELAY); - /* Read the RDS block error rate */ - common_handle.offset = RDSERR_OFFSET; - common_handle.payload_length = 0x08; - - /* Clear buffer */ - memset(&common_handle.data[0], - 0, - sizeof(common_handle.data)); - - if (FM_CMD_SUCCESS != FmBusReadReceiver(&common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - } - -out : - response->rdserrcount = ((common_handle.data[0] << 24) | (common_handle.data[1] << 16) - | (common_handle.data[2] << 8) | common_handle.data[3]); - response->numofblocks = BLOCKS_PER_GROUP *((common_handle.data[4] << 24) | (common_handle.data[5] << 16) - | (common_handle.data[6] << 8) | common_handle.data[7]); - - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" ftm_fm_rx_get_rds_block_err Failure - %d\n", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" ftm_fm_rx_get_rds_block_err - FM_CMD_SUCCESS\n"); - printf(" ftm_fm_rx_get_rds_block_err = 0x%x 0x%x\n", (unsigned int)response->rdserrcount,(unsigned int)response->numofblocks); - response->result = FTM_FM_SUCCESS; - } - return response; -} - - -/*=========================================================================== - -FUNCTION ftm_fm_enable_audio - -DESCRIPTION - This function is used to take the audio output mode from QRCT. - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_enable_audio -( -void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( generic_response ) - ); - - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - printf("enter ftm_fm_enable_audio\n"); - - if (response != NULL) { - response->result = FTM_FM_SUCCESS; - mkfifo(audio_ftm_cmds, 0777) ; - - fm_audio_output = fmrequestparams.audio_output; - cmdStatus = ftm_fm_audio(fm_audio_output, init_audio_vlm); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); - } else - printf("ftm_fm_enable_audio unable to allocate memory for response packet \n"); - - return response; -} - - -/*=========================================================================== - -FUNCTION ftm_fm_setting_volume - -DESCRIPTION - This function is used to set the FM volume. - -DEPENDENCIES - none - -===========================================================================*/ -#define MSEC_TO_NSEC (1000 * 1000) - -#ifdef FM_SOC_TYPE_CHEROKEE -#define DISABLE_SLIMBUS_DATA_PORT 0 -#define ENABLE_SLIMBUS_DATA_PORT 1 -#define ENABLE_SLIMBUS_CLOCK_DATA 2 -#endif - -PACKED void* ftm_fm_setting_volume -( -void -) -{ - fm_cmd_status_type cmdStatus = FM_CMD_UNRECOGNIZED_CMD; - struct timespec ts; - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( generic_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - printf("enter ftm_fm_setting_volume\n"); - ts.tv_sec = 0; - ts.tv_nsec = 100 * MSEC_TO_NSEC; - - if (response != NULL) { - response->result = FTM_FM_SUCCESS; - printf("Disabling audio"); - ftm_fm_disable_audio(); -#ifdef FM_SOC_TYPE_CHEROKEE - nanosleep(&ts, NULL); - ftm_fm_enable_slimbus(DISABLE_SLIMBUS_DATA_PORT); -#endif - - printf("audio_output = %d", fmrequestparams.audio_output); - printf("audio_vlm = %d",fmrequestparams.audio_vlm); - cmdStatus = ftm_fm_audio(fm_audio_output, fmrequestparams.audio_vlm); - response->result = convert_cmdstatus_to_ftmstatus(cmdStatus); -#ifdef FM_SOC_TYPE_CHEROKEE - sleep(1); - ftm_fm_enable_slimbus(ENABLE_SLIMBUS_DATA_PORT); -#endif - } else - printf("ftm_fm_setting_volume NULL repsonse packet\n"); - - return response; -} -/*=========================================================================== - -FUNCTION ftm_fm_rx_reset_rds_err_count - -DESCRIPTION - This function is used to reseet the current RDS block error parameters - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_rx_reset_rds_err_count -( -void -) -{ - fm_cmd_status_type fmCmdStatus = FM_CMD_SUCCESS; - /* Default data to be written for Marimba versions - * not applicable for Bahama versions - */ - uint8 uData[] = { 0xD0 ,0x03 ,0xCE, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - - - generic_response * response = (generic_response *) - diagpkt_subsys_alloc( DIAG_SUBSYS_FTM - , FTM_FM_CMD_CODE - , sizeof( generic_response ) - ); - if(response == NULL) - { - printf("%s Failed to allocate resource",__func__); - return (void *)convert_cmdstatus_to_ftmstatus(FM_CMD_NO_RESOURCES); - } - - /* if chip version not determined we can't reset */ - if(chipVersion == 0) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - if((chipVersion == FMQSOCCOM_FM6500_WCN2243_10_VERSION) || - (chipVersion == FMQSOCCOM_FM6500_WCN2243_20_VERSION)) - { - uint8 uData_bahama[] = {0xD0, 0x00, 0xE6, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00}; - printf("Chip Id is 0x%x\n",chipVersion); - /* The Reset data for Bahama is different from - * Marimba the data is dynamically selected based - * on ChipVersion - */ - memcpy(uData,uData_bahama,sizeof(uData)); - } - common_handle.slaveaddress = FM_SLAVE_ADDR; - common_handle.offset = XFR_CTRL_OFFSET; - /* Copy the data to i2c request buffer */ - memcpy(&common_handle.data[0], - uData, - sizeof(uData)); - common_handle.payload_length = sizeof(uData); - - if (FM_CMD_SUCCESS != FmBusWriteReceiver(common_handle)) - { - fmCmdStatus = FM_CMD_FAILURE; - goto out; - } - - usleep(WAIT_ON_ISR_DELAY); - -out: - if(FM_CMD_SUCCESS != fmCmdStatus) - { - printf(" ftm_fm_reset_rds_err_count Failure - %d", fmCmdStatus); - response->result = FTM_FAIL; - } - else - { - printf(" ftm_fm_reset_rds_err_count - FM_CMD_SUCCESS"); - response->result = FTM_FM_SUCCESS; - } - return(response); - -} - - -/*=========================================================================== -FUNCTION ftm_fm_dispatch - -DESCRIPTION - Dispatch routine for the various FM Rx/Tx commands. Copies the data into - a global union data structure before calling the processing routine - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ -void * ftm_fm_dispatch(ftm_fm_pkt_type *ftm_fm_pkt, uint16 length ) -{ - ftm_fm_sub_cmd_type ftm_fm_sub_cmd; - - UNUSED(length); - ftm_fm_sub_cmd = (ftm_fm_sub_cmd_type)ftm_fm_pkt->cmd_id; -#ifdef FTM_DEBUG - printf("ftm_fm_pkt->cmd_id = %d\n cmd_data_len = %d\n", ftm_fm_pkt->cmd_id,ftm_fm_pkt->cmd_data_len); -#endif - ftm_fm_copy_request_data(ftm_fm_pkt,ftm_fm_pkt->cmd_data_len); - switch(ftm_fm_sub_cmd) - { - if(!fm_passthrough) - { - case FTM_FM_RX_ENABLE_RECEIVER: - return(ftm_fm_rx_enable_receiver()); - case FTM_FM_RX_DISABLE_RECEIVER: - return(ftm_fm_rx_disable_receiver()); - case FTM_FM_RX_CONFIGURE_RECEIVER: - return(ftm_fm_rx_configure_receiver()); - case FTM_FM_RX_SET_STATION: - return(ftm_fm_rx_setfrequency_receiver()); - case FTM_FM_RX_SET_MUTE_MODE: - return(ftm_fm_rx_setmutemode_receiver()); - case FTM_FM_RX_SET_STEREO_MODE: - return(ftm_fm_rx_setstereomode_receiver()); - case FTM_FM_RX_GET_STATION_PARAMETERS: - return(ftm_fm_rx_getstationparameters_receiver()); - case FTM_FM_RX_RDS_GROUP_OPTIONS : - return (ftm_fm_rx_setrdsoptions_receiver()); - case FTM_FM_RX_SET_POWER_MODE : - return (ftm_fm_rx_setpowermode_receiver()); - case FTM_FM_RX_SET_SIGNAL_THRESHOLD : - return (ftm_fm_rx_setsignalthreshold_receiver()); - case FTM_FM_RX_GET_RSSI_LIMIT : - return (ftm_fm_rx_getrssilimit_receiver()); - case FTM_FM_RX_SEARCH_STATIONS : - return (ftm_fm_rx_searchstations_receiver()); - case FTM_FM_RX_SEARCH_RDS_STATIONS : - return (ftm_fm_rx_searchrdsstations_receiver()); - case FTM_FM_RX_SEARCH_STATIONS_LIST : - return (ftm_fm_rx_searchstationslist_receiver()); - case FTM_FM_RX_CANCEL_SEARCH: - return (ftm_fm_rx_cancelsearch_receiver()); - case FTM_FM_RX_GET_PS_INFO : - return (ftm_fm_rx_getpsinfo_receiver()); - case FTM_FM_RX_GET_RT_INFO : - return (ftm_fm_rx_getrtinfo_receiver()); - case FTM_FM_RX_GET_AF_INFO : - return (ftm_fm_rx_getafinfo_receiver()); - case FTM_FM_BUS_WRITE: - return (ftm_fm_rx_fmbuswrite_receiver()); - case FTM_FM_BUS_READ: - return (ftm_fm_rx_fmbusread_receiver()); - case FTM_FM_RX_RDS_GROUP_PROC_OPTIONS: - return (ftm_fm_rx_setrdsgroupproc_receiver()); - case FTM_FM_RX_GET_AF_THRESHOLD: - return(ftm_fm_rx_get_af_threshold()); - case FTM_FM_RX_GET_RSSI_CHECK_TIMER: - return(ftm_fm_rx_get_rssi_check_timer()); - case FTM_FM_RX_GET_RDS_PI_TIMER: - return(ftm_fm_rx_get_rds_pi_timer()); - case FTM_FM_RX_SET_AF_THRESHOLD: - return(ftm_fm_rx_set_af_threshold()); - case FTM_FM_RX_SET_RSSI_CHECK_TIMER: - return(ftm_fm_rx_set_rssi_check_timer()); - case FTM_FM_RX_SET_RDS_PI_TIMER: - return(ftm_fm_rx_set_rds_pi_timer()); - case FTM_FM_RX_GET_SIGNAL_THRESHOLD : - return (ftm_fm_rx_getsignalthreshold_receiver()); - case FTM_FM_RX_GET_RDS_ERR_COUNT : - return (ftm_fm_rx_get_rds_block_err()); - case FTM_FM_RX_RESET_RDS_ERR_COUNT : - return (ftm_fm_rx_reset_rds_err_count()); - case FTM_FM_TX_ENABLE_TRANSMITTER : - return(ftm_fm_tx_enable_transmitter()); - case FTM_FM_TX_CONFIGURE_TRANSMITTER: - return(ftm_fm_tx_configure_transmitter()); - case FTM_FM_TX_DISABLE_TRANSMITTER: - return(ftm_fm_tx_disable_transmitter()); - case FTM_FM_TX_SET_STATION: - return(ftm_fm_tx_setfrequency_transmitter()); - case FTM_FM_TX_TX_PS_INFO : - return ftm_fm_tx_ps_info(); - case FTM_FM_TX_STOP_PS_INFO_TX : - return ftm_fm_tx_stop_ps_info(); - case FTM_FM_TX_TX_RT_INFO : - return ftm_fm_tx_rt_info(); - case FTM_FM_TX_STOP_RT_INFO_TX : - return ftm_fm_tx_stop_rt_info(); - case FTM_FM_TX_GET_PS_FEATURES : - return ftm_fm_tx_get_ps_features(); - case FTM_FM_SET_SOFT_MUTE: - return ftm_fm_set_soft_mute_receiver(); - case FTM_FM_SET_ANTENNA: - return ftm_fm_set_antenna(); - case FTM_FM_POKE_RIVA_WORD: - return ftm_fm_poke_riva_word(); - case FTM_FM_PEEK_RIVA_WORD: - return ftm_fm_peek_riva_word(); - case FTM_FM_PEEK_SSBI: - return ftm_fm_peek_ssbi_reg(); - case FTM_FM_POKE_SSBI: - return ftm_fm_poke_ssbi_reg(); - case FTM_FM_SET_TONE_GENERATION: - return (ftm_fm_tx_tone_generation()); - case FTM_FM_READ_RDS_GRP_CNTRS: - return (ftm_fm_read_rds_grp_cntrs()); - case FTM_FM_READ_RDS_GRP_CNTRS_EXT: - return (ftm_fm_read_rds_grp_cntrs_ext()); - case FTM_FM_SET_HLSI: - return (ftm_fm_set_hlsi()); - case FTM_FM_RX_GET_SINR_SAMPLES: - return (ftm_fm_rx_get_sinr_samples()); - case FTM_FM_RX_SET_SINR_SAMPLES: - return (ftm_fm_rx_set_sinr_samples()); - case FTM_FM_RX_GET_SINR_THRESHOLD: - return (ftm_fm_rx_get_sinr_threshold()); - case FTM_FM_RX_SET_SINR_THRESHOLD: - return (ftm_fm_rx_set_sinr_threshold()); - case FTM_FM_RX_GET_ONCHANNEL_TH: - return (ftm_fm_rx_get_onchannel_threshold()); - case FTM_FM_RX_SET_ONCHANNEL_TH: - return (ftm_fm_rx_set_onchannel_threshold()); - case FTM_FM_RX_GET_OFFCHANNEL_TH: - return (ftm_fm_rx_get_offchannel_threshold()); - case FTM_FM_RX_SET_OFFCHANNEL_TH: - return (ftm_fm_rx_set_offchannel_threshold()); - case FTM_FM_SET_NOTCH_FILTER: - return (ftm_fm_set_notch_filter()); - case FTM_FM_RX_GET_DEFAULTS: - return (ftm_fm_default_read()); - case FTM_FM_RX_SET_DEFAULTS: - return (ftm_fm_default_write()); - case FTM_FM_TX_PWR_LVL_CFG: - return ftm_fm_tx_pwr_lvl_cfg(); - case FTM_FM_SET_GET_RESET_AGC: - return ftm_fm_set_get_reset_agc(); - } - case FTM_FM_ENABLE_AUDIO: - return ftm_fm_enable_audio(); - case FTM_FM_DISABLE_AUDIO: - return ftm_fm_disable_audio(); - case FTM_FM_VOLUME_SETTING: - return ftm_fm_setting_volume(); - default: - if(fm_passthrough) { - if(!enable_mm_fmconfig) - { - ftm_fm_run_mm(); - enable_mm_fmconfig = 1; - } - return bt_ftm_diag_dispatch(ftm_fm_pkt, length); - } - return NULL; - } -} diff --git a/feeds/ipq95xx/ftm/src/ftm_fm_common.h b/feeds/ipq95xx/ftm/src/ftm_fm_common.h deleted file mode 100755 index 77025f004..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_fm_common.h +++ /dev/null @@ -1,993 +0,0 @@ -/*========================================================================== - - FTM FM Common Header File - -Description - Global Data declarations of the ftm fm component. - -# Copyright (c) 2010-2012, 2014 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -08/03/2011 uppalas Adding support for new ftm commands -06/18/10 rakeshk Created a header file to hold the definitons for ftm fm - task -07/06/10 rakeshk Clean roomed the data structures and defined data - structures to be passed to the PFAL layers -01/11/11 rakeshk Added support for new FTM APIS -02/09/11 rakeshk Added support for BLER FTM APIs -04/03/11 ananthk Added support for FM FTM Transmit APIs -===========================================================================*/ -#ifdef CONFIG_FTM_FM - -#include "diagpkt.h" -#include "log.h" -#include - -#define FTM_FM_LOG_PKT_ID 65 -#define FTM_FM_CMD_CODE 28 -#define LOG_FTM_FM_C ((uint16) 0x14CC) -#define FEATURE_FTM_FM_DEBUG -#define DEFAULT_DATA_SIZE 249 - -/* FM6500 A0 chip version. - **/ -#define FM6500_A0_VERSION (0x01010013) -/** - * * FM6500 2.0 chip version. - **/ -#define FMQSOCCOM_FM6500_20_VERSION (0x01010010) -/** - * * FM6500 2.1 chip version. - **/ -#define FMQSOCCOM_FM6500_21_VERSION (0x02010204) -/** - * WCN 2243 1.0's FM chip version. - */ -#define FMQSOCCOM_FM6500_WCN2243_10_VERSION (0x0302010A) -/** - * WCN 2243 2.0's FM chip version. - */ -#define FMQSOCCOM_FM6500_WCN2243_20_VERSION (0x04020205) - -extern int chipVersion; - -/* RDS Group processing parameters */ -#define FM_RX_RDS_GRP_RT_EBL 1 -#define FM_RX_RDS_GRP_PS_EBL 2 -#define FM_RX_RDS_GRP_AF_EBL 4 -#ifdef FM_SOC_TYPE_CHEROKEE -#define FM_RX_RDS_GRP_PS_SIMPLE_EBL 8 -#define FM_RX_RDS_GRP_ECC_EBL 32 -#define FM_RX_RDS_GRP_PTYN_EBL 64 -#define FM_RX_RDS_GRP_RT_PLUS_EBL 128 -#else -#define FM_RX_RDS_GRP_PS_SIMPLE_EBL 16 -#endif - - -/* lower and upper band limits of regions */ -#define REGION_US_EU_BAND_LOW 87500 -#define REGION_US_EU_BAND_HIGH 107900 -#define REGION_JAPAN_STANDARD_BAND_LOW 76000 -#define REGION_JAPAN_STANDARD_BAND_HIGH 90000 -#define REGION_JAPAN_WIDE_BAND_LOW 90000 -#define REGION_JAPAN_WIDE_BAND_HIGH 108000 -#define V4L2_CID_PRIVATE_BASE 0x08000000 -#define MAX_RDS_PS_LENGTH 108 -#define MAX_RDS_RT_LENGTH 64 -#define V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS_EXT 0x08000042 - -typedef enum { -V4L2_CID_PRIVATE_IRIS_HLSI = (V4L2_CID_PRIVATE_BASE + 0x1d), -V4L2_CID_PRIVATE_IRIS_SOFT_MUTE, -V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR, -V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN, -V4L2_CID_PRIVATE_IRIS_RIVA_PEEK, -V4L2_CID_PRIVATE_IRIS_RIVA_POKE, -V4L2_CID_PRIVATE_IRIS_SSBI_ACCS_ADDR, -V4L2_CID_PRIVATE_IRIS_SSBI_PEEK, -V4L2_CID_PRIVATE_IRIS_SSBI_POKE, -V4L2_CID_PRIVATE_IRIS_TX_TONE, -V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS, -V4L2_CID_PRIVATE_IRIS_SET_NOTCH_FILTER, -V4L2_CID_PRIVATE_IRIS_AGC_CTRL = 0x08000043, -V4L2_CID_PRIVATE_IRIS_AGC_STATE, -V4L2_CID_PRIVATE_IRIS_READ_DEFAULT = 0x00980928,//using private CIDs under userclass -V4L2_CID_PRIVATE_IRIS_WRITE_DEFAULT, -}v4l2_cid_private_iris_t_copy; -typedef enum -{ - /* Total no. of PS names that can be transmitted : 12 - Width of each transmitted PS name is : 8 - Total no. of PS characters that can be transmitted : (12*8 = 96) - */ - MAX_TX_PS_LEN = 96, - MAX_TX_PS_RPT_CNT = 15, -}FmTxPSFeatures; - -/* FTM FM command IDs */ -typedef enum -{ -#ifdef FEATURE_FTM_FM_DEBUG - FTM_FM_RX_SET_POWER_MODE = 13, - FTM_FM_RX_SET_SIGNAL_THRESHOLD = 14, - FTM_FM_RX_GET_RSSI_LIMIT = 16, - FTM_FM_RX_GET_PS_INFO = 17, - FTM_FM_RX_GET_RT_INFO = 18, - FTM_FM_RX_GET_AF_INFO = 19, - FTM_FM_RX_SEARCH_STATIONS = 20, - FTM_FM_RX_SEARCH_RDS_STATIONS = 21, - FTM_FM_RX_SEARCH_STATIONS_LIST = 22, - FTM_FM_RX_CANCEL_SEARCH = 23, - FTM_FM_RX_RDS_GROUP_PROC_OPTIONS = 25, - FTM_FM_RX_RDS_PI_MATCH_OPTIONS = 26, - FTM_FM_TX_GET_PS_FEATURES = 36, - FTM_FM_TX_TX_PS_INFO = 38, - FTM_FM_TX_STOP_PS_INFO_TX = 39, - FTM_FM_TX_TX_RT_INFO = 40, - FTM_FM_TX_STOP_RT_INFO_TX = 41, - FTM_FM_RX_GET_SIGNAL_THRESHOLD = 46, - FTM_FM_FMWAN_REG_RD = 51, - FTM_FM_RX_GET_DEFAULTS = 62, - FTM_FM_RX_SET_DEFAULTS = 63, - FTM_FM_RX_GET_SINR_SAMPLES = 64, - FTM_FM_RX_SET_SINR_SAMPLES = 65, - FTM_FM_RX_GET_SINR_THRESHOLD = 66, - FTM_FM_RX_SET_SINR_THRESHOLD = 67, - FTM_FM_RX_GET_ONCHANNEL_TH = 68, - FTM_FM_RX_SET_ONCHANNEL_TH = 69, - FTM_FM_RX_GET_OFFCHANNEL_TH = 70, - FTM_FM_RX_SET_OFFCHANNEL_TH = 71, - FTM_FM_TX_PWR_LVL_CFG = 72, -#endif /* FEATURE_FTM_FM_DEBUG */ - - FTM_FM_RX_ENABLE_RECEIVER = 7, - FTM_FM_RX_DISABLE_RECEIVER = 8, - FTM_FM_RX_CONFIGURE_RECEIVER = 9, - FTM_FM_RX_SET_MUTE_MODE = 10, - FTM_FM_RX_SET_STEREO_MODE = 11, - FTM_FM_RX_SET_STATION = 12, - FTM_FM_RX_GET_STATION_PARAMETERS = 15, - FTM_FM_RX_RDS_GROUP_OPTIONS = 24, - FTM_FM_TX_ENABLE_TRANSMITTER = 33, - FTM_FM_TX_DISABLE_TRANSMITTER = 34, - FTM_FM_TX_CONFIGURE_TRANSMITTER = 35, - FTM_FM_TX_SET_STATION = 37, - FTM_FM_TX_TX_RDS_GROUPS = 42, - FTM_FM_TX_TX_CONT_RDS_GROUPS = 43, - FTM_FM_TX_TX_RDS_CTRL = 44, - FTM_FM_TX_GET_RDS_GROUP_BUF_SIZE = 45, - FTM_FM_BUS_WRITE = 47, - FTM_FM_BUS_READ = 48, - FTM_FM_NOTIFY_WAN = 49, - FTM_FM_NOTIFY_FM = 50, - FTM_FM_ROUTE_AUDIO = 52, - FTM_FM_RX_SET_AF_THRESHOLD = 53, - FTM_FM_RX_SET_RSSI_CHECK_TIMER = 54, - FTM_FM_RX_SET_RDS_PI_TIMER = 55, - FTM_FM_RX_GET_AF_THRESHOLD = 56, - FTM_FM_RX_GET_RSSI_CHECK_TIMER = 57, - FTM_FM_RX_GET_RDS_PI_TIMER = 58, - FTM_FM_RX_GET_RDS_ERR_COUNT = 59, - FTM_FM_RX_RESET_RDS_ERR_COUNT = 60, - FTM_FM_TX_SEARCH_STATIONS = 61, - FTM_FM_SET_HLSI = 100, - FTM_FM_SET_SOFT_MUTE = 101, - FTM_FM_SET_ANTENNA = 102, - FTM_FM_SET_NOTCH_FILTER = 103, - FTM_FM_READ_RDS_GRP_CNTRS = 104, - FTM_FM_SET_TONE_GENERATION = 105, - FTM_FM_PEEK_SSBI = 106, - FTM_FM_POKE_SSBI = 107, - FTM_FM_PEEK_RIVA_WORD = 108, - FTM_FM_POKE_RIVA_WORD = 109, - FTM_FM_ENABLE_AUDIO = 111, - FTM_FM_DISABLE_AUDIO = 112, - FTM_FM_VOLUME_SETTING = 113, - FTM_FM_READ_RDS_GRP_CNTRS_EXT = 114, - FTM_FM_SET_GET_RESET_AGC = 115, - FTM_FM_MAX -} ftm_fm_sub_cmd_type; - -#define XFR_CTRL_OFFSET 0x1F -/* Wait time for ensuring XFR is generated */ -#define WAIT_ON_ISR_DELAY 15000 //15 ms -#define AFTH_OFFSET 0x2E -#define CHCOND_OFFSET 0x22 -#define RDSTIMEOUT_OFFSET 0x25 -#define FM_SLAVE_ADDR 0x2A -#define RDSERR_OFFSET 0x24 -#define RDSRESET_OFFSET 0x20 -#define BLOCKS_PER_GROUP 0x04 -#define FTM_FM_RDS_COUNT 0x11 - - -#define MAX_RIVA_DATA_LEN 245 -#define MAX_RIVA_PEEK_RSP_SIZE 251 -#define SSBI_PEEK_DATA_SIZE 1 - -#define IRIS_BUF_PEEK 6 -#define IRIS_BUF_SSBI_PEEK IRIS_BUF_PEEK+1 -#define IRIS_BUF_RDS_CNTRS IRIS_BUF_SSBI_PEEK+1 -#define IRIS_BUF_RD_DEFAULT IRIS_BUF_RDS_CNTRS+1 -#ifdef FM_SOC_TYPE_CHEROKEE -#define RDS_GRP_CNTRS_SIZE 48 -#else -#define RDS_GRP_CNTRS_SIZE 36 -#endif -/* Generic result, used for any command that only returns an error code */ -typedef enum -{ - FTM_FM_SUCCESS, - FTM_FAIL, - FTM_FILE_DOES_NOT_EXIST, - FTM_MMC_ERROR, - FTM_FM_UNRECOGNIZED_CMD, - FTM_NO_RESOURCES, - FTM_FM_PENDING, - FTM_INVALID_PARAM, - FTM_FM_DISALLOWED, - FTM_TEST_NOT_IMPLEMENTED, - FTM_CUST_HW_ID_UNKNOWN, - FTM_FM_BUS_WRITE_ERROR, - FTM_FM_BUS_READ_ERROR, - FTM_FM_CLIENT_MAX, - -} ftm_fm_api_result_type; - -/* FM power state enum */ -typedef enum -{ - FM_POWER_OFF, - FM_POWER_TRANSITION, - FM_RX_ON, - FM_TX_ON -}fm_power_state; - -/* FM command status enum */ -typedef enum -{ - FM_CMD_SUCCESS, - FM_CMD_PENDING, - FM_CMD_NO_RESOURCES, - FM_CMD_INVALID_PARAM, - FM_CMD_DISALLOWED, - FM_CMD_UNRECOGNIZED_CMD, - FM_CMD_FAILURE -}fm_cmd_status_type; - -/** -* FM event result. -*/ -typedef enum -{ - FM_EV_SUCCESS = 0, - /**< Event indicates success. */ - - FM_EV_FAILURE = 1, - /**< Event is a response to a command that failed */ - - FM_EV_CMD_DISALLOWED = 2, - /**< Event is a response to a command that was disallowed. */ - - FM_EV_CMD_INVALID_PARAM = 3 - /**< Event is a response to a command that contained an invalid parameter. */ - -} FmEvResultType; - -/** -* FM Receiver event names. -*/ -typedef enum -{ - /* ----------------------------------------------- - 1 -> FM Receiver initialization events - ----------------------------------------------- */ - - FM_RX_EV_ENABLE_RECEIVER = 0, - - FM_RX_EV_DISABLE_RECEIVER, - - FM_RX_EV_CFG_RECEIVER, - - /* ----------------------------------------------- - 2 -> FM receiver control events - ----------------------------------------------- */ - - FM_RX_EV_MUTE_MODE_SET, - - FM_RX_EV_STEREO_MODE_SET, - - FM_RX_EV_RADIO_STATION_SET, - - FM_RX_EV_PWR_MODE_SET, - - FM_RX_EV_SET_SIGNAL_THRESHOLD, - - /* ----------------------------------------------- - 3 -> FM receiver status events - ----------------------------------------------- */ - - FM_RX_EV_RADIO_TUNE_STATUS, - - FM_RX_EV_STATION_PARAMETERS, - - FM_RX_EV_RDS_LOCK_STATUS, - - FM_RX_EV_STEREO_STATUS, - - FM_RX_EV_SERVICE_AVAILABLE, - - FM_RX_EV_GET_SIGNAL_THRESHOLD, - - /* ----------------------------------------------- - 4 -> FM search status events - ----------------------------------------------- */ - - FM_RX_EV_SEARCH_IN_PROGRESS, - - FM_RX_EV_SEARCH_RDS_IN_PROGRESS, - - FM_RX_EV_SEARCH_LIST_IN_PROGRESS, - - FM_RX_EV_SEARCH_COMPLETE, - - FM_RX_EV_SEARCH_RDS_COMPLETE, - - FM_RX_EV_SEARCH_LIST_COMPLETE, - - FM_RX_EV_SEARCH_CANCELLED, - - /* ----------------------------------------------- - 5 -> FM RDS status events - ----------------------------------------------- */ - - FM_RX_EV_RDS_GROUP_DATA, - - FM_RX_EV_RDS_PS_INFO, - - FM_RX_EV_RDS_RT_INFO, - - FM_RX_EV_RDS_AF_INFO, - - FM_RX_EV_RDS_PI_MATCH_AVAILABLE, - - /* ----------------------------------------------- - 6 -> FM RDS control events - ----------------------------------------------- */ - - FM_RX_EV_RDS_GROUP_OPTIONS_SET, - - FM_RX_EV_RDS_PROC_REG_DONE, - - FM_RX_EV_RDS_PI_MATCH_REG_DONE, - - FM_RX_EV_MAX_EVENT - -} FmRxEventType; - -typedef enum radio_band_type -{ - FM_US_EU = 0x0, - FM_JAPAN_STANDARD = 0x1, - FM_JAPAN_WIDE = 0x2, - FM_USER_DEFINED = 0x4 -}radio_band_type; - -typedef enum emphasis_type -{ - FM_RX_EMP75 = 0x0, - FM_RX_EMP50 = 0x1 -}emphasis_type; - -typedef enum channel_space_type -{ - FM_RX_SPACE_200KHZ = 0x0, - FM_RX_SPACE_100KHZ = 0x1, - FM_RX_SPACE_50KHZ = 0x2 -}channel_space_type; - -typedef enum rds_system_type -{ - FM_RX_RDBS_SYSTEM = 0x0, - FM_RX_RDS_SYSTEM = 0x1, - FM_RX_NO_RDS_SYSTEM = 0x2 -}rds_sytem_type; - -typedef struct band_limit_freq -{ - uint32 lower_limit; - uint32 upper_limit; -}band_limit_freq; - - -typedef enum rds_sync_type -{ - FM_RDS_NOT_SYNCED = 0x0, - FM_RDS_SYNCED = 0x1 -}rds_sync_type; - -typedef enum stereo_type -{ - FM_RX_MONO = 0x0, - FM_RX_STEREO = 0x1 -}stereo_type; - -typedef enum fm_service_available -{ - FM_SERVICE_NOT_AVAILABLE = 0x0, - FM_SERVICE_AVAILABLE = 0x1 -}fm_service_available; - -typedef enum mute_type -{ - FM_RX_NO_MUTE = 0x00, - FM_RX_MUTE_RIGHT = 0x01, - FM_RX_MUTE_LEFT = 0x02, - FM_RX_MUTE_BOTH = 0x03 -}mute_type; - -typedef enum antenna_type -{ - WIRED_HS, - PWB_ANT -}antenna_type; - -typedef enum audio_output -{ - HEADSET, - SPEAKER, -} audio_output; -/** -* RDS/RBDS Program Type type. -*/ -typedef uint8 fm_prgm_type; - -/** -* RDS/RBDS Program Identification type. -*/ -typedef uint16 fm_prgmid_type; -/** -* RDS/RBDS Program Services type. -*/ -typedef char fm_prm_services; -/** -* RDS/RBDS Radio Text type. -*/ -/* -* FM RX RIVA peek request -*/ -typedef struct fm_riva_peek_word -{ - uint8 subOpcode; - uint32 startaddress; - uint8 payload_length;/*In Bytes*/ - uint8 data[MAX_RIVA_DATA_LEN]; -}__attribute__((packed))fm_riva_peek_word; - -/* -* FM RX RIVA poke request -*/ -typedef struct fm_riva_poke_word -{ - uint8 subOpcode; - uint32 startaddress; - uint8 payload_length;/*In Bytes*/ - uint8 data[MAX_RIVA_DATA_LEN]; -}__attribute__((packed))fm_riva_poke_word ; - - -/* -* FM RX SSBI peek/poke request -*/ -typedef struct fm_ssbi_poke_reg -{ - uint16 startaddress; - uint8 data; -}__attribute__((packed))fm_ssbi_poke_reg; - -/* -* fm Set Get Reset AGC request -*/ -typedef struct fm_set_get_reset_agc_req -{ - uint8 ucCtrl; - uint8 ucGainState; -}__attribute__((packed))fm_set_get_reset_agc_req; - -typedef struct fm_set_get_reset_agc_params -{ - uint8 ucCurrentGainState; - uint8 ucGainStateChange1; - uint8 ucGainStateChange2; - uint8 ucGainStateChange3; -}__attribute__((packed))fm_set_get_reset_agc_params; - -typedef PACKED struct -{ - uint8 status ; - uint8 data_length ; - uint8 data[DEFAULT_DATA_SIZE]; -}__attribute__((packed)) readDefaults_data; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - uint8 status ; - uint8 data_length ; - uint8 data[DEFAULT_DATA_SIZE]; -}__attribute__((packed)) default_read_rsp; - -/*RDS Group counters*/ -typedef struct fm_rds_grp_cntrsparams -{ - uint32 totalRdsSBlockErrors; - uint32 totalRdsGroups; - uint32 totalRdsGroup0; - uint32 totalRdsGroup2; - uint32 totalRdsBlockB; - uint32 totalRdsProcessedGroup0; - uint32 totalRdsProcessedGroup2; - uint32 totalRdsGroupFiltered; - uint32 totalRdsChangeFiltered; -}__attribute__((packed)) fm_rds_grp_cntrsparams; - -/*RDS Group counters extended */ -typedef struct fm_rds_grpcntrs_extendedparams -{ - uint32 totalRdsSyncLoss; - uint32 totalRdsNotSync; - uint32 totalRdsSyncInt; -}__attribute__((packed)) fm_rds_grpcntrs_extendedparams; - -typedef char fm_radiotext_info; -/** -* FM Global Paramaters struct. -*/ -typedef struct -{ - uint32 current_station_freq;/*a frequency in kHz the band range*/ - uint8 service_available; - uint8 rssi; /* rssi range from 0-100*/ - uint8 stype; - uint8 rds_sync_status; - uint8 mute_status; - uint8 ssbi_peek_data; - fm_prgmid_type pgm_id; /* Program Id */ - fm_prgm_type pgm_type; /* Program type */ - fm_prm_services pgm_services[MAX_RDS_PS_LENGTH]; - fm_radiotext_info radio_text[MAX_RDS_RT_LENGTH];/* RT maximum is 64 bytes */ - fm_riva_poke_word riva_data_access_params; - fm_set_get_reset_agc_params set_get_reset_agc_params; - fm_rds_grp_cntrsparams rds_group_counters; - fm_rds_grpcntrs_extendedparams rds_group_counters_extended; - readDefaults_data default_read_data; - uint8 fm_ps_length; - uint8 fm_rt_length; - uint8 sinr_samples; - char sinr_threshold; - uint8 On_channel_threshold; - uint8 Off_channel_threshold; -}fm_station_params_available; -/** -* FM Config Request structure. -*/ -typedef struct fm_config_data -{ - uint8 band; - uint8 emphasis; - uint8 spacing; - uint8 rds_system; - band_limit_freq bandlimits; - uint8 is_fm_tx_on; -}fm_config_data; - -/* -* FM RDS Options Config Request -*/ -typedef struct fm_rds_options -{ - uint32 rds_group_mask; - uint32 rds_group_buffer_size; - uint8 rds_change_filter; -}fm_rds_options; -/* -* FM RX Search stations request -*/ -typedef struct fm_search_stations -{ - uint8 search_mode; - uint8 dwell_period; - uint8 search_dir; -}fm_search_stations; - -/* -* FM RX Search DDS stations request -*/ -typedef struct fm_search_rds_stations -{ - uint8 search_mode; - uint8 dwell_period; - uint8 search_dir; - uint8 program_type; - uint16 program_id; -}fm_search_rds_stations; - -/* -* FM RX Search station lists request -*/ -typedef struct fm_search_list_stations -{ - uint8 search_mode; - uint8 search_dir; - uint32 srch_list_max; - /**< Maximum number of stations that can be returned from a search. */ - uint8 program_type; -}fm_search_list_stations; - -/* -* FM RX I2C request -*/ -typedef struct fm_i2c_params -{ - uint8 slaveaddress; - uint8 offset; - uint8 payload_length; - uint8 data[64]; -}fm_i2c_params; - -/* Structure containing the RDS PS Info to be transmitted */ -typedef struct _tsFtmFmRdsTxPsType -{ - uint32 ulPSStrLen; - /**< The size of the cTxPSStrPtr buffer. - */ - - uint32 ucTxPSRptCnt; - /**< The number of times each 8 character string is repeated before the next - string is transmitted. - */ - - uint16 tusTxPi; - /**< RDS/RBDS Program Identification to use for Program Service transmissions. - */ - - uint8 tucTxPSPty; - /**< The RDS/RBDS Program Type to transmit. - */ - - const char cTxPSStrPtr[108]; - /**< A pointer to a buffer containing the Program Service string to transmit - (must be null terminated). - */ - -} tsFtmFmRdsTxPsType; - -typedef struct _tsFtmFmRdsTxRtType -{ - uint32 ulRTStrLen; - /**< The size of the cTxRTStrPtr buffer. - */ - - uint16 tusTxPi; - /**< RDS/RBDS Program Identification to use for RadioText transmissions. - */ - - uint8 tucTxRTPty; - /**< The RDS/RBDS Program Type to transmit. - */ - - const char cTxRTStrPtr[65]; - /**< A pointer to a buffer containing the RadioText string to transmit - (must be null terminated). - */ - -} tsFtmFmRdsTxRtType; - -typedef struct _ftm_def_data_rd_req -{ - uint8 mode; - uint8 length; - uint8 param_len; - uint8 param; -} __attribute__((packed))ftm_fm_def_data_rd_req; - -typedef struct _ftm_def_data_wr_req -{ - uint8 mode; - uint8 length; - uint8 data[DEFAULT_DATA_SIZE]; -} __attribute__((packed))ftm_fm_def_data_wr_req; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 length; /*RDS PS string length*/ - uint8 string[MAX_RDS_PS_LENGTH]; /* RDS string */ -}__attribute__((packed)) fmrdsps_response; - - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 length; /*RDS PS string length*/ - uint8 string[MAX_RDS_RT_LENGTH]; /* RDS string */ -}__attribute__((packed)) fmrdsrt_response; - - -/** -* FM All Request Union type. -*/ -typedef union fm_cfg_request -{ - fm_config_data cfg_param; - uint8 mute_param; - uint8 stereo_param; - uint32 freq; - fm_rds_options rds_options; - uint8 power_mode; - uint8 signal_threshold; - fm_search_stations search_stations_options; - fm_search_rds_stations search_rds_stations_options; - fm_search_list_stations search_list_stations_options; - fm_i2c_params i2c_params; - uint32 rds_group_options; - uint16 rx_af_threshold; - uint8 rx_rssi_checktimer; - uint rx_rds_pi_timer; - tsFtmFmRdsTxPsType tuFmPSParams; - tsFtmFmRdsTxRtType tuFmRTParams; - uint8 soft_mute_param; - uint8 antenna_type; - uint8 tx_tone_param; - uint8 rds_grp_counters; - uint8 rds_grp_counters_ext; - uint8 hlsi; - uint8 sinr_samples; - char sinr_threshold; - uint8 On_channel_threshold; - uint8 Off_channel_threshold; - uint8 notch; - fm_riva_peek_word riva_peek_params; - fm_riva_poke_word riva_data_access_params; - fm_ssbi_poke_reg ssbi_access_params; - fm_set_get_reset_agc_req set_get_agc_req_parameters; - ftm_fm_def_data_rd_req rd_default; - ftm_fm_def_data_wr_req wr_default; - uint8 tx_pwr_cfg; - uint8 audio_output; - uint8 audio_vlm; -}fm_cfg_request; - -/* FTM FM request type */ -typedef PACKED struct -{ - diagpkt_cmd_code_type cmd_code; - diagpkt_subsys_id_type subsys_id; - diagpkt_subsys_cmd_code_type subsys_cmd_code; - uint16 cmd_id; /* command id (required) */ - uint16 cmd_data_len; - uint16 cmd_rsp_pkt_size; - byte data[1]; -}__attribute__((packed))ftm_fm_pkt_type; - -/* Set MuteMode Response */ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 mutemode; -}__attribute__((packed)) mutemode_response; - -/* Set StereoMode Response */ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 stereomode; -}__attribute__((packed)) stereomode_response; - -/* I2C Response */ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint32 length; /*length of data read */ - uint8 data[64]; /* I2C read dat buffer */ -}__attribute__((packed)) fmbusread_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 sub_opcode; - uint32 start_address; - uint8 length; /*length of data read */ - uint8 data[MAX_RIVA_DATA_LEN]; /* read dat buffer */ -}__attribute__((packed)) rivaData_response; - - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 data; -}__attribute__((packed)) ssbiPeek_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint8 uccurrentgainstate; - uint8 ucgainstatechange1; - uint8 ucgainstatechange2; - uint8 ucgainstatechange3; -}__attribute__((packed)) set_get_reset_agc_response; - -/*Read RDS Group counters responce*/ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - fm_rds_grp_cntrsparams read_rds_cntrs; -}__attribute__((packed)) ReadRDSCntrs_responce; - -/*Read RDS Group counters response*/ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - fm_rds_grpcntrs_extendedparams read_rds_cntrs_ext; -}__attribute__((packed)) ReadRDSCntrs_ext_response; - - -/* Generic Response */ -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ -}__attribute__((packed)) generic_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint16 afthreshold; -} fmrxsetafthreshold_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 sinr_sample; -} getsinrsamples_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - char sinr_threshold; -} getsinrthreshold_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 sinr_on_th; -} getonchannelthreshold_response; -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 sinr_off_th; -} getoffchannelthreshold_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 rssitimer; -} fmrxsetrssichecktimer_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 rdspitimer; -} fmrxsetrdspitimer_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint8 threshold; -} threshold_response; - -typedef PACKED struct -{ - diagpkt_subsys_header_type header ; - char result ; - uint32 rdserrcount; - uint32 numofblocks; -} rds_err_count_response; - -/* Custom response for Get station parameters request */ -struct fm_rx_get_station_parameters_response_t -{ - diagpkt_subsys_header_type header ; /*Diag header*/ - char result ;/* result */ - uint32 stationFreq; - /* The currently tuned frequency in kHz (Example: 96500 -> 96.5Mhz)*/ - uint8 servAvble; - /* The current service available indicator for the current station */ - uint8 rssi; - /* The current signal strength level (0-100 range). */ - uint8 stereoProgram; - /* The current mono/stereo indicator for this station */ - uint8 rdsSyncStatus; - /* The current RDS/RBDS synchronization status */ - uint8 muteMode; - /* The current FM mute mode */ -}__attribute__((packed)); - -/* FTM Log Packet - Used to send back the event of a HCI Command */ -typedef PACKED struct -{ - log_hdr_type hdr; - byte EvName; - /* Event ID indicates which event is being returned. */ - byte EvResult; - byte data[1]; /* Variable length payload, - look at FTM log id for contents */ -} ftm_fm_log_pkt_type; -#define FTM_FM_LOG_HEADER_SIZE (sizeof (ftm_fm_log_pkt_type) - 1) - -typedef struct fm_rx_get_station_parameters_response_t fm_rx_get_station_parameters_response; -/*=========================================================================== -FUNCTION ftm_fm_dispatch - -DESCRIPTION - Dispatch routine for the various FM Rx/Tx commands. Copies the data into - a global union data structure before calling the processing routine - -DEPENDENCIES - NIL - -RETURN VALUE - A Packed structre pointer including the response to the FTM FM packet - -SIDE EFFECTS - None - -===========================================================================*/ - -void * ftm_fm_dispatch(ftm_fm_pkt_type *ftm_fm_pkt, uint16 length ); - - -/*=========================================================================== - -FUNCTION ftm_fm_enable_audio - -DESCRIPTION - This function is used to take the audio output mode from QRCT. - -DEPENDENCIES - none - -===========================================================================*/ -PACKED void* ftm_fm_enable_audio( void ); -PACKED void* ftm_fm_disable_audio( void ); -PACKED void* ftm_fm_setting_volume(void); - -#endif /* CONFIG_FTM_FM */ diff --git a/feeds/ipq95xx/ftm/src/ftm_fm_pfal.h b/feeds/ipq95xx/ftm/src/ftm_fm_pfal.h deleted file mode 100755 index cde8d18de..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_fm_pfal.h +++ /dev/null @@ -1,1178 +0,0 @@ -/*========================================================================== - - FTM FM PFAL Header File - -Description - Function declarations of the PFAL interfaces for FM. - -# Copyright (c) 2010-2012 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -08/03/2011 uppalas Adding support for new ftm commands -06/18/10 rakeshk Created a header file to hold the interface declarations - for ftm fm commands -07/06/10 rakeshk Added the support for new PFAL APIs for FM Rx -04/03/11 ananthk Added the support for FM Tx functionalities -===========================================================================*/ -#ifdef CONFIG_FTM_FM - -#include "event.h" -#include "diagpkt.h" -#include "ftm_fm_common.h" - -/*=========================================================================== -FUNCTION EnableFM - -DESCRIPTION - PFAL specific routine to enable FM with the Radio Configuration parameters - passed. - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type EnableFM -( - fm_config_data* radiocfgptr -); - -/*=========================================================================== -FUNCTION ConfigureFM - -DESCRIPTION - PFAL specific routine to configure FM with the Radio Configuration - parameters passed. - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type ConfigureFM -( - fm_config_data* radiocfgptr -); - -/*=========================================================================== -FUNCTION SetFrequencyTransmitter - -DESCRIPTION - PFAL specific routine to configure the FM transmitter's Frequency of reception - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyTransmitter -( - uint32 ulfreq -); - -/*=========================================================================== -FUNCTION TransmitPS - -DESCRIPTION - PFAL specific routine to transmit RDS PS strings - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type TransmitPS -( - tsFtmFmRdsTxPsType* tuFmPSParams -); - -/*=========================================================================== -FUNCTION stopTransmitPS - -DESCRIPTION - PFAL specific routine to stop transmitting the PS string. - -PARAMS PASSED - NIL - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -============================================================================*/ -fm_cmd_status_type stopTransmitPS -( - void -); - -/*=========================================================================== -FUNCTION TransmitRT - -DESCRIPTION - PFAL specific routine to transmit the RT string which provides a brief info - of the audio content being transmitted. This includes artist name, movie name - few lines of the audio. Usually the metadata of the song is transmitted as RT - -PARAMS PASSED - 'tuFmRTParams' containing RDS PI, and RT information of the transmitting - station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None -===========================================================================*/ -fm_cmd_status_type TransmitRT -( - tsFtmFmRdsTxRtType* tuFmRTParams -); -/*=========================================================================== -FUNCTION stopTransmitRT - -DESCRIPTION - PFAL specific routine to stop transmitting the RT string for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type stopTransmitRT -( - void -); - -/*=========================================================================== -FUNCTION getTxPSFeatures - -DESCRIPTION - PFAL specific routine to get the supported PS features for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type getTxPSFeatures -( - void -); - -/*=========================================================================== -FUNCTION SetTxPowerLevel - -DESCRIPTION - PFAL specific routine to configure the FM transmitter's power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetTxPowerLevel -( - uint32 ulfreq -); - -/*=========================================================================== -FUNCTION DisableFM - -DESCRIPTION - PFAL specific routine to disable FM and free all the FM resources - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type DisableFM -( - fm_config_data* radiocfgptr -); - -/*=========================================================================== -FUNCTION SetFrequencyReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Frequency of reception - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyReceiver -( - uint32 ulfreq -); - -/*=========================================================================== -FUNCTION SetMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSoftMuteModeReceiver -( - mute_type mutemode -); - -/*=========================================================================== -FUNCTION SetMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetMuteModeReceiver -( - mute_type mutemode -); - -/*=========================================================================== -FUNCTION SetAntenna - -DESCRIPTION - PFAL specific routine to configure the FM receiver's antenna type - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetAntenna -( - antenna_type antenna -); - - -/*=========================================================================== -FUNCTION SetStereoModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Audio mode on the - frequency tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetStereoModeReceiver -( - stereo_type stereomode -); - -/*=========================================================================== -FUNCTION GetStationParametersReceiver - -DESCRIPTION - PFAL specific routine to get the station parameters of the Frequency at - which the Radio receiver is tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetStationParametersReceiver -( - fm_station_params_available* configparams -); -/*=========================================================================== -FUNCTION SetRdsOptionsReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsOptionsReceiver -( - fm_rds_options rdsoptions -); - -/*=========================================================================== -FUNCTION SetRdsGroupProcReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS group proc options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsGroupProcReceiver -( - uint32 rdsgroupoptions -); - -/*=========================================================================== -FUNCTION SetPowerModeReceiver - -DESCRIPTION - PFAL specific routine to configure the power mode of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetPowerModeReceiver -( - uint8 powermode -); - -/*=========================================================================== -FUNCTION SetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to configure the signal threshold of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSignalThresholdReceiver -( - uint8 signalthreshold -); - -/*=========================================================================== -FUNCTION GetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to get the signal threshold of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetSignalThresholdReceiver -( - uint8* signalthreshold -); - - -/*=========================================================================== -FUNCTION GetRSSILimits - -DESCRIPTION - PFAL specific routine to print the RSSI limits of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRSSILimits -( -); - - -/*=========================================================================== -FUNCTION GetPSInfoReceiver - -DESCRIPTION - PFAL specific routine to print the PS info of current frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetPSInfoReceiver -( -); - -/*=========================================================================== -FUNCTION GetRTInfoReceiver - -DESCRIPTION - PFAL specific routine to print the Radio text info of current frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRTInfoReceiver -( -); - -/*=========================================================================== -FUNCTION GetAFInfoReceiver - -DESCRIPTION - PFAL specific routine to print the AF list for current frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetAFInfoReceiver -( -); - -/*=========================================================================== -FUNCTION SearchStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationsReceiver -( -fm_search_stations searchstationsoptions -); - - -/*=========================================================================== -FUNCTION SearchRDSStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver with a specific program type and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchRdsStationsReceiver -( -fm_search_rds_stations searchrdsstationsoptions -); - - -/*=========================================================================== -FUNCTION SearchStationListReceiver - -DESCRIPTION - PFAL specific routine to search for stations with a specific mode of - informaation like WEAK,STRONG,STRONGEST etc - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationListReceiver -( -fm_search_list_stations searchliststationsoptions -); - - -/*=========================================================================== -FUNCTION CancelSearchReceiver - -DESCRIPTION - PFAL specific routine to cancel the ongoing search operation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type CancelSearchReceiver -( -); - -/*=========================================================================== -FUNCTION FmBusWriteReceiver - -DESCRIPTION - PFAL specific routine to program the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusWriteReceiver -( -fm_i2c_params writeparams -); - -/*=========================================================================== -FUNCTION FmBusReadReceiver - -DESCRIPTION - PFAL specific routine to read the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusReadReceiver -( -fm_i2c_params *readparams -); - -/*=========================================================================== -FUNCTION FmRivaPeekData - -DESCRIPTION - PFAL specific routine to get the data from Riva Memory - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmRivaPeekData -( -fm_riva_peek_word peek_word -); - -/*=========================================================================== -FUNCTION FmRivaPokeData - -DESCRIPTION - PFAL specific routine to write the data into the Riva Memory - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmRivaPokeData -( -fm_riva_poke_word poke_word -); - -/*=========================================================================== -FUNCTION FmSSBIPeekData - -DESCRIPTION - PFAL specific routine to get the data from SSBI registers - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmSSBIPeekData( -fm_ssbi_poke_reg peek_reg -); - -/*=========================================================================== -FUNCTION FmSetGetResetAGC - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmSetGetResetAGC( -fm_set_get_reset_agc_req agc_params -); - -/*=========================================================================== -FUNCTION FmSSBIPokeData - -DESCRIPTION - PFAL specific routine to program the SSBI registers - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmSSBIPokeData( -fm_ssbi_poke_reg peek_reg -); - -/*=========================================================================== -FUNCTION FmTxToneGen - -DESCRIPTION - PFAL specific routine to configure the FM Tx internal tone Generation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmTxToneGen -( -uint8 txTone -); - -/*=========================================================================== -FUNCTION FmRDSGrpcntrs - -DESCRIPTION - PFAL specific routine to read the FM RDS group counters - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmRDSGrpcntrs -( - uint8 rdsCounters -); - -/*=========================================================================== -FUNCTION FmRDSGrpcntrsExt - -DESCRIPTION - PFAL specific routine to read the FM RDS group counters extended - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmRDSGrpcntrsExt -( - uint8 rdsCounters -); - -/*=========================================================================== -FUNCTION FmSetHlSi - -DESCRIPTION - PFAL specific routine to configure the FM receiver's HlSi on the - frequency tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmSetHlSi -( - uint8 hlsi -); - -/*=========================================================================== -FUNCTION GetSINRSamples - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR samples - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRSamples -( - -); -/*=========================================================================== -FUNCTION SetSINRSamples - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR samples - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetSINRSamples -( - uint8 sinr_sample -); - -/*=========================================================================== -FUNCTION GetSINRThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRThreshold -( - -); -/*=========================================================================== -FUNCTION SetSINRThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetSINRThreshold -( - char sinr_threshold -); - -/*=========================================================================== -FUNCTION GetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's on channel threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOnChannelThreshold -( - -); - -/*=========================================================================== -FUNCTION SetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's on channel threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOnChannelThreshold -( - uint8 on_channel_th -); - -/*=========================================================================== -FUNCTION GetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's off channel threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOffChannelThreshold -( - -); - -/*=========================================================================== -FUNCTION SetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's off channel threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOffChannelThreshold -( - uint8 off_channel_th -); -/*=========================================================================== -FUNCTION FmSetNotchFilter - -DESCRIPTION - PFAL specific routine to configure the FM receiver's notch filter - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmSetNotchFilter -( - uint8 notch -); - -/*=========================================================================== -FUNCTION FmDefaultRead - -DESCRIPTION - PFAL specific routine to get the FM Default Values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmDefaultRead -( - ftm_fm_def_data_rd_req defaultRead -); - -/*=========================================================================== -FUNCTION FmDefaultWrite - -DESCRIPTION - PFAL specific routine to write the default values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmDefaultWrite -( - ftm_fm_def_data_wr_req* - defaults -); - -/*=========================================================================== -FUNCTION FmTxPwrLvlCfg - -DESCRIPTION - PFAL specific routine to configure the FM Tx power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmTxPwrLvlCfg -( - uint8 pwrCfg -); - -/*=========================================================================== - -FUNCTION ftm_fm_run_mm - -DESCRIPTION - This function is used to run mm-audio-ftm. - -DEPENDENCIES - none - -===========================================================================*/ -void ftm_fm_run_mm -( - void -); - -/*=========================================================================== - -FUNCTION ftm_fm_audio - -DESCRIPTION - This function is used to load the target based config file and - set the audio output and volume. - -DEPENDENCIES - none - -===========================================================================*/ -fm_cmd_status_type ftm_fm_audio -( - uint8 source, - uint8 volume -); - -#endif /* CONFIG_FTM_FM */ -void ftm_fm_enable_slimbus(int val); diff --git a/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux.c b/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux.c deleted file mode 100755 index 206c33062..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux.c +++ /dev/null @@ -1,3668 +0,0 @@ -/*========================================================================== - -Description - Platform specific routines to program the V4L2 driver for FM - -# Copyright (c) 2010-2015 by Qualcomm Technologies, Inc. All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -08/03/2011 uppalas Adding support for new ftm commands -04/05/11 ananthk Added support for FM Tx functionalities -03/15/11 naveenr Choosing I2C device path based on board type. Added - support for 7x30 -02/08/11 braghave Calling the fm_qsoc_patches with right parameter - for non-Android case. -06/30/10 rakeshk Created a source file to implement platform specific - routines for FM -07/06/10 rakeshk Added support for all the Rx commands and clean roomed - the header and data structures -01/07/11 rakeshk Added two support APIs to read/write the I2C bus with -==========================================================================*/ - -#include "ftm_fm_pfal.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef ANDROID -#include -#endif -#include -#include -#include -#include -#include -#include "ftm_common.h" -#include -#define BIT16 (1<<16) -#define FM_SLAVE_ADDR 0x2A -/* Multiplying factor to convert to Radio freqeuncy */ -#define TUNE_MULT 16000 -/* Constant to request for Radio Events */ -#define EVENT_LISTEN 1 -/* 1000 multiplier */ -#define MULTIPLE_1000 1000 -/* Tavaura I2C address */ -int SLAVE_ADDR = 0x2A; -/* Tavaura I2C statu register*/ -#define INTSTAT_0 0x0 -/* Debug Macro */ -#define FTM_DEBUG -#ifdef FTM_DEBUG -#define print(x) printf(x) -#define print2(x,y) printf(x,y) -#define print3(x,y,z) printf(x,y,z) -#else -#define print(x) -#define print2(x,y) -#define print3(x,y,z) -#endif - -#define UNUSED(x) (void)(x) - -enum tavarua_buf_t { - TAVARUA_BUF_SRCH_LIST, - TAVARUA_BUF_EVENTS, - TAVARUA_BUF_RT_RDS, - TAVARUA_BUF_PS_RDS, - TAVARUA_BUF_RAW_RDS, - TAVARUA_BUF_AF_LIST, - TAVARUA_BUF_MAX -}; - -enum tavarua_xfr_ctrl_t { - RDS_PS_0 = 0x01, - RDS_PS_1, - RDS_PS_2, - RDS_PS_3, - RDS_PS_4, - RDS_PS_5, - RDS_PS_6 -}; - -enum tavarua_evt_t { - TAVARUA_EVT_RADIO_READY, - TAVARUA_EVT_TUNE_SUCC, - TAVARUA_EVT_SEEK_COMPLETE, - TAVARUA_EVT_SCAN_NEXT, - TAVARUA_EVT_NEW_RAW_RDS, - TAVARUA_EVT_NEW_RT_RDS, - TAVARUA_EVT_NEW_PS_RDS, - TAVARUA_EVT_ERROR, - TAVARUA_EVT_BELOW_TH, - TAVARUA_EVT_ABOVE_TH, - TAVARUA_EVT_STEREO, - TAVARUA_EVT_MONO, - TAVARUA_EVT_RDS_AVAIL, - TAVARUA_EVT_RDS_NOT_AVAIL, - TAVARUA_EVT_NEW_SRCH_LIST, - TAVARUA_EVT_NEW_AF_LIST, - TAVARUA_EVT_TXRDSDAT, - TAVARUA_EVT_TXRDSDONE, - TAVARUA_EVT_RADIO_DISABLED -}; - -#define TAVARUA_BUF_PS_RDS 3 -#define V4L2_CID_PRIVATE_TAVARUA_REGION 0x08000007 -#define V4L2_CID_PRIVATE_TAVARUA_TX_SETPSREPEATCOUNT 0x08000015 -#define V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_PS_NAME 0x08000016 -#define V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_RT 0x08000017 -#define V4L2_CID_PRIVATE_TAVARUA_STATE 0x08000004 -#define V4L2_CID_PRIVATE_TAVARUA_SET_AUDIO_PATH 0x8000029 -#define V4L2_CID_PRIVATE_TAVARUA_RDSON 0x0800000F -#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC 0x08000010 -#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK 0x08000006 -#define V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF 0x08000013 -#define V4L2_CID_PRIVATE_TAVARUA_ANTENNA 0x08000012 -#define V4L2_CID_PRIVATE_TAVARUA_RDSON 0x0800000F -#define V4L2_CID_PRIVATE_TAVARUA_EMPHASIS 0x0800000C -#define V4L2_CID_PRIVATE_TAVARUA_SPACING 0x0800000E -#define V4L2_CID_PRIVATE_TAVARUA_RDS_STD 0x0800000D -#define V4L2_CID_PRIVATE_TAVARUA_LP_MODE 0x08000011 -#define V4L2_CID_PRIVATE_TAVARUA_SRCHMODE 0x08000001 -#define V4L2_CID_PRIVATE_TAVARUA_SCANDWELL 0x08000002 -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PI 0x0800000A -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT 0x0800000B -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY 0x08000009 -#define V4L2_CID_PRIVATE_TAVARUA_SRCHON 0x08000003 -#define V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD 0x800002D -#define V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD 0x800002E -#define V4L2_CID_PRIVATE_SINR_THRESHOLD 0x800002F -#define V4L2_CID_PRIVATE_SINR_SAMPLES 0x8000030 -#define V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH 0x08000008 -#define SRCH_DIR_UP (0) -#define SRCH_DIR_DOWN (1) - -#define FM_TX_PWR_LVL_0 0 /* Lowest power lvl that can be set for Tx */ -#define FM_TX_PWR_LVL_MAX 7 /* Max power lvl for Tx */ -#define RDS_Tx 0x80 -const char* fm_i2c_path_8660 = "/dev/i2c-4"; -const char* fm_i2c_path_7x30 = "/dev/i2c-2"; -const char* fm_i2c_path_7627a = "/dev/i2c-1"; -/* To get the current status of PS/RT transmission */ -volatile unsigned char is_rt_transmitting = 0; -volatile unsigned char is_ps_transmitting = 0; -int ftm_audio_fd = -1; -const char *const audio_config = "-c /vendor/etc/ftm_test_config"; -const char *const ext_audio_config = "-c /system/etc/ftm_test_config_wcd9335"; -const unsigned int CMD_len = 16; -const int config_len = 31; -const int ext_config_len = 39; -const int sound_card_name_len = 16; -const char *const mm_audio_path = "/vendor/bin/mm-audio-ftm"; -/* enum to montior the Power On status */ -typedef enum -{ - INPROGRESS, - COMPLETE -}poweron_status; - -boolean cmd_queued = FALSE; -/* Resourcse Numbers for Rx/TX */ -int FM_RX = 1; -int FM_TX = 2; -/* Boolean to control the power down sequence */ -volatile boolean power_down = FALSE; -/* V4L2 radio handle */ -int fd_radio = -1; -/* FM asynchornous thread to perform the long running ON */ -pthread_t fm_interrupt_thread,fm_on_thread; -/* Prototype ofFM ON thread */ -void *(ftm_on_long_thread)(void *ptr); -/* Global state ofthe FM task */ -fm_station_params_available fm_global_params; - -volatile poweron_status poweron; - -int chipVersion = 0; -extern volatile fm_power_state fmPowerState; -static char transport[PROPERTY_VALUE_MAX]; - -/*=========================================================================== -FUNCTION WaitonInterrupt - -DESCRIPTION - Helper function to read the Interrupt register to check for a trasnfer - complete interrupt - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ - -int WaitonInterrupt(int fd,unsigned int intmask,unsigned int waittime) -{ - unsigned char buf[4]; - unsigned int maxtries=0; - unsigned int readdata=0; - int ret; - print("WaitonInterrupt >\n"); - while(((readdata & intmask) != intmask)&&(maxtries < 10)) - { - usleep(waittime*MULTIPLE_1000); - /* Read the 3 interrupt registers */ - ret = i2c_read(fd, INTSTAT_0, buf, 3,SLAVE_ADDR); - if (ret < 0) - { - return -1; - } - readdata |= buf[0]; - readdata |= buf[1] << 8; - readdata |= buf[2] << 16; - maxtries++; - } - if((readdata & intmask) != intmask) - { - return -1; - } - print("WaitonInterrupt <\n"); - return 0; -} - -/*=========================================================================== -FUNCTION set_v4l2_ctrl - -DESCRIPTION - Sets the V4L2 control sent as argument with the requested value and returns the status - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE in failure,TRUE in success - -SIDE EFFECTS - None - -===========================================================================*/ -boolean set_v4l2_ctrl(int fd,uint32 id,int32 value) -{ - struct v4l2_control control; - int err; - - control.value = value; - control.id = id; - switch(id) - { - case V4L2_CID_PRIVATE_TAVARUA_REGION : - if (value == FM_US_EU) - { - print("\n Region : US-EUROPE\n"); - control.value = FM_US_EU; - } - /* - Increment the 'control.value' to match the 'tavarua_region_t' enum - variable defined in the V4L2 driver. - - FTM: V4L2: - - US/EUROPE - '0' US - '0' - JAPAN STD - '1' EU - '1' - JAPAN WIDE - '2' JAPAN - '2' - USER-DEFINED - '3' JAPAN WIDE - '3' - REGION OTHER - '4' - */ - - else if(value == FM_JAPAN_STANDARD) - { - print("\n Region : JAPAN-STANARD\n"); - control.value = FM_JAPAN_STANDARD+1; - } - else if(value == FM_JAPAN_WIDE) - { - print("\n Region : JAPAN-WIDE\n"); - control.value = FM_JAPAN_WIDE+1; - } - else if(value == 3) - { - print("\n Region : USER-DEFINED\n"); - control.value = FM_USER_DEFINED; - } - break; - } - err = ioctl(fd,VIDIOC_S_CTRL,&control); - if(err < 0) - { - print3("set_v4l2_ctrl failed for control : %x with return value : %d\n",control.id,err); - return FALSE; - } - return TRUE; -} - -/*=========================================================================== -FUNCTION read_data_from_v4l2 - -DESCRIPTION - reads the fm_radio handle and updates the FM global configuration based on - the interrupt data received - -DEPENDENCIES - NIL - -RETURN VALUE - FALSE in failure,TRUE in success - -SIDE EFFECTS - None - -===========================================================================*/ -int read_data_from_v4l2(int fd,uint8* buf,int index) -{ - struct v4l2_requestbuffers reqbuf; - struct v4l2_buffer v4l2_buf; - int err; - memset(&reqbuf, 0x0, sizeof(reqbuf)); - enum v4l2_buf_type type = V4L2_BUF_TYPE_PRIVATE; - - reqbuf.type = V4L2_BUF_TYPE_PRIVATE; - reqbuf.memory = V4L2_MEMORY_USERPTR; - memset(&v4l2_buf, 0x0, sizeof(v4l2_buf)); - v4l2_buf.index = index; - v4l2_buf.type = type; - v4l2_buf.length = 128; - v4l2_buf.m.userptr = (unsigned long)buf; - err = ioctl(fd,VIDIOC_DQBUF,&v4l2_buf) ; - if(err < 0) - { - print2("ioctl failed with error = %d\n",err); - return -1; - } - return v4l2_buf.bytesused; -} - -/*=========================================================================== -FUNCTION extract_program_service - -DESCRIPTION - Helper routine to read the Program Services data from the V4L2 buffer - following a PS event - -DEPENDENCIES - PS event - -RETURN VALUE - TRUE if success,else FALSE - -SIDE EFFECTS - Updates the Global data strutures PS info entry - -===========================================================================*/ -boolean extract_program_service() -{ - uint8 buf[64]; - int ret; - print("extract_program_service\n"); - ret = read_data_from_v4l2(fd_radio,buf,TAVARUA_BUF_PS_RDS); - print2("read_data_from_v4l2 ret = %d\n",ret); - int num_of_ps = (int)(buf[0] & 0x0F); - int ps_services_len = ((int )((num_of_ps*8) + 5)) - 5; - fm_global_params.fm_ps_length = ps_services_len; - fm_global_params.pgm_id = (((buf[2] & 0xFF) << 8) | (buf[3] & 0xFF)); - fm_global_params.pgm_type = (int)( buf[1] & 0x1F); - memset(fm_global_params.pgm_services,0x0,MAX_RDS_PS_LENGTH); - memcpy(fm_global_params.pgm_services,&buf[5],ps_services_len); - fm_global_params.pgm_services[ps_services_len] = '\0'; - print2("Pid = %d\n",fm_global_params.pgm_id); - print2("Ptype = %d\n",fm_global_params.pgm_type); - print2("PS name %s\n",fm_global_params.pgm_services); - return TRUE; -} -/*=========================================================================== -FUNCTION extract_radio_text - -DESCRIPTION - Helper routine to read the Radio text data from the V4L2 buffer - following a RT event - -DEPENDENCIES - RT event - -RETURN VALUE - TRUE if success,else FALSE - -SIDE EFFECTS - Updates the Global data strutures RT info entry - -===========================================================================*/ - -boolean extract_radio_text() -{ - uint8 buf[120]; - - int bytesread = read_data_from_v4l2(fd_radio,buf,TAVARUA_BUF_RT_RDS); - int radiotext_size = (int)(buf[0] & 0x0F); - fm_global_params.fm_rt_length = radiotext_size; - fm_global_params.pgm_id = (((buf[2] & 0xFF) << 8) | (buf[3] & 0xFF)); - fm_global_params.pgm_type = (int)( buf[1] & 0x1F); - memset(fm_global_params.radio_text,0x0,MAX_RDS_RT_LENGTH); - memcpy(fm_global_params.radio_text,&buf[5],radiotext_size); - printf("RT is %s\n", fm_global_params.radio_text); - return TRUE; -} - - -/*=========================================================================== -FUNCTION extract_peek_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a riva peek data command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data strutures member riva_data_access_params - -===========================================================================*/ - -void extract_peek_data() -{ - uint8 buf[MAX_RIVA_PEEK_RSP_SIZE]; - int bytesread = read_data_from_v4l2(fd_radio,buf,IRIS_BUF_PEEK); - struct fm_riva_poke_word *responce = (struct fm_riva_poke_word *)buf; - memcpy((void*)&fm_global_params.riva_data_access_params, - (void*)responce,sizeof(buf)); -} -/*=========================================================================== -FUNCTION extract_ssbi_peek_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a ssbi peek data command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data strutures member ssbi_peek_data - -===========================================================================*/ - - -void extract_ssbi_peek_data() -{ - uint8 buf[SSBI_PEEK_DATA_SIZE]; - int bytesread = read_data_from_v4l2(fd_radio,buf,IRIS_BUF_SSBI_PEEK); - fm_global_params.ssbi_peek_data = buf[0]; -} - -/*=========================================================================== -FUNCTION extract_rds_grp_cntr_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a Read Rds Group counters command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data strutures member rds_group_counters - -===========================================================================*/ - -void extract_rds_grp_cntr_data() -{ - uint8 buf[RDS_GRP_CNTRS_SIZE]; - int bytesread = read_data_from_v4l2(fd_radio,buf,IRIS_BUF_RDS_CNTRS); - struct RDSCntrsParams *responce = (struct RDSCntrsParams *)buf; - memcpy((void*)&fm_global_params.rds_group_counters,(void*)responce,sizeof(buf)); -} -/*=========================================================================== -FUNCTION extract_default_read_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a defaultRead command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data struture member rd_default - -===========================================================================*/ - -void extract_default_read_data() -{ - uint8 buf[DEFAULT_DATA_SIZE+2]; //2-bytes for status and data length - int bytesread = read_data_from_v4l2(fd_radio,buf,IRIS_BUF_RD_DEFAULT); - readDefaults_data *response = (readDefaults_data *)buf; - memcpy((void*)&fm_global_params.default_read_data,(void*)response,bytesread); -} -/*=========================================================================== -FUNCTION reset_rds - -DESCRIPTION - Reset the existing RDS data. - -DEPENDENCIES - Radio event - -RETURN VALUE - void - -IDE EFFECTS - Reset the Global RDS data info like RT, PS etc. -===========================================================================*/ - -void reset_rds() -{ - memset(fm_global_params.pgm_services,0x0,MAX_RDS_PS_LENGTH); - memset(fm_global_params.radio_text,0x0,MAX_RDS_RT_LENGTH); - fm_global_params.pgm_id = 0; - fm_global_params.pgm_type = 0; -} -/*=========================================================================== -FUNCTION process_radio_event - -DESCRIPTION - Helper routine to process the radio event read from the V4L2 and performs - the corresponding action. - -DEPENDENCIES - Radio event - -RETURN VALUE - TRUE if success,else FALSE - -SIDE EFFECTS - Updates the Global data strutures info entry like frequency, station - available, RDS sync status etc. - -===========================================================================*/ - -boolean process_radio_event(uint8 event_buf) -{ - print2("Process event %d\n",event_buf); - struct v4l2_frequency freq; - boolean ret= TRUE; - switch(event_buf) - { - case TAVARUA_EVT_RADIO_READY: - print("Radio ON complete\n"); - break; - case TAVARUA_EVT_TUNE_SUCC: - print("Tune successful\n"); - reset_rds(); - freq.type = V4L2_TUNER_RADIO; - if(ioctl(fd_radio, VIDIOC_G_FREQUENCY, &freq)< 0) - { - return FALSE; - } - fm_global_params.current_station_freq =((freq.frequency*MULTIPLE_1000)/TUNE_MULT); - break; - case TAVARUA_EVT_SEEK_COMPLETE: - print("Seek Complete\n"); - freq.type = V4L2_TUNER_RADIO; - if(ioctl(fd_radio, VIDIOC_G_FREQUENCY, &freq)< 0) - { - return FALSE; - } - fm_global_params.current_station_freq =((freq.frequency*MULTIPLE_1000)/TUNE_MULT); - break; - case TAVARUA_EVT_SCAN_NEXT: - print("Event Scan next\n"); - break; - case TAVARUA_EVT_NEW_RAW_RDS: - print("Received Raw RDS info\n"); - break; - case TAVARUA_EVT_NEW_RT_RDS: - print("Received RT \n"); - ret = extract_radio_text(); - break; - case TAVARUA_EVT_NEW_PS_RDS: - print("Received PS\n"); - ret = extract_program_service(); - break; - case TAVARUA_EVT_ERROR: - print("Received Error\n"); - break; - case TAVARUA_EVT_BELOW_TH: - print("Received Below TH\n"); - fm_global_params.service_available = FM_SERVICE_NOT_AVAILABLE; - break; - case TAVARUA_EVT_ABOVE_TH: - print("Received above TH\n"); - fm_global_params.service_available = FM_SERVICE_AVAILABLE; - break; - case TAVARUA_EVT_STEREO: - print("Received Stereo Mode\n"); - fm_global_params.stype = FM_RX_STEREO; - break; - case TAVARUA_EVT_MONO: - print("Received Mono Mode\n"); - fm_global_params.stype = FM_RX_MONO; - break; - case TAVARUA_EVT_RDS_AVAIL: - print("Received RDS Available\n"); - fm_global_params.rds_sync_status = FM_RDS_SYNCED; - break; - case TAVARUA_EVT_RDS_NOT_AVAIL: - print("Received RDS Not Available\n"); - fm_global_params.rds_sync_status = FM_RDS_NOT_SYNCED; - break; - case TAVARUA_EVT_NEW_SRCH_LIST: - print("Received new search list\n"); - break; - case TAVARUA_EVT_NEW_AF_LIST: - print("Received new AF List\n"); - break; - case (RDS_Tx | RDS_PS_0): - print("\nSuccessfully transmitted PS Header\n"); - break; - case (RDS_Tx | RDS_PS_1): - case (RDS_Tx | RDS_PS_2): - case (RDS_Tx | RDS_PS_3): - case (RDS_Tx | RDS_PS_4): - case (RDS_Tx | RDS_PS_5): - case (RDS_Tx | RDS_PS_6): - print("\n Successfully transmitted PS Contents \n"); - break; - - } - /* - * This logic is applied to ensure the exit ofthe Event read thread - * before the FM Radio control is turned off. This is a temporary fix - */ - if(power_down == TRUE) - return FALSE; - return ret; -} - -/*=========================================================================== -FUNCTION ftm_fm_interrupt_thread - -DESCRIPTION - Thread to perform a continous read on the radio handle for events - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ - -void * ftm_fm_interrupt_thread(void *ptr) -{ - print("Starting FM event listener\n"); - uint8 buf[128]; - boolean status = TRUE; - int i =0; - int bytesread = 0; - - UNUSED(ptr); - - while(1) - { - bytesread = read_data_from_v4l2(fd_radio,buf,EVENT_LISTEN); - if(bytesread == -1) - break; - for(i =0;iis_fm_tx_on) - print("\nEnable Transmitter entry\n"); - else - print("\nEnable Receiver entry\n"); -#endif - /*Opening the handle to the V4L2 device */ - fd_radio = open("/dev/radio0",O_RDONLY, O_NONBLOCK); - if(fd_radio < 0) - { - if(radiocfgptr->is_fm_tx_on) - { - print2("EnableTransmitter Failed to open = %d\n",fd_radio); - return FM_CMD_FAILURE; - } - else - { - print2("EnableReceiver Failed to open = %d\n",fd_radio); - return FM_CMD_FAILURE; - } - } - - if(radiocfgptr->is_fm_tx_on) - print("\nOpened Transmitter\n"); - else - print("\nOpened Receiver\n"); - -/* - Starting 'ftm_on_long_thread' where we do all the FM configurations - and intializations. - -*/ - fmPowerState = FM_POWER_TRANSITION; - pthread_create( &fm_on_thread, NULL, ftm_on_long_thread, radiocfgptr); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION TransmitPS - -DESCRIPTION - PFAL specific routine to transmit RDS PS strings - -PARAMS PASSED - 'tuFmPSParams' containing RDS PI, PTY, max. no. of PS repeat count and - PS name of the transmitting station - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to transmit the PS string describing the transmitter's - information and genre of the audio content being transmitted - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type TransmitPS -( - tsFtmFmRdsTxPsType* tuFmPSParams -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - print("\n Entering Transmit PS \n"); - - /* Set Program Type (PTY) */ - control.id = V4L2_CID_RDS_TX_PTY; - control.value = 0; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PTY failed \n"); - return FM_CMD_FAILURE; - } - - /* Set Program Identifier (PI) */ - control.id = V4L2_CID_RDS_TX_PI; - control.value = tuFmPSParams->tusTxPi; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PI failed \n"); - return FM_CMD_FAILURE; - } - - /*Set PS max. repeat count */ - control.id = V4L2_CID_PRIVATE_TAVARUA_TX_SETPSREPEATCOUNT; - control.value = tuFmPSParams->ucTxPSRptCnt; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set MAX_REPEAT_CNT failed \n"); - return FM_CMD_FAILURE; - } - - /*Set Program Service name (PS) */ - ext_ctl.id = V4L2_CID_RDS_TX_PS_NAME; - ext_ctl.string = (char *)tuFmPSParams->cTxPSStrPtr; - ext_ctl.size = tuFmPSParams->ulPSStrLen; - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_FM_TX; - v4l2_ctls.count = 0; - v4l2_ctls.controls = &ext_ctl; - - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set PS failed \n"); - return FM_CMD_FAILURE; - } - is_ps_transmitting = 1; - print("\n Exiting Transmit PS \n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION stopTransmitPS - -DESCRIPTION - PFAL specific routine to stop transmitting the PS string. - -PARAMS PASSED - NIL - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to stop transmitting the PS string - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -============================================================================*/ -fm_cmd_status_type stopTransmitPS -( - void -) -{ - int ret = 0; - struct v4l2_control control; - - print("\n Entering stopTransmitPS \n"); - - control.id = V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_PS_NAME; - ret = ioctl(fd_radio, VIDIOC_S_CTRL , &control); - if(ret < 0){ - print("Failed to stop Transmit PS"); - return FM_CMD_FAILURE; - } - else { - print("\nStopped transmitting PS\n"); - is_ps_transmitting = 0; - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION TransmitRT - -DESCRIPTION - PFAL specific routine to transmit the RT string. - -PARAMS PASSED - 'tuFmRTParams' containing RDS PI, and RT information of the transmitting - station - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to transmit the RT string which provides a brief info - of the audio content being transmitted. This includes artist name, movie name - few lines of the audio. Usually the metadata of the song is transmitted as RT - - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None -===========================================================================*/ -fm_cmd_status_type TransmitRT -( - tsFtmFmRdsTxRtType* tuFmRTParams -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_FM_TX; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - print("\n Entering Transmit RT \n"); - - if(tuFmRTParams == NULL) - { - print("\n 'tuFmRTParams ' is not NULL \n "); - return FM_CMD_FAILURE; - } - else - { - ext_ctl.id = V4L2_CID_RDS_TX_RADIO_TEXT; - ext_ctl.string = (char *)tuFmRTParams->cTxRTStrPtr; - ext_ctl.size = tuFmRTParams->ulRTStrLen; - } - /* Set Program Type (PTY) */ - control.id = V4L2_CID_RDS_TX_PTY; - control.value = 0; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PTY failed \n"); - return FM_CMD_FAILURE; - } - - /* Set Program Identifier (PI) */ - control.id = V4L2_CID_RDS_TX_PI; - control.value = tuFmRTParams->tusTxPi; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PI failed \n"); - return FM_CMD_FAILURE; - } - - /* Set the Radio Text (RT) to be transmitted */ - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set RT failed \n"); - return FM_CMD_FAILURE; - } - - is_rt_transmitting = 1; - return FM_CMD_SUCCESS; - -} - -/*=========================================================================== -FUNCTION stopTransmitRT - -DESCRIPTION - PFAL specific routine to stop transmitting the RT string. - -PLATFORM SPECIFIC DESCRIPTION - This routine is called to stop transmitting the RT string for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type stopTransmitRT -( - void -) -{ - int ret = 0; - - print("\n Entering stopTransmitRT \n"); - - struct v4l2_control control; - control.id = V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_RT; - ret = ioctl(fd_radio, VIDIOC_S_CTRL , &control); - if(ret < 0){ - print("Failed to stop Transmit RT"); - return FM_CMD_FAILURE; - } - else { - print("\nStopped transmitting RT\n"); - is_rt_transmitting = 0; - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION getTxPSFeatures - -DESCRIPTION - PFAL specific routine to get all the supported Tx PS features - -PLATFORM SPECIFIC DESCRIPTION - This routine is called to get the supported PS features for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type getTxPSFeatures -( - void -) -{ - print("\n Entering getTxPSFeatures() \n"); - printf("\n Supported Tx PS Features:\n"); - printf("\n Max PS Count : %d\n",MAX_TX_PS_LEN); - printf("\n Max PS Repeat Count : %d\n",MAX_TX_PS_RPT_CNT); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_on_long_thread - -DESCRIPTION - Helper routine to perform the rest ofthe FM calibration and SoC Patch - download and configuration settings following the opening ofradio handle - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void *(ftm_on_long_thread)(void *ptr) -{ - int ret = 0; - struct v4l2_control control; - struct v4l2_tuner tuner; - int i,init_success = 0; - char value[PROPERTY_VALUE_MAX]; - struct v4l2_capability cap; - char versionStr[40]; - char cmdBuffer[40]; - char product_board_platform_type[PROPERTY_VALUE_MAX]; - fm_cmd_status_type status; - - fm_config_data* radiocfgptr = (fm_config_data *)ptr; - - /* Query the V4L2 device for capabilities */ - ret = ioctl(fd_radio, VIDIOC_QUERYCAP, &cap); - - if(ret < 0 ) - { - print("Failed to retrieve the Fm SOC version\n"); - return NULL; - } - else - { - print3("VIDIOC_QUERYCAP returns :%d: version: %d \n", ret , cap.version ); - chipVersion = cap.version; - } - - property_get("qcom.bluetooth.soc", value, NULL); - print2("BT soc is %s\n", value); - if (strcmp(value, "rome") != 0) - { - print("Initiating Soc patch download\n"); - -#ifndef ANDROID - snprintf(cmdBuffer, sizeof(cmdBuffer)-1, "fm_qsoc_patches %d %d", cap.version, 0); - ret = system(cmdBuffer); - if(ret != 0) - { - print2("Failed to download patches = %d\n",ret); - return NULL; - } -#else - if( ret >= 0 ) - { - print2("Driver Version(Same as ChipId): %x \n", cap.version ); - /*Convert the integer to string */ - snprintf(versionStr, sizeof(versionStr)-1, "%d", cap.version ); - property_set("hw.fm.version", versionStr); - } - else - { - return NULL; - } - /*Set the mode for soc downloader*/ - property_set("hw.fm.mode", "normal"); - property_set("ctl.start", "fm_dl"); - sleep(1); - for(i=0;i<9;i++) - { - property_get("hw.fm.init", value, NULL); - if(strcmp(value, "1") == 0) - { - init_success = 1; - break; - } - else - { - sleep(1); - } - } - print3("init_success:%d after %d seconds \n", init_success, i); - if(!init_success) - { - property_set("ctl.stop", "fm_dl"); - // close the fd(power down) - close(fd_radio); - return NULL; - } - - property_get("ro.qualcomm.bt.hci_transport", transport, NULL); - print2("ro.qualcomm.bt.hci_transport = %s\n", transport); - if ((3 == strlen(transport)) && (!strncmp("smd", transport, 3))) { - print("Not a WCN2243 target.\n"); - } else { - /* - * For WCN2243 based targets check what is the target type. - * DAC configuration is applicable only msm7627a target. - */ - property_get("ro.board.platform", product_board_platform_type, NULL); - if (!strncmp("msm7627a", product_board_platform_type, - strlen(product_board_platform_type))) { - property_set("hw.fm.mode", "config_dac"); - property_set("hw.fm.init", "0"); - property_set("hw.fm.isAnalog", "true"); - property_set("ctl.start", "fm_dl"); - for (i = 0; i < 3; i++) { - property_get("hw.fm.init", value, NULL); - if (strcmp(value, "1") == 0) { - init_success = 1; - break; - } else { - sleep(1); - } - } - print3("init_success:%d after %d seconds \n", init_success, i); - if (!init_success) { - property_set("ctl.stop", "fm_dl"); - close(fd_radio); - return NULL; - } - } else { - print("Analog audio path not supported\n"); - } - } - -#endif - } - /** - * V4L2_CID_PRIVATE_TAVARUA_STATE - * V4L2_CID_PRIVATE_TAVARUA_EMPHASIS - * V4L2_CID_PRIVATE_TAVARUA_SPACING - * V4L2_CID_PRIVATE_TAVARUA_RDS_STD - * V4L2_CID_PRIVATE_TAVARUA_REGION - */ - - /* Switching on FM */ - if (radiocfgptr->is_fm_tx_on) - { - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_STATE,FM_TX); - if(ret == FALSE) - { - print("Failed to turn on FM Trnasmitter\n"); - return NULL; - } - else - print("\nEnabled FM Transmitter successfully\n"); - } - else - { - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_STATE,FM_RX); - if(ret == FALSE) - { - print("Failed to turn on FM Receiver\n"); - return NULL; - } - else - print("\nEnabled FM Receiver successfully\n"); - } - - /*Enable Analog audio path*/ - ret = set_v4l2_ctrl(fd_radio, V4L2_CID_PRIVATE_TAVARUA_SET_AUDIO_PATH, 1); - if(ret == FALSE) - { - print("Failed to set Audio path \n"); - } - - status = ConfigureFM(radiocfgptr); - if(status != FM_CMD_SUCCESS) - { - print("Failed to configure fm\n"); - return NULL; - } - - /* Setting RDS On */ - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSON,1); - if(ret == FALSE) - { - print("Failed to set RDS on \n"); - return NULL; - } - - /* Set the RDS Group Processing : Only in case of FM Receiver */ - if (!radiocfgptr->is_fm_tx_on) - { - control.id = V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC; - ret = ioctl(fd_radio,VIDIOC_G_CTRL,&control); - if(ret < 0) - { - print2("Failed to set RDS group!!!Return value : %d\n",ret); - return NULL; - } - - int rdsMask = FM_RX_RDS_GRP_RT_EBL | FM_RX_RDS_GRP_PS_EBL | - FM_RX_RDS_GRP_AF_EBL | FM_RX_RDS_GRP_PS_SIMPLE_EBL ; - - byte rds_group_mask = (byte)control.value; - byte rdsFilt = 0; - int psAllVal=rdsMask & (1 << 4); - print2("rdsOptions: rdsMask: %x\n",rdsMask); - rds_group_mask &= 0xC7; - - rds_group_mask |= ((rdsMask & 0x07) << 3); - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC, - rds_group_mask); - - if(ret == FALSE) - { - print("Failed to set RDS GROUP PROCESSING!!!\n"); - return NULL; - } - - if (strcmp(value, "rome") == 0) - { - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK, 1); - if (ret == FALSE) - { - print("Failed to set RDS GRP MASK!!!\n"); - return NULL; - } - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF, 1); - if (ret == FALSE) - { - print("Failed to set RDS BUF!!!\n"); - return NULL; - } - } - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_ANTENNA,0); - if(ret == FALSE) - { - print("Failed to set ANTENNA!!!\n"); - return NULL; - } - ret = set_v4l2_ctrl(fd_radio, V4L2_CID_PRIVATE_IRIS_SOFT_MUTE, 0); - if(ret == FALSE) - { - print("Failed to Disable Soft Mute!!!\n"); - return NULL; - } - - } - - /* - - Start the 'ftm_fm_interrupt_thread' thread which listens for and processes - radio events received from the SoC - - */ - pthread_create( &fm_interrupt_thread, NULL, ftm_fm_interrupt_thread, NULL); - power_down = FALSE; - - - - if(radiocfgptr->is_fm_tx_on) { -#ifdef FTM_DEBUG - print("\nEnable Transmitter exit\n"); -#endif - fmPowerState = FM_TX_ON; - } - else { -#ifdef FTM_DEBUG - print("\nEnable Receiver exit\n"); -#endif - fmPowerState = FM_RX_ON; - } - poweron = COMPLETE; - return NULL; -} - -/*=========================================================================== -FUNCTION DisableFM - -DESCRIPTION - PFAL specific routine to disable FM and free the FM resources - -PLATFORM SPECIFIC DESCRIPTION - Closes the handle to /dev/radio0 V4L2 device - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None -===========================================================================*/ -fm_cmd_status_type DisableFM -( - fm_config_data* radiocfgptr -) -{ - struct v4l2_control control; - uint8 buf[128]; - double tune; - char value[PROPERTY_VALUE_MAX]; - struct v4l2_frequency freq_struct; - int ret; - - /* Wait till the previous ON sequence has completed */ - while(poweron != COMPLETE); - -#ifdef FTM_DEBUG - print("DisableFM start\n"); -#endif - - power_down = TRUE; - - /* Set RDS Off */ - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSON,0); - if(ret == FALSE) - { - print("DisableFM failed to set RDS off \n"); - return FM_CMD_FAILURE; - } - - /* Turn off FM */ - /* As part of Turning off FM we will get 'READY' event */ - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_STATE,0); - if(ret == FALSE) - { - if(radiocfgptr->is_fm_tx_on) - { - print("\nFailed to Turn Off FM Transmitter\n"); - return FM_CMD_FAILURE; - } - else - { - print("\nFailed to Turn Off FM Receiver\n"); - return FM_CMD_FAILURE; - } - } - - /* Wait for 'fm_interrupt_thread' thread to complete its execution */ - pthread_join(fm_interrupt_thread,NULL); - -#ifdef FTM_DEBUG - - print("Stopping the FM control\n"); - -#endif - -#ifdef ANDROID - - property_get("qcom.bluetooth.soc", value, NULL); - print2("BT soc is %s\n", value); - if (strcmp(value, "rome") != 0) - { - property_set("ctl.stop", "fm_dl"); - } - -#endif/*ANDROID*/ - - print2("Stopping the FM control = %d\n",close(fd_radio)); - fd_radio = -1; - cmd_queued = TRUE; - -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("Disabled FM Transmitter\n"); - else - print("Disabled FM Receiver\n"); - -#endif - fmPowerState = FM_POWER_OFF; - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION ConfigureFM - -DESCRIPTION - PFAL specific routine to configure FM with the Radio Configuration - parameters passed. - -PLATFORM SPECIFIC DESCRIPTION - Configures the Init parameters like emphasis, channel spacing, Band Limit, - RDS type, Frequency Band, and Radio State. - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type ConfigureFM -( - fm_config_data* radiocfgptr -) -{ - int ret = 0; - struct v4l2_control control; - struct v4l2_tuner tuner; - -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("\nConfigure FM Transmitter entry\n"); - else - print("\nConfigure FM Receiver entry\n"); -#endif - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - /* Set Emphasis, Channel spacing and RDS Standard : - Emphasis : - '0' - 75 - US/EU - '1' - 50 - JAPAN/JAPAN-WIDE/ASIA - Channel Spacing : - '0' - 200kHz - US/EU - '1' - 100kHz - JAPAN - '2' - 50kHz - JAPAN-WIDE - RDS/RDBS Standard : - '0' - RDBS - US/EU - '1' - RDS - All regions - */ - switch(radiocfgptr->band) - { - case FM_US_EU: - radiocfgptr->emphasis = 0; - radiocfgptr->spacing = 0; - radiocfgptr->rds_system = 0; - break; - case FM_JAPAN_STANDARD: - radiocfgptr->emphasis = 1; - radiocfgptr->spacing = 1; - radiocfgptr->rds_system = 1; - case FM_JAPAN_WIDE: - radiocfgptr->emphasis = 1; - radiocfgptr->spacing = 2; - radiocfgptr->rds_system = 1; - break; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_EMPHASIS, - radiocfgptr->emphasis); - if(ret == FALSE) - { - print("ConfigureFM : Failed to set Emphasis \n"); - return FM_CMD_FAILURE; - } - - /* Set channel spacing */ - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SPACING, - radiocfgptr->spacing); - if(ret == FALSE) - { - print("ConfigureFM : Failed to set channel spacing \n"); - return FM_CMD_FAILURE; - } - - /* Set RDS/RDBS Standard */ - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDS_STD, - radiocfgptr->rds_system); - if(ret == FALSE) - { - print("ConfigureFM : Failed to set RDS std \n"); - return FM_CMD_FAILURE; - } - - /* Set band limit and audio mode to Mono/Stereo */ - tuner.index = 0; - tuner.signal = 0; - - switch(radiocfgptr->band) - { - case FM_US_EU: - tuner.rangelow = REGION_US_EU_BAND_LOW * (TUNE_MULT/1000); - tuner.rangehigh = REGION_US_EU_BAND_HIGH * (TUNE_MULT/1000); - break; - case FM_JAPAN_STANDARD: - tuner.rangelow = REGION_JAPAN_STANDARD_BAND_LOW * (TUNE_MULT/1000); - tuner.rangehigh = REGION_JAPAN_STANDARD_BAND_HIGH * (TUNE_MULT/1000); - break; - case FM_JAPAN_WIDE: - tuner.rangelow = REGION_JAPAN_WIDE_BAND_LOW * (TUNE_MULT/1000); - tuner.rangehigh = REGION_JAPAN_WIDE_BAND_HIGH * (TUNE_MULT/1000); - break; - default: - tuner.rangelow = radiocfgptr->bandlimits.lower_limit * (TUNE_MULT/1000); - tuner.rangehigh = radiocfgptr->bandlimits.upper_limit * (TUNE_MULT/1000); - break; - } - - ret = ioctl(fd_radio,VIDIOC_S_TUNER,&tuner); - if(ret < 0) - { - print("ConfigureFM : Failed to set band limits and audio mode \n"); - return FM_CMD_FAILURE; - } - - /* Set Region */ - radiocfgptr->band = FM_USER_DEFINED; - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_REGION,radiocfgptr->band); - if(ret == FALSE) - { - print("ConfigureFM : Failed to set band\n"); - return FM_CMD_FAILURE; - } - -out : -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("\nConfigure FM Transmitter exit\n"); - else - print("\nConfigure FM Receiver exit\n"); -#endif - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetFrequencyReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Frequency ofreception - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyReceiver -( - uint32 ulfreq -) -{ - int err; - double tune; - struct v4l2_frequency freq_struct; - struct v4l2_tuner tuner; -#ifdef FTM_DEBUG - print2("\nSetFrequency Receiver entry freq = %d\n",(int)ulfreq); -#endif - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - tuner.index = 0; - - err = ioctl(fd_radio,VIDIOC_G_TUNER,&tuner); - if(err < 0) - { - print("SetFrequencyReceiver : Failed to get band limits and audio mode \n"); - return FM_CMD_FAILURE; - } - freq_struct.type = V4L2_TUNER_RADIO; - freq_struct.frequency = (ulfreq) * (TUNE_MULT/1000); - if (freq_struct.frequency >= tuner.rangelow && freq_struct.frequency <= tuner.rangehigh) - { - err = ioctl(fd_radio, VIDIOC_S_FREQUENCY, &freq_struct); - if(err < 0) - { - return FM_CMD_FAILURE; - } - } - else - { - print("SetFrequencyReceiver : frequency out of band limits \n"); - return FM_CMD_DISALLOWED; - } -#ifdef FTM_DEBUG - print("\nSetFrequency Receiver exit\n"); -#endif - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetFrequencyTransmitter - -DESCRIPTION - PFAL specific routine to configure the FM Transmitter's frequency - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyTransmitter -( - uint32 ulfreq -) -{ - int err; - double tune; - struct v4l2_frequency freq_struct; - struct v4l2_control control; - struct v4l2_tuner tuner; -#ifdef FTM_DEBUG - print2("\n SetFrequencyTransmitter() entry : Freq = %d \n",(int)ulfreq); -#endif - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - /* Stop transmitting PS/RT frequency of currently tuned station */ - print2("\n Currently tuned station is : %u \n",fm_global_params.current_station_freq); - if(is_ps_transmitting) - stopTransmitPS(); - if(is_rt_transmitting) - stopTransmitRT(); - - tuner.index = 0; - - err = ioctl(fd_radio,VIDIOC_G_TUNER,&tuner); - if(err < 0) - { - print("SetFrequencyTransmitter : Failed to get band limits and audio mode \n"); - return FM_CMD_FAILURE; - } - - /* Fill up the 'v4l2_frequency' structure */ - freq_struct.type = V4L2_TUNER_RADIO; - freq_struct.frequency = (ulfreq) * (TUNE_MULT/1000); - if (freq_struct.frequency >= tuner.rangelow && freq_struct.frequency <= tuner.rangehigh) - { - err = ioctl(fd_radio, VIDIOC_S_FREQUENCY, &freq_struct); - if(err < 0) - return FM_CMD_FAILURE; - else - print2("\n Frequency : %u \n",ulfreq); - } - else - { - print("SetFrequencyTransmitter : Frequency out of bandlimits\n"); - return FM_CMD_DISALLOWED; - } - -#ifdef FTM_DEBUG - print("\n SetFrequencyTransmitter() exit \n"); -#endif - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetTxPowerLevel - -DESCRIPTION - PFAL specific routine to configure the FM transmitter's power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetTxPowerLevel -( - uint32 ulfreq -) -{ - int err; - struct v4l2_control control; - - /* Set the power level as requested */ - control.id = V4L2_CID_TUNE_POWER_LEVEL; - control.value = FM_TX_PWR_LVL_MAX; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if(err < 0) - { - if( err == -ETIME) - print("\nTimeout to read PHY_TX gain Register\n"); - else - { - print2("\nFailed to set the Power Level for %u\n",ulfreq); - return FM_CMD_FAILURE; - } - } - else - print2("\nSuccessfully set the Power Level for %u\n",ulfreq); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetMuteModeReceiver -( - mute_type mutemode -) -{ - int err,i; - struct v4l2_control control; - print2("SetMuteModeReceiver mode = %d\n",mutemode); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = mutemode; - control.id = V4L2_CID_AUDIO_MUTE; - - for(i=0;i<3;i++) - { - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetMuteMode Success\n"); - return FM_CMD_SUCCESS; - } - } - print2("Set mute mode ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== - -FUNCTION SetSoftMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's soft mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSoftMuteModeReceiver -( - mute_type mutemode -) -{ - int err; - struct v4l2_control control; - print2("SetMuteModeReceiver mode = %d\n",mutemode); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = mutemode; - control.id = V4L2_CID_PRIVATE_IRIS_SOFT_MUTE; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetMuteMode Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set mute mode ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION SetAntenna - -DESCRIPTION - PFAL specific routine to configure the FM receiver's antenna type - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type SetAntenna -( - antenna_type antenna -) -{ - int err; - struct v4l2_control control; - control.value = antenna; - control.id = V4L2_CID_PRIVATE_TAVARUA_ANTENNA; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetAntenna Success\n"); - return FM_CMD_SUCCESS; - } - - print2("Set antenna ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION FmRivaPeekData - -DESCRIPTION - PFAL specific routine to get the data from Riva Memory -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmRivaPeekData -( - fm_riva_peek_word peek_word -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = peek_word.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.value = peek_word.payload_length; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetDataLen Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_PEEK; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - extract_peek_data(); - print("RivaPeek Success\n"); - return FM_CMD_SUCCESS; - } - - print2("RivaPeekData ret = %d\n",err); - return FM_CMD_FAILURE; -} - - -/*=========================================================================== -FUNCTION FmRivaPokeData - -DESCRIPTION - PFAL specific routine to write the data into the Riva Memory -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmRivaPokeData -( - fm_riva_poke_word poke_word -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = poke_word.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.value = poke_word.payload_length; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetDataLen Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_POKE; - control.value = (uint32)(uintptr_t)(&poke_word.data); - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("RivaPoke Success\n"); - return FM_CMD_SUCCESS; - } - - print2("RivaPokeData ret = %d\n",err); - return FM_CMD_FAILURE; -} - - -/*=========================================================================== -FUNCTION FmSSBIPeekData - -DESCRIPTION - PFAL specific routine to get the data from SSBI registers -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmSSBIPeekData -( - fm_ssbi_poke_reg peek_reg -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_PEEK; - control.value = peek_reg.startaddress; - if( control.value == 0x00) - return FM_CMD_FAILURE; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - extract_ssbi_peek_data(); - print2("SSBIPeek Success\n %d",peek_reg.data); - return FM_CMD_SUCCESS; - } - - print2("SSBIPeekData ret = %d\n",err); - return FM_CMD_FAILURE; -} - - -/*=========================================================================== -FUNCTION FmSSBIPokeData - -DESCRIPTION - PFAL specific routine to program the SSBI registers -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmSSBIPokeData -( - fm_ssbi_poke_reg poke_reg -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = poke_reg.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_ACCS_ADDR; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_POKE; - control.value = poke_reg.data; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print2("SSBIPoke Success\n value =%d",poke_reg.data); - return FM_CMD_SUCCESS; - } - - print2("SSBIPokeData ret = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmTxPwrLvlCfg - -DESCRIPTION - PFAL specific routine to configure the FM Tx power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmTxPwrLvlCfg -( - uint8 pwrlvl -) -{ - int err; - struct v4l2_control control; - control.value = pwrlvl; - control.id = V4L2_CID_TUNE_POWER_LEVEL; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if (err >= 0) { - print2("Tx power level set to %d\n", pwrlvl); - return FM_CMD_SUCCESS; - } - print2("Set Tx power level failed = %d\n", err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmTxToneGen - -DESCRIPTION - PFAL specific routine to configure the FM Tx internal tone Generation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmTxToneGen -( - uint8 txTone -) -{ - int err; - struct v4l2_control control; - control.value = txTone; - control.id = V4L2_CID_PRIVATE_IRIS_TX_TONE; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("Set Tx internal tone Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set Tx internal tone = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmRDSGrpcntrs - -DESCRIPTION - PFAL specific routine to get the FM RDS group conuters - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmRDSGrpcntrs -( - uint8 rdsCounters -) -{ - int err; - struct v4l2_control control; - control.value = rdsCounters; - control.id = V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS; - - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - extract_rds_grp_cntr_data(); - print("Read RDS GROUP counters success\n"); - return FM_CMD_SUCCESS; - } - print2("Read RDS GROUP counters = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmDefaultRead - -DESCRIPTION - PFAL specific routine to get the FM Default Values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmDefaultRead -( - ftm_fm_def_data_rd_req defaultRead -) -{ - int err; - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - ext_ctl.id = V4L2_CID_PRIVATE_IRIS_READ_DEFAULT; - ext_ctl.size = sizeof(ftm_fm_def_data_rd_req); - memcpy(ext_ctl.string,(char *)&defaultRead,ext_ctl.size); - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_USER; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - err = ioctl(fd_radio,VIDIOC_G_EXT_CTRLS,&v4l2_ctls); - if(err >= 0) - { - extract_default_read_data(); - print("Read Defaults success\n"); - return FM_CMD_SUCCESS; - } - print2("Read Defaults =%d \n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmDefaultWrite - -DESCRIPTION - PFAL specific routine to write the default values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmDefaultWrite -( - ftm_fm_def_data_wr_req* writedefaults -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - if(writedefaults == NULL) - { - print("\n 'writedefaults' is NULL \n "); - return FM_CMD_FAILURE; - } - ext_ctl.id = V4L2_CID_PRIVATE_IRIS_WRITE_DEFAULT; - ext_ctl.size = (writedefaults->length + 2); - ext_ctl.string = (char *)&writedefaults->mode; - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_USER; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - print("\n Entering Write defaults \n"); - - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set Default failed \n"); - return FM_CMD_FAILURE; - } - - return FM_CMD_SUCCESS; - -} - -/*=========================================================================== -FUNCTION FmSetHlSi - -DESCRIPTION - PFAL specific routine to configure the FM receiver's HlSi - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmSetHlSi -( - uint8 hlsi -) -{ - int err; - struct v4l2_control control; - control.value = hlsi; - control.id = V4L2_CID_PRIVATE_IRIS_HLSI; - print2("Setting HLSI to = %d",hlsi); - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("Set HlSi success"); - return FM_CMD_SUCCESS; - } - print2("Set HlSi status = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmSetNotchFilter - -DESCRIPTION - PFAL specific routine to configure the FM receiver's notch filter - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmSetNotchFilter -( - uint8 notch -) -{ - int err; - struct v4l2_control control; - control.value = notch; - control.id = V4L2_CID_PRIVATE_IRIS_SET_NOTCH_FILTER; - print2("Setting Notch filter to = %d",notch); - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("Set Notch filter success"); - return FM_CMD_SUCCESS; - } - print2("Set Notch filter status = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION SetStereoModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Audio mode on the - frequency tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetStereoModeReceiver -( - stereo_type stereomode -) -{ - struct v4l2_tuner tuner; - int err; - print2("SetStereoModeReceiver stereomode = %d \n",stereomode); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - tuner.index = 0; - err = ioctl(fd_radio, VIDIOC_G_TUNER, &tuner); - print3("Get stereo mode ret = %d tuner.audmode = %d\n",err,tuner.audmode); - if(err < 0) - return FM_CMD_FAILURE; - -/*There is a discrepancy between V4L2 macros and FTM/HCI -Interface documentation. The stereo/mono settings are swapped -In FTM/HCI documentation. So we are providing a work around by -Swapping the mono/stereo settings here*/ - - tuner.audmode = (!stereomode); - err = ioctl(fd_radio, VIDIOC_S_TUNER, &tuner); - print2("Set stereo mode ret = %d\n",err); - if(err < 0) - return FM_CMD_FAILURE; - print("SetStereoMode Success\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetStationParametersReceiver - -DESCRIPTION - PFAL specific routine to get the station parameters ofthe Frequency at - which the Radio receiver is tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetStationParametersReceiver -( - fm_station_params_available* configparams -) -{ - int i; - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - configparams->current_station_freq = fm_global_params.current_station_freq; - configparams->service_available = fm_global_params.service_available; - - struct v4l2_tuner tuner; - tuner.index = 0; - tuner.signal = 0; - if(ioctl(fd_radio, VIDIOC_G_TUNER, &tuner) < 0) - return FM_CMD_FAILURE; - - configparams->rssi = tuner.signal; - configparams->stype = fm_global_params.stype; - configparams->rds_sync_status = fm_global_params.rds_sync_status; - - struct v4l2_control control; - control.id = V4L2_CID_AUDIO_MUTE; - - for(i=0;i<3;i++) - { - int err = ioctl(fd_radio,VIDIOC_G_CTRL,&control); - if(err >= 0) - { - configparams->mute_status = control.value; - return FM_CMD_SUCCESS; - } - } - - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION SetRdsOptionsReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsOptionsReceiver -( - fm_rds_options rdsoptions -) -{ - int ret; - print("SetRdsOptionsReceiver\n"); - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK, - rdsoptions.rds_group_mask); - if(ret == FALSE) - { - print2("SetRdsOptionsReceiver Failed to set RDS group options = %d\n",ret); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF, - rdsoptions.rds_group_buffer_size); - if(ret == FALSE) - { - print2("SetRdsOptionsReceiver Failed to set RDS group options = %d\n",ret); - return FM_CMD_FAILURE; - } - - /*Chnage Filter not supported */ - print("SetRdsOptionsReceiver<\n"); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetRdsGroupProcReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS group proc options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsGroupProcReceiver -( - uint32 rdsgroupoptions -) -{ - int ret; - print("SetRdsGroupProcReceiver\n"); - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC, - rdsgroupoptions); - if(ret == FALSE) - { - print2("SetRdsGroupProcReceiver Failed to set RDS proc = %d\n",ret); - return FM_CMD_FAILURE; - } - - print("SetRdsGroupProcReceiver<\n"); - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION SetPowerModeReceiver - -DESCRIPTION - PFAL specific routine to configure the power mode of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetPowerModeReceiver -( - uint8 powermode -) -{ - struct v4l2_control control; - int i,err; - print2("SetPowerModeReceiver mode = %d\n",powermode); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = powermode; - control.id = V4L2_CID_PRIVATE_TAVARUA_LP_MODE; - - for(i=0;i<3;i++) - { - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetPowerMode Success\n"); - return FM_CMD_SUCCESS; - } - } - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION SetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to configure the signal threshold ofFM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSignalThresholdReceiver -( - uint8 signalthreshold -) -{ - struct v4l2_control control; - int i,err; - print2("SetSignalThresholdReceiver threshold = %d\n",signalthreshold); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = signalthreshold; - control.id = V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH; - - for(i=0;i<3;i++) - { - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("SetSignalThresholdReceiver Success\n"); - return FM_CMD_SUCCESS; - } - } - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION GetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to get the signal threshold of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetSignalThresholdReceiver -( - uint8* signalthreshold -) -{ - struct v4l2_control control; - int i,err; - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.id = V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH; - - for(i=0;i<3;i++) - { - err = ioctl(fd_radio,VIDIOC_G_CTRL,&control); - if(err >= 0) - { - print2("GetSignalThresholdReceiver Success = %d\n",control.value); - *signalthreshold = control.value; - return FM_CMD_SUCCESS; - } - } - - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION GetRSSILimits - -DESCRIPTION - PFAL specific routine to print the RSSI limts ofFM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRSSILimits -( -) -{ - int limits[] ={0,100}; - - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION GetPSInfoReceiver - -DESCRIPTION - PFAL specific routine to print the PS info ofcurrent frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetPSInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetRTInfoReceiver - -DESCRIPTION - PFAL specific routine to print the Radio text info ofcurrent frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRTInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetAFInfoReceiver - -DESCRIPTION - PFAL specific routine to print the AF list for current frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetAFInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SearchStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationsReceiver -( -fm_search_stations searchstationsoptions -) -{ - int err,i; - struct v4l2_control control; - struct v4l2_hw_freq_seek hwseek; - boolean ret; - print("SearchStationsReceiver\n"); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchstationsoptions.search_mode); - if(ret == FALSE) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SCANDWELL, - searchstationsoptions.dwell_period); - if(ret == FALSE) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - if (searchstationsoptions.search_dir) - searchstationsoptions.search_dir = SRCH_DIR_UP; - else - searchstationsoptions.search_dir = SRCH_DIR_DOWN; - - hwseek.seek_upward = searchstationsoptions.search_dir; - hwseek.type = V4L2_TUNER_RADIO; - err = ioctl(fd_radio,VIDIOC_S_HW_FREQ_SEEK,&hwseek); - - if(err < 0) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - print("SearchRdsStationsReceiver<\n"); - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION SearchRDSStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver with a specific program type and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchRdsStationsReceiver -( -fm_search_rds_stations searchrdsstationsoptions -) -{ - int i,err; - boolean ret; - struct v4l2_control control; - struct v4l2_hw_freq_seek hwseek; - - print("SearchRdsStationsReceiver>\n"); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchrdsstationsoptions.search_mode); - if(ret == FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SCANDWELL, - searchrdsstationsoptions.dwell_period); - if(ret == FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, - searchrdsstationsoptions.program_type); - if(ret == FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl(fd_radio,V4L2_CID_PRIVATE_TAVARUA_SRCH_PI, - searchrdsstationsoptions.program_id); - if(ret == FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - hwseek.seek_upward = searchrdsstationsoptions.search_dir; - hwseek.type = V4L2_TUNER_RADIO; - err = ioctl( fd_radio, VIDIOC_S_HW_FREQ_SEEK,&hwseek); - - if(err < 0) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - print("SearchRdsStationsReceiver<\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SearchStationListReceiver - -DESCRIPTION - PFAL specific routine to search for stations with a specific mode of - informaation like WEAK,STRONG,STRONGEST etc - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationListReceiver -( -fm_search_list_stations searchliststationsoptions -) -{ - int i,err; - boolean ret; - struct v4l2_control control; - struct v4l2_hw_freq_seek hwseek; - - print("SearchStationListReceiver>\n"); - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - ret = set_v4l2_ctrl( fd_radio, V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchliststationsoptions.search_mode); - if(ret == FALSE) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl( fd_radio, V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT, - searchliststationsoptions.srch_list_max); - if(ret == FALSE) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = set_v4l2_ctrl( fd_radio, V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, - searchliststationsoptions.program_type); - if(ret == FALSE) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - - hwseek.seek_upward = searchliststationsoptions.search_dir; - hwseek.type = V4L2_TUNER_RADIO; - err = ioctl( fd_radio, VIDIOC_S_HW_FREQ_SEEK,&hwseek); - - if(err < 0) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - print("SearchStationListReceiver<\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION - -DESCRIPTION - PFAL specific routine to cancel the ongoing search operation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type CancelSearchReceiver -( -) -{ - struct v4l2_control control; - boolean ret; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - ret = set_v4l2_ctrl( fd_radio, V4L2_CID_PRIVATE_TAVARUA_SRCHON,0); - if(ret == FALSE) - { - return FM_CMD_FAILURE; - } - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetSINRSamples - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR sample - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRSamples -( - -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_SINR_SAMPLES; - err = ioctl(fd_radio, VIDIOC_G_CTRL, &control); - if( err < 0 ) - { - print("Failed to get the SINR samples"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.sinr_samples = control.value; - print2("Successfully get the SINR samples %d\n", control.value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetSINRSamples - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR sample - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSINRSamples -( - uint8 sinr_sample -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_SINR_SAMPLES; - control.value = sinr_sample; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if( err < 0 ) - { - print("Failed to set the SINR samples\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the SINR samples %d\n", sinr_sample); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION GetSINRThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRThreshold -( - -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_SINR_THRESHOLD; - err = ioctl(fd_radio, VIDIOC_G_CTRL, &control); - if( err < 0 ) - { - print("Failed to get the SINR threshold\n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.sinr_threshold = control.value; - print2("Successfully get the SINR threshold %d\n", control.value); - return FM_CMD_SUCCESS; - } -} - - -/*=========================================================================== -FUNCTION SetSINRThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSINRThreshold -( - char sinr_th -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_SINR_THRESHOLD; - control.value = sinr_th; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if( err < 0 ) - { - print("Failed to set the SINR threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the SINR threshold %d\n", sinr_th); - return FM_CMD_SUCCESS; - } -} - - -/*=========================================================================== -FUNCTION GetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's On channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOnChannelThreshold -( - -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD; - err = ioctl(fd_radio, VIDIOC_G_CTRL, &control); - if( err < 0 ) - { - print("Failed to get the On channel threshold \n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.On_channel_threshold = control.value; - print2("Successfully get the On channel threshold %d\n", control.value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's On channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOnChannelThreshold -( - uint8 on_channel_th -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD; - control.value = on_channel_th; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if( err < 0 ) - { - print("Failed to set the On channel threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the On channel threshold %d\n", on_channel_th); - return FM_CMD_SUCCESS; - } -} -/*=========================================================================== -FUNCTION GetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's Off channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOffChannelThreshold -( - -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD; - err = ioctl(fd_radio, VIDIOC_G_CTRL, &control); - if( err < 0 ) - { - print("Failed to get the Off channel threshold \n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.Off_channel_threshold = control.value; - print2("Successfully get the Off channel threshold %d\n", control.value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's Off channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOffChannelThreshold -( - uint8 off_channel_th -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD; - control.value = off_channel_th; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if( err < 0 ) - { - print("Failed to set the Off channel threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the Off channel threshold %d\n", off_channel_th); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION get_fm_i2c_path - -DESCRIPTION - Helper function to get the path of i2c based on the board - -DEPENDENCIES - NIL - -RETURN VALUE - Path to the i2c device. NULL in case of failure. - -SIDE EFFECTS - None - -===========================================================================*/ - -static char* get_fm_i2c_path( void ) -{ - char *fm_i2c_path = NULL; - char board_platform_type[92]; // max possible length for 'value' from property_get() - property_get("ro.board.platform", board_platform_type, "default"); - print2("ro.board.platform %s \n", board_platform_type); - if(strcasestr(board_platform_type, "default")) - { - print("unable to determine the board platform type \n"); - return NULL; - } - if(strcasestr(board_platform_type, "msm8660")) - { - fm_i2c_path = (char *)fm_i2c_path_8660; - } - else if(strcasestr(board_platform_type, "msm7630_surf")) - { - fm_i2c_path = (char *)fm_i2c_path_7x30; - } - else if(strcasestr(board_platform_type, "msm7627a")) - { - fm_i2c_path = (char *)fm_i2c_path_7627a; - } - if(fm_i2c_path != NULL) - print2("I2c device path is %s \n", fm_i2c_path); - - return fm_i2c_path; -} - - -/*=========================================================================== -FUNCTION FmBusWriteReceiver - -DESCRIPTION - PFAL specific routine to program the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusWriteReceiver -( -fm_i2c_params writeparams -) -{ - int fd_i2c; - int ret; - char *i2cdevice = get_fm_i2c_path(); - if (i2cdevice == NULL) - { - print("== I2C device path not available \n"); - return FM_CMD_FAILURE; - } - fd_i2c = open(i2cdevice, O_RDWR); - print("FmBusWriteReceiver >\n"); - if(fd_i2c < 0) - return FM_CMD_FAILURE; - ret = i2c_write( fd_i2c, writeparams.offset, writeparams.data, - writeparams.payload_length, writeparams.slaveaddress); - if (ret < 0) - { - print(" i2c_write failed to Write the data \n"); - close(fd_i2c); - return FM_CMD_FAILURE; - } - print2("== I2C Write SLAVE_ADDR = 0x%x\n",writeparams.slaveaddress); - print2("== I2C reg = 0x%x ===\n",writeparams.offset); - print2("== I2C data = 0x%x \n",writeparams.data[0]); - - close(fd_i2c); - print("FmBusWriteReceiver <\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION FmBusReadReceiver - -DESCRIPTION - PFAL specific routine to read the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusReadReceiver -( -fm_i2c_params *readparams -) -{ - int fd_i2c; - int ret; - char *i2cdevice = get_fm_i2c_path(); - if (i2cdevice == NULL) - { - print("== I2C device path not available \n"); - return FM_CMD_FAILURE; - } - fd_i2c = open(i2cdevice, O_RDWR); - print("FmBusReadReceiver >\n"); - ret = i2c_read( fd_i2c, readparams->offset, readparams->data, - readparams->payload_length, readparams->slaveaddress); - if (ret < 0) - { - print(" i2c_read failed to read the data \n"); - close(fd_i2c); - return FM_CMD_FAILURE; - } - close(fd_i2c); - print2("== I2C Read SLAVE_ADDR = 0x%x\n",readparams->slaveaddress); - print2("== I2C reg = 0x%x ===\n",readparams->offset); - print2("== I2C data = 0x%x \n",readparams->data[0]); - - print("FmBusReadReceiver <\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== - -FUNCTION ftm_fm_run_mm - -DESCRIPTION - This function is used to run mm-audio-ftm. - -DEPENDENCIES - none - -===========================================================================*/ -void ftm_fm_run_mm(void) { - pid_t pid; - int err = 1; - - printf("entered ftm_fm_run_mm\n"); - pid = fork(); - - if (!pid) { - err = execl(mm_audio_path, mm_audio_path, NULL); - printf("mm module error %d\n", err); - exit(0); - } else if (pid < 0) { - printf("could not create child process to execute mm audio module\n"); - } - return; -} - -/*=========================================================================== - -FUNCTION ftm_fm_audio - -DESCRIPTION - This function is used to load the target based config file and - set the audio output and volume. - -DEPENDENCIES - none - -===========================================================================*/ -fm_cmd_status_type ftm_fm_audio(uint8 source, uint8 volume) { - - char *cmd = NULL; - char vlm[4]; - int sound_card_fd = -1; - char sound_card_name[sound_card_name_len]; - char *buffer; - size_t len; - ssize_t ret; - int tmp; - fm_cmd_status_type status = FM_CMD_FAILURE; - int prop_ret = 0; - char bt_soc_type[PROPERTY_VALUE_MAX]; - - printf("Enter ftm_fm_audio\n"); - memset(sound_card_name, 0, sizeof(sound_card_name)); - cmd = (char*) malloc(CMD_len * sizeof(char)); - if (!cmd) { - printf("memory allocation failed\n"); - goto failure; - } - memset(cmd, 0, CMD_len); - - if (strlcat(cmd, "-tc ", CMD_len) >= CMD_len) - goto failure; - - printf("string = %s \n",cmd); - printf("audio_output = %d\n", source); - buffer = source ? "51 -v " : "74 -v "; - if (strlcat(cmd, buffer, CMD_len) >= CMD_len) - goto failure; - - printf("string = %s \n",cmd); - tmp = snprintf(vlm, sizeof(vlm), "%d", volume); - if (tmp < 0 || sizeof (vlm) <= (size_t)tmp) - goto failure; - if (strlcat(cmd, vlm, CMD_len) >= CMD_len) - goto failure; - - sound_card_fd = open("/proc/asound/card0/id", O_RDWR); - if (sound_card_fd < 0) { - printf("failed to open sound card. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - - len = sound_card_name_len - 1; - while (len > 0) { - ret = read (sound_card_fd, - &sound_card_name[sound_card_name_len - 1 - len], len); - if (ret < 0) { - printf("Failed to read sound card name. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - if (!ret) { - if(!sound_card_name[0]) - goto failure; - else - break; - } - len -= ret; - } - printf("sound_card_name = %s\n", sound_card_name); - printf("string = %s \n",cmd); - - ftm_audio_fd = open("/data/vendor/misc/audio/ftm_commands", O_RDWR); - if (ftm_audio_fd < 0) { - printf("Failed to open ftm_commands with write. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - printf(" writing config path\n"); - prop_ret = property_get("qcom.bluetooth.soc", bt_soc_type, NULL); - if (prop_ret != 0) { - printf("qcom.bluetooth.soc set to %s\n", bt_soc_type); - if (!strncasecmp(bt_soc_type, "rome", sizeof("rome"))) { - buffer = audio_config; - len = config_len; - goto skip; - } - } - if (strstr(sound_card_name, "tasha")) { - printf("using external codec\n"); - buffer = (char *)ext_audio_config; - len = ext_config_len; - } else { - printf("using internal codec\n"); - buffer = (char *)audio_config; - len = config_len; - } - -skip: - while (len > 0) { - ret = write(ftm_audio_fd, buffer, len); - if (ret < 0) { - printf("Failed to write config_file. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - len -= ret; - buffer += ret; - } - printf("done write config path\n"); - sleep(1); - printf("writing command for path = 0x%zx \n", strlen(cmd)); - len = strlen(cmd) + 1; - - buffer = cmd; - while (len > 0) { - ret = write(ftm_audio_fd, buffer, strlen(cmd) + 1); - if (ret < 0) { - printf("Failed to write cmd. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - len -= ret; - buffer += ret; - } - printf("done write command for path\n"); - status = FM_CMD_SUCCESS; - // fall through intentional -failure: - if (cmd) - free(cmd); - if (sound_card_fd > 0) - close(sound_card_fd); - if (ftm_audio_fd > 0) { - close(ftm_audio_fd); - ftm_audio_fd = -1; - } - return status; -} - diff --git a/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux_3990.c b/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux_3990.c deleted file mode 100755 index 88ec7da15..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_fm_pfal_linux_3990.c +++ /dev/null @@ -1,3338 +0,0 @@ -/*========================================================================== -* -* Description -* Platform specific routines to program FM over Uart transport -* Copyright (c) 2010-2017 Qualcomm Technologies, Inc. -* All Rights Reserved. -* Confidential and Proprietary - Qualcomm Technologies, Inc. -* -*===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -3/10/16 ssugasi Add FTM support for FM module for uart based chipsets -==========================================================================*/ - -#include "ftm_fm_pfal.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef ANDROID -#include -#endif -#include -#include -#include -#include -#include -#include "ftm_common.h" -#include "radio-helium-commands.h" -#include -#define BIT16 (1<<16) - -/* Multiplying factor to convert to Radio freqeuncy */ -#define TUNE_MULT 16000 -/* Constant to request for Radio Events */ -#define EVENT_LISTEN 1 -/* 1000 multiplier */ -#define MULTIPLE_1000 1000 -/* Tavaura I2C address */ -int SLAVE_ADDR = 0x2A; -/* Tavaura I2C statu register*/ -#define INTSTAT_0 0x0 -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) -/* Debug Macro */ -#define FTM_DEBUG -#ifdef FTM_DEBUG -#define print(x) printf(x) -#define print2(x,y) printf(x,y) -#define print3(x,y,z) printf(x,y,z) -#else -#define print(x) -#define print2(x,y) -#define print3(x,y,z) -#endif -typedef unsigned char boolean; - -#define TAVARUA_BUF_PS_RDS 3 -#define V4L2_CID_PRIVATE_TAVARUA_REGION 0x08000007 -#define V4L2_CID_PRIVATE_TAVARUA_TX_SETPSREPEATCOUNT 0x08000015 -#define V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_PS_NAME 0x08000016 -#define V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_RT 0x08000017 -#define V4L2_CID_PRIVATE_TAVARUA_STATE 0x08000004 -#define V4L2_CID_PRIVATE_TAVARUA_SET_AUDIO_PATH 0x8000029 -#define V4L2_CID_PRIVATE_TAVARUA_RDSON 0x0800000F -#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC 0x08000010 -#define V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK 0x08000006 -#define V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF 0x08000013 -#define V4L2_CID_PRIVATE_TAVARUA_ANTENNA 0x08000012 -#define V4L2_CID_PRIVATE_TAVARUA_RDSON 0x0800000F -#define V4L2_CID_PRIVATE_TAVARUA_EMPHASIS 0x0800000C -#define V4L2_CID_PRIVATE_TAVARUA_SPACING 0x0800000E -#define V4L2_CID_PRIVATE_TAVARUA_RDS_STD 0x0800000D -#define V4L2_CID_PRIVATE_TAVARUA_LP_MODE 0x08000011 -#define V4L2_CID_PRIVATE_TAVARUA_SRCHMODE 0x08000001 -#define V4L2_CID_PRIVATE_TAVARUA_SCANDWELL 0x08000002 -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PI 0x0800000A -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT 0x0800000B -#define V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY 0x08000009 -#define V4L2_CID_PRIVATE_TAVARUA_SRCHON 0x08000003 -#define V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD 0x800002D -#define V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD 0x800002E -#define V4L2_CID_PRIVATE_SINR_THRESHOLD 0x800002F -#define V4L2_CID_PRIVATE_SINR_SAMPLES 0x8000030 -#define V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH 0x08000008 -#define V4L2_CID_PRV_ENABLE_SLIMBUS 0x00980940 -#define SRCH_DIR_UP (0) -#define SRCH_DIR_DOWN (1) - -#define FM_TX_PWR_LVL_0 0 /* Lowest power lvl that can be set for Tx */ -#define FM_TX_PWR_LVL_MAX 7 /* Max power lvl for Tx */ -#define RDS_Tx 0x80 -const char* fm_i2c_path_8660 = "/dev/i2c-4"; -const char* fm_i2c_path_7x30 = "/dev/i2c-2"; -const char* fm_i2c_path_7627a = "/dev/i2c-1"; -/* To get the current status of PS/RT transmission */ -volatile unsigned char is_rt_transmitting = 0; -volatile unsigned char is_ps_transmitting = 0; -int ftm_audio_fd = -1; -const char *const audio_config = "-c /vendor/etc/ftm_test_config"; -const unsigned int CMD_len = 16; -const int config_len = 31; -const int ext_config_len = 39; -const int sound_card_len = 200; -const char *const mm_audio_path = "/vendor/bin/mm-audio-ftm"; -char *FM_LIBRARY_NAME = "fm_helium.so"; -char *FM_LIBRARY_SYMBOL_NAME = "FM_HELIUM_LIB_INTERFACE"; -void *lib_handle; - -fm_config_data * fmconfig_ptr; -typedef void (*enb_result_cb)(); -typedef void (*tune_rsp_cb)(int Freq); -typedef void (*seek_rsp_cb)(int Freq); -typedef void (*scan_rsp_cb)(); -typedef void (*srch_list_rsp_cb)(uint16_t *scan_tbl); -typedef void (*stereo_mode_cb)(boolean status); -typedef void (*rds_avl_sts_cb)(boolean status); -typedef void (*af_list_cb)(uint16_t *af_list); -typedef void (*rt_cb)(char *rt); -typedef void (*ps_cb)(char *ps); -typedef void (*oda_cb)(); -typedef void (*rt_plus_cb)(char *rt_plus); -typedef void (*ert_cb)(char *ert); -typedef void (*disable_cb)(); -typedef void (*callback_thread_event)(unsigned int evt); -typedef void (*rds_grp_cntrs_cb)(char *rds_params); -typedef void (*rds_grp_cntrs_ext_cb)(char *rds_params); -typedef void (*fm_peek_cb)(char *peek_rsp); -typedef void (*fm_ssbi_peek_cb)(char *ssbi_peek_rsp); -typedef void (*fm_agc_gain_cb)(char *agc_gain_rsp); -typedef void (*fm_ch_det_th_cb)(char *ch_det_rsp); -typedef void (*fm_sig_thr_cb) (int val, int status); -typedef void (*fm_get_ch_det_thrs_cb) (int val, int status); -typedef void (*fm_def_data_rd_cb) (int val, int status); -typedef void (*fm_get_blnd_cb) (int val, int status); -typedef void (*fm_set_ch_det_thrs_cb) (int status); -typedef void (*fm_def_data_wrt_cb) (int status); -typedef void (*fm_set_blnd_cb) (int status); -typedef void (*fm_get_stn_prm_cb) (int val, int status); -typedef void (*fm_get_stn_dbg_prm_cb) (int val, int status); -typedef void (*fm_ecc_evt_cb)(char *ecc_rsp); -typedef void (*fm_enable_sb_cb) (int status); - -/* enum to montior the Power On status */ -typedef enum -{ - INPROGRESS, - COMPLETE -}poweron_status; - -boolean cmd_queued = FALSE; -/* Resourcse Numbers for Rx/TX */ -int FM_RX = 1; -int FM_TX = 2; -/* Boolean to control the power down sequence */ -volatile boolean power_down = FALSE; -/* V4L2 radio handle */ -int fd_radio = -1; -/* FM asynchornous thread to perform the long running ON */ -pthread_t fm_interrupt_thread,fm_on_thread; -/* Prototype ofFM ON thread */ -void *(ftm_on_long_thread)(void *ptr); -/* Global state ofthe FM task */ -fm_station_params_available fm_global_params; - -volatile poweron_status poweron; - -int chipVersion = 0; -extern volatile fm_power_state fmPowerState; -static char transport[PROPERTY_VALUE_MAX]; - -typedef struct { - size_t size; - enb_result_cb enabled_cb; - tune_rsp_cb tune_cb; - seek_rsp_cb seek_cmpl_cb; - scan_rsp_cb scan_next_cb; - srch_list_rsp_cb srch_list_cb; - stereo_mode_cb stereo_status_cb; - rds_avl_sts_cb rds_avail_status_cb; - af_list_cb af_list_update_cb; - rt_cb rt_update_cb; - ps_cb ps_update_cb; - oda_cb oda_update_cb; - rt_plus_cb rt_plus_update_cb; - ert_cb ert_update_cb; - disable_cb disabled_cb; - rds_grp_cntrs_cb rds_grp_cntrs_rsp_cb; - rds_grp_cntrs_ext_cb rds_grp_cntrs_ext_rsp_cb; - fm_peek_cb fm_peek_rsp_cb; - fm_ssbi_peek_cb fm_ssbi_peek_rsp_cb; - fm_agc_gain_cb fm_agc_gain_rsp_cb; - fm_ch_det_th_cb fm_ch_det_th_rsp_cb; - fm_ecc_evt_cb fm_ext_country_code_cb; - callback_thread_event thread_evt_cb; - fm_sig_thr_cb fm_get_sig_thres_cb; - fm_get_ch_det_thrs_cb fm_get_ch_det_thr_cb; - fm_def_data_rd_cb fm_def_data_read_cb; - fm_get_blnd_cb fm_get_blend_cb; - fm_set_ch_det_thrs_cb fm_set_ch_det_thr_cb; - fm_def_data_wrt_cb fm_def_data_write_cb; - fm_set_blnd_cb fm_set_blend_cb; - fm_get_stn_prm_cb fm_get_station_param_cb; - fm_get_stn_dbg_prm_cb fm_get_station_debug_param_cb; - fm_enable_sb_cb fm_enable_slimbus_cb; -} fm_vendor_callbacks_t; - -typedef struct { - int (*hal_init)(fm_vendor_callbacks_t *p_cb); - int (*set_fm_ctrl)(int ioctl, int val); - int (*get_fm_ctrl) (int ioctl, int* val); -} fm_interface_t; - -void fm_enabled_cb() { - ALOGE("Entered %s", __func__); -} - -void fm_tune_cb(int Freq) -{ - ALOGE("TUNE:Freq:%d", Freq); - fm_global_params.current_station_freq =Freq; -} - -void fm_seek_cmpl_cb(int Freq) -{ - ALOGE("SEEK_CMPL: Freq: %d", Freq); - fm_global_params.current_station_freq =Freq; -} - -void fm_scan_next_cb() -{ - ALOGE("SCAN_NEXT"); -} - -void fm_srch_list_cb(uint16_t *scan_tbl) -{ - ALOGE("SRCH_LIST"); -} - -void fm_stereo_status_cb(boolean stereo) -{ - ALOGE("STEREO: %d", stereo); - fm_global_params.stype = stereo; -} - -void fm_rds_avail_status_cb(boolean rds_avl) -{ - ALOGE("fm_rds_avail_status_cb: %d", rds_avl); - fm_global_params.rds_sync_status = rds_avl; -} - -void fm_rt_update_cb(char *rt) -{ - ALOGE("Entered %s", __func__); - int radiotext_size = (int)(rt[0] & 0xFF); - fm_global_params.fm_rt_length = radiotext_size; - print2("radio text size = %d\n",fm_global_params.fm_rt_length); - fm_global_params.pgm_id = (((rt[2] & 0xFF) << 8) | (rt[3] & 0xFF)); - fm_global_params.pgm_type = (int)( rt[1] & 0x1F); - memset(fm_global_params.radio_text,0x0,MAX_RDS_RT_LENGTH); - memcpy(fm_global_params.radio_text,&rt[5],radiotext_size); -} - -void fm_ps_update_cb(char *buf) -{ - ALOGE("Entered %s", __func__); - int num_of_ps = (int)(buf[0] & 0xFF); - int ps_services_len = ((int )((num_of_ps*8) + 5)) - 5; - fm_global_params.fm_ps_length = ps_services_len; - fm_global_params.pgm_id = (((buf[2] & 0xFF) << 8) | (buf[3] & 0xFF)); - fm_global_params.pgm_type = (int)( buf[1] & 0x1F); - memset(fm_global_params.pgm_services,0x0,MAX_RDS_PS_LENGTH); - memcpy(fm_global_params.pgm_services,&buf[5],ps_services_len); - fm_global_params.pgm_services[ps_services_len] = '\0'; - print2("Pid = %d\n",fm_global_params.pgm_id); - print2("Ptype = %d\n",fm_global_params.pgm_type); - print2("PS name %s\n",fm_global_params.pgm_services); - -} -void fm_oda_update_cb() -{ - ALOGD("ODA_EVT"); -} - -void fm_af_list_update_cb(uint16_t *af_list) -{ - ALOGD("Entered %s", __func__); - -} -void fm_rt_plus_update_cb(char *rt_plus) -{ - ALOGD("Entered %s", __func__); -} - -void fm_ert_update_cb(char *ert) -{ - ALOGD("Entered %s", __func__); -} -void fm_disabled_cb() -{ - ALOGD("Entered %s", __func__); -} - -void rds_grp_cntrs_rsp_cb(char *rds_grp_cntr_buff) -{ - ALOGV("Entered %s", __func__); - struct fm_rds_grp_cntrsparams *response = (struct fm_rds_grp_cntrsparams *)rds_grp_cntr_buff; - ALOGI("copy RDS grp counter response "); - memcpy((void*)&fm_global_params.rds_group_counters,(void*)response,RDS_GRP_CNTRS_SIZE); - pthread_mutex_lock(&fm_event_lock); - pthread_cond_signal(&fm_event_cond); - pthread_mutex_unlock(&fm_event_lock); - ALOGD("Exit %s", __func__); -} -void rds_grp_cntrs_ext_rsp_cb(char * rds_grp_cntr_buff) -{ - ALOGD("rds_grp_cntrs_ext_rsp_cb"); - struct fm_rds_grpcntrs_extendedparams *response = (struct fm_rds_grpcntrs_extendedparams*)rds_grp_cntr_buff; - memcpy((void*)&fm_global_params.rds_group_counters_extended,(void*)response,sizeof(fm_rds_grpcntrs_extendedparams)); - ALOGV(" response totalRdsSyncLoss:%d\n totalRdsNotSync:%d\n totalRdsSyncInt:%d\n ", - fm_global_params.rds_group_counters_extended.totalRdsNotSync, - fm_global_params.rds_group_counters_extended.totalRdsSyncInt, - fm_global_params.rds_group_counters_extended.totalRdsSyncLoss); - ALOGV("Exit %s", __func__); -} - -void fm_peek_rsp_cb(char *peek_rsp) { - struct fm_riva_poke_word *responce = (struct fm_riva_poke_word *)peek_rsp; - memcpy((void*)&fm_global_params.riva_data_access_params, - (void*)responce,sizeof(struct fm_riva_poke_word)); -} - -void fm_ssbi_peek_rsp_cb(char *ssbi_peek_rsp){ - fm_global_params.ssbi_peek_data = ssbi_peek_rsp[0]; -} - -void fm_agc_gain_rsp_cb(char *agc_gain_Resp){ - ALOGD("Entered %s", __func__); - struct fm_set_get_reset_agc_params *response =( - struct fm_set_get_reset_agc_params *)agc_gain_Resp; - memcpy((void*)&fm_global_params.set_get_reset_agc_params, - (void*)response, sizeof(struct fm_set_get_reset_agc_params)); - - ALOGV("Get AGC gain state success\n"); - ALOGV("Current state: %x\nUcGainStateChng1: %x\nUcGainStateChng2: %x\nUcGainStateChng3: %x", - fm_global_params.set_get_reset_agc_params.ucCurrentGainState, - fm_global_params.set_get_reset_agc_params.ucGainStateChange1, - fm_global_params.set_get_reset_agc_params.ucGainStateChange2, - fm_global_params.set_get_reset_agc_params.ucGainStateChange3); -} - -void fm_ch_det_th_rsp_cb(char *ch_det_rsp){ - ALOGD("Entered %s", __func__); -} - -void fm_thread_evt_cb(unsigned int event) -{ - ALOGE("Entered %s", __func__); -} - - static void fm_get_sig_thres_cb(int val, int status) -{ - ALOGD("Get signal Thres callback"); -} - -static void fm_get_ch_det_thr_cb(int val, int status) -{ - ALOGI("fm_get_ch_det_thr_cb"); -} - -static void fm_set_ch_det_thr_cb(int status) -{ - ALOGE("fm_set_ch_det_thr_cb"); -} - -static void fm_def_data_read_cb(int val, int status) -{ - ALOGE("fm_def_data_read_cb"); -} - -static void fm_def_data_write_cb(int status) -{ - ALOGE("fm_def_data_write_cb"); -} - -static void fm_get_blend_cb(int val, int status) -{ - ALOGE("fm_get_blend_cb"); -} - -static void fm_set_blend_cb(int status) -{ - ALOGE("fm_set_blend_cb"); -} - -static void fm_get_station_param_cb(int val, int status) -{ - if (status == 0) - fm_global_params.rssi = val; - else - fm_global_params.rssi = 0; - pthread_mutex_lock(&fm_event_lock); - pthread_cond_signal(&fm_event_cond); - pthread_mutex_unlock(&fm_event_lock); - ALOGD("fm_get_station_param_cb rssi =%d\n",fm_global_params.rssi); -} - -static void fm_get_station_debug_param_cb(int val, int status) -{ - ALOGE("fm_get_station_debug_param_cb"); -} - -static void fm_ext_country_code_cb(char *ecc_rsp) -{ - ALOGD("Entered %s", __func__); -} - -static void fm_enable_slimbus_cb(int status) -{ - ALOGD("%s status %d", __func__, status); - pthread_mutex_lock(&fm_event_lock); - pthread_cond_signal(&fm_event_cond); - pthread_mutex_unlock(&fm_event_lock); -} - -fm_interface_t *vendor_interface; -static fm_vendor_callbacks_t fm_callbacks = { - sizeof(fm_callbacks), - fm_enabled_cb, - fm_tune_cb, - fm_seek_cmpl_cb, - fm_scan_next_cb, - fm_srch_list_cb, - fm_stereo_status_cb, - fm_rds_avail_status_cb, - fm_af_list_update_cb, - fm_rt_update_cb, - fm_ps_update_cb, - fm_oda_update_cb, - fm_rt_plus_update_cb, - fm_ert_update_cb, - fm_disabled_cb, - rds_grp_cntrs_rsp_cb, - rds_grp_cntrs_ext_rsp_cb, - fm_peek_rsp_cb, - fm_ssbi_peek_rsp_cb, - fm_agc_gain_rsp_cb, - fm_ch_det_th_rsp_cb, - fm_ext_country_code_cb, - fm_thread_evt_cb, - fm_get_sig_thres_cb, - fm_get_ch_det_thr_cb, - fm_def_data_read_cb, - fm_get_blend_cb, - fm_set_ch_det_thr_cb, - fm_def_data_write_cb, - fm_set_blend_cb, - fm_get_station_param_cb, - fm_get_station_debug_param_cb, - fm_enable_slimbus_cb -}; - -/*=========================================================================== -FUNCTION extract_rds_grp_cntr_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a Read Rds Group counters command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data strutures member rds_group_counters - -===========================================================================*/ - -void extract_rds_grp_cntr_data() -{ - uint8 buf[RDS_GRP_CNTRS_SIZE]; - struct RDSCntrsParams *responce = (struct RDSCntrsParams *)buf; - memcpy((void*)&fm_global_params.rds_group_counters,(void*)responce,sizeof(buf)); -} -/*=========================================================================== -FUNCTION extract_default_read_data - -DESCRIPTION - Helper routine to read the data from the V4L2 buffer - following a defaultRead command complete - -DEPENDENCIES - NIL - -RETURN VALUE - void - -SIDE EFFECTS - Updates the Global data struture member rd_default - -===========================================================================*/ - -void extract_default_read_data() -{ - print("Not implemented"); -} -/*=========================================================================== -FUNCTION reset_rds - -DESCRIPTION - Reset the existing RDS data. - -DEPENDENCIES - Radio event - -RETURN VALUE - void - -IDE EFFECTS - Reset the Global RDS data info like RT, PS etc. -===========================================================================*/ - -void reset_rds() -{ - memset(fm_global_params.pgm_services,0x0,MAX_RDS_PS_LENGTH); - memset(fm_global_params.radio_text,0x0,MAX_RDS_RT_LENGTH); - fm_global_params.pgm_id = 0; - fm_global_params.pgm_type = 0; -} - -struct timespec* set_time_out(int secs) -{ - struct timespec *ts; - struct timeval tp; - ts = malloc(sizeof(struct timespec)); - if(!ts) - { - printf("malloc failed"); - return NULL; - } - gettimeofday(&tp, NULL); - ts->tv_sec = tp.tv_sec; - ts->tv_nsec = tp.tv_usec * 1000; - ts->tv_sec += secs; - - return ts; -} - -/*=========================================================================== -FUNCTION EnableFM - -DESCRIPTION - PFAL specific routine to enable the FM receiver/transmitter with the Radio - Configuration parameters passed. - -PLATFORM SPECIFIC DESCRIPTION - Opens the handle to /dev/radio0 V4L2 device and intiates a Soc Patch - download, configurs the Init parameters like emphasis, channel spacing, - band limit, RDS type, frequency band, and Radio State. - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type EnableFM -( - fm_config_data* radiocfgptr -) -{ - int status; -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("\nEnable Transmitter entry\n"); - else - print("\nEnable Receiver entry\n"); -#endif - - lib_handle = dlopen(FM_LIBRARY_NAME, RTLD_NOW); - if (!lib_handle) { - ALOGE("%s unable to open %s: %s", __func__, FM_LIBRARY_NAME, dlerror()); - lib_handle = NULL; - return FM_CMD_NO_RESOURCES; - } - - printf("Obtaining handle: '%s' to the shared object library...\n", FM_LIBRARY_SYMBOL_NAME); - vendor_interface = (fm_interface_t *)dlsym(lib_handle, FM_LIBRARY_SYMBOL_NAME); - if (!vendor_interface) { - ALOGE("%s unable to find symbol %s in %s: %s", __func__, FM_LIBRARY_SYMBOL_NAME, FM_LIBRARY_NAME, dlerror()); - vendor_interface = NULL; - if (lib_handle) - dlclose(lib_handle); - return FM_CMD_NO_RESOURCES; - } - - if (vendor_interface) { - ALOGE("Initializing the FM HAL module & registering the JNI callback functions..."); - status = vendor_interface->hal_init(&fm_callbacks); - if (status) { - ALOGE("%s unable to initialize vendor library: %d", __func__, status); - return FM_CMD_NO_RESOURCES; - } - ALOGD("***** FM HAL Initialization complete *****\n"); - } - - if(radiocfgptr->is_fm_tx_on) - print("\nOpened Transmitter\n"); - else - print("\nOpened Receiver\n"); - -/* - Starting 'ftm_on_long_thread' where we do all the FM configurations - and intializations. - -*/ - fmPowerState = FM_POWER_TRANSITION; - pthread_create( &fm_on_thread, NULL, ftm_on_long_thread, radiocfgptr); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION TransmitPS - -DESCRIPTION - PFAL specific routine to transmit RDS PS strings - -PARAMS PASSED - 'tuFmPSParams' containing RDS PI, PTY, max. no. of PS repeat count and - PS name of the transmitting station - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to transmit the PS string describing the transmitter's - information and genre of the audio content being transmitted - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type TransmitPS -( - tsFtmFmRdsTxPsType* tuFmPSParams -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - print("\n Entering Transmit PS \n"); - - /* Set Program Type (PTY) */ - control.id = V4L2_CID_RDS_TX_PTY; - control.value = 0; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PTY failed \n"); - return FM_CMD_FAILURE; - } - - /* Set Program Identifier (PI) */ - control.id = V4L2_CID_RDS_TX_PI; - control.value = tuFmPSParams->tusTxPi; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PI failed \n"); - return FM_CMD_FAILURE; - } - - /*Set PS max. repeat count */ - control.id = V4L2_CID_PRIVATE_TAVARUA_TX_SETPSREPEATCOUNT; - control.value = tuFmPSParams->ucTxPSRptCnt; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set MAX_REPEAT_CNT failed \n"); - return FM_CMD_FAILURE; - } - - /*Set Program Service name (PS) */ - ext_ctl.id = V4L2_CID_RDS_TX_PS_NAME; - ext_ctl.string = (char *)tuFmPSParams->cTxPSStrPtr; - ext_ctl.size = tuFmPSParams->ulPSStrLen; - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_FM_TX; - v4l2_ctls.count = 0; - v4l2_ctls.controls = &ext_ctl; - - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set PS failed \n"); - return FM_CMD_FAILURE; - } - is_ps_transmitting = 1; - print("\n Exiting Transmit PS \n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION stopTransmitPS - -DESCRIPTION - PFAL specific routine to stop transmitting the PS string. - -PARAMS PASSED - NIL - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to stop transmitting the PS string - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -============================================================================*/ -fm_cmd_status_type stopTransmitPS -( - void -) -{ - int ret = 0; - struct v4l2_control control; - - print("\n Entering stopTransmitPS \n"); - - control.id = V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_PS_NAME; - ret = ioctl(fd_radio, VIDIOC_S_CTRL , &control); - if(ret < 0){ - print("Failed to stop Transmit PS"); - return FM_CMD_FAILURE; - } - else { - print("\nStopped transmitting PS\n"); - is_ps_transmitting = 0; - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION TransmitRT - -DESCRIPTION - PFAL specific routine to transmit the RT string. - -PARAMS PASSED - 'tuFmRTParams' containing RDS PI, and RT information of the transmitting - station - -PLATFORM SPECIFIC DESCRIPTION - This routine is used to transmit the RT string which provides a brief info - of the audio content being transmitted. This includes artist name, movie name - few lines of the audio. Usually the metadata of the song is transmitted as RT - - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None -===========================================================================*/ -fm_cmd_status_type TransmitRT -( - tsFtmFmRdsTxRtType* tuFmRTParams -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_FM_TX; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - print("\n Entering Transmit RT \n"); - - if(tuFmRTParams == NULL) - { - print("\n 'tuFmRTParams ' is not NULL \n "); - return FM_CMD_FAILURE; - } - else - { - ext_ctl.id = V4L2_CID_RDS_TX_RADIO_TEXT; - ext_ctl.string = (char *)tuFmRTParams->cTxRTStrPtr; - ext_ctl.size = tuFmRTParams->ulRTStrLen; - } - /* Set Program Type (PTY) */ - control.id = V4L2_CID_RDS_TX_PTY; - control.value = 0; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PTY failed \n"); - return FM_CMD_FAILURE; - } - - /* Set Program Identifier (PI) */ - control.id = V4L2_CID_RDS_TX_PI; - control.value = tuFmRTParams->tusTxPi; - ret = ioctl(fd_radio, VIDIOC_S_CTRL,&control ); - if(ret < 0 ) - { - print("\n VIDIOC_S_CTRL ioctl: Set PI failed \n"); - return FM_CMD_FAILURE; - } - - /* Set the Radio Text (RT) to be transmitted */ - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set RT failed \n"); - return FM_CMD_FAILURE; - } - - is_rt_transmitting = 1; - return FM_CMD_SUCCESS; - -} - -/*=========================================================================== -FUNCTION stopTransmitRT - -DESCRIPTION - PFAL specific routine to stop transmitting the RT string. - -PLATFORM SPECIFIC DESCRIPTION - This routine is called to stop transmitting the RT string for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type stopTransmitRT -( - void -) -{ - int ret = 0; - - print("\n Entering stopTransmitRT \n"); - - struct v4l2_control control; - control.id = V4L2_CID_PRIVATE_TAVARUA_STOP_RDS_TX_RT; - ret = ioctl(fd_radio, VIDIOC_S_CTRL , &control); - if(ret < 0){ - print("Failed to stop Transmit RT"); - return FM_CMD_FAILURE; - } - else { - print("\nStopped transmitting RT\n"); - is_rt_transmitting = 0; - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION getTxPSFeatures - -DESCRIPTION - PFAL specific routine to get all the supported Tx PS features - -PLATFORM SPECIFIC DESCRIPTION - This routine is called to get the supported PS features for the - transmitting station - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type getTxPSFeatures -( - void -) -{ - print("\n Entering getTxPSFeatures() \n"); - printf("\n Supported Tx PS Features:\n"); - printf("\n Max PS Count : %d\n",MAX_TX_PS_LEN); - printf("\n Max PS Repeat Count : %d\n",MAX_TX_PS_RPT_CNT); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION ftm_on_long_thread - -DESCRIPTION - Helper routine to perform the rest ofthe FM calibration and SoC Patch - download and configuration settings following the opening ofradio handle - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - None - -===========================================================================*/ -void *(ftm_on_long_thread)(void *ptr) -{ - int ret = 0; - struct v4l2_control control; - struct v4l2_tuner tuner; - int i,init_success = 0; - char value[PROPERTY_VALUE_MAX]; - struct v4l2_capability cap; - char versionStr[40]; - char cmdBuffer[40]; - char product_board_platform_type[PROPERTY_VALUE_MAX]; - fm_cmd_status_type status; - - fm_config_data* radiocfgptr = (fm_config_data *)ptr; - - property_get("qcom.bluetooth.soc", value, NULL); - print2("BT soc is %s\n", value); - /** - * V4L2_CID_PRIVATE_TAVARUA_STATE - * V4L2_CID_PRIVATE_TAVARUA_EMPHASIS - * V4L2_CID_PRIVATE_TAVARUA_SPACING - * V4L2_CID_PRIVATE_TAVARUA_RDS_STD - * V4L2_CID_PRIVATE_TAVARUA_REGION - */ - - /* Switching on FM */ - if (radiocfgptr->is_fm_tx_on) - { - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_STATE, FM_TX); - if(ret < FALSE) - { - print("Failed to turn on FM Trnasmitter\n"); - return NULL; - } - else - print("\nEnabled FM Transmitter successfully\n"); - } - else - { - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_STATE, FM_RX); - if(ret < FALSE) - { - print("Failed to turn on FM Receiver\n"); - return NULL; - } - else - print("\nEnabled FM Receiver successfully\n"); - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SET_AUDIO_PATH,1); - if(ret < FALSE) - { - print("Failed to set Audio path \n"); - } - - status = ConfigureFM(radiocfgptr); - if(status != FM_CMD_SUCCESS) - { - print("Failed to configure fm\n"); - return NULL; - } - - /* Setting RDS On */ - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSON,1); - if(ret is_fm_tx_on) - { - int rdsMask = FM_RX_RDS_GRP_RT_EBL | FM_RX_RDS_GRP_PS_EBL | - FM_RX_RDS_GRP_AF_EBL | FM_RX_RDS_GRP_PS_SIMPLE_EBL | - FM_RX_RDS_GRP_ECC_EBL| FM_RX_RDS_GRP_PTYN_EBL | - FM_RX_RDS_GRP_RT_PLUS_EBL; - - byte rdsFilt = 0; - int psAllVal=rdsMask & (1 << 4); - print2("rdsOptions: rdsMask: %x\n",rdsMask); - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC, - rdsMask); - if(ret < FALSE) - { - print("Failed to set RDS GROUP PROCESSING!!!\n"); - return NULL; - } - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK,0x0FFF); - if (ret < FALSE) - { - print("Failed to set RDS GRP MASK!!!\n"); - return NULL; - } - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF,1); - if (ret < FALSE) - { - print("Failed to set RDS BUF!!!\n"); - return NULL; - } - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_ANTENNA,0); - if(ret < FALSE) - { - print("Failed to set ANTENNA!!!\n"); - return NULL; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SOFT_MUTE, 0); - if(ret < FALSE) - { - print("Failed to Disable Soft Mute!!!\n"); - return NULL; - } - - } - power_down = FALSE; - - if(radiocfgptr->is_fm_tx_on) { -#ifdef FTM_DEBUG - print("\nEnable Transmitter exit\n"); -#endif - fmPowerState = FM_TX_ON; - } - else { -#ifdef FTM_DEBUG - print("\nEnable Receiver exit\n"); -#endif - fmPowerState = FM_RX_ON; - } - poweron = COMPLETE; - return NULL; -} - -/*=========================================================================== -FUNCTION DisableFM - -DESCRIPTION - PFAL specific routine to disable FM and free the FM resources - -PLATFORM SPECIFIC DESCRIPTION - Closes the handle to /dev/radio0 V4L2 device - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None -===========================================================================*/ -fm_cmd_status_type DisableFM -( - fm_config_data* radiocfgptr -) -{ - struct v4l2_control control; - uint8 buf[128]; - double tune; - char value[PROPERTY_VALUE_MAX]; - struct v4l2_frequency freq_struct; - int ret; - - /* Wait till the previous ON sequence has completed */ - while(poweron != COMPLETE); - -#ifdef FTM_DEBUG - print("DisableFM start\n"); -#endif - - power_down = TRUE; - - /* Set RDS Off */ - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSON,0); - if(ret < FALSE) - { - print("DisableFM failed to set RDS off \n"); - return FM_CMD_FAILURE; - } - - /* Turn off FM */ - /* As part of Turning off FM we will get 'READY' event */ - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_STATE,0); - if(ret < FALSE) - { - if(radiocfgptr->is_fm_tx_on) - { - print("\nFailed to Turn Off FM Transmitter\n"); - return FM_CMD_FAILURE; - } - else - { - print("\nFailed to Turn Off FM Receiver\n"); - return FM_CMD_FAILURE; - } - } - -#ifdef FTM_DEBUG - print("Stopping the FM control\n"); -#endif - -#ifdef ANDROID - - property_get("qcom.bluetooth.soc", value, NULL); - print2("BT soc is %s\n", value); - if (strcmp(value, "rome") != 0) - { - property_set("ctl.stop", "fm_dl"); - } - -#endif/*ANDROID*/ -cmd_queued = TRUE; - -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("Disabled FM Transmitter\n"); - else - print("Disabled FM Receiver\n"); - -#endif - fmPowerState = FM_POWER_OFF; - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION ConfigureFM - -DESCRIPTION - PFAL specific routine to configure FM with the Radio Configuration - parameters passed. - -PLATFORM SPECIFIC DESCRIPTION - Configures the Init parameters like emphasis, channel spacing, Band Limit, - RDS type, Frequency Band, and Radio State. - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type ConfigureFM -( - fm_config_data* radiocfgptr -) -{ - int ret = 0; - struct v4l2_control control; - struct v4l2_tuner tuner; - -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("\nConfigure FM Transmitter entry\n"); - else - print("\nConfigure FM Receiver entry\n"); -#endif - - /* Set Emphasis, Channel spacing and RDS Standard : - Emphasis : - '0' - 75 - US/EU - '1' - 50 - JAPAN/JAPAN-WIDE/ASIA - Channel Spacing : - '0' - 200kHz - US/EU - '1' - 100kHz - JAPAN - '2' - 50kHz - JAPAN-WIDE - RDS/RDBS Standard : - '0' - RDBS - US/EU - '1' - RDS - All regions - */ - fmconfig_ptr =(fm_config_data *) malloc(sizeof(fm_config_data)); - if(!fmconfig_ptr) - { - print("malloc failed"); - return FM_CMD_FAILURE; - } - fmconfig_ptr->band = radiocfgptr->band; - switch(radiocfgptr->band) - { - case FM_US_EU: - radiocfgptr->emphasis = 0; - radiocfgptr->spacing = 0; - radiocfgptr->rds_system = 0; - break; - case FM_JAPAN_STANDARD: - radiocfgptr->emphasis = 1; - radiocfgptr->spacing = 1; - radiocfgptr->rds_system = 1; - case FM_JAPAN_WIDE: - radiocfgptr->emphasis = 1; - radiocfgptr->spacing = 2; - radiocfgptr->rds_system = 1; - break; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_EMPHASIS, radiocfgptr->emphasis); - if(ret < FALSE) - { - print("ConfigureFM : Failed to set Emphasis \n"); - return FM_CMD_FAILURE; - } - - /* Set channel spacing */ - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SPACING,radiocfgptr->spacing); - if(ret < FALSE) - { - print("ConfigureFM : Failed to set channel spacing \n"); - return FM_CMD_FAILURE; - } - - /* Set RDS/RDBS Standard */ - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDS_STD,radiocfgptr->rds_system); - if(ret < FALSE) - { - print("ConfigureFM : Failed to set RDS std \n"); - return FM_CMD_FAILURE; - } - - /* Set band limit and audio mode to Mono/Stereo */ - tuner.index = 0; - tuner.signal = 0; - - print2("ConfigureFM : radio band = %d\n",radiocfgptr->band); - switch(radiocfgptr->band) - { - case FM_US_EU: - tuner.rangelow = REGION_US_EU_BAND_LOW ; - tuner.rangehigh = REGION_US_EU_BAND_HIGH; - break; - case FM_JAPAN_STANDARD: - tuner.rangelow = REGION_JAPAN_STANDARD_BAND_LOW; - tuner.rangehigh = REGION_JAPAN_STANDARD_BAND_HIGH; - break; - case FM_JAPAN_WIDE: - tuner.rangelow = REGION_JAPAN_WIDE_BAND_LOW; - tuner.rangehigh = REGION_JAPAN_WIDE_BAND_HIGH; - break; - default: - tuner.rangelow = radiocfgptr->bandlimits.lower_limit; - tuner.rangehigh = radiocfgptr->bandlimits.upper_limit; - break; - } - - ret = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_UPPER_BAND, tuner.rangehigh); - ret = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_LOWER_BAND, tuner.rangelow); - fmconfig_ptr->bandlimits.lower_limit = tuner.rangelow; - fmconfig_ptr->bandlimits.upper_limit = tuner.rangehigh; - print3("ConfigureFM : set band limits: lower_limit=%d\t upper_limit = %d \n", fmconfig_ptr->bandlimits.lower_limit,fmconfig_ptr->bandlimits.upper_limit ); - if(ret < 0) - { - print("ConfigureFM : Failed to set band limits and audio mode \n"); - return FM_CMD_FAILURE; - } - - /* Set Region */ - radiocfgptr->band = FM_USER_DEFINED; - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_REGION,radiocfgptr->band); - if(ret < FALSE) - { - print("ConfigureFM : Failed to set band\n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSON,1); - if(ret < 0) - { - print("ConfigureFM : Failed to set RDS ON \n"); - return FM_CMD_FAILURE; - } -out : -#ifdef FTM_DEBUG - - if(radiocfgptr->is_fm_tx_on) - print("\nConfigure FM Transmitter exit\n"); - else - print("\nConfigure FM Receiver exit\n"); -#endif - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetFrequencyReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Frequency ofreception - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyReceiver -( - uint32 ulfreq -) -{ - int err; - int freq_rangehigh,freq_rangelow; -#ifdef FTM_DEBUG - print2("\nSetFrequency Receiver entry freq = %d\n",(int)ulfreq); -#endif - freq_rangehigh = fmconfig_ptr->bandlimits.upper_limit; - freq_rangelow = fmconfig_ptr->bandlimits.lower_limit; - printf("\n set frequency=%d\t range_high=%d\t range_low =%d\n",ulfreq,freq_rangehigh,freq_rangelow); - ALOGE("\n set frequency=%d\t range_high=%d\t range_low =%d\n",ulfreq,freq_rangehigh,freq_rangelow); - if (ulfreq >= freq_rangelow && ulfreq <= freq_rangehigh) - { - err = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_FREQ, ulfreq); - if (err < 0) - { - print("SetFrequencyReceiver : Failed to set Freq \n"); - return FM_CMD_FAILURE; - } - } - else - { - print("SetFrequencyReceiver : frequency out of band limits \n"); - return FM_CMD_DISALLOWED; - } - -#ifdef FTM_DEBUG - print("\nSetFrequency Receiver exit\n"); -#endif - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetFrequencyTransmitter - -DESCRIPTION - PFAL specific routine to configure the FM Transmitter's frequency - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetFrequencyTransmitter -( - uint32 ulfreq -) -{ - int err; - double tune; - struct v4l2_frequency freq_struct; - struct v4l2_control control; - struct v4l2_tuner tuner; -#ifdef FTM_DEBUG - print2("\n SetFrequencyTransmitter() entry : Freq = %d \n",(int)ulfreq); -#endif - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - /* Stop transmitting PS/RT frequency of currently tuned station */ - print2("\n Currently tuned station is : %ld \n",fm_global_params.current_station_freq); - if(is_ps_transmitting) - stopTransmitPS(); - if(is_rt_transmitting) - stopTransmitRT(); - - tuner.index = 0; - - err = ioctl(fd_radio,VIDIOC_G_TUNER,&tuner); - if(err < 0) - { - print("SetFrequencyTransmitter : Failed to get band limits and audio mode \n"); - return FM_CMD_FAILURE; - } - - /* Fill up the 'v4l2_frequency' structure */ - freq_struct.type = V4L2_TUNER_RADIO; - freq_struct.frequency = (ulfreq) * (TUNE_MULT/1000); - if (freq_struct.frequency >= tuner.rangelow && freq_struct.frequency <= tuner.rangehigh) - { - err = ioctl(fd_radio, VIDIOC_S_FREQUENCY, &freq_struct); - if(err < 0) - return FM_CMD_FAILURE; - else - print2("\n Frequency : %ld \n",ulfreq); - } - else - { - print("SetFrequencyTransmitter : Frequency out of bandlimits\n"); - return FM_CMD_DISALLOWED; - } - -#ifdef FTM_DEBUG - print("\n SetFrequencyTransmitter() exit \n"); -#endif - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetTxPowerLevel - -DESCRIPTION - PFAL specific routine to configure the FM transmitter's power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetTxPowerLevel -( - uint32 ulfreq -) -{ - int err; - struct v4l2_control control; - - /* Set the power level as requested */ - control.id = V4L2_CID_TUNE_POWER_LEVEL; - control.value = FM_TX_PWR_LVL_MAX; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if(err < 0) - { - if( err == -ETIME) - print("\nTimeout to read PHY_TX gain Register\n"); - else - { - print2("\nFailed to set the Power Level for %ld\n",ulfreq); - return FM_CMD_FAILURE; - } - } - else - print2("\nSuccessfully set the Power Level for %ld\n",ulfreq); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetMuteModeReceiver -( - mute_type mutemode -) -{ - int err,i; - struct v4l2_control control; - print2("SetMuteModeReceiver mode = %d\n",mutemode); - - err = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_AUDIO_MUTE,mutemode); - if(err >= 0) - { - print("SetMuteMode Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set mute mode ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== - -FUNCTION SetSoftMuteModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's soft mute status - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSoftMuteModeReceiver -( - mute_type mutemode -) -{ - int err; - struct v4l2_control control; - print2("SetMuteModeReceiver mode = %d\n",mutemode); - - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SOFT_MUTE,mutemode); - if(err >= 0) - { - print("SetMuteMode Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set mute mode ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION SetAntenna - -DESCRIPTION - PFAL specific routine to configure the FM receiver's antenna type - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type SetAntenna -( - antenna_type antenna -) -{ - int err; - struct v4l2_control control; - control.value = antenna; - control.id = V4L2_CID_PRIVATE_TAVARUA_ANTENNA; - - err = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_ANTENNA,antenna); - if(err >= 0) - { - print("SetAntenna Success\n"); - return FM_CMD_SUCCESS; - } - - print2("Set antenna ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION FmRivaPeekData - -DESCRIPTION - PFAL specific routine to get the data from Riva Memory -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmRivaPeekData -( - fm_riva_peek_word peek_word -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = peek_word.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR, - peek_word.startaddress); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.value = peek_word.payload_length; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN, - peek_word.payload_length); - if(err >= 0) - { - print("SetDataLen Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_PEEK; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_PEEK, control.value); - if(err >= 0) - { - print("RivaPeek Success\n"); - return FM_CMD_SUCCESS; - } - - print2("RivaPeekData ret = %d\n",err); - return FM_CMD_FAILURE; -} - - -/*=========================================================================== -FUNCTION FmRivaPokeData - -DESCRIPTION - PFAL specific routine to write the data into the Riva Memory -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmRivaPokeData -( - fm_riva_poke_word poke_word -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = poke_word.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_ADDR, - poke_word.startaddress); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.value = poke_word.payload_length; - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN; -// err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_ACCS_LEN, - poke_word.payload_length); - if(err >= 0) - { - print("SetDataLen Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_RIVA_POKE; - control.value = (uint32)(uintptr_t)(&poke_word.data); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RIVA_POKE, - control.value); - if(err >= 0) - { - print("RivaPoke Success\n"); - return FM_CMD_SUCCESS; - } - - print2("RivaPokeData ret = %d\n",err); - return FM_CMD_FAILURE; -} - - -/*=========================================================================== -FUNCTION FmSSBIPeekData - -DESCRIPTION - PFAL specific routine to get the data from SSBI registers -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmSSBIPeekData -( - fm_ssbi_poke_reg peek_reg -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_PEEK; - control.value = peek_reg.startaddress; - if( control.value == 0x00) - return FM_CMD_FAILURE; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SSBI_PEEK, - peek_reg.startaddress); - if(err >= 0) - { - //extract_ssbi_peek_data(); - print2("SSBIPeek Success\n %d",peek_reg.data); - return FM_CMD_SUCCESS; - } - - print2("SSBIPeekData ret = %d\n",err); - return FM_CMD_FAILURE; -} - -fm_cmd_status_type FmSetGetResetAGC -( - fm_set_get_reset_agc_req agc_params -) -{ - int err; - struct v4l2_control control; - control.value = agc_params.ucCtrl; - control.id = V4L2_CID_PRIVATE_IRIS_AGC_CTRL; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_AGC_CTRL, - agc_params.ucCtrl); - if(err >= 0) - { - print("Sending AGC ucCtrL Success\n"); - } - control.value = agc_params.ucGainState; - control.id = V4L2_CID_PRIVATE_IRIS_AGC_STATE; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_AGC_STATE, - agc_params.ucGainState); - if(err >= 0) - { - print("Set ucGainstate Success\n"); - return FM_CMD_SUCCESS; - } - - print2("SetGetResetAGC ret = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION FmSSBIPokeData - -DESCRIPTION - PFAL specific routine to program the SSBI registers -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmSSBIPokeData -( - fm_ssbi_poke_reg poke_reg -) -{ - int err; - struct v4l2_control control; - - if(fd_radio < 0) - return FM_CMD_NO_RESOURCES; - - control.value = poke_reg.startaddress; - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_ACCS_ADDR; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SSBI_ACCS_ADDR, - poke_reg.startaddress); - if(err >= 0) - { - print("SetRiva Address Success\n"); - } - control.id = V4L2_CID_PRIVATE_IRIS_SSBI_POKE; - control.value = poke_reg.data; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SSBI_POKE, - control.value); - if(err >= 0) - { - print2("SSBIPoke Success\n value =%d",poke_reg.data); - return FM_CMD_SUCCESS; - } - - print2("SSBIPokeData ret = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmTxPwrLvlCfg - -DESCRIPTION - PFAL specific routine to configure the FM Tx power level - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmTxPwrLvlCfg -( - uint8 pwrlvl -) -{ - int err; - struct v4l2_control control; - control.value = pwrlvl; - control.id = V4L2_CID_TUNE_POWER_LEVEL; - err = ioctl(fd_radio, VIDIOC_S_CTRL, &control); - if (err >= 0) { - print2("Tx power level set to %d\n", pwrlvl); - return FM_CMD_SUCCESS; - } - print2("Set Tx power level failed = %d\n", err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmTxToneGen - -DESCRIPTION - PFAL specific routine to configure the FM Tx internal tone Generation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - - -fm_cmd_status_type FmTxToneGen -( - uint8 txTone -) -{ - int err; - struct v4l2_control control; - control.value = txTone; - control.id = V4L2_CID_PRIVATE_IRIS_TX_TONE; - err = ioctl(fd_radio,VIDIOC_S_CTRL,&control); - if(err >= 0) - { - print("Set Tx internal tone Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set Tx internal tone = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmRDSGrpcntrs - -DESCRIPTION - PFAL specific routine to get the FM RDS group conuters - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmRDSGrpcntrs -( - uint8 rdsCounters -) -{ - int err; - struct timespec* ts; - pthread_mutex_lock(&fm_event_lock); - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS, rdsCounters); - if (err >= 0) - { - print("Read RDS GROUP counters success\n"); - ts = set_time_out(2); - if(ts) - { - err = pthread_cond_timedwait(&fm_event_cond, &fm_event_lock, ts); - ALOGD("Unlocked mutex timedout or condition satisfied %s", __func__); - pthread_mutex_unlock(&fm_event_lock); - free(ts); - return FM_CMD_SUCCESS; - } - } - print2("Read RDS GROUP counters = %d\n",err); - pthread_mutex_unlock(&fm_event_lock); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION FmRDSGrpcntrsExt - -DESCRIPTION - PFAL specific routine to get the FM RDS group conuters - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmRDSGrpcntrsExt -( - uint8 rdsCounters -) -{ - int err; - struct v4l2_control control; - control.value = rdsCounters; - control.id = V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS_EXT; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_RDS_GRP_COUNTERS_EXT, rdsCounters); - if(err >= 0) - { - print("Read RDS GROUP counters extn success\n"); - return FM_CMD_SUCCESS; - } - print2("Read RDS GROUP counters extn = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION FmDefaultRead - -DESCRIPTION - PFAL specific routine to get the FM Default Values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmDefaultRead -( - ftm_fm_def_data_rd_req defaultRead -) -{ - int err; - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - ext_ctl.id = V4L2_CID_PRIVATE_IRIS_READ_DEFAULT; - ext_ctl.size = sizeof(ftm_fm_def_data_rd_req); - memcpy(ext_ctl.string,(char *)&defaultRead,ext_ctl.size); - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_USER; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - err = ioctl(fd_radio,VIDIOC_G_EXT_CTRLS,&v4l2_ctls); - if(err >= 0) - { - extract_default_read_data(); - print("Read Defaults success\n"); - return FM_CMD_SUCCESS; - } - print2("Read Defaults =%d \n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmDefaultWrite - -DESCRIPTION - PFAL specific routine to write the default values - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmDefaultWrite -( - ftm_fm_def_data_wr_req* writedefaults -) -{ - int ret = 0; - - struct v4l2_control control; - struct v4l2_ext_controls v4l2_ctls; - struct v4l2_ext_control ext_ctl; - - if(writedefaults == NULL) - { - print("\n 'writedefaults' is NULL \n "); - return FM_CMD_FAILURE; - } - ext_ctl.id = V4L2_CID_PRIVATE_IRIS_WRITE_DEFAULT; - ext_ctl.size = (writedefaults->length + 2); - ext_ctl.string = (char *)&writedefaults->mode; - - v4l2_ctls.ctrl_class = V4L2_CTRL_CLASS_USER; - v4l2_ctls.count = 1; - v4l2_ctls.controls = &ext_ctl; - - print("\n Entering Write defaults \n"); - - ret = ioctl(fd_radio, VIDIOC_S_EXT_CTRLS, &v4l2_ctls ); - if(ret < 0 ) - { - print("\n VIDIOC_S_EXT_CTRLS ioctl: Set Default failed \n"); - return FM_CMD_FAILURE; - } - - return FM_CMD_SUCCESS; - -} - -/*=========================================================================== -FUNCTION FmSetHlSi - -DESCRIPTION - PFAL specific routine to configure the FM receiver's HlSi - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmSetHlSi -( - uint8 hlsi -) -{ - int err = -1; - struct v4l2_control control; - control.value = hlsi; - control.id = V4L2_CID_PRIVATE_IRIS_HLSI; - err = vendor_interface->set_fm_ctrl( FTM_FM_SET_HLSI, hlsi); - print2("Setting HLSI to = %d",hlsi); - if(err >= 0) - { - print("Set HlSi success"); - return FM_CMD_SUCCESS; - } - print2("Set HlSi status = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION FmSetNotchFilter - -DESCRIPTION - PFAL specific routine to configure the FM receiver's notch filter - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type FmSetNotchFilter -( - uint8 notch -) -{ - int err = -1 ; - struct v4l2_control control; - control.value = notch; - control.id = V4L2_CID_PRIVATE_IRIS_SET_NOTCH_FILTER; - print2("Setting Notch filter to = %d",notch); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_IRIS_SET_NOTCH_FILTER, notch); - if(err >= 0) - { - print("Set Notch filter success"); - return FM_CMD_SUCCESS; - } - print2("Set Notch filter status = %d\n",err); - return FM_CMD_FAILURE; -} -/*=========================================================================== -FUNCTION SetStereoModeReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's Audio mode on the - frequency tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetStereoModeReceiver -( - stereo_type stereomode -) -{ - int err = -1; - err = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_AUDIO_MODE,stereomode); - ALOGD("Stereo mode =%d ... %s", stereomode,__func__); - if(err >= 0) { - print("SetStereoMode Success\n"); - return FM_CMD_SUCCESS; - } - print2("Set Stereo Mode status = %d\n",err); - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION GetStationParametersReceiver - -DESCRIPTION - PFAL specific routine to get the station parameters ofthe Frequency at - which the Radio receiver is tuned - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetStationParametersReceiver -( - fm_station_params_available* configparams -) -{ - int ret = 0, value = 0; - struct timespec* ts; - configparams->current_station_freq = fm_global_params.current_station_freq; - configparams->service_available = fm_global_params.service_available; - - pthread_mutex_lock(&fm_event_lock); - ret = vendor_interface->get_fm_ctrl(HCI_FM_HELIUM_RMSSI, &value); - if (ret < 0) { - print2("GetStationParametersReceiver:Failed to get Rssi error = %d\n",ret); - pthread_mutex_unlock(&fm_event_lock); - return FM_CMD_FAILURE; - } - ts = set_time_out(2); - if(ts) - { - ret = pthread_cond_timedwait(&fm_event_cond, &fm_event_lock, ts); - ALOGD("Unlocked mutex timedout or condition satisfied %s", __func__); - free(ts); - } - else - { - print("Cmd timeout failed .."); - pthread_mutex_unlock(&fm_event_lock); - return FM_CMD_FAILURE; - } - pthread_mutex_unlock(&fm_event_lock); - - ret = vendor_interface->get_fm_ctrl(HCI_FM_HELIUM_AUDIO_MUTE,&value); - if (ret < 0) { - print2("Failed to get mute status error = %d\n",ret); - return FM_CMD_FAILURE; - } - configparams->mute_status = value; - print2("GetStationParametersReceiver: Rssi = %d\n",fm_global_params.rssi); - configparams->rssi = fm_global_params.rssi; - configparams->stype = fm_global_params.stype; - configparams->rds_sync_status = fm_global_params.rds_sync_status; - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetRdsOptionsReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsOptionsReceiver -( - fm_rds_options rdsoptions -) -{ - int ret; - print("SetRdsOptionsReceiver\n"); - ALOGE("SetRdsOptionsReceiver\n"); - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_MASK, - rdsoptions.rds_group_mask); - if(ret < FALSE) - { - print2("SetRdsOptionsReceiver Failed to set RDS group options = %d\n",ret); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSD_BUF, - rdsoptions.rds_group_buffer_size); - if(ret < FALSE) - { - print2("SetRdsOptionsReceiver Failed to set RDS group options = %d\n",ret); - return FM_CMD_FAILURE; - } - - /*Chnage Filter not supported */ - print("SetRdsOptionsReceiver<\n"); - - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetRdsGroupProcReceiver - -DESCRIPTION - PFAL specific routine to configure the FM receiver's RDS group proc options - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetRdsGroupProcReceiver -( - uint32 rdsgroupoptions -) -{ - int ret; - print("SetRdsGroupProcReceiver\n"); - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSGROUP_PROC, - rdsgroupoptions); - if(ret < FALSE) - { - print2("SetRdsGroupProcReceiver Failed to set RDS proc = %d\n",ret); - return FM_CMD_FAILURE; - } - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_RDSON,1); - if(ret < FALSE) - { - print2(" Failed to set RDS proc ON = %d\n",ret); - return FM_CMD_FAILURE; - } - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION SetPowerModeReceiver - -DESCRIPTION - PFAL specific routine to configure the power mode of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetPowerModeReceiver -( - uint8 powermode -) -{ - struct v4l2_control control; - int i,err; - print2("SetPowerModeReceiver mode = %d\n",powermode); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_LP_MODE, powermode); - if (err < 0) - { - print("SetPowerMode Failed\n"); - return FM_CMD_FAILURE; - } - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to configure the signal threshold ofFM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSignalThresholdReceiver -( - uint8 signalthreshold -) -{ - struct v4l2_control control; - int i,err; - print2("SetSignalThresholdReceiver threshold = %d\n",signalthreshold); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH,signalthreshold); - if(err >= 0) - { - print("SetSignalThresholdReceiver Success\n"); - return FM_CMD_SUCCESS; - } - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION GetSignalThresholdReceiver - -DESCRIPTION - PFAL specific routine to get the signal threshold of FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetSignalThresholdReceiver -( - uint8* signalthreshold -) -{ - int i,err,value=0; - - err = vendor_interface->get_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SIGNAL_TH, &value); - if(err >= 0) - { - print2("GetSignalThresholdReceiver Success = %d\n",value); - *signalthreshold = value; - return FM_CMD_SUCCESS; - } - - return FM_CMD_FAILURE; -} - -/*=========================================================================== -FUNCTION GetRSSILimits - -DESCRIPTION - PFAL specific routine to print the RSSI limts ofFM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRSSILimits -( -) -{ - int limits[] ={0,100}; - - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION GetPSInfoReceiver - -DESCRIPTION - PFAL specific routine to print the PS info ofcurrent frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetPSInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetRTInfoReceiver - -DESCRIPTION - PFAL specific routine to print the Radio text info ofcurrent frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetRTInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetAFInfoReceiver - -DESCRIPTION - PFAL specific routine to print the AF list for current frequency of - FM receiver - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type GetAFInfoReceiver -( -) -{ - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SearchStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationsReceiver -( -fm_search_stations searchstationsoptions -) -{ - int err,i; - int ret; - print("SearchStationsReceiver\n"); - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchstationsoptions.search_mode); - if(ret < FALSE) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SCANDWELL, - searchstationsoptions.dwell_period); - if(ret < FALSE) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - if (searchstationsoptions.search_dir) - searchstationsoptions.search_dir = SRCH_DIR_UP; - else - searchstationsoptions.search_dir = SRCH_DIR_DOWN; - - err = vendor_interface->set_fm_ctrl(HCI_FM_HELIUM_SEEK,searchstationsoptions.search_dir); - if(err < 0) - { - print("SearchStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - print("SearchRdsStationsReceiver<\n"); - return FM_CMD_SUCCESS; -} - - -/*=========================================================================== -FUNCTION SearchRDSStationsReceiver - -DESCRIPTION - PFAL specific routine to search for stations from the current frequency of - FM receiver with a specific program type and print the information on diag - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchRdsStationsReceiver -( -fm_search_rds_stations searchrdsstationsoptions -) -{ - int i,err; - int ret; - - print("SearchRdsStationsReceiver>\n"); - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchrdsstationsoptions.search_mode); - if(ret < FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SCANDWELL, - searchrdsstationsoptions.dwell_period); - if(ret < FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, - searchrdsstationsoptions.program_type); - if(ret < FALSE) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCH_PI, - searchrdsstationsoptions.program_id); - if(ret set_fm_ctrl(HCI_FM_HELIUM_SEEK,searchrdsstationsoptions.search_dir); - if(err < 0) - { - print("SearchRdsStationsReceiver failed \n"); - return FM_CMD_FAILURE; - } - - print("SearchRdsStationsReceiver<\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION SearchStationListReceiver - -DESCRIPTION - PFAL specific routine to search for stations with a specific mode of - informaation like WEAK,STRONG,STRONGEST etc - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SearchStationListReceiver -( -fm_search_list_stations searchliststationsoptions -) -{ - int i,ret; - - print("SearchStationListReceiver>\n"); - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCHMODE, - searchliststationsoptions.search_mode); - if(ret < FALSE) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCH_CNT, - searchliststationsoptions.srch_list_max); - if(ret < FALSE) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCH_PTY, - searchliststationsoptions.program_type); - if(ret set_fm_ctrl(HCI_FM_HELIUM_SEEK,searchliststationsoptions.search_dir); - if(ret < 0) - { - print("SearchStationListReceiver failed \n"); - return FM_CMD_FAILURE; - } - print("SearchStationListReceiver<\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION - -DESCRIPTION - PFAL specific routine to cancel the ongoing search operation - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type CancelSearchReceiver -( -) -{ - int ret; - - ret = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_TAVARUA_SRCHON,0); - if(ret < FALSE) - { - return FM_CMD_FAILURE; - } - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION GetSINRSamples - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR sample - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRSamples -( - -) -{ - int err,value=0; - err = vendor_interface->get_fm_ctrl(V4L2_CID_PRIVATE_SINR_SAMPLES,&value); - if( err < 0 ) - { - print("Failed to get the SINR samples"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.sinr_samples = value; - print2("Successfully get the SINR samples %d\n", value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetSINRSamples - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR sample - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSINRSamples -( - uint8 sinr_sample -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_SINR_SAMPLES; - control.value = sinr_sample; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_SINR_SAMPLES, sinr_sample); - if( err < 0 ) - { - print("Failed to set the SINR samples\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the SINR samples %d\n", sinr_sample); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION GetSINRThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's SINR Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetSINRThreshold -( - -) -{ - int err,value=0; - err = vendor_interface->get_fm_ctrl(V4L2_CID_PRIVATE_SINR_THRESHOLD, - &value); - if( err < 0 ) - { - print("Failed to get the SINR threshold\n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.sinr_threshold = value; - print2("Successfully get the SINR threshold %d\n", value); - return FM_CMD_SUCCESS; - } -} - - -/*=========================================================================== -FUNCTION SetSINRThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's SINR Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type SetSINRThreshold -( - char sinr_th -) -{ - int err,value; - value = (int)sinr_th; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_SINR_THRESHOLD, - sinr_th); - if( err < 0 ) - { - print("Failed to set the SINR threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the SINR threshold %d\n", sinr_th); - return FM_CMD_SUCCESS; - } -} - - -/*=========================================================================== -FUNCTION GetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's On channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOnChannelThreshold -( - -) -{ - int err,value=0; - - err = vendor_interface->get_fm_ctrl(V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD, - &value); - if( err < 0 ) - { - print("Failed to get the On channel threshold \n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.On_channel_threshold = value; - print2("Successfully get the On channel threshold %d\n",value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetOnChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's On channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOnChannelThreshold -( - uint8 on_channel_th -) -{ - int err; - - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_INTF_LOW_THRESHOLD, on_channel_th); - if( err < 0 ) - { - print("Failed to set the On channel threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the On channel threshold %d\n", on_channel_th); - return FM_CMD_SUCCESS; - } -} -/*=========================================================================== -FUNCTION GetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to get the FM receiver's Off channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type GetOffChannelThreshold -( - -) -{ - int err,value=0; - - err = vendor_interface->get_fm_ctrl(V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD, - &value); - if( err < 0 ) - { - print("Failed to get the Off channel threshold \n"); - return FM_CMD_FAILURE; - } - else - { - fm_global_params.Off_channel_threshold = value; - print2("Successfully get the Off channel threshold %d\n",value); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION SetOffChannelThreshold - -DESCRIPTION - PFAL specific routine to set the FM receiver's Off channel Threshold - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ - -fm_cmd_status_type SetOffChannelThreshold -( - uint8 off_channel_th -) -{ - int err; - struct v4l2_control control; - - control.id = V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD; - control.value = off_channel_th; - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRIVATE_INTF_HIGH_THRESHOLD, - off_channel_th); - if( err < 0 ) - { - print("Failed to set the Off channel threshold\n"); - return FM_CMD_FAILURE; - } - else - { - print2("Successfully set the Off channel threshold %d\n", off_channel_th); - return FM_CMD_SUCCESS; - } -} - -/*=========================================================================== -FUNCTION get_fm_i2c_path - -DESCRIPTION - Helper function to get the path of i2c based on the board - -DEPENDENCIES - NIL - -RETURN VALUE - Path to the i2c device. NULL in case of failure. - -SIDE EFFECTS - None - -===========================================================================*/ - -/*=========================================================================== -FUNCTION FmBusWriteReceiver - -DESCRIPTION - PFAL specific routine to program the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusWriteReceiver -( -fm_i2c_params writeparams -) -{ - print("FmBusWriteReceiver <\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== -FUNCTION FmBusReadReceiver - -DESCRIPTION - PFAL specific routine to read the FM I2C bus - -DEPENDENCIES - NIL - -RETURN VALUE - FM command status - -SIDE EFFECTS - None - -===========================================================================*/ -fm_cmd_status_type FmBusReadReceiver -( -fm_i2c_params *readparams -) -{ - - print("FmBusReadReceiver <\n"); - return FM_CMD_SUCCESS; -} - -/*=========================================================================== - -FUNCTION ftm_fm_run_mm - -DESCRIPTION - This function is used to run mm-audio-ftm. - -DEPENDENCIES - none - -===========================================================================*/ -void ftm_fm_run_mm(void) { - pid_t pid; - int err = 1; - - printf("entered ftm_fm_run_mm\n"); - pid = fork(); - - if (!pid) { - err = execl(mm_audio_path, mm_audio_path, NULL); - printf("mm module error %d\n", err); - exit(0); - } else if (pid < 0) { - printf("could not create child process to execute mm audio module\n"); - } - return; -} - -/*=========================================================================== - -FUNCTION ftm_fm_audio - -DESCRIPTION - This function is used to load the target based config file and - set the audio output and volume. - -DEPENDENCIES - none - -===========================================================================*/ -fm_cmd_status_type ftm_fm_audio(uint8 source, uint8 volume) { - - char *cmd = NULL; - char vlm[4]; - FILE *sound_card_fp = NULL; - FILE *config_fp = NULL; - char sound_card_name[sound_card_len] = {0}; - char sound_card_info[sound_card_len] = {0}; - char config_path[sound_card_len] = {0}; - char *buffer; - char *config_file = NULL; - size_t len; - ssize_t ret; - int tmp; - fm_cmd_status_type status = FM_CMD_FAILURE; - - printf("Enter ftm_fm_audio\n"); - cmd = (char*) malloc(CMD_len * sizeof(char)); - if (!cmd) { - printf("memory allocation failed\n"); - goto failure; - } - memset(cmd, 0, CMD_len); - - if (strlcat(cmd, "-tc ", CMD_len) >= CMD_len) - goto failure; - - printf("string = %s \n",cmd); - printf("audio_output = %d\n", source); - - buffer = source ? "83 -v " : "74 -v "; - if (strlcat(cmd, buffer, CMD_len) >= CMD_len) - goto failure; - - printf("string = %s \n",cmd); - tmp = snprintf(vlm, sizeof(vlm), "%d", volume); - if (tmp < 0 || sizeof (vlm) <= (size_t)tmp) - goto failure; - if (strlcat(cmd, vlm, CMD_len) >= CMD_len) - goto failure; - - sound_card_fp = fopen("/proc/asound/cards", "r"); - if (!sound_card_fp) { - printf("failed to open sound card. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - - while (fgets(sound_card_info, sizeof(sound_card_info), sound_card_fp) != NULL) { - sscanf(sound_card_info, "%*s%*s%*s%*s%s", sound_card_name); - printf("soundCard Name = %s\n", sound_card_name); - snprintf(config_path, sizeof(config_path), "%s_%s",audio_config, - sound_card_name); - } - fclose(sound_card_fp); - - if (!(config_file = strchr(config_path, '/'))) { - memset(config_path, 0,sizeof(config_path)); - snprintf(config_path, sizeof(config_path), "%s", audio_config); - } else if ((config_fp = fopen(config_file, "r")) == NULL) { - printf("%s file doesn't exist.\n", config_file); - memset(config_path, 0,sizeof(config_path)); - snprintf(config_path, sizeof(config_path), "%s", audio_config); - } - - if (config_fp) - fclose (config_fp); - - printf("Use audio config file %s\n", config_path); - printf("string = %s \n",cmd); - - ftm_audio_fd = open("/data/vendor/misc/audio/ftm_commands", O_RDWR); - if (ftm_audio_fd < 0) { - printf("Failed to open ftm_commands with write. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - printf(" writing config path\n"); - buffer = config_path; - len = strlen(config_path) + 1; - - while (len > 0) { - ret = write(ftm_audio_fd, buffer, len); - if (ret < 0) { - printf("Failed to write config_file. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - len -= ret; - buffer += ret; - } - printf("done write config path\n"); - sleep(1); - printf("writing command for path = 0x%zx \n", strlen(cmd)); - len = strlen(cmd) + 1; - - buffer = cmd; - while (len > 0) { - ret = write(ftm_audio_fd, buffer, strlen(cmd) + 1); - if (ret < 0) { - printf("Failed to write cmd. err: %d (%s)\n", errno, - strerror(errno)); - goto failure; - } - len -= ret; - buffer += ret; - } - printf("done write command for path\n"); - status = FM_CMD_SUCCESS; - // fall through intentional -failure: - if (cmd) - free(cmd); - if (ftm_audio_fd > 0) { - close(ftm_audio_fd); - ftm_audio_fd = -1; - } - return status; -} - -void ftm_fm_enable_slimbus(int val) -{ - int err = 0; - struct timespec* ts; - - printf("++%s val %d\n", __func__, val); - - pthread_mutex_lock(&fm_event_lock); - err = vendor_interface->set_fm_ctrl(V4L2_CID_PRV_ENABLE_SLIMBUS, val); - if (err < 0) - printf("set_fm_ctrl failed for V4L2_CID_PRV_ENABLE_SLIMBUS\n"); - else { - ts = set_time_out(1); - if(ts) { - err = pthread_cond_timedwait(&fm_event_cond, &fm_event_lock, ts); - ALOGD("%s: event received", __func__); - pthread_mutex_unlock(&fm_event_lock); - free(ts); - } - } - pthread_mutex_unlock(&fm_event_lock); - printf("--%s\n", __func__); -} diff --git a/feeds/ipq95xx/ftm/src/ftm_iot.c b/feeds/ipq95xx/ftm/src/ftm_iot.c deleted file mode 100755 index 9531408bf..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_iot.c +++ /dev/null @@ -1,549 +0,0 @@ -/* -*Copyright (c) 2018-2020, 2022 Qualcomm Technologies, Inc. -* -*All Rights Reserved. -*Confidential and Proprietary - Qualcomm Technologies, Inc. -*/ - -/* IPQ-QCA402X specific file */ - -#ifdef IPQ_AP_HOST_IOT - -#include -#include -#include -#include -#include -#include - -#include -#include -#include "comdef.h" -#include "diagcmd.h" -#include "ftm_wlan.h" -#include "ftm_dbg.h" -#include "ftm_iot.h" -#ifdef IPQ_AP_HOST_IOT_QCA402X -#include "diag_api.h" -#endif /* IPQ_AP_HOST_IOT_QCA402X */ -#ifdef IPQ_AP_HOST_IOT_IPQ -#include "btdaemon.h" -#endif /* IPQ50XX, IPQ95XX */ - -#define NHDLC_TERM 126 -#define NHDLC_VERSION 1 -#define NHDLC_TERM_SIZE 1 -#define FLASH_CMD_ID_POS 1 -#define MAX_BUF_SIZE 2048 -#define WAIT_TIME_MS 100 -#define SUBSYS_CMD_ID_POS 2 -#define RESERVED_CMD_ID 0 -#define DUT_INTERFACE_SELECT 1 -#define DUT_INTERFACE_ID_POS 4 -#define DUT_INTERFACE_SELECT_POS 10 -#define DIAG_HDR_LEN (sizeof(diag_nonhdlc_hdr_t) + NHDLC_TERM_SIZE) -#define FTM_IOT_LOG_HEADER_SIZE sizeof(ftm_iot_log_pkt_type) - -#define MEMSET_RESET_VALUE 0 -#define DIAG_HEADER_SIZE 12 - -extern void diagpkt_free(void *pkt); - -void print_array(uint8_t *addr, int len) -{ - int i; - int line = 1; - for (i = 0; i < len; i++) { - if (i == (line * 80)) { - DPRINTF(FTM_DBG_TRACE, "\n"); - line++; - } - DPRINTF(FTM_DBG_TRACE, "%02X ", addr[i]); - } - DPRINTF(FTM_DBG_TRACE, "\n"); -} -#ifdef IPQ_AP_HOST_IOT_QCA402X -/*=========================================================================== - FUNCTION iot_thr_func_qca402x - - DESCRIPTION - Continously polls QCA402X for asynchronous data responses and - logs receievd asynchronous data responses to Diag module using - log-submit() - - DEPENDENCIES - NIL - - RETURN VALUE - Returns NULL on failure. Function also exits with NULL return value - when main indicates that this thread should be stopped - - SIDE EFFECTS - NONE - - ===========================================================================*/ -void *iot_thr_func_qca402x(void *hdl) -{ - int bytes = 0; - void *rsp2 = NULL; - int diag_hdr_len = DIAG_HDR_LEN ; - void *new_iot_ftm_rsp2_pkt = NULL; - - if (!hdl) { - DPRINTF(FTM_DBG_ERROR, "Invalid iotd handle\n"); - return NULL; - } - - new_iot_ftm_rsp2_pkt = malloc(MAX_BUF_SIZE); - if (!new_iot_ftm_rsp2_pkt) { - DPRINTF(FTM_DBG_ERROR, "Could not allocate response packet \n"); - return NULL; - } - - while(1) { - - if (thread_stop == 1) { - DPRINTF(FTM_DBG_TRACE, "FTMd: Exiting thread.\n"); - break; - } - - memset(new_iot_ftm_rsp2_pkt, MEMSET_RESET_VALUE, MAX_BUF_SIZE); - sem_wait(&iot_sem); - - /*If we recieve a response from QCA402X, allocate a buffer using diag alloc with correct - subsystem code and length */ - while ((bytes = diag_recv(hdl, (uint8_t *)new_iot_ftm_rsp2_pkt, - MAX_BUF_SIZE, - WAIT_TIME_MS)) >= 0) { - if (bytes > MAX_BUF_SIZE || bytes <= diag_hdr_len) { - DPRINTF(FTM_DBG_ERROR, "Could not allocate async log response packet\n"); - free (new_iot_ftm_rsp2_pkt); - return NULL; - } - - rsp2 = diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, ftm_iot_cmd_code, (bytes - diag_hdr_len)); - if (!rsp2) { - DPRINTF(FTM_DBG_ERROR, "Could not allocate async log response packet\n"); - free (new_iot_ftm_rsp2_pkt); - return NULL; - } - - /* Remove NHDLC header from recieved packet and store contents in - buffer allocated above */ - memcpy(rsp2, (new_iot_ftm_rsp2_pkt + diag_hdr_len - NHDLC_TERM_SIZE), - (bytes - diag_hdr_len)); - - DPRINTF(FTM_DBG_TRACE, "FTMd: Asynchronous Data response has been sent.\n"); - print_array((uint8_t *)rsp2, (bytes - diag_hdr_len) ); - - /*Remove an additional 4 bytes of header and log packet to diag module - asynchronously for further processing*/ - log_submit(rsp2 + diag_hdr_len - NHDLC_TERM_SIZE); - diagpkt_free (rsp2); - memset(new_iot_ftm_rsp2_pkt, MEMSET_RESET_VALUE, MAX_BUF_SIZE); - } - - sem_post(&iot_sem_async); - } - - free (new_iot_ftm_rsp2_pkt); - diagpkt_free (rsp2); - pthread_exit(NULL); -} - -/*=========================================================================== - FUNCTION ftm_iot_dispatch_qca402x - - DESCRIPTION - Function processes WIN IOT specific requests and relays to - QCA402x FTM layer for further processing. Recieves response - buffer from QCA402x and returns buffer meant for diag call back - - This function handles NHDLC to HDLC translation and vice-versa - before sending and receivng buffers to QCA402X FTM layer - - DEPENDENCIES - NIL - - RETURN VALUE - Returns back buffer that is meant for diag callback - - SIDE EFFECTS - NONE - - ===========================================================================*/ - -void *ftm_iot_dispatch_qca402x(void *iot_ftm_pkt, int pkt_len, void *hdl) -{ - int diag_hdr_len = DIAG_HDR_LEN; - int ret = 0; - byte *payload_ptr = NULL; - void *rsp1 = NULL; - ftm_iot_req_pkt_type *new_iot_ftm_pkt = NULL; - void *new_iot_ftm_rsp_pkt = NULL; - char command[50] = {'\0'}; - uint16_t *ftm_iot_flash_ptr = NULL; - uint16 ftm_iot_flash_cmd_code = 0; - /* The new packet length will be length of original request packet - + size of NHDLC header + 1 byte of termination character */ - int new_pkt_len = pkt_len + diag_hdr_len; - - if (!iot_ftm_pkt || !pkt_len || !hdl) { - DPRINTF(FTM_DBG_ERROR, "Invalid ftm iot request packet or iotd handle\n"); - return NULL; - } - - new_iot_ftm_pkt = malloc(sizeof(ftm_iot_req_pkt_type) + pkt_len + NHDLC_TERM_SIZE); - if (!new_iot_ftm_pkt) { - DPRINTF(FTM_DBG_ERROR, "Could not create new ftm iot request packet\n"); - return NULL; - } - memset(new_iot_ftm_pkt, MEMSET_RESET_VALUE, (sizeof(ftm_iot_req_pkt_type) + pkt_len + NHDLC_TERM_SIZE)); - - new_iot_ftm_rsp_pkt = malloc(MAX_BUF_SIZE); - if (!new_iot_ftm_rsp_pkt) { - DPRINTF(FTM_DBG_ERROR, "Could not create new ftm iot response packet\n"); - free (new_iot_ftm_pkt); - return NULL; - } - memset(new_iot_ftm_rsp_pkt, MEMSET_RESET_VALUE, MAX_BUF_SIZE); - - /* Add Non-HDLC header to request packet - and populate NHDLC header*/ - new_iot_ftm_pkt->hdr.start = NHDLC_TERM; - new_iot_ftm_pkt->hdr.version = NHDLC_VERSION; - new_iot_ftm_pkt->hdr.length = pkt_len; - memcpy(&(new_iot_ftm_pkt->payload), iot_ftm_pkt, pkt_len); - payload_ptr = (byte *) &(new_iot_ftm_pkt->payload); - *( payload_ptr + pkt_len) = NHDLC_TERM; - ftm_iot_cmd_code = *(payload_ptr + SUBSYS_CMD_ID_POS); - ftm_iot_dut_interface_code = *(payload_ptr + DUT_INTERFACE_ID_POS); - ftm_iot_reserved_code = *(payload_ptr + SUBSYS_CMD_ID_POS + 1); - ftm_iot_flash_ptr = (uint16_t *) &(new_iot_ftm_pkt->payload); - ftm_iot_flash_cmd_code = *(ftm_iot_flash_ptr + FLASH_CMD_ID_POS); - /*Print packet after adding headers */ - DPRINTF(FTM_DBG_TRACE, "FTMd: Request Packet of size %d bytes sent:\n", new_pkt_len); - print_array((uint8_t *)new_iot_ftm_pkt, new_pkt_len); - - /*If the request packet it a DUT interface selection command, - update interface number and return a response packet that - is an encho of the request packet. ( In the case of multiple - QCA402x DUT attaches on IPQ platforms) */ - if (((ftm_iot_cmd_code == MFG_CMD_ID_BLE_HCI) || (ftm_iot_cmd_code == MFG_CMD_ID_I15P4_HMI)) - && (ftm_iot_dut_interface_code == DUT_INTERFACE_SELECT) - && (ftm_iot_reserved_code == RESERVED_CMD_ID)){ - interface = *(payload_ptr + DUT_INTERFACE_SELECT_POS) - 1; - if (interface < 0) { - DPRINTF(FTM_DBG_ERROR, "Invalid DUT interface selection command\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - rsp1 = diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, ftm_iot_cmd_code, pkt_len); - if (!rsp1){ - DPRINTF(FTM_DBG_ERROR, "Could not allocate response packet for interface selection\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - memcpy(rsp1, iot_ftm_pkt, pkt_len); - - DPRINTF(FTM_DBG_TRACE, "FTMd: The DUT interface selected is %d \n",interface); - DPRINTF(FTM_DBG_TRACE, "FTMd: DUT interface resp packet of size %d bytes sent:\n",pkt_len); - print_array((uint8_t *)rsp1, pkt_len); - - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - - /*This resp pointer will be freed by diag later*/ - return rsp1; - } - - /*If the request packet is a MFG PROG command, - launch flash script and return a response packet that indicates - flashing mode of QCA402x is enabled or disabled */ - if ((ftm_iot_flash_cmd_code == MFG_CMD_ID_MISC_PROG_MODE)){ - - if (ftm_iot_dut_interface_code == MFG_FLASH_ON){ - strlcpy(command, "/usr/bin/qca402x_flash.sh flash on", sizeof(command)); - } - - if (ftm_iot_dut_interface_code == MFG_FLASH_OFF){ - strlcpy(command, "/usr/bin/qca402x_flash.sh flash off", sizeof(command)); - } - - if (ftm_iot_dut_interface_code == MFG_USB_OFF){ - strlcpy(command, "/usr/bin/qca402x_flash.sh usb-select off", sizeof(command)); - } - - if (ftm_iot_dut_interface_code == MFG_USB_ON){ - strlcpy(command, "/usr/bin/qca402x_flash.sh usb-select on", sizeof(command)); - } - - if (ftm_iot_dut_interface_code == MFG_EDL_OFF){ - strlcpy(command, "/usr/bin/qca402x_flash.sh edl off", sizeof(command)); - } - - if (ftm_iot_dut_interface_code == MFG_EDL_ON){ - strlcpy(command, "/usr/bin/qca402x_flash.sh edl on", sizeof(command)); - } - - /*Return with NULL if string is empty or packet length is less than - 10 for a DUT interface selection command to make sure there will be - no out of bound access */ - if ( (command[0] == '\0') || (pkt_len <= DUT_INTERFACE_ID_POS) ) { - DPRINTF(FTM_DBG_ERROR, "Error: Invalid MFG Program command\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - system(command); - DPRINTF(FTM_DBG_TRACE, "\n FTMd: Sent system command: %s \n", command); - - /* Check of size for packet pointed to by payload_ptr has been done above - using pkt_len to make sure there is no out of bound access */ - - *(payload_ptr + DUT_INTERFACE_ID_POS) = MFG_PROG_RESP; - - rsp1 = diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, ftm_iot_cmd_code, pkt_len); - if (!rsp1){ - DPRINTF(FTM_DBG_ERROR, "Could not allocate response packet for MFG flash commands\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - memcpy(rsp1, payload_ptr, pkt_len); - - DPRINTF(FTM_DBG_TRACE, "FTMd: MFG Flash resp packet of size %d bytes sent:\n",pkt_len); - print_array((uint8_t *)rsp1, pkt_len); - - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - - /*This resp pointer will be freed by diag later*/ - return rsp1; - } - - sem_wait(&iot_sem_async); - /* Call IPQ-QCA402x diag APIs */ - ret = diag_send(hdl, interface, (uint8_t *)new_iot_ftm_pkt, new_pkt_len); - if ((ret < 0) || (ret > MAX_BUF_SIZE)) { - DPRINTF(FTM_DBG_ERROR, "Could not send the request packet to QCA402x \n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - ret = diag_recv(hdl, (uint8_t *)new_iot_ftm_rsp_pkt, MAX_BUF_SIZE, WAIT_TIME_MS); - if ((ret < 0) || (ret > MAX_BUF_SIZE) || (ret <= diag_hdr_len)) { - DPRINTF(FTM_DBG_ERROR, "Could not recieve packet from QCA402x\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - DPRINTF(FTM_DBG_TRACE,"Received Command Response of %d bytes\n",ret); - print_array((uint8_t *)new_iot_ftm_rsp_pkt, ret); - - rsp1 = diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, ftm_iot_cmd_code, (ret - diag_hdr_len)); - if (!rsp1){ - DPRINTF(FTM_DBG_ERROR, "Could not allocate response packet\n"); - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - return NULL; - } - - memcpy(rsp1, (new_iot_ftm_rsp_pkt + diag_hdr_len - NHDLC_TERM_SIZE), (ret - diag_hdr_len)); - - free (new_iot_ftm_pkt); - free (new_iot_ftm_rsp_pkt); - sem_post(&iot_sem); - - /*This resp pointer will be freed by diag module later*/ - return (void *)rsp1; -} -#endif /* IPQ_AP_HOST_IOT_QCA402X */ - -#ifdef IPQ_AP_HOST_IOT_IPQ -/*=========================================================================== - FUNCTION iot_thr_func_ipq - - DESCRIPTION - Continously polls IPQ BTSS for asynchronous data responses and - logs received asynchronous data responses to Diag module using - log-submit() - - DEPENDENCIES - NIL - - RETURN VALUE - Returns NULL on failure. Function also exits with NULL return value - when main indicates that this thread should be stopped - - SIDE EFFECTS - NONE - -===========================================================================*/ - -void *iot_thr_func_ipq(void *hdl) -{ - int bytes_read = 0, handle = 0; - void *buffer = NULL; - void *rsp = NULL; - struct timespec ts; - ftm_bt_rsp_pkt_type *ftm_async_pkt; - - buffer = malloc(MAX_BUF_SIZE); - if (!buffer) - { - DPRINTF(FTM_DBG_ERROR, "Could not allocate memory to the buffer \n"); - return NULL; - } - - memset(buffer, MEMSET_RESET_VALUE, MAX_BUF_SIZE); - - if(hdl == NULL || *((int*)hdl) < 0) - { - DPRINTF(FTM_DBG_ERROR, "\n Invalid Handle received from BTSS \n"); - free(buffer); - return NULL; - } - - handle = *((int*)hdl); - while(1) - { - if (thread_stop == 1) { - DPRINTF(FTM_DBG_TRACE, "FTMd: Exiting thread.\n"); - break; - } - - if (clock_gettime(CLOCK_REALTIME, &ts) == -1) - { - DPRINTF(FTM_DBG_ERROR, "clock_gettime"); - free(buffer); - return NULL; - } - ts.tv_sec += user_sem_wait_timeout; - sem_timedwait(&iot_sem, &ts); - while((bytes_read = bt_daemon_receive(handle, &buffer)) > 0) - { - /* - * Checking for log status on the packets received - * ignore the received packets incase of disabled logging - */ - if(log_status(LOG_BT_HCI_EV_C)) - { - rsp = log_alloc(LOG_BT_HCI_EV_C, (DIAG_HEADER_SIZE + bytes_read)); - if (!rsp) - { - DPRINTF(FTM_DBG_ERROR, "Could not allocate rsp packet \n"); - free(buffer); - return NULL; - } - - ftm_async_pkt = (ftm_bt_rsp_pkt_type*)rsp; - memcpy(ftm_async_pkt->buf, buffer, bytes_read); - DPRINTF(FTM_DBG_TRACE, "\n Printing the Async Packet sent to QDART\n"); - print_array((uint8_t *)rsp, (DIAG_HEADER_SIZE + bytes_read)); - - log_submit(rsp); - log_free(rsp); - memset(buffer, MEMSET_RESET_VALUE, MAX_BUF_SIZE); - } - } - sem_post(&iot_sem_async); - } - free(buffer); - pthread_exit(NULL); -} -/*=========================================================================== - FUNCTION ftm_iot_dispatch_ipq - - DESCRIPTION - Function processes WIN IOT specific requests and relays to - BTSS for further processing. Constructs response packet - and returns buffer meant for callback. - - DEPENDENCIES - NIL - - RETURN VALUE - Returns back buffer that is meant for diag callback - - SIDE EFFECTS - NONE - - ===========================================================================*/ - -void *ftm_iot_dispatch_ipq(void *iot_ftm_pkt, int pkt_len, int *hdl) -{ - void *rsp = NULL; - struct timespec ts; - int bytes_sent = -1; - - if(hdl == NULL || *hdl < 0) - { - DPRINTF(FTM_DBG_ERROR, "\n Invalid Handle received from BTSS \n"); - return NULL; - } - - if (!iot_ftm_pkt) - { - DPRINTF(FTM_DBG_ERROR, "Invalid iot_ftm_pkt received \n"); - return NULL; - } - - if (clock_gettime(CLOCK_REALTIME, &ts) == -1) - { - perror("clock_gettime"); - return NULL; - } - ts.tv_sec += user_sem_wait_timeout; - sem_timedwait(&iot_sem_async, &ts); - - DPRINTF(FTM_DBG_TRACE, "\n Request Packet received for IPQ BT\n"); - print_array((uint8_t *)iot_ftm_pkt, pkt_len); - - bytes_sent = bt_daemon_send(*hdl, iot_ftm_pkt); - if(bytes_sent < 0) - { - perror("Unable to send Request Packet to IPQ BT"); - return NULL; - } - - /* Constructing ACK Packet */ - rsp = diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, ftm_iot_cmd_code, pkt_len); - if (!rsp) - { - DPRINTF(FTM_DBG_ERROR, "\n Unable to allocate diag response packet \n"); - return NULL; - } - - memcpy(rsp, iot_ftm_pkt, pkt_len); - - DPRINTF(FTM_DBG_TRACE, "\n ACK Packet constructed in FTM layer\n"); - print_array((uint8_t *)rsp, pkt_len); - - sem_post(&iot_sem); - - /*This rsp pointer will be freed by diag later */ - return rsp; -} -#endif /* IPQ50XX, IPQ95XX */ - -void *ftm_iot_dispatch(void *iot_ftm_pkt, int pkt_len, void *hdl) -{ - void* retValue = NULL; -#ifdef IPQ_AP_HOST_IOT_QCA402X - retValue = ftm_iot_dispatch_qca402x(iot_ftm_pkt, pkt_len ,hdl); -#endif -#ifdef IPQ_AP_HOST_IOT_IPQ - retValue = ftm_iot_dispatch_ipq(iot_ftm_pkt, pkt_len ,(int *)hdl); -#endif /* IPQ50XX, IPQ95XX */ - return retValue; -} - -#endif /*ifdef IPQ_AP_HOST_IOT*/ diff --git a/feeds/ipq95xx/ftm/src/ftm_iot.h b/feeds/ipq95xx/ftm/src/ftm_iot.h deleted file mode 100755 index 7e40af788..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_iot.h +++ /dev/null @@ -1,132 +0,0 @@ -/* - *Copyright (c) 2018-2020, 2022 Qualcomm Technologies, Inc. - * - *All Rights Reserved. - *Confidential and Proprietary - Qualcomm Technologies, Inc. - */ - -/* IPQ-QCA402X specific file */ -#ifdef IPQ_AP_HOST_IOT - -#include -#include -#include "diagpkt.h" -#include "log.h" - -#define MFG_CMD_ID_BLE_HCI 4 -#define MFG_CMD_ID_I15P4_HMI 5 -#define MFG_CMD_ID_OTP_INVALID 256 -#define MFG_CMD_ID_OTP_SET_BITS 257 -#define MFG_CMD_ID_OTP_WRITE_BYTE 258 -#define MFG_CMD_ID_OTP_READ_BYTE 259 -#define MFG_CMD_ID_OTP_TLV_INIT 260 -#define MFG_CMD_ID_OTP_TLV_READ 261 -#define MFG_CMD_ID_OTP_TLV_WRITE 262 -#define MFG_CMD_ID_OTP_TLV_STATUS 263 -#define MFG_CMD_ID_OTP_TLV_DELETE 264 - -#define MFG_CMD_ID_RAWFLASH_INVALID 288 -#define MFG_CMD_ID_RAWFLASH_CLEAR_BITS 289 -#define MFG_CMD_ID_RAWFLASH_WRITE 290 -#define MFG_CMD_ID_RAWFLASH_READ 291 -#define MFG_CMD_ID_RAWFLASH_ERASE 292 -#define MFG_CMD_ID_RAWFLASH_DISABLE_MFG 293 - -#define MFG_CMD_ID_FS_INVALID 304 -#define MFG_CMD_ID_FS_READ 305 -#define MFG_CMD_ID_FS_WRITE 306 -#define MFG_CMD_ID_FS_DELETE 307 -#define MFG_CMD_ID_FS_LIST_SETUP 308 -#define MFG_CMD_ID_FS_LIST_NEXT 309 -#define MFG_CMD_ID_FS_MOUNT 310 -#define MFG_CMD_ID_FS_UNMOUNT 311 - -/* Add more MFG tool commands for QCA402x. These -command are interpreted internally within QCA402x */ -#define MFG_CMD_ID_MISC_REBOOT 352 -#define MFG_CMD_ID_MISC_ADDR_READ 353 -#define MFG_CMD_ID_MISC_ADDR_WRITE 354 -#define MFG_CMD_ID_MISC_HWSS_DONE 355 -#define MFG_CMD_ID_MISC_XTAL_CAP_SET 356 -#define MFG_CMD_ID_MISC_PART_SZ_GET 357 - -/* Add MFG tool command to enable flashing of QCA402x -by putting QCA402x in EDL mode and selecting USB mux -select option to tie USB port 81 on IPQ402x to QCA402x */ -#define MFG_CMD_ID_MISC_PROG_MODE 358 - -/*Command to invalidate specified QCA402x Imageset */ -#define MFG_CMD_ID_MISC_FWUP 359 -/* Add MFG tool PROG_MODE subcommands to enable flashing -of QCA402x on IPQ807x. Interpretation of sub-commands is as -follows: - -MFG_FLASH_ON - Put QCA402x into reset state, Put QCA402x in -EDL mode and enable USB port to be tied to QCA402x - -MFG_FLASH_OFF - Pull QCA402x out of EDL mode and Pull QCA402x -out of reset - -MFG_EDL_ON - Put QCA402x in EDL mode - -MFG_FLASH_OFF - Pull QCA402x out of EDL mode - -MFG_USB_ON - Enable USB port to be tied to QCA402x - -MFG_USB_OFF - Enable USB port to be tied to IPQ807x - -MFG_PROG_RESP - Expected response field -*/ - -enum flash_state { - MFG_PROG_RESP, - MFG_FLASH_ON, - MFG_FLASH_OFF, - MFG_EDL_ON, - MFG_EDL_OFF, - MFG_USB_ON, - MFG_USB_OFF -}; - -typedef struct -{ - uint8 start; - uint8 version; - uint16 length; -} PACKED_STRUCT diag_nonhdlc_hdr_t; - -typedef struct -{ - diag_nonhdlc_hdr_t hdr; - byte payload[0]; -} PACKED_STRUCT ftm_iot_req_pkt_type; - -typedef struct -{ - log_hdr_type hdr; - byte buf[1]; -} PACKED_STRUCT ftm_bt_rsp_pkt_type; - -/* Two semaphores are used to handle sequencing of requests, ack responses -and multiple asynchronous data responses from QCA402x */ - -sem_t iot_sem; -sem_t iot_sem_async; - -int ftm_iot_cmd_code; -int ftm_iot_dut_interface_code; -int ftm_iot_reserved_code; -int interface; -int thread_stop; -extern int user_sem_wait_timeout; - -void *ftm_iot_dispatch(void *iot_ftm_pkt, int pkt_len, void *hdl); -#ifdef IPQ_AP_HOST_IOT_QCA402X -void *ftm_iot_dispatch_qca402x(void *iot_ftm_pkt, int pkt_len, void *hdl); -void *iot_thr_func_qca402x(void *hdl); -#endif -#ifdef IPQ_AP_HOST_IOT_IPQ -void *ftm_iot_dispatch_ipq(void *iot_ftm_pkt, int pkt_len, int *hdl); -void *iot_thr_func_ipq(void *hdl); -#endif /* IPQ50XX, IPQ95XX */ -#endif /*ifdef IPQ_AP_HOST_IOT*/ diff --git a/feeds/ipq95xx/ftm/src/ftm_main.c b/feeds/ipq95xx/ftm/src/ftm_main.c deleted file mode 100755 index ee9034d90..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_main.c +++ /dev/null @@ -1,1060 +0,0 @@ -/* Copyright (c) 2018-2020, 2022 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. -*/ - -/*========================================================================== - - FTM Main Task Source File - -Description - Unit test component file for regsitering the routines to Diag library - for BT and FTM commands - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -06/18/10 rakeshk Created a source file to implement routines for - registering the callback routines for FM and BT FTM - packets -07/06/10 rakeshk changed the name of FM common header file in inclusion -07/07/10 rakeshk Removed the sleep and wake in the main thread loop -===========================================================================*/ -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#ifndef WIN_AP_HOST -#include -#endif -#include -#include -#ifndef WIN_AP_HOST -#include -#endif -#ifndef ANDROID -#include -#include -#endif -#ifndef WIN_AP_HOST -#include "hidl_client.h" -#endif -/* Diag related header files */ -#include "event.h" -#include "msg.h" -#include "log.h" -#include "diag_lsm.h" -#include "diagpkt.h" -#include "diagcmd.h" -#include "diag.h" - -#ifdef WIN_AP_HOST_OPEN -#include "signal.h" -#include "libtcmd.h" -#endif -#include "ftm_dbg.h" -#include "ftm_wlan.h" -#include "ftm_common.h" -#include "ftm_ant_common.h" -#ifndef WIN_AP_HOST -#ifdef CONFIG_FTM_BT -#include "ftm_bt_hci_pfal.h" -#endif -#ifdef CONFIG_FTM_FM -#include "ftm_fm_pfal.h" -#endif - -#include "ftm_nfc.h" -#endif -#ifdef USE_GLIB -#include -#define strlcat g_strlcat -#define strlcpy g_strlcpy -#endif - -#ifdef IPQ_AP_HOST_IOT -#include -#include "ftm_iot.h" -#ifdef IPQ_AP_HOST_IOT_QCA402X -#include "diag_api.h" -#endif /* Including IPQ-QCA402x specific headerfiles */ -#endif - -extern void hidl_client_close(); -int boardtype = 8660; -int first_ant_command; - -int fm_passthrough = 0; -int sibs_enabled = 0; -static char *progname = NULL; - -unsigned int g_dbg_level = FTM_DBG_DEFAULT; - -/* Sempahore Timeout Period set for 5 seconds */ -int user_sem_wait_timeout = 5; - -struct ftm_config ftm_cfg; - -#define SHOW_PRIO 1 -#define SHOW_TIME 2 -#define SHOW_POLICY 4 -#define SHOW_CPU 8 -#define SHOW_MACLABEL 16 -#define ARRAY_SIZE(a) (sizeof(a) / sizeof(*a)) - -#ifndef WIN_AP_HOST -#ifndef ANDROID -#define SOCKETNAME "/etc/bluetooth/btprop" -static int sk; -#endif -#endif - -#ifdef CONFIG_FTM_BT -/* Semaphore to monitor the completion of -* the queued command before sending down the -* next HCI cmd -*/ -sem_t semaphore_cmd_complete; -/* Semaphore to monitor whether a command -* is queued before proceeding to dequeue -* the HCI packet -*/ -sem_t semaphore_cmd_queued; - -typedef enum { - BT_SOC_DEFAULT = 0, - BT_SOC_SMD = BT_SOC_DEFAULT, - BT_SOC_AR3K, - BT_SOC_ROME, - BT_SOC_CHEROKEE, - BT_SOC_NAPIER, - /* Add chipset type here */ - BT_SOC_RESERVED -} bt_soc_type; - -int soc_type; - -/* Diag pkt table for BT */ -static const diagpkt_user_table_entry_type bt_ftm_diag_func_table[] = -{ - {FTM_BT_CMD_CODE, FTM_BT_CMD_CODE, bt_ftm_diag_dispatch}, -}; -#endif /* CONFIG_FTM_BT */ - -#ifdef DEBUG -void current_time() -{ - - struct timeval curTime; - time_t now; - int milli, usec; - struct tm timeinfo; - char buffer[80]; - char currentTime[84] = ""; - gettimeofday(&curTime, NULL); - now = curTime.tv_sec; - milli = curTime.tv_usec / 1000; - usec = curTime.tv_usec; - localtime_r(&now, &timeinfo); - strftime(buffer, sizeof(buffer), "%Y-%m-%d %H:%M:%S", &timeinfo); - snprintf(currentTime, sizeof(currentTime), "%s:%03d:%06d", buffer, milli, usec); - DPRINTF(FTM_DBG_TRACE, "Time:%s\n", currentTime); - -} -#endif /* DEBUG */ - - - -#ifdef CONFIG_FTM_FM -/* Callback declaration for BT FTM packet processing */ -void *fm_ftm_diag_dispatch (void *req_pkt, uint16 pkt_len); - -/* Diag pkt table for FM */ -static const diagpkt_user_table_entry_type fm_ftm_diag_func_table[] = -{ - {FTM_FM_CMD_CODE, FTM_FM_CMD_CODE, fm_ftm_diag_dispatch}, -}; -#endif /* CONFIG_FTM_FM */ - -#ifdef CONFIG_FTM_ANT -/* Callback declaration for ANT FTM packet processing */ -void *ant_ftm_diag_dispatch(void *req_pkt, uint16 pkt_len); - -/*Diag pkt table for ANT */ -static const diagpkt_user_table_entry_type ant_ftm_diag_func_table[] = -{ - {FTM_ANT_CMD_CODE, FTM_ANT_CMD_CODE, ant_ftm_diag_dispatch} -}; -#endif /* CONFIG_FTM_ANT */ - -#ifdef CONFIG_FTM_WLAN -/* Callback declaration for WLAN FTM packet processing */ -void * wlan_ftm_diag_dispatch (void *req_pkt, - uint16 pkt_len); - -/* Diag pkt table for WLAN */ -static const diagpkt_user_table_entry_type wlan_ftm_diag_func_table[] = -{ - {FTM_WLAN_CMD_CODE, FTM_WLAN_CMD_CODE, wlan_ftm_diag_dispatch} -}; -#endif - -#ifdef IPQ_AP_HOST_IOT -/*IPQ-QCA402x specific diag API handler*/ -void *iotd_desc; -#ifdef IPQ_AP_HOST_IOT_IPQ -int btss_desc; -extern int btss_init(); -extern void btss_deinit(); -#endif /* IPQ50XX, IPQ95XX*/ -/* Callback declaration for IPQ-QCA402x FTM packet processing */ -void *iot_ftm_diag_dispatch (void *req_pkt, - uint16 pkt_len); - - - /* Diag pkt table for IPQ-QCA402X */ - static const diagpkt_user_table_entry_type iot_ftm_diag_func_table[] = - { - {MFG_CMD_ID_BLE_HCI, MFG_CMD_ID_BLE_HCI, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_I15P4_HMI, MFG_CMD_ID_I15P4_HMI, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_WRITE_BYTE, MFG_CMD_ID_OTP_WRITE_BYTE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_READ_BYTE, MFG_CMD_ID_OTP_READ_BYTE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_INVALID, MFG_CMD_ID_OTP_INVALID, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_SET_BITS, MFG_CMD_ID_OTP_SET_BITS, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_TLV_INIT, MFG_CMD_ID_OTP_TLV_INIT, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_TLV_READ, MFG_CMD_ID_OTP_TLV_READ, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_TLV_WRITE, MFG_CMD_ID_OTP_TLV_WRITE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_TLV_STATUS, MFG_CMD_ID_OTP_TLV_STATUS, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_OTP_TLV_DELETE, MFG_CMD_ID_OTP_TLV_DELETE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_INVALID, MFG_CMD_ID_FS_INVALID, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_READ, MFG_CMD_ID_FS_READ, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_WRITE, MFG_CMD_ID_FS_WRITE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_DELETE, MFG_CMD_ID_FS_DELETE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_LIST_SETUP, MFG_CMD_ID_FS_LIST_SETUP, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_LIST_NEXT, MFG_CMD_ID_FS_LIST_NEXT, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_MOUNT, MFG_CMD_ID_FS_MOUNT, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_FS_UNMOUNT, MFG_CMD_ID_FS_UNMOUNT, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_REBOOT, MFG_CMD_ID_MISC_REBOOT, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_ADDR_READ, MFG_CMD_ID_MISC_ADDR_READ, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_ADDR_WRITE, MFG_CMD_ID_MISC_ADDR_WRITE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_HWSS_DONE, MFG_CMD_ID_MISC_HWSS_DONE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_XTAL_CAP_SET, MFG_CMD_ID_MISC_XTAL_CAP_SET, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_PART_SZ_GET, MFG_CMD_ID_MISC_PART_SZ_GET, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_PROG_MODE, MFG_CMD_ID_MISC_PROG_MODE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_MISC_FWUP, MFG_CMD_ID_MISC_FWUP, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_INVALID, MFG_CMD_ID_RAWFLASH_INVALID, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_CLEAR_BITS, MFG_CMD_ID_RAWFLASH_CLEAR_BITS, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_READ, MFG_CMD_ID_RAWFLASH_READ, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_WRITE, MFG_CMD_ID_RAWFLASH_WRITE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_ERASE, MFG_CMD_ID_RAWFLASH_ERASE, iot_ftm_diag_dispatch}, - {MFG_CMD_ID_RAWFLASH_DISABLE_MFG, MFG_CMD_ID_RAWFLASH_DISABLE_MFG, iot_ftm_diag_dispatch}, - }; - -#endif /*ifdef IPQ_AP_HOST_IOT*/ - -#ifdef CONFIG_FTM_NFC -/* Callback declaration for NFC FTM packet processing */ -void *nfc_ftm_diag_dispatch (void *req_pkt, uint16 pkt_len); - -/*Diag pkt table for NFC */ -static const diagpkt_user_table_entry_type nfc_ftm_diag_func_table[] = -{ - {FTM_NFC_CMD_CODE, FTM_NFC_CMD_CODE, nfc_ftm_diag_dispatch} -}; -#endif /* CONFIG_FTM_NFC */ -#ifdef WIN_AP_HOST_OPEN -static void signal_handler(int32_t signum) -{ - printf("FTM Daemon Exit called signal %d\n", signum ); - tcmd_tx_stop(); - exit(0); -} -#endif - -#ifdef CONFIG_FTM_BT -#ifndef WIN_AP_HOST -#ifndef ANDROID -/* set up Socket connection to btproperty */ -int prop_get(const char *key, char *value, const char *default_value) -{ - char prop_string[200]; - int ret, bytes_read = 0, i = 0; - sprintf(prop_string, "get_property %s,", key); - ret = send(sk, prop_string, strlen(prop_string), 0); - memset(value, 0, sizeof(value)); - do - { - bytes_read = recv(sk, &value[i], 1, 0); - if (bytes_read == 1) - { - if (value[i] == ',') - { - value[i] = '\0'; - break; - } - i++; - } - } while(1); - ALOGI("property_get_bt: key(%s) has value: %s", key, value); - if (bytes_read) { - return 0; - } else { - strncpy(value, default_value, strlen(default_value)); - return 1; - } -} - -int prop_set(const char *key, const char *value) -{ - char prop_string[200]; - int ret; - sprintf(prop_string, "set_property %s %s,", key, value); - ALOGI("property_set_bt: setting key(%s) to value: %s\n", key, value); - ret = send(sk, prop_string, strlen(prop_string), 0); - return 0; -} - -int bt_property_init(void) -{ - int len; /* length of sockaddr */ - struct sockaddr_un name; - if( (sk = socket(AF_UNIX, SOCK_STREAM, 0) ) < 0) { - perror("socket"); - exit(1); - } - /*Create the address of the server.*/ - memset(&name, 0, sizeof(struct sockaddr_un)); - name.sun_family = AF_UNIX; - strlcpy(name.sun_path, SOCKETNAME, sizeof(name.sun_path)); - ALOGI("connecting to %s, fd = %d", SOCKETNAME, sk); - len = sizeof(name.sun_family) + strlen(name.sun_path); - /*Connect to the server.*/ - if (connect(sk, (struct sockaddr *) &name, len) < 0){ - perror("connect"); - exit(1); - } -#if (BT_SOC_TYPE_ROME || BT_SOC_TYPE_CHEROKEE) - prop_set("qcom.bluetooth.soc", "rome"); -#else - prop_set("qcom.bluetooth.soc", "pronto"); -#endif -} -#endif - -/* Get Bluetooth SoC type from system setting */ -static int get_bt_soc_type(void) -{ - int ret = 0; - char bt_soc_type[PROPERTY_VALUE_MAX]; - - ALOGI("bt-hci: get_bt_soc_type"); -#ifdef ANDROID - ret = property_get("qcom.bluetooth.soc", bt_soc_type, NULL); - if (ret != 0) { -#else - ret = prop_get("qcom.bluetooth.soc", bt_soc_type, NULL); - if (ret == 0) { -#endif - ALOGI("qcom.bluetooth.soc set to %s\n", bt_soc_type); - if (!strncasecmp(bt_soc_type, "rome", sizeof("rome"))) { - return BT_SOC_ROME; - } - else if (!strncasecmp(bt_soc_type, "cherokee", sizeof("cherokee"))) { - return BT_SOC_CHEROKEE; - } - else if (!strncasecmp(bt_soc_type, "pronto", sizeof("pronto"))) { - return BT_SOC_DEFAULT; - } - else if (!strncasecmp(bt_soc_type, "ath3k", sizeof("ath3k"))) { - return BT_SOC_AR3K; - } - else if(!strncasecmp(bt_soc_type, "napier", sizeof("napier"))) { - return BT_SOC_NAPIER; - } - else { - ALOGI("qcom.bluetooth.soc not set, so using default.\n"); - return BT_SOC_DEFAULT; - } - } - else { - ALOGE("%s: Failed to get soc type", __FUNCTION__); - ret = BT_SOC_DEFAULT; - } - - return ret; -} -#endif //ifndef WIN_AP_HOST -#endif //ifdef CONFIG_FTM_BT - -/*=========================================================================== -FUNCTION ioctl_write - -DESCRIPTION - Helper function to package the ioctl messages and send it to the I2C driver - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ - -static int ioctl_readwrite(int fd, struct i2c_msg *msgs, int nmsgs) -{ - struct i2c_rdwr_ioctl_data msgset = - { - .msgs = msgs, - .nmsgs = nmsgs, - }; - - if ((fd < 0) || (NULL == msgs) || (nmsgs <= 0)) - { - return -1; - } - - if (ioctl(fd, I2C_RDWR, &msgset) < 0) - { - return -1; - } - return 0; -} -/*=========================================================================== -FUNCTION i2c_write - -DESCRIPTION - Helper function to construct the I@C request to be sent to the FM I2C - driver - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ -int i2c_write -( -int fd, -unsigned char offset, -const unsigned char* buf, -unsigned char len, -unsigned int slave_addr -) -{ - unsigned char offset_data[((1 + len) * sizeof(unsigned char))]; - struct i2c_msg msgs[] = - { - [0] = { - .addr = slave_addr, - .flags = 0, - .buf = (void *)offset_data, - .len = (1 + len) * sizeof(*offset_data), - }, - }; - - offset_data[0] = offset; - memcpy(offset_data + 1, buf, len); - - return ioctl_readwrite(fd, msgs, ARRAY_SIZE(msgs)); -} - -/*=========================================================================== -FUNCTION i2c_read - -DESCRIPTION - Helper function to construct the I2C request to read data from the FM I2C - driver - -DEPENDENCIES - NIL - -RETURN VALUE - -1 in failure,positive or zero in success - -SIDE EFFECTS - None - -===========================================================================*/ -int i2c_read -( -int fd, -unsigned char offset, -const unsigned char* buf, -unsigned char len, -unsigned int slave_addr -) -{ - unsigned char offset_data[] = {offset}; - struct i2c_msg msgs[] = - { - [0] = { - .addr = slave_addr, - .flags = 0, - .buf = (void *)offset_data, - .len = sizeof(*offset_data), - }, - [1] = { - .addr = slave_addr, - .flags = I2C_M_RD, - .buf = (void *)buf, - .len = len, - }, - }; - - return ioctl_readwrite(fd, msgs, ARRAY_SIZE(msgs)); -} - -#ifdef CONFIG_FTM_FM -/*========================================================================= -FUNCTION fm_ftm_diag_dispatch - -DESCRIPTION - Processes the request packet and sends it to the FTM FM layer for further - processing - -DEPENDENCIES - NIL - -RETURN VALUE - pointer to FTM FM Response packet - -SIDE EFFECTS - None - -===========================================================================*/ -void *fm_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - - DPRINTF(FTM_DBG_TRACE, "FM I2C Send Response = %d\n",pkt_len); - - // Allocate the same length as the request. - rsp = ftm_fm_dispatch(req_pkt,pkt_len); - return rsp; -} -#endif /* CONFIG_FTM_FM */ - -#ifdef CONFIG_FTM_ANT -/*=========================================================================== -FUNCTION ant_ftm_diag_dispatch - -DESCRIPTION - Processes the request packet and sends it to the FTM ANT layer for further - processing -DEPENDENCIES - NIL - -RETURN VALUE - pointer to FTM ANT Response packet - -SIDE EFFECTS - None - -===========================================================================*/ -void *ant_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - - DPRINTF(FTM_DBG_TRACE, "ANT diag dispatch send response = %d\n", pkt_len); - -// Allocate the same length as the request. - rsp = ftm_ant_dispatch(req_pkt,pkt_len); - return rsp; -} -#endif /* CONFIG_FTM_ANT */ - -#ifdef CONFIG_FTM_BT -/*=========================================================================== -FUNCTION bt_ftm_diag_dispatch - -DESCRIPTION - Processes the request packet and sends it to the FTM BT layer for further - processing - -DEPENDENCIES - NIL - -RETURN VALUE - pointer to FTM BT Response packet - -SIDE EFFECTS - None - -===========================================================================*/ -void *bt_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - boolean status = TRUE; - - DPRINTF(FTM_DBG_TRACE, "Send Response = %d\n",pkt_len); - - // Allocate the same length as the request. - rsp = diagpkt_subsys_alloc (DIAG_SUBSYS_FTM, FTM_BT_CMD_CODE, pkt_len); - - if (rsp != NULL) - { - memcpy ((void *) rsp, (void *) req_pkt, pkt_len); - } - /* Spurious incoming request packets are occasionally received - * by DIAG_SUBSYS_FTM which needs to be ignored and accordingly responded. - * TODO: Reason for these spurious incoming request packets is yet to be - * found, though its always found to be corresponding to this majic - * length of 65532. - */ - if (pkt_len == 65532) - { - printf("\nIgnore spurious DIAG packet processing & respond immediately"); - } - else - { - - DPRINTF(FTM_DBG_TRACE, "Insert BT packet = %d\n", pkt_len); - - /* add the BT packet into the Cmd Queue - * and notify the main thread its queued - */ - status = qinsert_cmd((ftm_bt_pkt_type *)req_pkt); - if(status == TRUE) - sem_post(&semaphore_cmd_queued); - - DPRINTF(FTM_DBG_TRACE, "Insert BT packet done\n"); - - } - return (rsp); -} -#endif /* CONFIG_FTM_BT */ - -#ifdef CONFIG_FTM_WLAN -/*=========================================================================== -FUNCTION wlan_ftm_diag_dispatch - -DESCRIPTION - Processes the request packet and sends it to the FTM WLAN layer for further - processing - -DEPENDENCIES - NIL - -RETURN VALUE - pointer to FTM WLAN Response packet - -SIDE EFFECTS - None - -===========================================================================*/ - -void * wlan_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - - DPRINTF(FTM_DBG_TRACE, "WLAN Send Response = %d\n", pkt_len); - - rsp = ftm_wlan_dispatch(req_pkt, pkt_len); - - return rsp; -} -#endif /* CONFIG_FTM_WLAN */ - -#ifdef IPQ_AP_HOST_IOT - -void *iot_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - rsp = ftm_iot_dispatch(req_pkt, pkt_len ,iotd_desc); - return rsp; -} - -#endif /*IPQ_AP_HOST_IOT*/ - -#ifdef CONFIG_FTM_NFC -/*=========================================================================== -FUNCTION nfcs_ftm_diag_dispatch - -DESCRIPTION - Processes the request packet and sends it to the FTM NFC layer for further - processing -DEPENDENCIES - NIL - -RETURN VALUE - - -SIDE EFFECTS - - -===========================================================================*/ -void *nfc_ftm_diag_dispatch -( - void *req_pkt, - uint16 pkt_len -) -{ - void *rsp = NULL; - boolean status = TRUE; - - DPRINTF(FTM_DBG_TRACE, " NFC Send Response = %d\n",pkt_len); - - /*now send the incoming nfc diag command packet to the nfc ftm layer to - get it processed*/ - rsp = ftm_nfc_dispatch(req_pkt, pkt_len); - - /* send same response as recieved back*/ - return rsp; -} -#endif /* CONFIG_FTM_NFC */ - -static void usage(void) -{ - fprintf(stderr, "\nusage: %s [options] \n" - " -n, --nodaemon do not run as a daemon\n" - " -p, --passthrough FM passthrough mode \n" - " -d show more debug messages (-dd for even more)\n" - " -s, --semaphore-timeout\n" - " set the semaphore wait timeout to value other than default (5)\n" -#ifdef CONFIG_FTM_BT - " -b, --board-type Board Type\n" -#endif -#ifdef CONFIG_FTM_WLAN - " -i \n" - " --interface=\n" - " wlan adapter name (wlan, eth, etc.) default wlan\n" -#endif -#ifdef CONFIG_FTM_NFC - " -f nfc firmware download\n" - " -t nfc test\n" -#endif - " -c FTM config file path\n" - " --help display this help and exit\n" - , progname); - exit(EXIT_FAILURE); -} - -/*=========================================================================== -FUNCTION main - -DESCRIPTION - Initialises the Diag library and registers the PKT table for FM and BT - and daemonises - -DEPENDENCIES - NIL - -RETURN VALUE - NIL, Error in the event buffer will mean a NULL App version and Zero HW - version - -SIDE EFFECTS - None - -===========================================================================*/ - -int main(int argc, char *argv[]) -{ - int c; - int i = 0; - static struct option options[] = - { - {"help", no_argument, NULL, 'h'}, -#ifdef CONFIG_FTM_WLAN - {"interface", required_argument, NULL, 'i'}, -#endif -#ifdef CONFIG_FTM_BT - {"board-type", required_argument, NULL, 'b'}, -#endif -#ifdef CONFIG_FTM_NFC - {"firmware-download", no_argument, NULL, 'f'}, - {"nfc-test", no_argument, NULL, 't'}, -#endif - {"nodaemon", no_argument, NULL, 'n'}, - {"semaphore-timeout",required_argument,NULL,'s'}, - {"passthrough", no_argument, NULL, 'p'}, - {"uart-baudrate", no_argument, NULL, 'u'}, - {"sibs", no_argument, NULL, 's'}, - {"ftm-config", required_argument, NULL, 'c'}, - {0, 0, 0, 0} - }; - int daemonize = 1; - FILE *fp = NULL; - - progname = argv[0]; - - while (1) - { - c = getopt_long(argc, argv, "hdis:npb:ftc:", options, NULL); - if (c < 0) - break; - - switch (c) - { -#ifdef CONFIG_FTM_WLAN - case 'i': - strlcpy(g_ifname, optarg, IFNAMSIZ); - break; -#endif - case 'n': - daemonize = 0; - break; - case 's': - user_sem_wait_timeout = atoi(optarg); - break; - case 'p': - fm_passthrough = 1; - daemonize = 0; -#ifndef WIN_AP_HOST - property_set("wc_transport.skip_patch_dload" , "true"); -#endif - break; - case 'd': -#ifdef DEBUG - g_dbg_level = g_dbg_level << 1 | 0x1; -#else - printf("Debugging disabled, please build with -DDEBUG option\n"); - exit(EXIT_FAILURE); -#endif - break; - -#ifdef CONFIG_FTM_BT - case 'b': - boardtype = atoi(optarg); - break; -#endif - -#ifdef CONFIG_FTM_NFC - case 'f': - ftm_nfc_dispatch_nq_fwdl(); - break; - case 't': - ftm_nfc_dispatch_nq_test( argc, argv); - break; -#endif - case 'c': - fp = fopen("/tmp/ftm.conf", "r"); - if (!fp) { - DPRINTF(FTM_DBG_ERROR, "ftm.conf open failed.\n"); - exit(EXIT_FAILURE); - } - fscanf(fp, "total_num_slots=%d\n", &ftm_cfg.total_num_slots); - for (i = 0; i < ftm_cfg.total_num_slots; i++) { - fscanf(fp, "slot_%u_size=%uk\n", &ftm_cfg.slot_id[i], &ftm_cfg.slot_size[i]); - } - fclose(fp); - break; - - case 'h': - default: - usage(); - break; - } - } - - if (optind < argc) - usage(); - - if (daemonize && daemon(0, 0)) - { - perror("daemon"); - exit(EXIT_FAILURE); - } - - DPRINTF(FTM_DBG_TRACE, "FTM Daemon calling LSM init\n"); - - if (!Diag_LSM_Init(NULL)) - { - DPRINTF(FTM_DBG_ERROR, "FTM Daemon: Diag_LSM_Init() failed\n"); - exit(EXIT_FAILURE); - } - - DPRINTF(FTM_DBG_TRACE, "FTMDaemon: Diag_LSM_Init succesful\n"); - -#ifdef CONFIG_FTM_BT -#ifndef WIN_AP_HOST -#ifndef ANDROID - bt_property_init(); -#endif - soc_type = get_bt_soc_type(); -#endif -#endif - -#ifdef CONFIG_FTM_FM - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, fm_ftm_diag_func_table); -#endif - -#ifdef CONFIG_FTM_WLAN - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, wlan_ftm_diag_func_table); -#ifdef WIN_AP_HOST_OPEN - signal(SIGINT, signal_handler); - signal(SIGTERM, signal_handler); -#endif -#endif -#ifdef IPQ_AP_HOST_IOT - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, iot_ftm_diag_func_table); - interface = 0; - thread_stop = 0; - pthread_t *iot_thr = NULL; - iotd_desc = NULL; - -#ifdef IPQ_AP_HOST_IOT_QCA402X - iotd_desc = diag_open("/iotdiag"); -#endif /* IPQ_AP_HOST_IOT_QCA402X */ -#ifdef IPQ_AP_HOST_IOT_IPQ - btss_desc = -1; - btss_desc = btss_init(); - if(btss_desc < 0) - { - DPRINTF(FTM_DBG_ERROR, "FTMd : Unable to fetch BT Devnode Descriptor \n"); - } - else - { - iotd_desc = (void *)(&btss_desc); - } -#endif /* IPQ50XX, IPQ95XX */ - if (iotd_desc != NULL) { -#ifdef IPQ_AP_HOST_IOT_QCA402X - DPRINTF(FTM_DBG_ERROR, "FTMd : FTMd has registered a handle with IOTD \n"); -#endif /* IPQ_AP_HOST_IOT_QCA402X */ - sem_init(&iot_sem, 0, 0); - sem_init(&iot_sem_async, 0, 1); - - iot_thr = (pthread_t *)malloc( sizeof(*iot_thr)); - if (!iot_thr) { - DPRINTF(FTM_DBG_ERROR, "Could not create thread for async log packets \n"); - } - else - { -#ifdef IPQ_AP_HOST_IOT_QCA402X - pthread_create(iot_thr, NULL, (void*)iot_thr_func_qca402x, (void *)iotd_desc); -#endif -#ifdef IPQ_AP_HOST_IOT_IPQ - pthread_create(iot_thr, NULL, (void*)iot_thr_func_ipq, (void *)iotd_desc); -#endif /* IPQ50XX, IPQ95XX */ - } - } - - if (iotd_desc == NULL) - { - DPRINTF(FTM_DBG_ERROR, "FTMd : IOT Daemon has not been enabled \n"); - } - -#endif /* IPQ_AP_HOST_IOT */ - -#ifdef CONFIG_FTM_ANT - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, ant_ftm_diag_func_table); -#endif - -#ifdef CONFIG_FTM_NFC - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, nfc_ftm_diag_func_table); -#endif - -#ifdef CONFIG_FTM_BT - DIAGPKT_DISPATCH_TABLE_REGISTER( DIAG_SUBSYS_FTM, bt_ftm_diag_func_table); - - sem_init(&semaphore_cmd_complete,0, 1); - sem_init(&semaphore_cmd_queued,0,0); - first_ant_command = 0; - - DPRINTF(FTM_DBG_TRACE, "Initialised the BT FTM cmd queue handlers \n"); - - do - { - struct timespec ts; - int sem_status; - /* We have the freedom to send the first request without wating - * for a command complete - */ - DPRINTF(FTM_DBG_TRACE, - "Wait on cmd complete from the previous command\n"); - if (clock_gettime(CLOCK_REALTIME, &ts) == -1) - printf("get clock_gettime error"); - ts.tv_sec += 5; - /*we wait for 5 secs for a command already queued for - * transmision - */ - sem_status = sem_timedwait(&semaphore_cmd_complete,&ts); - if(sem_status == -1) - { - printf("Command complete timed out\n"); - ftm_bt_err_timedout(); - } - - DPRINTF(FTM_DBG_TRACE, "Waiting on next Cmd to be queued\n"); - - sem_wait(&semaphore_cmd_queued); - dequeue_send(); - } - while(1); -#else /* CONFIG_FTM_BT */ -#ifdef CONFIG_FTM_FM - pthread_cond_init(&fm_event_cond, NULL); - pthread_mutex_init(&fm_event_lock, NULL); -#endif - while (1); -#endif - - DPRINTF(FTM_DBG_TRACE, "\nFTMDaemon Deinit the LSM\n"); -#ifdef CONFIG_FTM_FM - pthread_cond_destroy(&fm_event_cond); - pthread_mutex_destroy(&fm_event_lock); -#endif - -#ifdef IPQ_AP_HOST_IOT - if (iotd_desc != NULL) { - thread_stop = 1; - pthread_join(*iot_thr, NULL); - free(iot_thr); -#ifdef IPQ_AP_HOST_IOT_IPQ - btss_deinit(); -#endif/* IPQ50XX, IPQ95XX */ - } -#endif /* IPQ_AP_HOST_IOT */ - hidl_client_close(); - /* Clean up before exiting */ - Diag_LSM_DeInit(); - - exit(EXIT_SUCCESS); -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfc.c b/feeds/ipq95xx/ftm/src/ftm_nfc.c deleted file mode 100755 index 121aa4aba..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfc.c +++ /dev/null @@ -1,108 +0,0 @@ -/*========================================================================= - NFC FTM C File -Description - This file contains the definitions of the function used to check - which chip is present on the device. - -Copyright (c) 2013-2015 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ -/*=========================================================================== - Edit History -when who what, where, why --------- --- ---------------------------------------------------------- -===========================================================================*/ - -#include "ftm_nfc.h" - -CHIP_TYPE chipType = UNDEFINED_CHIP_TYPE; - -/*========================================================================= -FUNCTION checkChip - -DESCRIPTION - Checks whether it can open the NQ Kernel, if not, it means - the device has a QTI chip. - -PARAMETERS - None - -RETURN VALUE - void - -===========================================================================*/ -void checkChip( void ) -{ - int ret = 0; - - ret = ftm_nq_nfc_open( ); // can you open the NQ Kernel? - - if( ret > 0 ) // yes - { - printf( "%s: NQ CHIP \n", __func__ ); - chipType = NQ_CHIP; // so it's an NQ Chip - - ret = ftm_nq_nfc_close( ); // close the handle - if( ret != 0 ) // not successful? - { - printf( "%s: Could not close the File Handle for NQ Chip \n", __func__ ); - chipType = CHIP_ERROR; // something is wrong - } - } - else - { - printf( "%s: QTI CHIP \n", __func__ ); - chipType = QTI_CHIP; - } -} - -/*========================================================================= -FUNCTION ftm_nfc_dispatch - -DESCRIPTION - Dispatches QRCT commands and Chip Replies/Notifications/Data - to the required FTM NFC Chip Handler - -PARAMETERS - ftm_nfc_pkt_type *nfc_ftm_pkt - FTM Packet - uint16 pkt_len - FTM Packet Length - -RETURN VALUE - void * - -===========================================================================*/ -void* ftm_nfc_dispatch( ftm_nfc_pkt_type *nfc_ftm_pkt, uint16 pkt_len ) -{ - ftm_nfc_pkt_type *reply = NULL; - - if( UNDEFINED_CHIP_TYPE == chipType ) - { - printf( "%s: Checking Chip Type \n", __func__ ); - checkChip( ); - } - - switch( chipType ) - { - case NQ_CHIP: - if( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_REQ_CHIP_TYPE ) - reply = PrepareRsp( nfc_ftm_pkt ); - else - reply = ftm_nfc_dispatch_nq( nfc_ftm_pkt, pkt_len ); - break; - - case QTI_CHIP: - if( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_REQ_CHIP_TYPE ) - reply = PrepareRsp( nfc_ftm_pkt ); - else - reply = ftm_nfc_dispatch_qti( nfc_ftm_pkt, pkt_len ); - break; - - default: - printf( "%s: ERROR - THIS SHOULD HAVE NEVER BEEN REACHED, CHIP TYPE %d", __func__, chipType ); - break; - } - - return reply; -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfc.h b/feeds/ipq95xx/ftm/src/ftm_nfc.h deleted file mode 100755 index 3a48f7541..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfc.h +++ /dev/null @@ -1,37 +0,0 @@ -/*========================================================================= - NFC FTM HEADER File -Description - This file contains the definitions of the function used to check - which chip is present on the device. - -Copyright (c) 2013-2016 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ - -#ifndef _FTM_NFC -#define _FTM_NFC - -#include "ftm_nfcnq.h" - -#define NFC_QCA1990 // Defnition to enable the NFC FTM inclusion - -typedef enum _CHIP_TYPE{ - UNDEFINED_CHIP_TYPE = 0, - QTI_CHIP = 1, - NQ_CHIP = 2, - CHIP_ERROR = 3, - MAXIMUM_CHIP_TYPE = 4, -} CHIP_TYPE; - -extern CHIP_TYPE chipType; - -void* ftm_nfc_dispatch(ftm_nfc_pkt_type *ftm_nfc_pkt, uint16 pkt_len); - -void* ftm_nfc_dispatch_qti(ftm_nfc_pkt_type *ftm_nfc_pkt, uint16 pkt_len); - -void ftm_nfc_dispatch_nq_fwdl(); - -void ftm_nfc_dispatch_nq_test(int argc, char **argv); -#endif // _FTM_NFC diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq.c b/feeds/ipq95xx/ftm/src/ftm_nfcnq.c deleted file mode 100755 index 3b1f72573..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq.c +++ /dev/null @@ -1,807 +0,0 @@ -/*========================================================================= - NQ NFC FTM C File -Description - This file contains the definitions of the functions - used to communicate with the NQ Chip. - -Copyright (c) 2015-2016 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ -/*=========================================================================== - Edit History -when who what, where, why --------- --- ---------------------------------------------------------- -===========================================================================*/ - -#include "ftm_nfcnq.h" -#include "ftm_nfc.h" -#include "ftm_nfcnq_fwdl.h" - -/* Global variables */ -pthread_t clientThread; -PNCI_MESSAGE pNCIMessage; -sem_t sRspReady; -int fdNfc = 0; -uint8_t nciReplyMessage[ 255 ] = { 0 }; -NQ_CHIP_TYPE whatNQChip = UNKNOWN_NQ_CHIP_TYPE; -uint8_t RFdeactivateCmd[ ] = { 0x21, 0x06, 0x01, 0x03}; -uint8_t EseDataRsp[ ] = { 0x03, 0x00, 0x21, 0x99, 0x50, 0xFE}; - -/*========================================================================= -FUNCTION ftm_nq_nfc_close - -DESCRIPTION - Close the kernel driver for the NQ Chip - -PARAMETERS - None - -RETURN VALUE - int - -===========================================================================*/ -int ftm_nq_nfc_close( void ) -{ - fdNfc = close( fdNfc ); // close the file descriptor - - LOG_MESSAGE( "%s : Exit with fdNfc = %d \n", __func__, fdNfc ); - - return fdNfc; // return the result -} - -/*========================================================================= -FUNCTION ftm_nq_nfc_open - -DESCRIPTION - Open the kernel driver for the NQ Chip - -PARAMETERS - None - -RETURN VALUE - int - -===========================================================================*/ -int ftm_nq_nfc_open( void ) -{ - fdNfc = open( "/dev/nq-nci", // try to open /dev/nq-nci - O_RDWR ); - - LOG_MESSAGE( "%s : Exit with fdNfc = %d \n", __func__, fdNfc ); - - return fdNfc; // return the result -} - -/*========================================================================= -FUNCTION ftm_nfc_hw_reset - -DESCRIPTION - Resets the NQ Chip - -PARAMETERS - None - -RETURN VALUE - int - -===========================================================================*/ -int ftm_nfc_hw_reset( void ) -{ - - int ret = -1; // return value - - do - { - if( fdNfc < 0 ) // fdNfc valid? - break; - - ret = ioctl( fdNfc, NFC_SET_PWR, POWER_ON ); // turn the chip on - if( ret != 0 ) // successful? - { - LOG_ERROR( "%s ioctl( fdNfc, NFC_SET_PWR, POWER_ON ) returned %d", __func__, ret ); - ret = -2; - break; - } - usleep( 1000 ); // wait - - ret = ioctl( fdNfc, NFC_SET_PWR, POWER_OFF ); // turn the chip off - if( ret != 0 ) // successful? - { - LOG_ERROR( "%s ioctl( fdNfc, NFC_SET_PWR, POWER_OFF ) returned %d", __func__, ret ); - ret = -3; - break; - } - usleep( 1000 ); // wait - - ret = ioctl( fdNfc, NFC_SET_PWR, POWER_ON ); // turn the chip back on - if( ret != 0 ) // successful? - { - LOG_ERROR( "%s ioctl( fdNfc, NFC_SET_PWR, POWER_ON ) returned %d", __func__, ret ); - ret = -4; - break; - } - - }while( 0 ); - - return ret; -} - -/*========================================================================= -FUNCTION PrintBytes - -DESCRIPTION - Print bytes from an array - -PARAMETERS - uint8_t *buf - Byte array to print - uint8_t len - Length of the array -RETURN VALUE - void - -===========================================================================*/ -void PrintBytes( uint8_t *buf, uint8_t len) -{ -#ifdef NFC_FTM_DEBUG - int idx; - - LOG_INFORMATION( "%s: Length: %d bytes \n", __func__, len ); // print the number of bytes - for( idx = 0; idx < len; idx++ ) // print every byte - { - LOG_INFORMATION( "%02x ", buf[idx] ); - } - LOG_INFORMATION( "\n" ); -#else - UNUSED_PARAMETER( buf ); - UNUSED_PARAMETER( len ); -#endif -} - -/*========================================================================= -FUNCTION ftm_nfc_send - -DESCRIPTION - Sends a message to the chip - -PARAMETERS - uint8_t *buf - buffer to be sent - int len - the length of the buffer - -RETURN VALUE - int ret - Status - -===========================================================================*/ -int ftm_nfc_send( uint8_t* buf ) -{ - int ret = -1; // return value - int retries = 15; // number of retries - int i; - uint16_t nciSendMessageLength; - PNCI_MESSAGE pMessageToSend = ( PNCI_MESSAGE ) buf; - pfirmware_download_packet_t pFirmwarePacketsToSend = - ( pfirmware_download_packet_t ) buf; - - - do - { - if( fdNfc < 0 ) // fdNfc valid? - break; - - if( NULL == buf ) // is the buffer valid? - { - ret = -2; - LOG_ERROR( "%s: buf == NULL Invalid Buffer", __func__ ); - break; - } - - if( ( pFirmwarePacketsToSend->fFragmentedPacket == FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_NONE ) || - ( pFirmwarePacketsToSend->fFragmentedPacket == FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_SET ) ) - nciSendMessageLength = pFirmwarePacketsToSend->payloadLen + - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN + - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN; - else - nciSendMessageLength = pMessageToSend->len + offsetof( NCI_MESSAGE, buf ); - - PrintBytes( buf, nciSendMessageLength ); - - do - { - retries--; // retries left - ret = write( fdNfc, - buf, - nciSendMessageLength ); // try to write - - if( ret < nciSendMessageLength ) // did you write the length? - { - LOG_MESSAGE( "%s: %d = write( fdNfc, buf, nciSendMessageLength ), errno = %d, tries left = %d \n", __func__, ret, errno, retries ); - continue; // try again - } - else - break; // done - - } while( retries > 0 ); - } while( 0 ); - - return ret; -} - -/*========================================================================= -FUNCTION ProcessCommand - -DESCRIPTION - Processes a Command for the NQ Chip - -PARAMETERS - uint8_t *nci_data - NCI Data to send - -RETURN VALUE - int ret - 0 if successfully received a reply - -===========================================================================*/ -int ProcessCommand( uint8_t *nci_data ) -{ - int ret = -1; // return value - struct timespec time_sec; - - do - { - LOG_MESSAGE( "%s: FTM_NFC_SEND_DATA \n", __func__ ); - - ret = ftm_nfc_send( nci_data ); // send the message - - LOG_MESSAGE( "%s: Wait for response \n", __func__ ); - - ret = clock_gettime( CLOCK_REALTIME, &time_sec ); - - if( ret == -1 ) - { // didn't get the time? - LOG_ERROR( "%s: clock_gettime for nci_data error \n", __func__ ); - break; - } - - time_sec.tv_sec += FTM_NFC_CMD_CMPL_TIMEOUT; // maximum wait - ret = sem_timedwait( &sRspReady, // start waiting - &time_sec ); - - if( ret == -1 ) // wait finished, not signalled? - { - if(!ese_dwp_test) - LOG_ERROR( "%s: nfc ftm command timed out \n", __func__ ); - break; - } - } while( 0 ); - - return ret; -} -/*========================================================================= -FUNCTION ftm_nfc_read - -DESCRIPTION - Reads a message from the chip - -PARAMETERS - int len - the length of the buffer - -RETURN VALUE - int ret - Number of bytes read - -===========================================================================*/ -int ftm_nfc_read( uint8_t* buf, int len ) -{ - int ret = -1; - - do - { - if( fdNfc < 0 ) // fdNfc valid? - break; - - ret = read( fdNfc, buf, len ); // try to read - - } while( 0 ); - - return ret; -} - -/*========================================================================== -FUNCTION - CommitLog - -DESCRIPTION - This commits the log to Diag - -PARAMETERS - NCI_MESSAGE pReadNCIMessage - Pointer to the read NCI Message - -RETURN VALUE - void -==========================================================================*/ -void CommitLog( PNCI_MESSAGE pReadNCIMessage ) -{ - pftm_nfc_log_pkt_type pLogBuff; - - do - { - pLogBuff = ( ftm_nfc_log_pkt_type * ) log_alloc( LOG_NFC_FTM, // allocate a buffer for the log - pReadNCIMessage->len + offsetof( NCI_MESSAGE, buf ) + LOG_HEADER_LENGTH ); - if( NULL == pLogBuff ) - { - LOG_ERROR( "%s: log_alloc returned NULL \n", __func__ ); - break; - } - - memcpy( pLogBuff->data, // fill the buffer - pReadNCIMessage, - pReadNCIMessage->len + offsetof( NCI_MESSAGE, buf ) ); - - log_commit( pLogBuff ); // commit the log - } while ( 0 ); - -} - -/*============================================================================= -FUNCTION - ProcessReturnedMessage - -DESCRIPTION - Routine that processes an NCI Message that was returned and - will decide if the message is a notification or a response. - -PARAMETERS - PNCI_MESSAGE pReadNCIMessage - Pointer to the read message - -RETURN VALUE - void -==============================================================================*/ -void ProcessReturnedMessage( PNCI_MESSAGE pReadNCIMessage ) -{ - - switch( pReadNCIMessage->gid & NCIMT_NTF ) // check the first byte - { - case NCIMT_RSP: // reply? - sem_post( &sRspReady ); // notify the dispatch function - break; - - case NCIMT_NTF: // notification? - if (pReadNCIMessage->oid == 0x05) - { - LOG_INFORMATION("\n << ...TAG DETECTED... >> \n"); - printTecnologyDetails(pReadNCIMessage->buf[3],pReadNCIMessage->buf[2]); - sem_post( &sRfNtf ); - ProcessCommand( RFdeactivateCmd ); - } - case NCIMT_DATA: // data? - if (ese_dwp_test) - { - if( memcmp( EseDataRsp, nciReplyMessage, sizeof( EseDataRsp ) ) == 0 ) - { - LOG_INFORMATION("\n << ESE detected over DWP >> \n\n"); - } - } - if( log_status( LOG_NFC_FTM ) ) // logging enabled? - { - CommitLog( pReadNCIMessage ); - } - break; - - default: - LOG_ERROR( "%s: ERROR - SHOULD NOT HAVE REACHED THIS POINT", __func__ ); - break; - } - -} - -/*========================================================================= -FUNCTION nfc_read_thread - -DESCRIPTION - Thread that constantly looks for messages from the chip - -PARAMETERS - void - -RETURN VALUE - void - -===========================================================================*/ -void *nfc_read_thread( void *arg ) -{ - uint8_t readLength = 0; - int i; - uint8_t readNCIUpToLength = offsetof( NCI_MESSAGE, buf ); - - UNUSED_PARAMETER( arg ); - - for( ; ; ) // keep reading - { - readLength = ftm_nfc_read( nciReplyMessage, readNCIUpToLength ); // read the first 3 bytes - - if( readLength == readNCIUpToLength ) // read the message up to NCI Len? - { - readLength = ftm_nfc_read( pNCIMessage->buf, // go and get the rest - pNCIMessage->len ); - - if( readLength == pNCIMessage->len ) // successful? - { - PrintBytes( nciReplyMessage, pNCIMessage->len + readNCIUpToLength ); - - ProcessReturnedMessage( pNCIMessage ); // Process the read message - - } - } - } - -} - -/*========================================================================== -FUNCTION PrepareRsp - -DESCRIPTION - Routine to prepare a response for diag. - -PARAMETERS - ftm_nfc_pkt_type *nfc_ftm_pkt - FTM Packet - -RETURN VALUE - void * -==========================================================================*/ -void *PrepareRsp( ftm_nfc_pkt_type *nfc_ftm_pkt ) -{ - void *response = NULL; - switch( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id ) - { - case FTM_NFC_NFCC_COMMAND: - { - ftm_nfc_pkt_type *nfc_nci_rsp = ( ftm_nfc_pkt_type* ) diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof( ftm_nfc_pkt_type ) ); // get a Response Buffer for NFCC Command - - if( NULL == nfc_nci_rsp ) - { - LOG_ERROR( "%s: diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, FTM_NFC_CMD_CODE, sizeof( ftm_nfc_pkt_type ) ) returned NULL \n", __func__ ); - } - else - { - nfc_nci_rsp->ftm_nfc_hdr.nfc_cmd_id = FTM_NFC_NFCC_COMMAND; - nfc_nci_rsp->ftm_nfc_hdr.nfc_cmd_len = offsetof( ftm_nfc_cmd_header, nfc_cmd_len ) + offsetof( NCI_MESSAGE, buf ) + pNCIMessage->len ; - nfc_nci_rsp->nfc_nci_pkt_len = offsetof( NCI_MESSAGE, buf ) + pNCIMessage->len; - - memcpy( nfc_nci_rsp->nci_data, - pNCIMessage, - nfc_nci_rsp->nfc_nci_pkt_len ); - - response = ( void* ) nfc_nci_rsp; - } - break; - } - - case FTM_NFC_REQ_CHIP_TYPE: - { - // change from a NCI packet type to a request chip type packet type - ftm_nfc_chip_type_pkt_type *nfc_chip_type_rsp = ( ftm_nfc_chip_type_pkt_type* ) diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof( ftm_nfc_chip_type_pkt_type ) ); // get a Response Buffer for Request Chip Type Command - if( NULL == nfc_chip_type_rsp ) - { - LOG_ERROR( "%s: diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, FTM_NFC_CMD_CODE, sizeof( ftm_nfc_chip_type_pkt_type ) ) returned NULL \n", __func__ ); - } - else - { - nfc_chip_type_rsp->nfc_chip_type_cmd_id = FTM_NFC_REQ_CHIP_TYPE; - nfc_chip_type_rsp->nfc_chip_type_pkt_len = 1; // only 1 byte for response packet data - if( chipType == 1 ) // 1 for QTI, 2 for NQ - nfc_chip_type_rsp->nfc_chip_type_pkt_data = FTM_NFC_QTI_CHIP; - else - nfc_chip_type_rsp->nfc_chip_type_pkt_data = FTM_NFC_NQ_CHIP; - - response = ( void* ) nfc_chip_type_rsp; - } - break; - } - - case FTM_NFC_FWPIN_CTRL: - { - // change from a NCI packet type to a firmware download packet type - ftm_nfc_fwdl_pkt_type *nfc_fwdl_rsp = ( ftm_nfc_fwdl_pkt_type* ) diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof( ftm_nfc_fwdl_pkt_type ) ); // get a Response Buffer for Firmware Download Pin Command - if( NULL == nfc_fwdl_rsp ) - { - LOG_ERROR( "%s: diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, FTM_NFC_CMD_CODE, sizeof( ftm_nfc_fwdl_pkt_type ) ) returned NULL \n", __func__ ); - } - else - { - nfc_fwdl_rsp->nfc_fwdl_cmd_id = FTM_NFC_FWPIN_CTRL; - nfc_fwdl_rsp->nfc_fwdl_pkt_len = 1; // only 1 byte for response packet data - nfc_fwdl_rsp->nfc_fwdl_pkt_data = FTM_NFC_FWDL_SUCCESS; // 0 for fail, 1 for success - - response = ( void* ) nfc_fwdl_rsp; - } - break; - } - - default : - - LOG_ERROR( "%s: ERROR - SHOULD NOT HAVE ENDED UP HERE: default case \n", __func__ ); - break; - } - - return response; - -} - -/*========================================================================= -FUNCTION ftm_nfc_nq_vs_nxp - -DESCRIPTION - Check whether the chip is an NQ Chip - -PARAMETERS - None - -RETURN VALUE - int - -===========================================================================*/ -int ftm_nfc_nq_vs_nxp( void ) -{ - int ret = 0; - uint8_t coreResetCmd[ ] = { 0x20, 0x00, 0x01, 0x00 }; - uint8_t coreResetRsp[ ] = { 0x40, 0x00, 0x03, 0x00, 0x11, 0x00 }; - uint8_t coreInitCmd[ ] = { 0x20, 0x01, 0x00 }; - - do - { - ret = ProcessCommand( coreResetCmd ); // send a Core Reset CMD - - if( ret == -1 ) // wait finished, not signalled? - { - LOG_ERROR( "%s: ProcessCommand( coreResetCmd ) error %d \n", __func__, ret ); - break; - } - - if( memcmp( coreResetRsp, nciReplyMessage, sizeof( coreResetRsp ) ) ) - { // not a good reply? - coreResetRsp[4] = 0x10; - if( memcmp( coreResetRsp, nciReplyMessage, sizeof( coreResetRsp ) ) ) - { // check if NCI version is 1.0 - ret = -1; - LOG_ERROR( "%s: bad reply for coreResetRsp", __func__ ); - break; - } - } - - ret = ProcessCommand( coreInitCmd ); // send the message - - if( ret == -1 ) // wait finished, not signalled? - { - LOG_ERROR( "%s: ProcessCommand( coreInitCmd ) error %d \n", __func__, ret ); - break; - } - - switch( nciReplyMessage[ CHIP_ID ] ) // what type of chip is it? - { - case 0x48: - whatNQChip = NQ_210; - LOG_INFORMATION( "Connected to NQ210 \n" ); - break; - - case 0x58: - whatNQChip = NQ_220; - LOG_INFORMATION( "Connected to NQ220 \n" ); - break; - - case 0x40: - case 0x41: - whatNQChip = NQ_310; - LOG_INFORMATION( "Connected to NQ310 \n" ); - break; - - case 0x50: - case 0x51: - whatNQChip = NQ_330; - LOG_INFORMATION( "Connected to NQ330 \n" ); - break; - - default: - whatNQChip = UNKNOWN_NQ_CHIP_TYPE; - ret = -1; - LOG_INFORMATION( "ERROR Connected to an unknown NQ Chip \n" ); - break; - } - }while( 0 ); - - return ret; -} - -/*========================================================================= -FUNCTION ftm_nfc_set_fwdl_pin - -DESCRIPTION - Sets or resets the firmware download pin high or low - -PARAMETERS - ftm_nfc_pkt_type *nfc_ftm_pkt - FTM Packet - -RETURN VALUE - void - -===========================================================================*/ -void ftm_nfc_set_fwdl_pin( ftm_nfc_pkt_type *nfc_ftm_pkt ) -{ - int ret = 0; - // change from a NCI packet type to a firmware download packet type - pftm_nfc_fwdl_pkt_type pnfc_fwdl_pkt = ( pftm_nfc_fwdl_pkt_type ) nfc_ftm_pkt; - - switch ( pnfc_fwdl_pkt->nfc_fwdl_pkt_data ) - { - case 0: - - ret = ftm_nfc_hw_reset( ); // Can you reset the hardware? - if( ret < 0 ) // successful? - { - LOG_ERROR( "%s: ftm_nfc_hw_reset() failed with ret = %d \n", __func__, ret ); - break; - } - - LOG_MESSAGE( "%s: Firmware download pin set LOW\n", __func__ ); - break; - - - case 1: - - ret = ioctl( fdNfc, NFC_SET_PWR, FIRMWARE_MODE ); - if( ret != 0 ) // successful? - { - LOG_ERROR( "%s ioctl( fdNfc, NFC_SET_PWR, FIRMWARE_MODE ) returned %d", __func__, ret ); - break; - } - - LOG_MESSAGE( "%s: Firmware download pin set HIGH\n", __func__ ); - break; - - default : - - LOG_ERROR( "%s: ERROR - SHOULD NOT HAVE ENDED UP HERE: default case \n", __func__ ); - break; - } - - ret = ftm_nq_nfc_close( ); // close the handle - if( ret != 0 ) // not successful? - { - LOG_ERROR( "\n\t %s: ftm_nq_nfc_close() failed with ret = %d \n", __func__, ret ); - } - - ret = ftm_nq_nfc_open( ); // open the kernel driver - if( ret < 0 ) // successful? - { - LOG_ERROR( "\n\t %s: ftm_nq_nfc_open() failed with ret = %d \n", __func__, ret ); - } -} - -/*========================================================================= -FUNCTION ftm_nfc_dispatch_nq - -DESCRIPTION - Dispatches QRCT commands and Chip Replies/Notifications/Data - -PARAMETERS - ftm_nfc_pkt_type *nfc_ftm_pkt - FTM Packet - uint16 pkt_len - FTM Packet Length - -RETURN VALUE - void * - -===========================================================================*/ -void* ftm_nfc_dispatch_nq( ftm_nfc_pkt_type *nfc_ftm_pkt, uint16 pkt_len ) -{ - int ret = 0; - int len = 0; - struct timespec time_sec; - char *SkipNQHardwareCheck = NULL; - - void *rsp = NULL; - UNUSED_PARAMETER( pkt_len ); - - do - { - if( !fdNfc ) // Already initialized? - { - ret = ftm_nq_nfc_open( ); // open the kernel driver - if( ret < 0 ) // successful? - { - LOG_ERROR( "\n\t %s: ftm_nq_nfc_open() failed with ret = %d \n", __func__, ret ); - break; - } - - ret = ftm_nfc_hw_reset( ); // Can you reset the hardware? - if( ret < 0 ) // successful? - { - LOG_ERROR( "%s: ftm_nfc_hw_reset() failed with ret = %d \n", __func__, ret ); - break; - } - - pNCIMessage = ( PNCI_MESSAGE ) nciReplyMessage; - - ret = pthread_create( &clientThread, // Start the Read Thread - NULL, - &nfc_read_thread, - NULL ); - if( ret != 0 ) // successful? - { - LOG_MESSAGE( "%s: pthread_create( nfc_read_thread ) failed with ret = %d \n", __func__, ret ); - break; - } - - SkipNQHardwareCheck = getenv( SKIP_NQ_HARDWARE_CHECK ); - LOG_MESSAGE( "%s: SkipNQHardwareCheck = %s \n", __func__, SkipNQHardwareCheck ); - - if( NULL == SkipNQHardwareCheck ) // no value so check for NQ Chip? - { - ret = ftm_nfc_nq_vs_nxp( ); - if( ret < 0 ) // Not an NQ Chip? - { - LOG_ERROR( "ERROR NOT A KNOWN NQ Chip \n" ); - break; - } - } - else - { - LOG_INFORMATION( " Skipping NQ Chip Check \n" ); - whatNQChip = SKIP_CHIP_CHECK; - } - - LOG_INFORMATION( "FTM for NFC SUCCESSFULLY STARTED \n" ); - } - - if( UNKNOWN_NQ_CHIP_TYPE == whatNQChip ) - { - LOG_ERROR( "ERROR This version of the chip is not accepted" ); - break; - } - - if( NULL == nfc_ftm_pkt ) // valid packet? - { - LOG_ERROR( "%s: Error : nfc_ftm_pkt is NULL \n", __func__ ); - break; - } - - if( offsetof( ftm_nfc_pkt_type, ftm_nfc_hdr ) < MIN_CMD_PKT_LEN ) - { // packet contains anything? - LOG_ERROR( "%s: Error : Invalid FTM Packet \n", __func__ ); - break; - } - - switch( nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id ) // what type of packet is it? - { - - case FTM_NFC_NFCC_COMMAND: // NFC Command? - case FTM_NFC_SEND_DATA: // NFC Data? - - ret = ProcessCommand( nfc_ftm_pkt->nci_data ); - if( ret == -1 ) // wait finished, not signalled? - { - LOG_ERROR( "%s: ProcessCommand( nfc_ftm_pkt->nci_data ) error %d \n", __func__, ret ); - break; - } - rsp = PrepareRsp( nfc_ftm_pkt ); // Prepare the response for Diag - - break; - - case FTM_NFC_REQ_CHIP_TYPE: - case FTM_NFC_FWPIN_CTRL: - - ftm_nfc_set_fwdl_pin( nfc_ftm_pkt ); - - rsp = PrepareRsp( nfc_ftm_pkt ); // Prepare the response for Diag - break; - - default : - LOG_ERROR( "%s: ERROR - SHOULD NOT HAVE ENDED UP HERE: default case \n", __func__ ); - break; - - } - } while( 0 ); - - return rsp; -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq.h b/feeds/ipq95xx/ftm/src/ftm_nfcnq.h deleted file mode 100755 index af8c2db56..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq.h +++ /dev/null @@ -1,168 +0,0 @@ -/*========================================================================= - NQ NFC FTM Header File -Description - This file contains the declarations of the functions - used to communicate with the NQ Chip and various definitions. - -Copyright (c) 2015-2017 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ -/*=========================================================================== - Edit History -when who what, where, why --------- --- ---------------------------------------------------------- -===========================================================================*/ - -#ifndef _FTM_NFCNQ -#define _FTM_NFCNQ - -#include "msg.h" -#include "diagpkt.h" -#include "diagcmd.h" -#include "errno.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "log.h" - -#define LOG_ERROR( ... ) printf( __VA_ARGS__ ) -#define LOG_INFORMATION( ... ) printf( __VA_ARGS__ ) - -#ifdef NFC_FTM_DEBUG -#define LOG_MESSAGE( ... ) printf( __VA_ARGS__ ) -#else -#define LOG_MESSAGE( ... ) do{ } while ( FALSE ) -#endif - -typedef PACKED struct _ftm_nfc_cmd_header{ - uint16 nfc_cmd_id; - uint16 nfc_cmd_len; -} ftm_nfc_cmd_header, *pftm_nfc_cmd_header; - -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - ftm_nfc_cmd_header ftm_nfc_hdr; - uint16 nfc_nci_pkt_len; - byte nci_data[258]; -}ftm_nfc_pkt_type, *pftm_nfc_pkt_type; - -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - uint16 nfc_fwdl_cmd_id; - byte nfc_fwdl_pkt_len; - byte nfc_fwdl_pkt_data; -}ftm_nfc_fwdl_pkt_type, *pftm_nfc_fwdl_pkt_type; - -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - uint16 nfc_chip_type_cmd_id; - byte nfc_chip_type_pkt_len; - byte nfc_chip_type_pkt_data; -}ftm_nfc_chip_type_pkt_type, *pftm_nfc_chip_type_pkt_type; - -typedef PACKED struct{ - log_hdr_type hdr; - byte data[1]; -} ftm_nfc_log_pkt_type, *pftm_nfc_log_pkt_type; - -typedef PACKED struct _NCI_MESSAGE -{ - byte gid; // Group ID - byte oid; // Operation ID - byte len; // payload length in bytes - byte buf[ 252 ]; // Payload Buffer -} NCI_MESSAGE, *PNCI_MESSAGE; - -typedef enum -{ - NCIMT_DATA = 0x00, /**< DATA packet. */ - NCIMT_CMD = 0x20, /**< Control packet - Command. */ - NCIMT_RSP = 0x40, /**< Control packet - Response. */ - NCIMT_NTF = 0x60, /**< Control packet - Notification. */ - - NCIMT_INVALID_VALUE = 0xFF, /**< Invalid packet type. */ - - NCIMT_BITMASK = 0xE0, /**< Most significant three bits. */ - NCIMT_BITSHIFT = 5 - -} NCIMT; - -typedef enum -{ - UNKNOWN_NQ_CHIP_TYPE = 0, - SKIP_CHIP_CHECK = 1, - NQ_110 = 11, - NQ_120 = 12, - NQ_210 = 21, - NQ_220 = 22, - NQ_310 = 31, - NQ_330 = 33, - MAXIMUM_NQ_CHIP_TYPE -} NQ_CHIP_TYPE; - -struct nqx_devinfo -{ - unsigned char chip_type; - unsigned char rom_version; - unsigned char fw_major; - unsigned char fw_minor; -}; - -union nqx_uinfo -{ - unsigned int i; - struct nqx_devinfo info; -}; - -int ftm_nq_nfc_open( void ); -int ftm_nq_nfc_close( void ); -int ftm_nfc_hw_reset( void ); -int ProcessCommand( uint8_t *nci_data ); -void *PrepareRsp( ftm_nfc_pkt_type *nfc_ftm_pkt ); -void *ftm_nfc_dispatch_nq( ftm_nfc_pkt_type *nfc_ftm_pkt, uint16 pkt_len); -void *nfc_read_thread( void *arg ); -extern sem_t sRfNtf; -extern int ese_dwp_test; -extern void printTecnologyDetails(char technology, char protocol); - -#define FTM_NFC_CMD_CODE 55 -#define FTM_NFC_NFCC_COMMAND 0x02 -#define FTM_NFC_SEND_DATA 0x03 -#define FTM_NFC_REQ_CHIP_TYPE 0x04 -#define FTM_NFC_FWPIN_CTRL 0x05 -#define FTM_NFC_CMD_CMPL_TIMEOUT 3 - -#define FTM_NFC_QTI_CHIP 0x00 -#define FTM_NFC_NQ_CHIP 0x01 -#define FTM_NFC_FWDL_SUCCESS 0x01 - -#define MIN_CMD_PKT_LEN 4 // Minimum length for a valid FTM packet, 2 bytes for Diag header, 2 bytes for command ID - -#define LOG_NFC_FTM 0x1802 -#define LOG_HEADER_LENGTH 12 - -#define NFC_SET_PWR _IOW(0xE9, 0x01, unsigned int) -#define NFCC_GET_INFO _IOW(0xE9, 0x09, unsigned int) -#define POWER_OFF 0 -#define POWER_ON 1 -#define FIRMWARE_MODE 2 - -#define EXPECTED_CORE_INIT_RSP_LEN 29 -#define CHIP_ID 24 - -#define SKIP_NQ_HARDWARE_CHECK "SkipNQHardwareCheck" -#define HARDWARE_TYPE_TIMEOUT 2 - -#define UNUSED_PARAMETER( x ) ( void )( x ) - -#endif // _FTM_NFCNQ diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.c b/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.c deleted file mode 100755 index 458bcde64..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.c +++ /dev/null @@ -1,664 +0,0 @@ -/* - * Copyright (c) 2016-2017 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Not a Contribution. - * Apache license notifications and license are retained - * for attribution purposes only. - */ - -/* - * Copyright (C) 2015 NXP Semiconductors - * The original Work has been changed by NXP Semiconductors. - * - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/*========================================================================= - FTM NFC NQ Firmware Download Source File - Description - This file contains the definitions of the functions - used to download firmware onto the NQ Chip. -===========================================================================*/ - -#include "ftm_nfcnq_fwdl.h" -#include "ftm_nfcnq.h" - -unsigned int chip_version = 0x00; - -/* lookup table for CRC-16-CCITT calculation */ -static uint16_t const crcTable[ 256 ] = - { 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, - 0xe1ce, 0xf1ef, 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, 0x9339, 0x8318, 0xb37b, - 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, - 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, - 0x66f6, 0x5695, 0x46b4, 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, 0x48c4, 0x58e5, - 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, - 0xb92b, 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, - 0x9b79, 0x8b58, 0xbb3b, 0xab1a, 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, 0xedae, - 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, - 0x1e51, 0x0e70, 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, 0x9188, 0x81a9, 0xb1ca, - 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, - 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, - 0x5214, 0x6277, 0x7256, 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, 0x34e2, 0x24c3, - 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, - 0xd73c, 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, 0xd94c, 0xc96d, 0xf90e, 0xe92f, - 0x99c8, 0x89e9, 0xb98a, 0xa9ab, 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, 0xcb7d, - 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, - 0x2ab3, 0x3a92, 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, 0x7c26, 0x6c07, 0x5c64, - 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, - 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 }; - - -/*========================================================================================================== -FUNCTION - load_firmware_from_library - -DESCRIPTION - gets a pointer to the firmware image and the length of the image - -PARAMETERS - const char *pathToLib - path to the firmware image library - uint8_t **ppFirmwareImage - pointer to the pointer to the firmware image - uint16_t *pFirmwareImageLen - pointer to the firmware image length - -RETURN VALUE - void - -==========================================================================================================*/ -static void load_firmware_from_library( const char *pathToLib, uint8_t **ppFirmwareImage, - uint16_t *pFirmwareImageLen ) -{ - void *pFirmwareLibHandle = NULL; - void *pTempFirmwareImage = NULL; - void *pTempFirmwareImageLen = NULL; - int status = -1; - - do - { - if( NULL == pathToLib ) - { - if(chip_version == 0x51 || chip_version == 0x50 || chip_version == 0x41 || chip_version == 0x40 ) - pathToLib = "/system/vendor/firmware/libpn553_fw.so"; // set the path to pn553 firmware library - else - pathToLib = "/system/vendor/firmware/libpn548ad_fw.so"; // set the default path to pn548ad firmware library - } - - if( NULL != pFirmwareLibHandle ) - { - status = dlclose( pFirmwareLibHandle ); // if the firmware library handle is not NULL, release the handle - pFirmwareLibHandle = NULL; - - dlerror( ); // clear existing errors - if( 0 != status ) - { - LOG_ERROR( "%s: dlclose() failed with status = %d \n", __FUNCTION__, status ); - break; - } - } - - pFirmwareLibHandle = dlopen( pathToLib, RTLD_LAZY ); // get a handle to firmware library - LOG_MESSAGE( "Opening library handle from %s\n", pathToLib ); - - if( NULL == pFirmwareLibHandle ) - { - LOG_ERROR( "%s: dlopen() failed \n", __FUNCTION__ ); - break; - } - dlerror( ); // clear existing errors - - pTempFirmwareImage = ( void * )dlsym( pFirmwareLibHandle, "gphDnldNfc_DlSeq" ); // get a pointer to the firmware library - - if( dlerror( ) || ( NULL == pTempFirmwareImage ) ) - { - LOG_ERROR( "%s: dlsym() failed, failed to load gphDnldNfc_DlSeq symbol \n", __FUNCTION__ ); - break; - } - *ppFirmwareImage = *( uint8_t ** )pTempFirmwareImage; // the returned pointer is a pointer to an uint8_t array - - pTempFirmwareImageLen = ( void * ) dlsym( pFirmwareLibHandle, "gphDnldNfc_DlSeqSz" ); // get a pointer to the firmware library length - - if( dlerror( ) || ( NULL == pTempFirmwareImageLen ) ) - { - LOG_ERROR( "%s: dlsym() failed, failed to load gphDnldNfc_DlSeqSz symbol \n", __FUNCTION__ ); - break; - } - *pFirmwareImageLen = ( uint16_t )( *( ( uint16_t * )pTempFirmwareImageLen ) ); // the returned pointer is a pointer to the length of the image - - } while( FALSE ); -} - -/*========================================================================================================== -FUNCTION - send_packet_packet_to_chip - -DESCRIPTION - sends the constructed packets to the NFC chip by calling ProcessCommand() from ftm_nfcnq.c - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void send_packet_packet_to_chip( pfirmware_download_context_t pDownloadContext ) -{ - int status = -1; - - status = ProcessCommand( &pDownloadContext->packetToSend ); // call ProcessCommand() from ftm_nfcnq.c - if( 0 != status ) - { - LOG_ERROR( "%s: ProcessCommand() failed with status = %d \n", __FUNCTION__, status ); - } -} - -/*========================================================================================================== -FUNCTION - calculate_crc16 - -DESCRIPTION - calculates CRC-16-CCITT of a given buffer with a given length with seed value of 0xffff(Hex) - -PARAMETERS - uint8_t *pBuff - buffer for CRC-16-CCITT calculation - uint16_t buffLen - length of buffer for CRC-16-CCITT calculation - -RETURN VALUE - uint16_t - calculated CRC-16-CCITT value of buffer - -==========================================================================================================*/ -static uint16_t calculate_crc16( uint8_t *pBuff, uint16_t buffLen ) -{ - uint16_t temp = 0; - uint16_t value = 0; - uint16_t crc = 0xffff; // seed value - uint32_t i = 0; - - if ( ( NULL == pBuff ) || ( 0 == buffLen ) ) - { - LOG_ERROR( "%s: Invalid parameters \n", __FUNCTION__ ); - } - else - { - for( i = 0; i < buffLen; i++ ) - { - value = 0x00ffU & ( uint16_t )pBuff[ i ]; - temp = ( crc >> 8U ) ^ value; - crc = ( crc << 8U ) ^ crcTable[ temp ]; - } - } - - return crc; -} - -/*========================================================================================================== -FUNCTION - insert_crc16 - -DESCRIPTION - inserts the calculated CRC-16-CCITT value into the end of the buffer - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void insert_crc16( pfirmware_download_context_t pDownloadContext ) -{ - uint16_t crcValueToWrite = 0; - uint8_t *crcValueInBytes = NULL; - - /* get CRC-16-CCITT value of packet and convert it into 2 bytes */ - crcValueToWrite = calculate_crc16( &pDownloadContext->packetToSend, - pDownloadContext->headerPlusPayloadLen ); - crcValueInBytes = ( uint8_t * )&crcValueToWrite; - - /* insert crc value into last 2 bytes of the packet */ - if( pDownloadContext->packetToSend.payloadLen < ( FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN + FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN - 1 )) - { - pDownloadContext->packetToSend.payloadBuff[ pDownloadContext->packetToSend.payloadLen ] = crcValueInBytes[ 1 ]; - pDownloadContext->packetToSend.payloadBuff[ pDownloadContext->packetToSend.payloadLen + 1 ] = crcValueInBytes[ 0 ]; - } - else - { - LOG_ERROR( "%s: Packet to send payloadLen more than maximum payloadBuff size \n", __FUNCTION__ ); - } -} - -/*========================================================================================================== -FUNCTION - read_response_from_chip - -DESCRIPTION - reader thread that constantly checks for responses from NFC chip, checks the integrity of the - response packets by matching the CRC-16-CCITT values and signals the semaphore held by - the call to ProcessCommand() - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void read_response_from_chip( pfirmware_download_context_t pDownloadContext ) -{ - uint8_t lenRead = 0; - uint8_t *pPacketReceived = NULL; - uint16_t calculatedCrcValue = 0; - uint16_t crcValueFromResponse = 0; - - do - { - if( fdNfc < 0 ) - { - LOG_ERROR( "%s: Invalid handle \n", __FUNCTION__ ); - break; - } - - lenRead = read( fdNfc, &pDownloadContext->packetReceived, // get the response packet header - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN ); - - if( 0 == lenRead ) - { - LOG_ERROR( "%s: Error reading response packet header \n", __FUNCTION__ ); - break; - } - else - { - pDownloadContext->totalPacketLen = lenRead; - } - - lenRead = read( fdNfc, &pDownloadContext->packetReceived.payloadBuff, // get the rest fo the response packet - ( pDownloadContext->packetReceived.payloadLen + - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN ) ); - - if( 0 == lenRead ) - { - LOG_ERROR( "%s: Error reading response packet payload \n", __FUNCTION__ ); - break; - } - else - { - pDownloadContext->totalPacketLen += lenRead; // update the total length of the received packet - } - - calculatedCrcValue = calculate_crc16( &pDownloadContext->packetReceived, // calculate the CRC-16-CCITT value of the received packet - ( pDownloadContext->packetReceived.payloadLen + - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN ) ); - - /* convert crc value from the response packet to an uint16_t */ - if( pDownloadContext->packetReceived.payloadLen < ( FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN + FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN - 1 )) - { - crcValueFromResponse = pDownloadContext->packetReceived.payloadBuff[ pDownloadContext->packetReceived.payloadLen ]; - crcValueFromResponse <<= 8; - crcValueFromResponse |= pDownloadContext->packetReceived.payloadBuff[ pDownloadContext->packetReceived.payloadLen + 1 ]; - } - else - { - LOG_ERROR( "%s: Packet received payloadLen more than maximum payloadBuff size \n", __FUNCTION__ ); - } - - if( calculatedCrcValue != crcValueFromResponse ) // compare the CRC-16-CCITT values - { - LOG_ERROR( "%s: CRC-16-CCITT values do not match, discarding packet \n", __FUNCTION__ ); - break; - } - else - { - sem_post( &sRspReady ); // signal the semaphore for subsequent packets to be sent - } - - } while( FALSE == pDownloadContext->fExitReadThread ); // exit only when the flag is set -} - -/*========================================================================================================== -FUNCTION - get_device_firmware_version - -DESCRIPTION - sends the get-firmware-version command (0xF1) to the device and outputs the firmware version of - the device - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void get_device_firmware_version( pfirmware_download_context_t pDownloadContext ) -{ - uint8_t getFirmwareVersionCommand[ ] = { 0x00, 0x04, 0xF1, 0x00, 0x00, 0x00 }; // command to get firmware version on device - uint8_t firmwareMajorVersion = 0; - uint8_t firmwareMinorVersion = 0; - - pDownloadContext->headerPlusPayloadLen = - sizeof( getFirmwareVersionCommand ) / sizeof( getFirmwareVersionCommand[ 0 ] ); - - memcpy( &pDownloadContext->packetToSend, &getFirmwareVersionCommand, // construct the command packet - ( pDownloadContext->headerPlusPayloadLen ) ); - - insert_crc16( pDownloadContext ); // insert the CRC-16-CCITT value - - send_packet_packet_to_chip( pDownloadContext ); // send the command packet to NFC chip - - /* continues from here once the reader thread reads the response and flags the semaphore, - the last 2 bytes of the get version response payload contains the firmware version currently on the device */ - firmwareMajorVersion = pDownloadContext->packetReceived.payloadBuff[ pDownloadContext->packetReceived.payloadLen - 1 ]; - firmwareMinorVersion = pDownloadContext->packetReceived.payloadBuff[ pDownloadContext->packetReceived.payloadLen - 2 ]; - - if(chip_version == 0x51 || chip_version == 0x50 || chip_version == 0x41 || chip_version == 0x40 ) - LOG_INFORMATION( "Firmware version: 11.%02X.%02X\n", firmwareMajorVersion, firmwareMinorVersion ); - else - LOG_INFORMATION( "Firmware version: 10.%02X.%02X\n", firmwareMajorVersion, firmwareMinorVersion ); -} - -/*========================================================================================================== -FUNCTION - build_first_packet - -DESCRIPTION - constructs the first packet to be sent to the NFC chip - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void build_first_packet( pfirmware_download_context_t pDownloadContext ) -{ - memset( pDownloadContext->packetToSend.payloadBuff, 0, // initialise the payload buffer to zero - FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN ); - - memcpy( &pDownloadContext->packetToSend, // copy the first chunk from the firmware library to the packet - pDownloadContext->pFirmwareImage, - pDownloadContext->headerPlusPayloadLen ); - - insert_crc16( pDownloadContext ); // insert the CRC-16-CCITT value -} - -/*========================================================================================================== -FUNCTION - build_next_packet - -DESCRIPTION - constructs subsequent packets required to be sent to the NFC chip - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void build_next_packet( pfirmware_download_context_t pDownloadContext ) -{ - /* for chunks from library that are larger than 256 bytes, the packets have to be fragmented */ - if( pDownloadContext->bytesLeftToSend > FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN ) - { - pDownloadContext->headerPlusPayloadLen = FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN + // length of header plus the payload for CRC-16-CCITT calculation - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN; - - pDownloadContext->totalPacketLen = FIRMWARE_DOWNLOAD_MAX_PACKET_LEN; // length of the entire packet to be sent - - pDownloadContext->packetToSend.fFragmentedPacket = FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_SET; // set the fragment flag as the first byte - - pDownloadContext->packetToSend.payloadLen = FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN; // insert the payload length in the second byte - - memcpy( ( &pDownloadContext->packetToSend.payloadBuff ), // copy payload from firmware library - &pDownloadContext->pFirmwareImage[ pDownloadContext->readIndexFromLib ], - FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN ); - - pDownloadContext->readIndexFromLib += FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN; // update the buffer index used to read from firmware library - - pDownloadContext->bytesLeftToSend -= FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN; // update the number of bytes left to send from the chunk - } - - /* for chunks from library that are smaller than 256 bytes, no fragmentation needed */ - else - { - pDownloadContext->headerPlusPayloadLen = pDownloadContext->bytesLeftToSend + // length of header plus the payload for CRC-16-CCITT calculation - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN; - - pDownloadContext->totalPacketLen = pDownloadContext->bytesLeftToSend + // length of the entire packet to be sent - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN + - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN; - - pDownloadContext->packetToSend.fFragmentedPacket = FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_NONE; // set the fragment flag to none as the first byte - - pDownloadContext->packetToSend.payloadLen = pDownloadContext->bytesLeftToSend; // insert the payload length in the second byte - - memcpy( ( &pDownloadContext->packetToSend.payloadBuff ), // copy payload from firmware library - &pDownloadContext->pFirmwareImage[ pDownloadContext->readIndexFromLib ], - pDownloadContext->bytesLeftToSend ); - - pDownloadContext->readIndexFromLib += pDownloadContext->bytesLeftToSend; // update the buffer index used to read from firmware library - - pDownloadContext->bytesLeftToSend = 0; // most likely the last fragment from the chunk - } - - insert_crc16( pDownloadContext ); -} - -/*========================================================================================================== -FUNCTION - process_packets_to_send - -DESCRIPTION - determines if the incoming packet is the first one or any subsequent ones and process them - accordingly - -PARAMETERS - pfirmware_download_context_t pDownloadContext - pointer to structure containing all the - information required - -RETURN VALUE - void - -==========================================================================================================*/ -static void process_packets_to_send( pfirmware_download_context_t pDownloadContext ) -{ - uint8_t firstChunkLenFromLib = 0; - uint16_t nextChunkLenFromLib = 0; - uint16_t buffIndex = pDownloadContext->readIndexFromLib; - - if( TRUE == pDownloadContext->fFirstPacket ) - { - pDownloadContext->fFirstPacket = FALSE; // indicates that the first packet has been processed - - firstChunkLenFromLib = pDownloadContext->pFirmwareImage[ 1 ] + // length of the first chunk read from firmware library - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN; - - pDownloadContext->totalPacketLen = firstChunkLenFromLib + // length of the entire packet to send - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN; - - pDownloadContext->readIndexFromLib += firstChunkLenFromLib; // update the buffer index used to read from firmware library - - pDownloadContext->headerPlusPayloadLen = firstChunkLenFromLib; // length of header plus the payload for CRC-16-CCITT calculation - - build_first_packet( pDownloadContext ); // build the first packet - - send_packet_packet_to_chip( pDownloadContext ); // send the packet to the NFC chip - } - else if( FALSE == pDownloadContext->fFirstPacket ) - { - nextChunkLenFromLib = pDownloadContext->pFirmwareImage[ buffIndex ]; // length of next chunk read from the firmware library - - /* length of next chunk is stored in 2 bytes in the firmware library */ - nextChunkLenFromLib <<= 8; - nextChunkLenFromLib |= pDownloadContext->pFirmwareImage[ buffIndex + 1 ]; - - buffIndex += 2; // add 2 bytes to the buffer index after length of next chunk is read - - pDownloadContext->readIndexFromLib = buffIndex; // update the buffer index used to read from firmware library - - pDownloadContext->bytesLeftToSend = nextChunkLenFromLib; // number of bytes left on the chunk to be sent to the chip - - while( pDownloadContext->bytesLeftToSend > 0 ) // constructs and sends packets as long as there are bytes left in the chunk - { - build_next_packet( pDownloadContext ); - send_packet_packet_to_chip( pDownloadContext ); - } - } - else - { - LOG_ERROR( "%s: Should not reach this point \n", __FUNCTION__ ); - } -} - -/*========================================================================================================== -FUNCTION - ftm_nfc_dispatch_nq_fwdl - -DESCRIPTION - called by main() in ftm_main.c to start the firmware download routine - -PARAMETERS - none - -RETURN VALUE - void - -==========================================================================================================*/ -void ftm_nfc_dispatch_nq_fwdl( void ) -{ - int status = 0; - - char *pathToLib = NULL; - uint8_t *pFirmwareImage = NULL; - uint16_t firmwareImageLen = 0; - - uint8_t *pNextChunkFromLib = NULL; - uint16_t nextChunkLenFromLib = 0; - uint16_t totalBytesReadFromLib = 0; - uint16_t readIndexFromLib = 0; - union nqx_uinfo nqx_info; - pthread_t readerThread; - - firmware_download_context_t downloadContext = { 0 }; - pfirmware_download_context_t pDownloadContext = &downloadContext; - pDownloadContext->fFirstPacket = TRUE; - - - do - { - if( !fdNfc ) - { - status = ftm_nq_nfc_open( ); // get a handle to the kernel driver - if( status < 0 ) - { - LOG_ERROR( "\n%s: ftm_nq_nfc_open() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - status = ftm_nfc_hw_reset( ); // reset NFC hardware - if( status < 0 ) - { - LOG_ERROR( "%s: ftm_nq_nfc_reset() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - nqx_info.i = ioctl( fdNfc, NFCC_GET_INFO, 0 ); - if( nqx_info.i < 0 ) - { - LOG_ERROR( "%s: nqnfcinfo not enabled, info = %d \n", __FUNCTION__, nqx_info.i ); - } - chip_version = nqx_info.info.chip_type; - LOG_INFORMATION( "\n NQ Chip ID : %x\n", chip_version); - } - - status = pthread_create( &readerThread, NULL, // create a reader thread - &read_response_from_chip, pDownloadContext ); - if( 0 != status ) - { - LOG_ERROR( "%s: pthread_create() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - load_firmware_from_library( pathToLib, &pFirmwareImage, &firmwareImageLen ); // get a pointer to firmware library image and get its length - if( ( NULL == pFirmwareImage ) || ( 0 == firmwareImageLen ) ) - { - LOG_ERROR( "%s: Firmware library image extraction failed\n", __FUNCTION__ ); - break; - } - - LOG_MESSAGE( "Firmware major version number: %02X\n", pFirmwareImage[ 5 ] ); - LOG_MESSAGE( "Firmware minor version number: %02X\n", pFirmwareImage[ 4 ] ); - LOG_MESSAGE( "Firmware library image length: %d\n", firmwareImageLen ); - LOG_MESSAGE( "Firmware library image pointer: %X\n", ( uintptr_t )pFirmwareImage ); - - pDownloadContext->pFirmwareImage = pFirmwareImage; - pDownloadContext->firmwareImageLen = firmwareImageLen; - - status = ioctl( fdNfc, NFC_SET_PWR, FIRMWARE_MODE ); // set NFCC to firmware download mode - if( 0 != status ) - { - LOG_ERROR( "%s: Failed to set firmware pin high.\n", __FUNCTION__ ); - break; - } - - LOG_INFORMATION( "\nBefore firmware update...\n" ); - get_device_firmware_version( pDownloadContext ); // get device version before loading firmware - - LOG_INFORMATION( "\nSending firmware packets... Please wait\n" ); - while( pDownloadContext->readIndexFromLib < pDownloadContext->firmwareImageLen ) - { - process_packets_to_send( pDownloadContext ); // build and send download packets with payload from the firmware library image - } - - LOG_INFORMATION( "All packets sent!\n\n" ); - - pDownloadContext->fExitReadThread = TRUE; // set flag to indicate that reader thread is safe to exit - - LOG_INFORMATION( "After firmware update...\n" ); - get_device_firmware_version( pDownloadContext ); // get device version number after loading firmware - - LOG_MESSAGE( "Waiting for reader thread to terminate...\n" ); - pthread_join( readerThread, NULL ); // wait for reader thread to terminate - LOG_MESSAGE( "Reader thread terminated!\n" ); - - LOG_MESSAGE( "Resetting NFCC...\n" ); - - status = ftm_nfc_hw_reset( ); // reset the NFC hardware which resets the firmware pin as well - if( status < 0 ) - { - LOG_ERROR( "%s: ftm_nfc_hw_reset() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - status = ftm_nq_nfc_close( ); // release the handle to the kernel driver - if( 0 != status ) - { - LOG_ERROR( "%s: ftm_nq_nfc_close() failed with status = %d \n", __FUNCTION__, status ); - } - - LOG_INFORMATION( "All done!\n\n" ); - - } while( FALSE ); - -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.h b/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.h deleted file mode 100755 index b8f308dd7..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq_fwdl.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2016 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Not a Contribution. - * Apache license notifications and license are retained - * for attribution purposes only. - */ - -/* - * Copyright (C) 2015 NXP Semiconductors - * The original Work has been changed by NXP Semiconductors. - * - * Copyright (C) 2010 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/*========================================================================= - FTM NFC NQ Firmware Download Header File - Description - This file contains the declarations of the functions and various - definitions used to download firmware onto the NQ Chip. -===========================================================================*/ - -#include -#include -#include -#include -#include -#include - -#define FALSE ( 0 ) -#define TRUE ( !FALSE ) - -#define FIRMWARE_DOWNLOAD_MAX_PACKET_LEN ( 0x100U ) // maximum length for a download packet -#define FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN ( 0x02U ) // length of the header -#define FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN ( 0x02U ) // length of CRC-16-CCITT value -#define FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN FIRMWARE_DOWNLOAD_MAX_PACKET_LEN - \ - FIRMWARE_DOWNLOAD_PACKET_HEADER_LEN - \ - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN - -/* Values for the first byte of each packet, indicates if the packet is fragmented */ -#define FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_NONE ( 0x00U ) // not fragmented -#define FIRMWARE_DOWNLOAD_PACKET_FRAG_FLAG_SET ( 0x04U ) // fragmented packet, next packet is a part of this one - -extern sem_t sRspReady; // semaphore used by reader thread -extern int fdNfc; // a handle to the kernel driver - -typedef uint8_t bool_t; - -/* structure of the packet to be sent or received */ -typedef struct firmware_download_packet -{ - uint8_t fFragmentedPacket; // flag to indicate if the packet is fragmented - uint8_t payloadLen; // length of payload - uint8_t payloadBuff[ FIRMWARE_DOWNLOAD_PACKET_MAX_PAYLOAD_LEN + - FIRMWARE_DOWNLOAD_PACKET_CRC16_LEN ]; // buffer containing the payload and CRC-16-CCITT value -} firmware_download_packet_t, *pfirmware_download_packet_t; - -/* structure that contains all the other information about the packets */ -typedef struct firmware_download_context -{ - const uint8_t *pFirmwareImage; // pointer to the firmware image library - uint16_t firmwareImageLen; // length of the firmware image - - uint8_t headerPlusPayloadLen; // header and payload length of a packet for CRC calculation - uint16_t readIndexFromLib; // index used to read from the firmware library - uint16_t bytesLeftToSend; // number of bytes left to send when the chunk read is fragmented - uint16_t totalPacketLen; // total length of packet to be sent or received - bool_t fFirstPacket; // flag to indicate if it is the first packet - bool_t fExitReadThread; // flag to indicate if reader thread is safe to exit - firmware_download_packet_t packetToSend; // contains information about packet to be sent - firmware_download_packet_t packetReceived; // contains information about packet from response received -} firmware_download_context_t, *pfirmware_download_context_t; - - - -/** - - Firmware download packet format - - ----------------------------------------------------------------------------------------------------- - | Header | Payload | CRC-16-CCITT value | - ----------------------------------------------------------------------------------------------------- - | Fragment flag | Payload length | Command/Response | Data | CRC-16-CCITT value | - ----------------------------------------------------------------------------------------------------- - | 1 byte | 1 byte | 1 byte | n bytes | 2 bytes | - ----------------------------------------------------------------------------------------------------- - - - Firmware library image format - - --------------------------------------------------------------------------------- ---------------------------------- - | 0x00 | First chunk length | First chunk | Next chunk length | Next chunk | ... | Last chunk length | Last chunk | - --------------------------------------------------------------------------------- ---------------------------------- - | 1 byte | 1 byte | n bytes | 2 bytes | n bytes | ... | 2 bytes | n bytes | - --------------------------------------------------------------------------------- ---------------------------------- - -*/ diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.c b/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.c deleted file mode 100755 index 7581ac8ff..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.c +++ /dev/null @@ -1,461 +0,0 @@ -/* - * Copyright (c) 2017 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - */ - -#include -#include "ftm_nfcnq.h" -#include "ftm_nfcnq_test.h" - -/* Global variables */ -pthread_t clientThread; -PNCI_MESSAGE pNCIMessage; -char *progname; - -/*============================================================================== -FUNCTION - eseSpiTest - -DESCRIPTION - Send APDU for eSE SPI HLOS test - -PARAMETERS - int argc - argument count - char **argv - argument vector - -RETURN VALUE - void - -=============================================================================*/ -void eseSpiTest(int argc, char **argv ) -{ - int ret = 0; - int test_mode = 0; - unsigned char i = 0; - int fp = 0; - int choice = 0; - unsigned char send_APDU[] = {0x5A,0x00,0x05,0x00,0xA4,0x04,0x00,0x00,0xA5}; - int size_APDU = 0; - unsigned char recv_response[259] = {0}; - progname = basename(argv[2]); - test_mode = getopt(argc, argv, "01"); - size_APDU = sizeof(send_APDU); - - LOG_INFORMATION("\n### eSE SPI test ###\n"); - - if(test_mode == '0') - { - choice = 0; - LOG_INFORMATION("\nInterrupt Mode test\n"); - } - else - { - choice = 1; - LOG_INFORMATION("\nPoll Mode test(default)\n"); - } - - do - { - //open module - if ((ret = (fp = open("/dev/ese", O_RDWR))) < 0) - { - LOG_INFORMATION("eSE open error retcode = %d, errno = %d\n", ret, errno); - LOG_INFORMATION("\n... eSE SPI Test requires modified boot and TZ image ..."); - break; - } - LOG_INFORMATION("eSE open : Ret = %2d\n", ret); - - //enable the logs - ioctl(fp, ESE_SET_DBG, 1); - //hardware reset - ioctl(fp, ESE_SET_PWR, 1); - - ioctl(fp, ESE_SET_MODE, choice); - - //write one APDU - ret = write(fp, send_APDU, sizeof(send_APDU)); - if (ret < 0) - { - LOG_INFORMATION("ese write error retcode = %d, errno = %d\n", ret, errno); - break; - } - LOG_INFORMATION("ese Write : Ret = %.2X \n", ret); - LOG_INFORMATION("APDU sent to eSE: "); - for (i=0; inci_data, -1, MAX_CMD_LEN); - memcpy(nfc_pkt->nci_data, &buffer[rows], payloadlen); - ret = ProcessCommand( nfc_pkt->nci_data ); - if( ret == -1 ) // wait finished, not signalled? - { - LOG_ERROR( "Waited for NCI NTF/DATA timeout\n" ); - } - } -} - -/*============================================================================== -FUNCTION - usage - -DESCRIPTION - Print usage information for test - -PARAMETERS - -RETURN VALUE - void - -=============================================================================*/ -void usage() -{ - LOG_INFORMATION("\nUsage:"); - LOG_INFORMATION(" %s [-n] [-e] [-d] [h] \n", progname); - LOG_INFORMATION(" %s -n ..for NFC test only\n", progname); - LOG_INFORMATION(" %s -e ..for eSE SPI test only\n \t-0 ..Interrupt Mode\n \t-1 ..Poll Mode\n", progname); - LOG_INFORMATION(" %s -d ..for eSE DWP test only\n", progname); - LOG_INFORMATION(" %s -h HELP\n", progname); - LOG_INFORMATION(" %s default NFC test only\n", progname); -} - -/*============================================================================== -FUNCTION - nfc_ese_pwr - -DESCRIPTION - Set ESE power using NFC driver - -PARAMETERS - -RETURN VALUE - void - -=============================================================================*/ -void nfc_ese_pwr() -{ - int ret; - ret = ioctl( fdNfc, NFC_ESE_SET_PWR, POWER_ON ); // turn the chip on - if( ret != 0 ) - { - LOG_INFORMATION("Can't find ESE GPIO in NFC driver: "); - LOG_INFORMATION("ret=%d\n",ret); - } -} - - - -/*============================================================================== -FUNCTION - ftm_nfc_dispatch_nq_test - -DESCRIPTION - called by main() in ftm_main.c to start the nfc test routine - -PARAMETERS - int argc - argument count - char **argv - argument vector - -RETURN VALUE - void - -=============================================================================*/ -void ftm_nfc_dispatch_nq_test( int argc, char **argv ) -{ - int cmds = 0; - unsigned int chip_version = 0x00; - unsigned int major_version = 0x00; - unsigned int minor_version = 0x00; - unsigned int rom_version = 0x00; - char firmware_version[10]; - struct timespec time_sec; - int type_of_test = 0; - int default_test = 0; - int status = 0; - - union nqx_uinfo nqx_info; - pthread_t readerThread; - - do - { - if( !fdNfc ) - { - status = ftm_nq_nfc_open( ); // get a handle to the kernel driver - if( status < 0 ) - { - LOG_ERROR( "\n%s: ftm_nq_nfc_open() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - status = ftm_nfc_hw_reset( ); // reset NFC hardware - if( status < 0 ) - { - LOG_ERROR( "%s: ftm_nq_nfc_reset() failed with status = %d \n", __FUNCTION__, status ); - break; - } - - nqx_info.i = ioctl( fdNfc, NFCC_GET_INFO, 0 ); - if( nqx_info.i < 0 ) - { - LOG_ERROR( "%s: nqnfcinfo not enabled, info = %d \n", __FUNCTION__, nqx_info.i ); - } - - chip_version = nqx_info.info.chip_type; - rom_version = nqx_info.info.rom_version; - major_version = nqx_info.info.fw_major; - minor_version = nqx_info.info.fw_minor; - - LOG_INFORMATION( "\n NQ Chip ID : %x\n", chip_version); - snprintf(firmware_version, 10, "%02x.%02x.%02x", rom_version, major_version, minor_version); - LOG_INFORMATION(" Firmware version : %s\n\n", firmware_version); - - - if(sem_init(&sRspReady, 0, 0) != 0) - { - LOG_ERROR("NFC FTM :semaphore_halcmd_complete creation failed \n"); - break; - } - if(sem_init(&sRfNtf, 0, 0) != 0) - { - LOG_ERROR("NFC FTM :semaphore_halcmd_complete creation failed \n"); - break; - } - - pNCIMessage = ( PNCI_MESSAGE ) nciReplyMessage; - status = pthread_create( &clientThread, NULL, &nfc_read_thread, NULL ); // Start the Read Thread - - if( status != 0 ) // successful? - { - LOG_ERROR("nqnfc %s: pthread_create( nfc_read_thread ) failed with ret = %d \n", __func__, status ); - break; - } - - status = ftm_nfc_nq_vs_nxp( ); - if( status < 0 ) // Not an NQ Chip? - { - LOG_ERROR("ERROR NOT A KNOWN NQ Chip \n" ); - } - } - - progname = basename(argv[1]); - type_of_test = getopt(argc, argv, "nedhf"); - - switch (type_of_test) { - case 'n': - LOG_INFORMATION("NFC test only\n"); - break; - case 'e': - LOG_INFORMATION("eSE SPI test only\n"); - nfc_ese_pwr(); - ese_spi_test = 1; - eseSpiTest(argc, argv); - break; - case 'd': - LOG_INFORMATION("eSE DWP test only\n"); - ese_dwp_test = 1; - eseDwpTest(); - break; - case 'h': - usage(); - break; - default: - usage(); - default_test = 1; - LOG_INFORMATION("\nDefault NFC test only\n"); - } - - if(ese_dwp_test || ese_spi_test) - break; - - if(type_of_test == 'n' || default_test) - { - switch(whatNQChip) - { - case NQ_210: - case NQ_220: - cmds = sizeof(NQ220_cmds) / sizeof(NQ220_cmds[0]); - sendcmds(NQ220_cmds, cmds); - break; - case NQ_310: - case NQ_330: - cmds = sizeof(NQ330_cmds) / sizeof(NQ330_cmds[0]); - sendcmds(NQ330_cmds, cmds); - break; - default: - LOG_INFORMATION( "Chip not supported, taking NQ330 as default\n "); - cmds = sizeof(NQ330_cmds) / sizeof(NQ330_cmds[0]); - sendcmds(NQ330_cmds, cmds); - break; - } - - LOG_INFORMATION("\n<<>> Waiting for TAG detect or 20sec timeout <<>> ...\n"); - status = clock_gettime( CLOCK_REALTIME, &time_sec ); - time_sec.tv_sec += NFC_NTF_TIMEOUT; - status = sem_timedwait( &sRfNtf, &time_sec ); //start waiting - if (status <0) { - LOG_INFORMATION("\n No NFC Tag detected, continue ...\n"); - } - } - - status = ftm_nq_nfc_close( ); // release the handle to the kernel driver - if( 0 != status ) - { - LOG_ERROR( "%s: ftm_nq_nfc_close() failed with status = %d \n", __FUNCTION__, status ); - } - - } while( FALSE ); - -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.h b/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.h deleted file mode 100755 index d2c73ed5d..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcnq_test.h +++ /dev/null @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2017 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Not a Contribution. - * Apache license notifications and license are retained - * for attribution purposes only. - * - * Copyright (C) 2015 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#define ESE_MAGIC 0xEA -#define ESE_SET_PWR _IOW(ESE_MAGIC, 0x01, unsigned int) -#define ESE_SET_DBG _IOW(ESE_MAGIC, 0x02, unsigned int) -#define ESE_SET_MODE _IOW(ESE_MAGIC, 0x03, unsigned int) -#define NFC_ESE_SET_PWR _IOW(0xE9, 0x02, unsigned int) -#define NFC_ESE_GET_PWR _IOR(0xE9, 0x03, unsigned int) -#define NFC_NTF_TIMEOUT 20 - -/* Supported Protocols */ -#define NFC_PROTOCOL_UNKNOWN 0x00 /* Unknown */ -#define NFC_PROTOCOL_T1T 0x01 /* Type1Tag - NFC-A */ -#define NFC_PROTOCOL_T2T 0x02 /* Type2Tag - NFC-A */ -#define NFC_PROTOCOL_T3T 0x03 /* Type3Tag - NFC-F */ -#define NFC_PROTOCOL_ISO_DEP 0x04 /* Type 4A,4B - NFC-A or NFC-B */ -#define NFC_PROTOCOL_NFC_DEP 0x05 /* NFCDEP/LLCP - NFC-A or NFC-F */ - -#define MAX_CMD_LEN 255 -#define READ_SAMPLE_SIZE 258 -extern int fdNfc; // a handle to the kernel driver -extern uint8_t nciReplyMessage[ 255 ]; -extern NQ_CHIP_TYPE whatNQChip; -extern sem_t sRspReady; -extern int ftm_nfc_nq_vs_nxp( void ); -int ese_dwp_test = 0; -int ese_spi_test = 0; -void sendcmds(uint8_t buffer[][255], int no_of_cmds); -void printTecnologyDetails(char technology, char protocol); -sem_t sRfNtf; - -struct ese_spi_platform_data -{ - unsigned int use_pwr_req; - unsigned int pwr_req; - unsigned int ese_intr; -}; - -/* - * Enum definition contains RF technology modes supported. - * This information is a part of RF_DISCOVER_NTF or RF_INTF_ACTIVATED_NTF. - */ -typedef enum -{ - NFC_NFCA_Poll = 0x00, /* Nfc A Technology in Poll Mode */ - NFC_NFCB_Poll = 0x01, /* Nfc B Technology in Poll Mode */ - NFC_NFCF_Poll = 0x02, /* Nfc F Technology in Poll Mode */ - NFC_NFCA_Active_Poll = 0x03, /* Nfc A Technology in Active Poll Mode */ - NFC_NFCF_Active_Poll = 0x05, /* Nfc F Technology in Active Poll Mode */ - NFC_NFCISO15693_Poll = 0x06, /* Nfc ISO15693 Technology in Poll Mode */ - NFC_NxpProp_NFCHID_Poll = 0x70, /* Nfc Hid Technology in Poll Mode */ - NFC_NxpProp_NFCEPFGEN2_Poll = 0x71, /* Nfc EpcGen2 Technology in Poll Mode */ - NFC_NxpProp_NFCKOVIO_Poll = 0x72, /* Nfc Kovio Technology in Poll Mode */ - NFC_NFCA_Listen = 0x80, /* Nfc A Technology in Listen Mode */ - NFC_NFCB_Listen = 0x81, /* Nfc B Technology in Listen Mode */ - NFC_NFCF_Listen = 0x82, /* Nfc F Technology in Listen Mode */ - NFC_NFCA_Active_Listen = 0x83, /* Nfc A Technology in Active Listen Mode */ - NFC_NFCF_Active_Listen = 0x85, /* Nfc F Technology in Active Listen Mode */ - NFC_NFCISO15693_Active_Listen = 0x86 /* Nfc ISO15693 Technology in Listen Mode */ -} NFC_RfTechMode_t; - -uint8_t NQ330_cmds[][255] = -{ -{ 0x20,0x00,0x01,0x00 }, -{ 0x20,0x01,0x00}, -{ 0x2F,0x02,0x00 }, -{ 0x20,0x03,0x03,0x01,0xA0,0x0F }, -{ 0x20,0x03,0x03,0x01,0xA0,0xFC }, -{ 0x20,0x03,0x03,0x01,0xA0,0xF2 }, -{ 0x20,0x03,0x03,0x01,0xA0,0xD7 }, -{ 0x20,0x03,0x07,0x03,0xA0,0x02,0xA0,0x03,0xA0,0x04 }, -{ 0x20,0x02,0x09,0x02,0xA0,0x03,0x01,0x01,0xA0,0x04,0x01,0x06 }, -{ 0x20,0x02,0x0F,0x01,0xA0,0x0E,0x0B,0x11,0x01,0xC2,0xB2,0x00,0xB2,0x1E,0x1F,0x00,0xD0,0x0C }, -{ 0x20,0x02,0x05,0x01,0xA0,0xF2,0x01,0x01 }, -{ 0x20,0x03,0x03,0x01,0xA0,0xEC }, -{ 0x20,0x03,0x03,0x01,0xA0,0xD4 }, -{ 0x20,0x03,0x03,0x01,0xA0,0x14 }, -{ 0x20,0x02,0x2E,0x0E,0x28,0x01,0x00,0x21,0x01,0x00,0x30,0x01,0x08,0x31,0x01,0x03,0x32,0x01,0x60,0x38,0x01,0x01,0x33,0x04,0x01,0x02,0x03,0x04,0x54,0x01,0x06,0x50,0x01,0x02,0x5B,0x01,0x00,0x80,0x01,0x01,0x81,0x01,0x01,0x82,0x01,0x0E,0x18,0x01,0x01 }, -{ 0x20,0x02,0x05,0x01,0xA0,0x62,0x01,0x01 }, -{ 0x20,0x02,0x06,0x01,0xA0,0xF3,0x02,0x10,0x27 }, -{ 0x20,0x03,0x03,0x01,0xA0,0x85 }, -{ 0x21,0x01,0x07,0x00,0x01,0x01,0x03,0x00,0x01,0x05 }, -{ 0x20,0x02,0x05,0x01,0xA0,0xF1,0x01,0x00 }, -{ 0x20,0x03,0x03,0x01,0xA0,0x0F }, -{ 0x20,0x03,0x03,0x01,0xA0,0xEB }, -{ 0x20,0x00,0x01,0x00 }, -{ 0x20,0x01,0x00}, -{ 0x20,0x03,0x02,0x01,0x00 }, -{ 0x20,0x03,0x02,0x01,0x29 }, -{ 0x20,0x03,0x02,0x01,0x61 }, -{ 0x20,0x03,0x02,0x01,0x60 }, -{ 0x20,0x02,0x0F,0x01,0xA0,0x0E,0x0B,0x11,0x01,0xC2,0xB2,0x00,0xB2,0x1E,0x1F,0x00,0xD0,0x0C }, -{ 0x21,0x00,0x0D,0x04,0x04,0x03,0x02,0x05,0x03,0x03,0x03,0x02,0x01,0x80,0x01,0x80 }, -{ 0x20,0x03,0x07,0x03,0xA0,0xEC,0xA0,0xED,0xA0,0xD4 }, -{ 0x20,0x03,0x03,0x01,0xA0,0xEB }, -{ 0x20,0x03,0x03,0x01,0xA0,0xF0 }, -{ 0x22,0x01,0x02,0xC0,0x01 }, -{ 0x22,0x03,0x02,0xC0,0x00 }, -{ 0x20,0x03,0x03,0x01,0xA0,0x14 }, -{ 0x20,0x03,0x03,0x01,0xA0,0xEB }, -{ 0x20,0x03,0x03,0x01,0xA0,0x07 }, -{ 0x20,0x03,0x02,0x01,0x52 }, -{ 0x2F,0x15,0x01,0x02 }, -{ 0x21,0x03,0x07,0x03,0x80,0x01,0x81,0x01,0x82,0x01 }, -{ 0x21,0x06,0x01,0x00 }, -{ 0x2F,0x15,0x01,0x00 }, -{ 0x20,0x02,0x07,0x02,0x32,0x01,0x60,0x38,0x01,0x01 }, -{ 0x21,0x01,0x1B,0x00,0x05,0x01,0x03,0x00,0x01,0x03,0x01,0x03,0x00,0x41,0x04,0x01,0x03,0x00,0x41,0xA0,0x01,0x03,0x00,0x01,0x05,0x00,0x03,0xC0,0xC3,0x02 }, -{ 0x20,0x02,0x07,0x02,0x32,0x01,0x60,0x38,0x01,0x01}, -{ 0x21,0x03,0x19,0x0C,0x00,0x01,0x01,0x01,0x02,0x01,0x03,0x01,0x05,0x01,0x80,0x01,0x81,0x01,0x82,0x01,0x83,0x01,0x85,0x01,0x06,0x01,0x70,0x01} -}; - -uint8_t NQ330_ESE_DWP[][255] = -{ -{ 0x20,0x00,0x01,0x00 }, -{ 0x20,0x01,0x00}, -{ 0x20,0x02,0x05,0x01,0xA0,0xF2,0x01,0x01 }, -{ 0x22,0x00,0x01,0x01 }, -{ 0x22,0x01,0x2,0x01,0x01 }, -{ 0x20,0x04,0x06,0x03,0x01,0x01,0x02,0x01,0x01 }, -{ 0x03,0x00,0x03,0x81,0x02,0x01 }, -{ 0x03,0x00,0x03,0x81,0x02,0x04 }, -{ 0x03,0x00,0x03,0x81,0x02,0x07 }, -{ 0x21,0x01,0x1B,0x00,0x05,0x01,0x03,0x00,0x01,0x03,0x01,0x03,0x00,0x41,0x04,0x01,0x03,0x00,0x41,0xA0,0x01,0x03,0x00,0x01,0x05,0x00,0x03,0xC0,0xC3,0x02 }, -{ 0x21,0x03,0x19,0x0C,0x00,0x01,0x01,0x01,0x02,0x01,0x03,0x01,0x05,0x01,0x80,0x01,0x81,0x01,0x82,0x01,0x83,0x01,0x85,0x01,0x06,0x01,0x70,0x01}, -{ 0x03,0x00,0x07,0x99,0x50,0x00,0x70,0x00,0x00,0x01}, -{ 0x03,0x00,0x09,0x99,0x50,0x80,0xCA,0x00,0xFE,0x02,0xDF,0x21 } -}; - -uint8_t NQ220_cmds[][255] = -{ - { 0x20,0x00,0x01,0x00 }, - { 0x20,0x01,0x00 }, - { 0x2F,0x02,0x00 }, - { 0x20,0x03,0x03,0x01,0xA0,0x0F }, - { 0x20,0x03,0x07,0x03,0xA0,0x02,0xA0,0x03,0xA0,0x04 }, - { 0x20,0x02,0x05,0x01,0xA0,0x44,0x01,0x00 }, - { 0x20,0x02,0x0B,0x02,0xA0,0x66,0x01,0x00,0xA0,0x0E,0x03,0x02,0x09,0x00 }, - { 0x20,0x02,0x26,0x09,0xA0,0xEC,0x01,0x01,0xA0,0xED,0x01,0x03,0xA0,0x5E,0x01,0x01,0xA0,0x12,0x01,0x02,0xA0,0x40,0x01,0x01,0xA0,0xDD,0x01,0x2D,0xA0,0xF2,0x01,0x01,0xA0,0x96,0x01,0x01,0xA0,0x9F,0x02,0x08,0x08 }, - { 0x20,0x03,0x03,0x01,0xA0,0xEC }, - { 0x20,0x03,0x03,0x01,0xA0,0x14 }, - { 0x20,0x02,0x2E,0x0E,0x28,0x01,0x00,0x21,0x01,0x00,0x30,0x01,0x08,0x31,0x01,0x03,0x32,0x01,0x60,0x38,0x01,0x01,0x33,0x04,0x01,0x02,0x03,0x04,0x54,0x01,0x06,0x50,0x01,0x02,0x5B,0x01,0x00,0x80,0x01,0x01,0x81,0x01,0x01,0x82,0x01,0x0E,0x18,0x01,0x01 }, - { 0x20,0x02,0x05,0x01,0xA0,0x62,0x01,0x01 }, - { 0x20,0x02,0x06,0x01,0xA0,0xF3,0x02,0x10,0x27 }, - { 0x20,0x03,0x03,0x01,0xA0,0x85 }, - { 0x21,0x01,0x07,0x00,0x01,0x01,0x03,0x00,0x01,0x05 }, - { 0x20,0x02,0x05,0x01,0xA0,0xF1,0x01,0x00 }, - { 0x20,0x02,0x05,0x01,0xA0,0x91,0x01,0x01 }, - { 0x20,0x03,0x03,0x01,0xA0,0x0F }, - { 0x20,0x03,0x03,0x01,0xA0,0xEB }, - { 0x20,0x00,0x01,0x00 }, - { 0x20,0x01,0x00 }, - { 0x20,0x03,0x02,0x01,0x00 }, - { 0x20,0x03,0x02,0x01,0x29 }, - { 0x20,0x03,0x02,0x01,0x61 }, - { 0x20,0x03,0x02,0x01,0x60 }, - { 0x21,0x00,0x0D,0x04,0x04,0x03,0x02,0x05,0x03,0x03,0x03,0x02,0x01,0x80,0x01,0x80 }, - { 0x22,0x00,0x01,0x01 }, - { 0x20,0x04,0x06,0x03,0x01,0x01,0x02,0x01,0x01 }, - { 0x03,0x00,0x05,0x81,0x01,0x03,0x02,0xC0 }, - { 0x03,0x00,0x05,0x81,0x01,0x06,0x01,0x00 }, - { 0x03,0x00,0x03,0x81,0x02,0x01 }, - { 0x03,0x00,0x03,0x81,0x02,0x04 }, - { 0x20,0x03,0x05,0x02,0xA0,0xEC,0xA0,0xED }, - { 0x20,0x03,0x03,0x01,0xA0,0xEB }, - { 0x20,0x03,0x03,0x01,0xA0,0xF0 }, - { 0x20,0x03,0x05,0x02,0xA0,0xEC,0xA0,0xED }, - { 0x20,0x03,0x03,0x01,0xA0,0x14 }, - { 0x20,0x03,0x03,0x01,0xA0,0xEB }, - { 0x20,0x03,0x03,0x01,0xA0,0x07 }, - { 0x20,0x02,0x05,0x01,0xA0,0x07,0x01,0x03 }, - { 0x20,0x03,0x02,0x01,0x52 }, - { 0x21,0x01,0x16,0x00,0x04,0x01,0x03,0x00,0x01,0x03,0x01,0x03,0x00,0x41,0x04,0x01,0x03,0x00,0x41,0xA0,0x01,0x03,0x00,0x01,0x05 }, - { 0x20,0x02,0x0A,0x03,0x32,0x01,0x20,0x38,0x01,0x01,0x50,0x01,0x00 }, - { 0x21,0x03,0x07,0x03,0x80,0x01,0x81,0x01,0x82,0x01 }, - { 0x21,0x06,0x01,0x00 }, - { 0x20,0x02,0x17,0x01,0x61,0x14,0x46,0x66,0x6D,0x01,0x01,0x12,0x02,0x02,0x07,0xFF,0x03,0x02,0x00,0x13,0x04,0x01,0x64,0x07,0x01,0x03 }, - { 0x20,0x02,0x0A,0x03,0x32,0x01,0x60,0x38,0x01,0x01,0x50,0x01,0x02 }, - { 0x21,0x03,0x19,0x0C,0x00,0x01,0x01,0x01,0x02,0x01,0x03,0x01,0x05,0x01,0x80,0x01,0x81,0x01,0x82,0x01,0x83,0x01,0x85,0x01,0x06,0x01,0x70,0x01 } -}; diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcqti.c b/feeds/ipq95xx/ftm/src/ftm_nfcqti.c deleted file mode 100755 index cfe1a6ec7..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcqti.c +++ /dev/null @@ -1,724 +0,0 @@ -/*========================================================================= - NFC FTM Source File -Description - This file contains the routines to communicate with the NFCC in FTM mode. - -Copyright (c) 2015 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. -===========================================================================*/ -/*=========================================================================== - Edit History -when who what, where, why --------- --- ---------------------------------------------------------- -===========================================================================*/ -/*==========================================================================* -* INCLUDE FILES * -*==========================================================================*/ -#include "ftm_nfcqti.h" - -#define UNUSED(x) (void)(x) - -/*=========================================================================* -* file scope local defnitions * -*==========================================================================*/ -const hw_module_t* hw_module = NULL; -nfc_nci_device_t* dev = NULL; -uint8 hal_state = NCI_HAL_INIT, nfc_ftmthread = FALSE; -uint8 *nfc_cmd_buff = NULL, len = 0; -uint16 res_len = 0, async_msg_cnt = 0; -uint8 *response_buff = NULL; -static uint8 hal_opened = FALSE, wait_rsp = FALSE; -static uint8 async_msg_available = FALSE, ftm_data_rsp_pending = FALSE; -asyncdata *buff = NULL; -asyncdata *start = NULL; -/*I2C read/write*/ -static uint8 i2c_cmd_cnt = 0; -uint8 i2c_status=0,i2c_req_write = FALSE, i2c_req_read = FALSE; -uint8 i2c_num_of_reg_to_read = 0, i2c_reg_read_data[40]={0}, ii = 0; -pthread_mutex_t nfcftm_mutex = PTHREAD_MUTEX_INITIALIZER; -/*===================================================================================* -* Function Defnitions * -*===================================================================================*/ -/*==================================================================================== -FUNCTION nfc_ftm_hal_cback -DESCRIPTION - This is the call back function which will indicate if the nfc hal open is successful - or failed. -DEPENDENCIES - NIL -RETURN VALUE -none -SIDE EFFECTS - NONE -=====================================================================================*/ -static void nfc_ftm_cback(uint8 event, uint8 status) -{ - switch(event) - { - case HAL_NFC_OPEN_CPLT_EVT: - if(status == HAL_NFC_STATUS_OK) - { - /* Release semaphore to indicate that hal open is done - and change the state to write.*/ - hal_state = NCI_HAL_WRITE; - hal_opened = TRUE; - printf("HAL Open Success..state changed to Write \n"); - } - else - { - printf("HAL Open Failed \n"); - hal_state = NCI_HAL_ERROR; - hal_opened = FALSE; - } - sem_post(&semaphore_halcmd_complete); - break; - case HAL_NFC_CLOSE_CPLT_EVT: - printf("HAL_NFC_CLOSE_CPLT_EVT recieved..\n"); - break; - default: - printf ("nfc_ftm_hal_cback unhandled event %x \n", event); - break; - } -} -/*========================================================================================== -FUNCTION fill_async_data -DESCRIPTION -This function will store all the incoming async msgs( like ntfs and data from QCA1990) -in to a list to be committed further. -DEPENDENCIES - NIL -RETURN VALUE - NONE -SIDE EFFECTS - NONE -==============================================================================================*/ -void fill_async_data(uint16 data_len, uint8 *p_data) -{ - uint16 i = 0; - asyncdata *next_node = NULL; - printf("fill_async_data() function \n"); - /* Initialize a list which will store all async message untill they are sent*/ - if(buff == NULL) - { - /* first node creation*/ - buff = (asyncdata*)malloc(sizeof(asyncdata)); - if(buff) - { - start = buff; - buff->response_buff = (uint8*)malloc(data_len); - if(buff->response_buff) - { - memcpy(buff->response_buff, p_data, data_len); - buff->async_datalen = data_len; - buff->next = NULL; - async_msg_cnt = 0; - async_msg_cnt++; - } - else - { - printf("mem allocation failed while storing asysnc msg \n"); - } - } - else - { - printf("mem allocation failed while trying to make the async list \n"); - } - } - else - { - /* this is the case when some data is already present in the list which has not been sent yet*/ - next_node = (asyncdata*)malloc(sizeof(asyncdata)); - if(next_node) - { - next_node->response_buff = (uint8*)malloc(data_len); - if(next_node->response_buff) - { - memcpy(next_node->response_buff, p_data,data_len); - next_node->async_datalen = data_len; - next_node->next = NULL; - async_msg_cnt++; - while(buff->next != NULL) - { - buff = buff->next; - } - buff->next = next_node; - } - else - { - printf("mem allocation failed while storing asysnc msg \n"); - } - } - else - { - printf("mem allocation failed while trying to make the async list \n"); - } - } -} -/*====================================================================================================== -FUNCTION nfc_ftm_data_cback -DESCRIPTION - This is the call back function which will provide back incoming data from the QCA1990 - to nfc ftm. -DEPENDENCIES - NIL -RETURN VALUE - NONE -SIDE EFFECTS - NONE -========================================================================================================*/ -static void nfc_ftm_data_cback(uint16 data_len, uint8 *p_data) -{ - uint8 i = 0; - if(hal_opened == FALSE) - { - /* Reject data call backs untill HAL in initialized */ - return; - } - if((data_len == 0x00) || (p_data == NULL)) - { - printf("Error case : wrong data lentgh or buffer revcieved \n"); - return; - } - if((i2c_req_write == TRUE) || (i2c_req_read == TRUE)) - { - if(i2c_req_write) - { - /*check the incoming status*/ - if(p_data[0] != 0x00) /* 0x00 = Command executed successfully*/ - { - /* some error has occured in I2C write.Send the status code back now to pc app*/ - i2c_status = p_data[0]; - printf("Error occured in I2C write .. reporting to application..Error Code = %X \n", i2c_status); - hal_state = NCI_HAL_READ; - sem_post(&semaphore_halcmd_complete); - } - else - { - /*status is fine. Complete further requests as ftmdaemon is writing one by one*/ - if(len) - { - /*send further addr and value pair*/ - printf("I2C write status correct..sending next..\n"); - hal_state = NCI_HAL_WRITE; - } - else - { - /*All I2C write completed .Send final status to app*/ - i2c_status = p_data[0]; - printf(" All I2C write completed i2c_status = %X \n", i2c_status); - hal_state = NCI_HAL_READ; - } - sem_post(&semaphore_halcmd_complete); - } - } - else - { - /*I2C read rsp arrived . fill it in buffer if correct or report error if wrong*/ - if(p_data[0] != 0x00) - { - /* some error has occured in I2C read.Send the status code to app*/ - i2c_status = p_data[0]; - printf("Error occured in I2C read .. reporting to application..Error Code = %X \n", i2c_status); - hal_state = NCI_HAL_READ; - memset(nfc_cmd_buff, 0, len); - sem_post(&semaphore_halcmd_complete); - } - else - { - if(len) - { - /*send further addr to read*/ - i2c_status = p_data[0]; - i2c_reg_read_data[ii++] = p_data[1]; - hal_state = NCI_HAL_WRITE; - } - else - { - /*All I2C read completed .Send the read data back to pc app*/ - i2c_status = p_data[0]; - i2c_reg_read_data[ii++] = p_data[1]; - hal_state = NCI_HAL_READ; - ii = 0; - } - sem_post(&semaphore_halcmd_complete); - } - } - } - else - { - if(((p_data[0] & 0xF0) == 0x60 /*ntf packets*/) || ((p_data[0] & 0xF0) == 0x00)/*data packet rsps*/) - { - async_msg_available = TRUE; - pthread_mutex_lock(&nfcftm_mutex); - fill_async_data(data_len, p_data); - pthread_mutex_unlock(&nfcftm_mutex); - if(ftm_data_rsp_pending == TRUE) - { - printf("Sending data rsp \n"); - hal_state = NCI_HAL_READ; - sem_post(&semaphore_halcmd_complete); - ftm_data_rsp_pending = FALSE; - } - else - { - if((wait_rsp == FALSE) || ((p_data[0] == 0x60) && (p_data[1] == 0x00))) - { - /*This is the case when ntf receieved after rsp is logged to pc app*/ - printf("Sending async msg to logging subsystem \n"); - hal_state = NCI_HAL_ASYNC_LOG; - sem_post(&semaphore_halcmd_complete); - } - } - } - else - { - if(response_buff || res_len) - { - printf("nfc_ftm_data_cback : response_buff = %p, res_len = %d", response_buff, res_len); - return; - } - response_buff = (uint8*)malloc(data_len); - if(response_buff) - { - memcpy(response_buff, p_data, data_len); - res_len = data_len; - printf("nfc_ftm_data_cback: res_len=%d data_len=%d response_buff= %X %X %X %X %X %X \n", res_len,data_len, \ - response_buff[0],response_buff[1],response_buff[2],response_buff[3],response_buff[4],response_buff[5]); - hal_state = NCI_HAL_READ; - sem_post(&semaphore_halcmd_complete); - } - else - { - printf("Mem allocation failed in nfc_ftm_data_cback \n"); - } - } - } -} -/*=========================================================================== -FUNCTION ftm_nfc_hal_open -DESCRIPTION - This function will open the nfc hal for ftm nfc command processing. -DEPENDENCIES - NIL -RETURN VALUE - void -SIDE EFFECTS - NONE -===============================================================================*/ -uint8 ftm_nfc_hal_open(void) -{ - uint8 ret = 0; - ret = hw_get_module(NFC_NCI_HARDWARE_MODULE, &hw_module); - if(ret == 0) - { - dev = (nfc_nci_device_t*)malloc(sizeof(nfc_nci_device_t)); - if(!dev) - { - printf("NFC FTM : mem allocation failed \n"); - return FALSE; - } - else - { - ret = nfc_nci_open (hw_module, &dev); - if(ret != 0) - { - printf("NFC FTM : nfc_nci_open fail \n"); - free(dev); - return FALSE; - } - else - { - printf("NFC FTM : opening NCI HAL \n"); - dev->common.reserved[0] = FTM_MODE; - dev->open (dev, nfc_ftm_cback, nfc_ftm_data_cback); - sem_wait(&semaphore_halcmd_complete); - } - } - } - else - { - printf("NFC FTM : hw_get_module() call failed \n"); - return FALSE; - } - return TRUE; -} -/*================================================================================================= -FUNCTION ftm_nfc_log_send_msg -DESCRIPTION -This function will log the asynchronous messages(NTFs and data packets) to the logging subsystem - of DIAG. -DEPENDENCIES -RETURN VALUE -TRUE if data logged successfully and FALSE if failed. -SIDE EFFECTS - None -==================================================================================================*/ -int ftm_nfc_log_send_msg(void) -{ - uint16 i = 0; - ftm_nfc_log_pkt_type* ftm_nfc_log_pkt_ptr = NULL; - asyncdata* node = NULL; - uint8 arr[1]= {'\n'}; - if(log_status(LOG_NFC_FTM)) - { - buff = start; - if(buff != NULL) - { - do{ - printf("buff->async_datalen : %d \n", buff->async_datalen); - ftm_nfc_log_pkt_ptr = (ftm_nfc_log_pkt_type *)log_alloc(LOG_NFC_FTM, (FTM_NFC_LOG_HEADER_SIZE + (buff->async_datalen))); - if(ftm_nfc_log_pkt_ptr) - { - memcpy((void *)ftm_nfc_log_pkt_ptr->data, (void *)buff->response_buff, buff->async_datalen); - printf("Async msg is = "); - for(i=0; iasync_datalen; i++) - { - printf("%X ", ftm_nfc_log_pkt_ptr->data[i]); - } - printf("%c",arr[0]); - node = buff; - buff = buff->next; - free(node); - printf("Commiting the log message(async msg) \n"); - log_commit(ftm_nfc_log_pkt_ptr); - } - else - { - printf("\nmem alloc failed in log_alloc \n"); - return FALSE; - } - }while(buff != NULL); - printf("all msgs committed \n"); - async_msg_available = FALSE; - return TRUE; - } - else - { - printf("No async message left to be logged \n"); - } - } - else - { - printf("LOG_NFC_FTM code is not enabled in logging subsystem \n"); - } - return FALSE; -} -/*=========================================================================== -FUNCTION nfc_ftm_readerthread -DESCRIPTION - Thread Routine to perfom asynchrounous handling of events coming from - NFCC. It will perform read and write for all type of commands/data. -DEPENDENCIES -RETURN VALUE - RETURN NIL -SIDE EFFECTS - None -===========================================================================*/ -void* nfc_ftm_thread(void *ptr) -{ - uint8 i2c_buff[3] = {0}; - - UNUSED(ptr); - - while(1) - { - printf("Waiting for Cmd/Rsp \n"); - sem_wait (&semaphore_halcmd_complete); - switch(hal_state) - { - case NCI_HAL_INIT: - printf("NFC FTM : HAL Open request recieved..\n"); - if(ftm_nfc_hal_open() == FALSE) - { - hal_state = NCI_HAL_ERROR; - hal_opened = FALSE; - } - else - { - break; - } - case NCI_HAL_ERROR: - /* HAL open failed.Post sem and handle error case*/ - sem_post(&semaphore_nfcftmcmd_complete); - break; - case NCI_HAL_WRITE: - if(dev != NULL) - { - printf("NFC FTM : Cmd recieved for nfc ftm..sending.\n"); - if((!i2c_req_write) && (!i2c_req_read)) - { - /* send data to the NFCC*/ - if(nfc_cmd_buff[0] == 0x00 /*data req*/) - { - printf("Data send request arrived \n"); - ftm_data_rsp_pending = TRUE; - } - else - { - printf("cmd request arrived \n"); - wait_rsp = TRUE; - } - dev->write(dev, len, nfc_cmd_buff); - } - else - { - if(i2c_req_write) - { - i2c_buff[0] = 0xFF; - i2c_buff[1] = nfc_cmd_buff[i2c_cmd_cnt++]; /* addr*/ - i2c_buff[2] = nfc_cmd_buff[i2c_cmd_cnt++]; /*value*/ - len -=2; - dev->write(dev, 3, i2c_buff); - } - else - { - /* I2c Read req*/ - i2c_buff[0] = 0xFF; - i2c_buff[1] = nfc_cmd_buff[i2c_cmd_cnt++]; /* I2C addr to read*/ - i2c_reg_read_data[ii++] = i2c_buff[1]; /* store address to send in response.*/ - len -= 1; - dev->write(dev, 2, i2c_buff); - } - } - } - else - { - printf("dev is null \n"); - } - break; - case NCI_HAL_READ: - /* indicate to ftm that response is avilable now*/ - sem_post(&semaphore_nfcftmcmd_complete); - printf("NFC FTM : State changed to READ i2c_req_read: %d\n",i2c_req_read); - break; - case NCI_HAL_ASYNC_LOG: - /* indicate to ftm that response is avilable now*/ - printf("NFC FTM : State changed to NCI_HAL_ASYNC_LOG.Logging aysnc message \n"); - pthread_mutex_lock(&nfcftm_mutex); - if(ftm_nfc_log_send_msg()) - { - printf("async msgs commited to the log system..changing HAL state to write \n"); - } - else - { - printf("async msgs commit failed..changing HAL state to write \n"); - } - hal_state = NCI_HAL_WRITE; - pthread_mutex_unlock(&nfcftm_mutex); - break; - default: - break; - } - } -} -/*=========================================================================== -FUNCTION ftm_nfc_dispatch -DESCRIPTION -This is the function which will be called by the NFC FTM layer callback function -registered with the DIAG service./ -DEPENDENCIES -RETURN VALUE - RETURN rsp pointer(containing the NFCC rsp packets) to the callback function - (subsequently for DIAG service) -SIDE EFFECTS - None -===========================================================================*/ -void* ftm_nfc_dispatch_qti(ftm_nfc_pkt_type *nfc_ftm_pkt, uint16 pkt_len) -{ - ftm_nfc_i2c_write_rsp_pkt_type *i2c_write_rsp = NULL; - ftm_nfc_i2c_read_rsp_pkt_type *i2c_read_rsp = NULL; - ftm_nfc_pkt_type *rsp = NULL; - ftm_nfc_data_rsp_pkt_type *nfc_data_rsp = NULL; - struct timespec time_sec; - int sem_status; - - UNUSED(pkt_len); - - printf("NFC FTM : nfc ftm mode requested \n"); - if(nfc_ftm_pkt == NULL) - { - printf("Error : NULL packet recieved from DIAG \n"); - goto error_case; - } - /* Start nfc_ftm_thread which will process all requests as per - state machine flow. By Default First state will be NCI_HAL_INIT*/ - if(!nfc_ftmthread) - { - if(sem_init(&semaphore_halcmd_complete, 0, 1) != 0) - { - printf("NFC FTM :semaphore_halcmd_complete creation failed \n"); - goto error_case; - } - if(sem_init(&semaphore_nfcftmcmd_complete, 0, 0) != 0) - { - printf("NFC FTM :semaphore_nfcftmcmd_complete creation failed \n"); - goto error_case; - } - printf("NFC FTM : nfc ftm thread is being started \n"); - pthread_create(&nfc_thread_handle, NULL, nfc_ftm_thread, NULL); - nfc_ftmthread = TRUE; - } - /* parse the diag packet to identify the NFC FTM command which needs to be sent - to QCA 1990*/ - if(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_len > 2) - { - len = nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_len-2; - } - else - { - /*Wrong nfc ftm packet*/ - goto error_case; - } - switch(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id) - { - case FTM_NFC_I2C_SLAVE_WRITE: - i2c_req_write = TRUE; - break; - case FTM_NFC_I2C_SLAVE_READ: - i2c_num_of_reg_to_read = len; - i2c_req_read = TRUE; - break; - case FTM_NFC_NFCC_COMMAND: - case FTM_NFC_SEND_DATA: - break; - default : - goto error_case; - break; - } - /*copy command to send it further to QCA1990*/ - nfc_cmd_buff = (uint8 *)malloc(len+1); - if(nfc_cmd_buff) - { - memcpy(nfc_cmd_buff, nfc_ftm_pkt->nci_data, len); - } - else - { - printf("Mem allocation failed for cmd storage"); - goto error_case; - } - /*send the command */ - sem_post(&semaphore_halcmd_complete); - printf("\nwaiting for nfc ftm response \n"); - if (clock_gettime(CLOCK_REALTIME, &time_sec) == -1) - { - printf("get clock_gettime error"); - } - time_sec.tv_sec += FTM_NFC_CMD_CMPL_TIMEOUT; - sem_status = sem_timedwait(&semaphore_nfcftmcmd_complete,&time_sec); - if(sem_status == -1) - { - printf("nfc ftm command timed out\n"); - goto error_case; - } - if(!hal_opened) - { - /*Hal open is failed */ - free(nfc_cmd_buff); - hal_state = NCI_HAL_INIT; - goto error_case; - } - printf("\n\n *****Framing the response to send back to Diag service******** \n\n"); - /* Frame the response as per the cmd request*/ - switch(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id) - { - case FTM_NFC_I2C_SLAVE_WRITE: - printf("Framing the response for FTM_NFC_I2C_SLAVE_WRITE cmd \n"); - i2c_write_rsp = (ftm_nfc_i2c_write_rsp_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof(ftm_nfc_i2c_write_rsp_pkt_type)); - if(i2c_write_rsp) - { - i2c_write_rsp->nfc_i2c_slave_status = i2c_status; - i2c_status = 0; - i2c_cmd_cnt = 0; - i2c_req_write = FALSE; - } - break; - case FTM_NFC_I2C_SLAVE_READ: - printf("Framing the response for FTM_NFC_I2C_SLAVE_READ cmd \n"); - i2c_read_rsp = (ftm_nfc_i2c_read_rsp_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof(ftm_nfc_i2c_read_rsp_pkt_type)); - if(i2c_read_rsp) - { - i2c_read_rsp->ftm_nfc_hdr.nfc_cmd_id = FTM_NFC_I2C_SLAVE_READ; - i2c_read_rsp->ftm_nfc_hdr.nfc_cmd_len = 2+(2*i2c_num_of_reg_to_read); - i2c_read_rsp->nfc_i2c_slave_status = i2c_status; - if(i2c_status == 0x00) - { - i2c_read_rsp->nfc_nb_reg_reads = i2c_num_of_reg_to_read; - } - else - { - i2c_read_rsp->nfc_nb_reg_reads = 0x00; // error case so return num of read as 0x00. - } - memcpy(i2c_read_rsp->i2c_reg_read_rsp, i2c_reg_read_data, (i2c_num_of_reg_to_read*2)); - i2c_cmd_cnt = 0; - } - break; - case FTM_NFC_NFCC_COMMAND: - printf("Framing the response for FTM_NFC_NFCC_COMMAND cmd \n"); - if(response_buff && res_len) - { - rsp = (ftm_nfc_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof(ftm_nfc_pkt_type)); - if(rsp) - { - rsp->ftm_nfc_hdr.nfc_cmd_id = FTM_NFC_NFCC_COMMAND; - rsp->ftm_nfc_hdr.nfc_cmd_len = 2+res_len; - rsp->nfc_nci_pkt_len = res_len; - memcpy(rsp->nci_data, response_buff, res_len); - free(response_buff); - response_buff = 0; - res_len = 0; - } - } - else - printf("ftm_nfc_dispatch : response_buff = %p, res_len = %d", response_buff, res_len); - break; - case FTM_NFC_SEND_DATA: - printf("Framing the response for FTM_NFC_SEND_DATA cmd \n"); - nfc_data_rsp = (ftm_nfc_data_rsp_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_NFC_CMD_CODE, - sizeof(ftm_nfc_data_rsp_pkt_type)); - if(nfc_data_rsp) - { - nfc_data_rsp->ftm_nfc_hdr.nfc_cmd_id = FTM_NFC_SEND_DATA; - nfc_data_rsp->ftm_nfc_hdr.nfc_cmd_len = 0;/*Rsp as per the NFC FTM data rsp req*/ - } - break; - default: - goto error_case; - break; - } - free(nfc_cmd_buff); - hal_state = NCI_HAL_WRITE; - if(async_msg_available) - { - printf(" Some async message available.. committing now.\n"); - hal_state = NCI_HAL_ASYNC_LOG; - sem_post(&semaphore_halcmd_complete); - } - wait_rsp = FALSE; - if(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_I2C_SLAVE_WRITE) - { - return(void*)i2c_write_rsp; - } - else if(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_I2C_SLAVE_READ) - { - i2c_req_read = FALSE; - return(void*)i2c_read_rsp; - } - else if(nfc_ftm_pkt->ftm_nfc_hdr.nfc_cmd_id == FTM_NFC_NFCC_COMMAND) - { - return(void*)rsp; - } - else - { - return(void*)nfc_data_rsp; - } -error_case: - return NULL; -} diff --git a/feeds/ipq95xx/ftm/src/ftm_nfcqti.h b/feeds/ipq95xx/ftm/src/ftm_nfcqti.h deleted file mode 100755 index 28968b991..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_nfcqti.h +++ /dev/null @@ -1,141 +0,0 @@ -#ifndef FTM_NFCQTI_H_ -#define FTM_NFCQTI_H_ -/*========================================================================== - - nfc FTM header File - -Description - This file contains the decalarations used by ftm_nfc.c - -Copyright (c) 2015 Qualcomm Technologies, Inc. -All Rights Reserved. -Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -08/06/13 NFC FTM layer -===========================================================================*/ - -#ifdef CONFIG_FTM_NFC - -#include "stdio.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "msg.h" -#include "log.h" - -#include "diag_lsm.h" -#include "diagpkt.h" -#include "diagcmd.h" -#include "diag.h" -#include "termios.h" - -/*==========================================================================* -* Defnitions * -*==========================================================================*/ -#define FTM_MODE 1 -#define TRUE 1 -#define FALSE 0 -#define FTM_MODE 1 -#define FTM_NFC_CMD_CODE 55 -#define LOG_NFC_FTM 0x1802 -#define FTM_NFC_LOG_HEADER_SIZE 12 - -#define FTM_NFC_I2C_SLAVE_WRITE 0x00 -#define FTM_NFC_I2C_SLAVE_READ 0x01 -#define FTM_NFC_NFCC_COMMAND 0x02 -#define FTM_NFC_SEND_DATA 0x03 - -#define FTM_NFC_CMD_CMPL_TIMEOUT 15 - -#ifdef ANDROID_M -#define NFC_NCI_HARDWARE_MODULE "nfc_nci.qc199x" -#else -#define NFC_NCI_HARDWARE_MODULE "nfc_nci" -#endif - -enum -{ - NCI_HAL_INIT, - NCI_HAL_WRITE, - NCI_HAL_READ, - NCI_HAL_DEINIT, - NCI_HAL_ASYNC_LOG, - NCI_HAL_ERROR -}; -/*==========================================================================* -* Declarations * -*==========================================================================*/ -/* Reader thread handle */ -pthread_t nfc_thread_handle; -sem_t semaphore_halcmd_complete; -sem_t semaphore_nfcftmcmd_complete; - -/* structure that contains nfc cmd id and len - part of the packet recieved from DIAG*/ -PACKED struct ftm_nfc_cmd_header_type{ - uint16 nfc_cmd_id; - uint16 nfc_cmd_len; -}; - -/* nfc FTM packet(for NCI cmd/rsp messages)*/ -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - struct ftm_nfc_cmd_header_type ftm_nfc_hdr; - uint16 nfc_nci_pkt_len; - byte nci_data[258]; -}ftm_nfc_pkt_type; - -/* nfc FTM packet (for I2C write messgaes)*/ -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - uint8 nfc_i2c_slave_status; -}ftm_nfc_i2c_write_rsp_pkt_type; - -/* nfc FTM packet (for I2C read messgaes)*/ -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - struct ftm_nfc_cmd_header_type ftm_nfc_hdr; - uint8 nfc_i2c_slave_status; - uint8 nfc_nb_reg_reads; - byte i2c_reg_read_rsp[30]; -}ftm_nfc_i2c_read_rsp_pkt_type; - - -typedef PACKED struct{ - diagpkt_subsys_header_type diag_hdr; - struct ftm_nfc_cmd_header_type ftm_nfc_hdr; -}ftm_nfc_data_rsp_pkt_type; - -typedef PACKED struct{ - log_hdr_type hdr; - byte data[1]; -}ftm_nfc_log_pkt_type; - -/*Data buffer linked list*/ -typedef struct asyncdata { - uint8 *response_buff; - uint8 async_datalen; - struct asyncdata *next; -}asyncdata; - -typedef void (tHAL_NFC_CBACK) (uint8 event, uint8 status); -typedef void (tHAL_NFC_DATA_CBACK) (uint16 data_len, uint8 *p_data); - -void* ftm_nfc_dispatch_qti(ftm_nfc_pkt_type *ftm_nfc_pkt, uint16 pkt_len); - -#endif /* CONFIG_FTM_NFC */ -#endif /* FTM_NFCQTI_H_ */ diff --git a/feeds/ipq95xx/ftm/src/ftm_wlan.c b/feeds/ipq95xx/ftm/src/ftm_wlan.c deleted file mode 100755 index 2bc930416..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_wlan.c +++ /dev/null @@ -1,1212 +0,0 @@ -/*========================================================================== - - FTM WLAN Source File - -============================================================================ - -# Copyright (c) 2011, 2013-2018 Qualcomm Technologies, Inc. -# All Rights Reserved. -# Confidential and Proprietary - Qualcomm Technologies, Inc. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -07/11/11 karthikm Wrapper that contains routines for directing FTM commands - sent from host to the IOCTL calls of Atheros driver. -*/ - -/* - * Copyright (c) 2006 Atheros Communications Inc. - * All rights reserved. - * - * -// The software source and binaries included in this development package are -// licensed, not sold. You, or your company, received the package under one -// or more license agreements. The rights granted to you are specifically -// listed in these license agreement(s). All other rights remain with Atheros -// Communications, Inc., its subsidiaries, or the respective owner including -// those listed on the included copyright notices. Distribution of any -// portion of this package must be in strict compliance with the license -// agreement(s) terms. -// -// -// -// FTM_WLAN_TCMD -// Based on athtestcmd.c from AR6003 drop -// -// - * - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include "comdef.h" -#include "diagcmd.h" - -#include "testcmd.h" -#include "libtcmd.h" -#include "ftm_wlan.h" -#include "ftm_dbg.h" - -#define INVALID_FREQ 0 -#define A_RATE_NUM 28 -#define G_RATE_NUM 28 -#define RATE_STR_LEN 20 - -int old_iface_id = -1; -#ifdef CONFIG_FTM_WLAN_AUTOLOAD -#define MODULE_FILE "/proc/modules" -#define DRIVER_MODULE_TAG "wlan" -#define WLAN_CFG_FILE "/persist/wlan_mac.bin" -/* Offset for set mac address cmd */ -#define MAIN_CMD_OFFSET 16 -#define SUB_CMD_OFFSET 24 -#define LENGTH_OFFSET 32 -#define NMAC_OFFSET 48 -#define PMAC_OFFSET 49 - -#if defined(ANDROID) -#if defined(BOARD_HAS_ATH_WLAN_AR6320) -#if BOARD_HAS_ATH_WLAN_AR6320 -#define FTM_WLAN_LOAD_CMD "/system/bin/insmod " \ - "/system/lib/modules/wlan.ko con_mode=5" -#define FTM_WLAN_UNLOAD_CMD "/system/bin/rmmod wlan" -#endif -#endif -#elif defined(MDM_LE) -#define FTM_WLAN_LOAD_CMD "/etc/init.d/wlan start_ftm" -#define FTM_WLAN_UNLOAD_CMD "/etc/init.d/wlan stop" -#else -#warning "Load and Unload driver may not work!" -#endif - -typedef enum { - SUBCMD_DRIVER_LOAD = 'L', - SUBCMD_DRIVER_UNLOAD = 'U', - SUBCMD_DRIVER_AUTO_MODE = 'A', -} sub_cmds; - -static int load_wifi_driver_testmode(void); -static int unload_wifi_driver(void); -static bool is_wifi_driver_loaded(char *mod_tag); -static bool flag_driver_auto_load = false; -#endif /* CONFIG_FTM_WLAN_AUTOLOAD */ -extern void diagpkt_free(void *pkt); -#ifdef WIN_AP_AFC -extern int ftm_mfg_provision_store(ftm_wlan_req_pkt_type *wlan_ftm_pkt); -extern int ftm_mfg_provision_id(uint32 *serial_id, uint16 *oem_id, uint16 *prd_id); -#endif /* WIN_AP_AFC */ -char bdf_file[128] = {'0'}; -static void rxReport(void *buf); -#ifndef WIN_AP_HOST -char g_ifname[IFNAMSIZ] = "wlan"; -#else -#ifdef WIN_AP_HOST_OPEN -char g_ifname[IFNAMSIZ] = "wlan"; -#else -char g_ifname[IFNAMSIZ] = "wifi"; -#endif -#endif - -#ifdef WIN_AP_HOST - -#define WIN_COMMON_OP_REQ 0xFE -#define BT_CMD_REQ 198 -#define BTCMD_ID_POS 64 -#define BT_MAC_LEN_POS 80 -#define BT_CMD_LEN 0xC - -#endif - -void print_uchar_array(uint8_t *addr, int len) -{ - int i; - for (i = 0;i< len; i++) - DPRINTF(FTM_DBG_TRACE, "%02X ", addr[i]); - DPRINTF(FTM_DBG_TRACE, "\n"); -} - -void print_uint16_array(uint16_t *addr, int len) -{ - int i; - for (i = 0;i< len; i++) - DPRINTF(FTM_DBG_TRACE, "%02X %02X ", addr[i]>>8, addr[i]&0xFF); - DPRINTF(FTM_DBG_TRACE, "\n"); -} - -/*=========================================================================== -FUNCTION rxReport - -DESCRIPTION - Quick debug routine that will print all the receive statistics - -DEPENDENCIES - NIL - -RETURN VALUE - NIL - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void rxReport(void *buf) -{ - uint32 pkt; - int rssi; - uint32 crcError; - uint32 secErr; - uint16 rateCnt[TCMD_MAX_RATES]; - uint16 rateCntShortGuard[TCMD_MAX_RATES]; - - pkt = *(uint32 *)buf; - rssi = (int)(*((uint32 *)buf + 1)); - crcError = *((uint32 *)buf + 2); - secErr = *((uint32 *)buf + 3); - - DPRINTF(FTM_DBG_TRACE, "total pkt %u, crcError pkt %u, secErr pkt %u, average rssi %d\n", - pkt, crcError, secErr, (int)( pkt ? (rssi / (int)pkt) : 0)); - - - memcpy(rateCnt, ((unsigned char *)buf) + (4 * sizeof(uint32)), sizeof(rateCnt)); - memcpy(rateCntShortGuard, ((unsigned char *)buf) + (4 * sizeof(uint32)) + - (TCMD_MAX_RATES * sizeof(uint16)), sizeof(rateCntShortGuard)); - - DPRINTF(FTM_DBG_INFO, "1Mbps %d\n", rateCnt[0]); - DPRINTF(FTM_DBG_INFO, "2Mbps %d\n", rateCnt[1]); - DPRINTF(FTM_DBG_INFO, "5.5Mbps %d\n", rateCnt[2]); - DPRINTF(FTM_DBG_INFO, "11Mbps %d\n", rateCnt[3]); - DPRINTF(FTM_DBG_INFO, "6Mbps %d\n", rateCnt[4]); - DPRINTF(FTM_DBG_INFO, "9Mbps %d\n", rateCnt[5]); - DPRINTF(FTM_DBG_INFO, "12Mbps %d\n", rateCnt[6]); - DPRINTF(FTM_DBG_INFO, "18Mbps %d\n", rateCnt[7]); - DPRINTF(FTM_DBG_INFO, "24Mbps %d\n", rateCnt[8]); - DPRINTF(FTM_DBG_INFO, "36Mbps %d\n", rateCnt[9]); - DPRINTF(FTM_DBG_INFO, "48Mbps %d\n", rateCnt[10]); - DPRINTF(FTM_DBG_INFO, "54Mbps %d\n", rateCnt[11]); - DPRINTF(FTM_DBG_INFO, "\n"); - DPRINTF(FTM_DBG_INFO, "HT20 MCS0 6.5Mbps %d (SGI: %d)\n", rateCnt[12], rateCntShortGuard[12]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS1 13Mbps %d (SGI: %d)\n", rateCnt[13], rateCntShortGuard[13]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS2 19.5Mbps %d (SGI: %d)\n", rateCnt[14], rateCntShortGuard[14]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS3 26Mbps %d (SGI: %d)\n", rateCnt[15], rateCntShortGuard[15]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS4 39Mbps %d (SGI: %d)\n", rateCnt[16], rateCntShortGuard[16]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS5 52Mbps %d (SGI: %d)\n", rateCnt[17], rateCntShortGuard[17]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS6 58.5Mbps %d (SGI: %d)\n", rateCnt[18], rateCntShortGuard[18]); - DPRINTF(FTM_DBG_INFO, "HT20 MCS7 65Mbps %d (SGI: %d)\n", rateCnt[19], rateCntShortGuard[19]); - DPRINTF(FTM_DBG_INFO, "\n"); - DPRINTF(FTM_DBG_INFO, "HT40 MCS0 13.5Mbps %d (SGI: %d)\n", rateCnt[20], rateCntShortGuard[20]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS1 27.0Mbps %d (SGI: %d)\n", rateCnt[21], rateCntShortGuard[21]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS2 40.5Mbps %d (SGI: %d)\n", rateCnt[22], rateCntShortGuard[22]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS3 54Mbps %d (SGI: %d)\n", rateCnt[23], rateCntShortGuard[23]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS4 81Mbps %d (SGI: %d)\n", rateCnt[24], rateCntShortGuard[24]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS5 108Mbps %d (SGI: %d)\n", rateCnt[25], rateCntShortGuard[25]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS6 121.5Mbps %d (SGI: %d)\n", rateCnt[26], rateCntShortGuard[26]); - DPRINTF(FTM_DBG_INFO, "HT40 MCS7 135Mbps %d (SGI: %d)\n", rateCnt[27], rateCntShortGuard[27]); -} - -ftm_wlan_rsp_pkt_type *g_rsp = NULL; -TCMD_ID tcmd = TCMD_CONT_RX_ID; -uint32 mode = 0; - -/*=========================================================================== -FUNCTION ftm_wlan_tcmd_rx - -DESCRIPTION - Call back handler - -DEPENDENCIES - NIL - -RETURN VALUE - NONE - -SIDE EFFECTS - NONE - -===========================================================================*/ - -void ftm_wlan_tcmd_rx(void *buf, int len) -{ - void *data = NULL; - int data_len = 0; - struct TCMD_CONT_RX_REPORT *report = NULL; - TC_CMDS *tCmd = NULL; - u_int32_t *src, *dest; - int j; - -#ifdef DEBUG - current_time(); -#endif - DPRINTF(FTM_DBG_TRACE, "Rx call back received with len %d\n", len); - - /* Build the response to be sent */ - switch(tcmd) { - case TCMD_CONT_RX_ID: - report = &((TCMD_CONT_RX *) buf)->u.report; - - if (mode == TCMD_CONT_RX_REPORT) { - rxReport((void*)report); - } else if (mode == TCMD_CONT_RX_GETMAC) { - tCmd = (TC_CMDS *)buf; - - DPRINTF(FTM_DBG_TRACE, "length %d version %d act %d\n", - tCmd->hdr.u.parm.length, tCmd->hdr.u.parm.version, - tCmd->hdr.act); - - DPRINTF(FTM_DBG_INFO, - "MAC address : %02x:%02x:%02x:%02x:%02x:%02x\n", - tCmd->buf[0], tCmd->buf[1], tCmd->buf[2], - tCmd->buf[3], tCmd->buf[4], tCmd->buf[5]); - } - - data = report; - data_len = sizeof(struct TCMD_CONT_RX_REPORT); - break; - - case TC_CMDS_ID: - tCmd = (TC_CMDS *)buf; - - DPRINTF(FTM_DBG_TRACE, "length %d version %d act %d\n", - tCmd->hdr.u.parm.length, tCmd->hdr.u.parm.version, - tCmd->hdr.act); - data = buf; - data_len = sizeof(TC_CMDS); - - if ( mode == TC_CMDS_READTHERMAL ) - DPRINTF(FTM_DBG_INFO, "Chip Thermal value: %d\n", tCmd->buf[0]); - break; - - case TC_CMD_TLV_ID: - data = buf; - data_len = len; - src = (u_int32_t *)buf; - dest = (u_int32_t *)buf; - for (j = 0; j < roundup(len, sizeof(u_int32_t))/4; j++) { - *(dest+j) = le32toh(*(src+j)); - } - print_uchar_array(buf, len); - - DPRINTF(FTM_DBG_TRACE, "tcmd_rx TC_CMD_TLV_ID length %d\n", len); - break; - - default: - data_len = 0; - data = NULL; - DPRINTF(FTM_DBG_TRACE, "Unknown TCMD response\n"); - break; - } - - g_rsp = (ftm_wlan_rsp_pkt_type*)diagpkt_subsys_alloc( DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, (sizeof(g_rsp->common_header) + - sizeof(g_rsp->cmd.common_ops) + data_len)); - - if (g_rsp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate diag packet! tcmd: %d", - tcmd); - return; - } - -#ifdef WIN_AP_HOST - /* Handle win specific fw responses */ - if (data == NULL || data_len == 0) - g_rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - else - win_host_handle_fw_resp(g_rsp, data, data_len); - if (g_rsp == NULL) - return; -#else - - if (data && data_len != 0) - memcpy(g_rsp->cmd.common_ops.rx_and_therm.rxReport.data, data, data_len); - - g_rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_PASS); -#endif -} - -/*=========================================================================== -FUNCTION isResponseNeeded - -DESCRIPTION - Do we need a response for the command - -DEPENDENCIES - NIL - -RETURN VALUE - boolean response required/not - -SIDE EFFECTS - NONE - -===========================================================================*/ -static bool isResponseNeeded(void *buf) -{ - bool respNeeded = false; - - tcmd = le32toh(*((uint32 *) buf)); - mode = le32toh(*((uint32 *) buf + 1)); - - /// Insert commands which need response - switch (tcmd) - { - case TC_CMD_TLV_ID: - respNeeded = true; - break; - case TCMD_CONT_RX_ID: - switch (mode) - { - case TCMD_CONT_RX_REPORT: - case TCMD_CONT_RX_GETMAC: - respNeeded = true; - break; - } - break; - case TC_CMDS_ID: - switch (mode) - { - case TC_CMDS_READTHERMAL: - case TC_CMDS_EFUSEDUMP: - case TC_CMDS_EFUSEWRITE: - case TC_CMDS_OTPSTREAMWRITE: - case TC_CMDS_OTPDUMP: - respNeeded = true; //TC_CMDS_EFUSEDUMP, TC_CMDS_EFUSEWRITE, TC_CMDS_OTPSTREAMWRITE, TC_CMDS_OTPDUMP, TC_CMDS_READTHERMAL - break; - } - break; - default: - break; - } - - if (respNeeded) - { - DPRINTF(FTM_DBG_TRACE, "cmdID %d response needed\n", tcmd); - } - else - { - DPRINTF(FTM_DBG_TRACE, "cmdID %d response not needed\n", tcmd); - } - - return respNeeded; -} - - -/*=========================================================================== -FUNCTION ftm_wlan_common_op - -DESCRIPTION - Process ftm commands like load driver, Tx, Rx and few test commands - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_common_op(ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len) -{ - uint8_t *input_msg = (uint8_t*)wlan_ftm_pkt; - uint32_t *cmd; - ftm_wlan_rsp_pkt_type *rsp; - int data_len = pkt_len - sizeof(diagpkt_subsys_header_v2_type) - 4; - char ifname[IFNAMSIZ]; - bool resp = false; - int curr_iface_id; - - snprintf(ifname, sizeof(ifname), "%s%d", g_ifname, - wlan_ftm_pkt->cmd.common_ops.wlandeviceno); - if (data_len <= 0) { - DPRINTF(FTM_DBG_ERROR, "Invalid data_len: %d\n", data_len); - return NULL; - } - - cmd = (uint32_t*)(wlan_ftm_pkt->cmd.common_ops.data); - DPRINTF(FTM_DBG_TRACE, "Command ID rec'd: 0x%X length %d\n", le32toh(*cmd), data_len); - - print_uchar_array((uint8_t*)(wlan_ftm_pkt->cmd.common_ops.data), data_len); - - g_rsp = NULL; - - rsp = (ftm_wlan_rsp_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - sizeof(rsp->common_header) + - sizeof(rsp->cmd.common_ops)); - - if (rsp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag packet: %p\n", rsp); - goto err_out; - } - - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_PASS); - -#ifdef CONFIG_FTM_WLAN_AUTOLOAD - if (le32toh(*cmd) == TCMD_LOAD_DRIVER) { - /* Get sub-cmd */ - unsigned int sub_cmd = 0; - if (data_len >= (int)(2*sizeof(uint32))) - sub_cmd = *((uint32*)wlan_ftm_pkt->cmd.common_ops.data + 1); - - /* execute sub_cmd */ - if (sub_cmd == SUBCMD_DRIVER_LOAD) { - load_wifi_driver_testmode(); - } else if (sub_cmd == SUBCMD_DRIVER_UNLOAD) { - unload_wifi_driver(); - } else if (sub_cmd == SUBCMD_DRIVER_AUTO_MODE) { - flag_driver_auto_load = true; - } - - /* These commands will not go to firmware */ - return rsp; - } - else if ((data_len > PMAC_OFFSET) && *(wlan_ftm_pkt->cmd.common_ops.data + MAIN_CMD_OFFSET) == OP_GENERIC_NART_CMD) { - if (*(wlan_ftm_pkt->cmd.common_ops.data + SUB_CMD_OFFSET) == TCMD_SET_MAC_ADDR) { - int i = 0; - uint8_t length = 0, nMac = 0, *pMac = NULL; - length = *(wlan_ftm_pkt->cmd.common_ops.data + LENGTH_OFFSET); - nMac = *(wlan_ftm_pkt->cmd.common_ops.data + NMAC_OFFSET); - pMac = (wlan_ftm_pkt->cmd.common_ops.data + PMAC_OFFSET); - - DPRINTF(FTM_DBG_TRACE, "Handling WLAN request of setting Mac address\n"); - - if (!nMac || (length < (5 + 6*nMac))) { - DPRINTF(FTM_DBG_ERROR, "invalid data, nMac = %u, length = %u\n", - nMac, length); - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - goto err_out; - } - - FILE *fp = fopen(WLAN_CFG_FILE, "wb"); - if (fp == NULL) { - DPRINTF(FTM_DBG_INFO, "Can't open file %s\n", WLAN_CFG_FILE); - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - goto err_out; - } - - for (i = 0; i < nMac; i++) { - fprintf(fp, "Intf%dMacAddress=%02X%02X%02X%02X%02X%02X\n", i, - pMac[0], pMac[1], pMac[2], pMac[3], pMac[4], pMac[5]); - pMac = pMac + 6; - } - fprintf(fp, "END"); - fclose(fp); - /* This command will not go to the firmware */ - return rsp; - } - } - - if ((flag_driver_auto_load == true) \ - && (!is_wifi_driver_loaded(DRIVER_MODULE_TAG))) { - /* load the driver to testmode */ - load_wifi_driver_testmode(); - } -#endif - -#ifdef WIN_AP_HOST - /* 0xFE is the command id(first byte) for BD capture/Flash write requests */ - if (le32toh(*cmd) == WIN_COMMON_OP_REQ) { - diagpkt_free(rsp); - rsp = win_host_handle_bdf_req (wlan_ftm_pkt, pkt_len); - return (void *)rsp; - } - if (data_len > BTCMD_ID_POS) { - if((input_msg[BTCMD_ID_POS] == BT_CMD_REQ) && (input_msg[BT_MAC_LEN_POS] == BT_CMD_LEN)){ - diagpkt_free(rsp); - rsp = win_bt_mac_flash_write(wlan_ftm_pkt, pkt_len); - if (rsp) - return (void *)rsp; - else { - DPRINTF(FTM_DBG_ERROR, "Response is NULL!\n"); - goto err_out; - } - } - } -#endif - curr_iface_id = wlan_ftm_pkt->cmd.common_ops.wlandeviceno; - if (curr_iface_id != old_iface_id) - { - DPRINTF(FTM_DBG_TRACE, "Initializing Interface: %s\n", ifname); - - if (tcmd_tx_init(ifname, ftm_wlan_tcmd_rx)) - { - DPRINTF(FTM_DBG_ERROR, "Couldn't init tcmd transport!\n"); - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - goto err_out; - } - - DPRINTF(FTM_DBG_TRACE, "tcmd: Initialized Interface: %s\n", ifname); -#ifdef WIN_AP_HOST_OPEN - tcmd_tx_start(); - DPRINTF(FTM_DBG_TRACE, "tcmd: tcmd_tx_start done\n"); -#endif - old_iface_id = curr_iface_id; - } - - resp = isResponseNeeded( (void*)wlan_ftm_pkt->cmd.common_ops.data); - - if (tcmd_tx(wlan_ftm_pkt->cmd.common_ops.data, data_len, resp)) - { - DPRINTF(FTM_DBG_ERROR, "TCMD timed out!\n"); - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - goto err_out; - } - - if (resp) - { - if (g_rsp) - { - diagpkt_free(rsp); - return (void *) g_rsp; - } - else - { - DPRINTF(FTM_DBG_ERROR, "No response got probably timing out.... \n"); - rsp->cmd.common_ops.result = htole32(FTM_ERR_CODE_IOCTL_FAIL); - } - } else { - DPRINTF(FTM_DBG_ERROR, "Resp is false \n"); - } - -err_out: - return (void *) rsp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_bdf_read - -DESCRIPTION - Read the data from bdf_file - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_bdf_read(ftm_wlan_req_pkt_type *wlan_ftm_read_pkt) -{ - FILE *fp; - byte err_code; - int ret; - unsigned long file_size; - unsigned int size; /*actual number of bytes transferred in resp pkt*/ - char *buf = NULL; - struct stat st; - int byte_rem; - uint16 rsp_pkt_size; - ftm_wlan_rsp_pkt_type *ftm_read_resp = NULL; - - rsp_pkt_size = sizeof(ftm_read_resp->common_header) + sizeof(ftm_read_resp->cmd.read_file); - - fp = fopen(bdf_file, "r"); - if (fp == NULL) { - DPRINTF(FTM_DBG_ERROR, " failed to open file: %s\n", bdf_file); - err_code = WLAN_BDF_FILE_OPEN_FAIL; - goto ftm_read_out; - } - st.st_size = 0; - /*get size of the file*/ - if (stat(bdf_file, &st) == 0) - file_size = st.st_size; - else { - DPRINTF(FTM_DBG_ERROR, "Failed to get file size \n"); - err_code = WLAN_BDF_FILE_STAT_FAIL; - goto ftm_read_out; - } - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: %s file size is: %lu\n", bdf_file, file_size); - if (file_size <= wlan_ftm_read_pkt->cmd.read_file.offset) { - DPRINTF(FTM_DBG_ERROR, " Bad offset \n"); - err_code = WLAN_BDF_BAD_OFFSET; - goto ftm_read_out; - } - - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: offset: %d\n", wlan_ftm_read_pkt->cmd.read_file.offset); - ret = fseek(fp, wlan_ftm_read_pkt->cmd.read_file.offset, SEEK_SET); - if (ret == -1) { - DPRINTF(FTM_DBG_ERROR, "fseek failed \n"); - err_code = WLAN_BDF_FILE_SEEK_FAIL; - goto ftm_read_out; - } - - /*validate the size(number of bytes) to be read from file */ - if ((wlan_ftm_read_pkt->cmd_rsp_pkt_size - rsp_pkt_size) > (file_size - wlan_ftm_read_pkt->cmd.read_file.offset)) { - size = file_size - wlan_ftm_read_pkt->cmd.read_file.offset; - } else - size = wlan_ftm_read_pkt->cmd_rsp_pkt_size - rsp_pkt_size; - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: number of bytes to be read: %d\n", size); - - buf = (char *)malloc(size); - if(!buf) { - DPRINTF(FTM_DBG_ERROR, " failed to allocate buf memory \n"); - err_code = WLAN_BDF_READ_FAILED; - goto ftm_read_out; - } - ret = fread(buf, 1, size, fp); - if (ret ==(signed)size || feof(fp)) { - size = ret; - err_code = WLAN_BDF_READ_SUCCESS; - rsp_pkt_size += size; - } else { - DPRINTF(FTM_DBG_ERROR, "ftm_daemon: fread failed\n"); - err_code = WLAN_BDF_READ_FAILED; - } - -ftm_read_out: - if (err_code != WLAN_BDF_READ_SUCCESS) - rsp_pkt_size += 1; //need to send atleast 1 byte of data to diag in case of read failure - - ftm_read_resp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - rsp_pkt_size - ); - if (ftm_read_resp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - if (fp) - fclose(fp); - if (buf) - free(buf); - return NULL; - } - ftm_read_resp->common_header.cmd_id = htole16(FTM_WLAN_BDF_READ); - ftm_read_resp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_size); - ftm_read_resp->cmd.read_file.result = err_code; - if (err_code == WLAN_BDF_READ_SUCCESS) { - ftm_read_resp->cmd.read_file.size = htole16(size); - byte_rem = file_size - (size + wlan_ftm_read_pkt->cmd.read_file.offset); - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: byte_rem: %d\n", byte_rem); - memcpy(ftm_read_resp->cmd.read_file.bytes_remaining, &byte_rem, sizeof(ftm_read_resp->cmd.read_file.bytes_remaining)); - memcpy(ftm_read_resp->cmd.read_file.data, buf, size); - } else - memset(ftm_read_resp->cmd.read_file.data, 0, 1); - - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: read resp msg dump:\n"); - print_uchar_array((uint8_t *)ftm_read_resp, (int)rsp_pkt_size); - - if (fp) - fclose(fp); - if (buf) - free(buf); - return (void *)ftm_read_resp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_bdf_write - -DESCRIPTION - Write the data received from application to bdf_file - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_bdf_write(ftm_wlan_req_pkt_type *wlan_ftm_write_pkt) -{ - FILE *fp; - byte err_code; - ftm_wlan_rsp_pkt_type *ftm_write_resp = NULL; - uint16 rsp_pkt_len; - - rsp_pkt_len = sizeof(ftm_write_resp->common_header) + sizeof(ftm_write_resp->cmd.write_file) + 1; - ftm_write_resp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - rsp_pkt_len - ); - if (ftm_write_resp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - - if (!wlan_ftm_write_pkt->cmd.write_file.append_flag) { - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: bdf_file = %s open in write mode\n", bdf_file); - fp = fopen(bdf_file, "w"); - if (fp == NULL) { - DPRINTF(FTM_DBG_ERROR, " failed to open file: %s\n", bdf_file); - err_code = WLAN_BDF_FILE_OPEN_FAIL; - goto ftm_write_out; - } - } else { - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: bdf_file = %s open in append mode\n", bdf_file); - fp = fopen(bdf_file, "a"); - if (fp == NULL) { - DPRINTF(FTM_DBG_ERROR, " failed to open file: %s\n", bdf_file); - err_code = WLAN_BDF_FILE_OPEN_FAIL; - goto ftm_write_out; - } - } - - fwrite(&(wlan_ftm_write_pkt->cmd.write_file.data), 1, wlan_ftm_write_pkt->cmd.write_file.size, fp); - if (ferror(fp)) { - DPRINTF(FTM_DBG_ERROR, " failed to write\n"); - err_code = WLAN_BDF_WRITE_FAILED; - } else - err_code = WLAN_BDF_WRITE_SUCCESS; - -ftm_write_out: - if (fp) - fclose(fp); - ftm_write_resp->common_header.cmd_id = htole16(FTM_WLAN_BDF_WRITE); - ftm_write_resp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_len); - ftm_write_resp->cmd.write_file.result = err_code; - memset(ftm_write_resp->cmd.write_file.rsvd, 0, - sizeof(ftm_write_resp->cmd.write_file.rsvd)); - memset(ftm_write_resp->cmd.write_file.data, 0, 1); - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: write resp msg dump:\n"); - print_uchar_array((uint8_t *)ftm_write_resp, (int)rsp_pkt_len); - - return (void *)ftm_write_resp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_bdf_get_filename - -DESCRIPTION - Get bdf_file path - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_bdf_get_filename() -{ - ftm_wlan_rsp_pkt_type *ftm_get_fname_resp = NULL; - uint16 rsp_pkt_len; - int fname_len = 1; //allocate 1 byte of data in case of error - byte err_code; - - if (bdf_file[0]) - fname_len = strlen(bdf_file); - - rsp_pkt_len = sizeof(ftm_get_fname_resp->common_header) + sizeof(ftm_get_fname_resp->cmd.get_fname) + fname_len; - ftm_get_fname_resp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - rsp_pkt_len - ); - if (ftm_get_fname_resp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - - if (!bdf_file[0] || strlen(bdf_file) > 128) { - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: get_filename failed: bdf_file:%s fname_len: %d\n", bdf_file, fname_len); - err_code = WLAN_BDF_PATH_GET_FAILED; - memset(ftm_get_fname_resp->cmd.get_fname.data, 0, 1); - } else { - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: bdf_file is %s\n", bdf_file); - memcpy(ftm_get_fname_resp->cmd.get_fname.data, bdf_file, fname_len); - err_code = WLAN_BDF_PATH_GET_SUCCESS; - } - - ftm_get_fname_resp->common_header.cmd_id = htole16(FTM_WLAN_BDF_GET_FNAMEPATH); - ftm_get_fname_resp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_len); - memset(ftm_get_fname_resp->cmd.get_fname.rsvd, 0, sizeof(ftm_get_fname_resp->cmd.get_fname.rsvd)); - ftm_get_fname_resp->cmd.get_fname.result = err_code; - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: get_filename resp msg dump:\n"); - print_uchar_array((uint8_t *)ftm_get_fname_resp, (int)rsp_pkt_len); - - return (void *)ftm_get_fname_resp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_bdf_set_filename - -DESCRIPTION - Set bdf_file path for further bdf file read/write operation - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_bdf_set_filename(ftm_wlan_req_pkt_type *wlan_ftm_set_fname_pkt) -{ - ftm_wlan_rsp_pkt_type *ftm_set_fname_resp = NULL; - uint16 rsp_pkt_len; - uint16 size; - byte err_code; - - rsp_pkt_len = sizeof(ftm_set_fname_resp->common_header) + sizeof(ftm_set_fname_resp->cmd.set_fname); - size = wlan_ftm_set_fname_pkt->cmd_data_len - rsp_pkt_len; - rsp_pkt_len += 1; //for 1 byte of reserved data - ftm_set_fname_resp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - rsp_pkt_len - ); - if (ftm_set_fname_resp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - ftm_set_fname_resp->common_header.cmd_id = htole16(FTM_WLAN_BDF_SET_FNAMEPATH); - - if (size == 0 || size >= 128) { - DPRINTF(FTM_DBG_ERROR, "ftm_daemon: set_filename failed: fname_length %d\n", size); - err_code = WLAN_BDF_PATH_SET_FAILED; - } else { - memcpy(bdf_file, wlan_ftm_set_fname_pkt->cmd.set_fname.data, size); - bdf_file[size] = '\0'; - if (strncmp(bdf_file, "/firmware", 9) == 0) { - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: remount /firmware partition as rw\n"); - system("mount -o rw,remount /firmware /firmware"); - } - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: bdf_file set to %s\n", bdf_file); - err_code = WLAN_BDF_PATH_SET_SUCCESS; - } - - ftm_set_fname_resp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_len); - ftm_set_fname_resp->cmd.set_fname.result = err_code; - memset(ftm_set_fname_resp->cmd.set_fname.rsvd, 0, sizeof(ftm_set_fname_resp->cmd.set_fname.rsvd)); - memset(ftm_set_fname_resp->cmd.set_fname.data, 0, 1); - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: set_filename resp msg dump:\n"); - print_uchar_array((uint8_t *)ftm_set_fname_resp, (int)rsp_pkt_len); - return (void *)ftm_set_fname_resp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_bdf_get_max_transfer_size - -DESCRIPTION - Get maximum transfer size(in bytes) for further bdf file read/write operation - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void *ftm_wlan_bdf_get_max_transfer_size() -{ - ftm_wlan_rsp_pkt_type *ftm_get_max_size_resp = NULL; - uint16 rsp_pkt_len; - - rsp_pkt_len = sizeof(ftm_get_max_size_resp->common_header) + sizeof(ftm_get_max_size_resp->cmd.get_max_transfer_size); - ftm_get_max_size_resp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - rsp_pkt_len - ); - if (ftm_get_max_size_resp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - ftm_get_max_size_resp->common_header.cmd_id = htole16(FTM_WLAN_BDF_GET_MAX_TRANSFER_SIZE); - ftm_get_max_size_resp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_len); - ftm_get_max_size_resp->cmd.get_max_transfer_size.max_size = 1024; - ftm_get_max_size_resp->cmd.get_max_transfer_size.result = 0; - memset(ftm_get_max_size_resp->cmd.get_max_transfer_size.rsvd, 0, - sizeof(ftm_get_max_size_resp->cmd.get_max_transfer_size.rsvd)); - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: get_max_transfer_size resp msg dump:\n"); - print_uchar_array((uint8_t *)ftm_get_max_size_resp, (int)rsp_pkt_len); - return (void *)ftm_get_max_size_resp; - } - -#ifdef CONFIG_FTM_WLAN_AUTOLOAD -/*=========================================================================== -FUNCTION - load_wifi_driver_testmode - -DESCRIPTION - Use system call to load driver - -DEPENDENCIES - NIL - -RETURN VALUE - NONE - -SIDE EFFECTS - NONE -===========================================================================*/ - -static int load_wifi_driver_testmode(void) -{ - int ret = 0; - - /* clean-up the driver state */ - if ((ret = unload_wifi_driver())) { - DPRINTF(FTM_DBG_ERROR, "%s: Unload driver failed: %d\n", __func__, ret); - return ret; - } - -#ifdef FTM_WLAN_LOAD_CMD - if ((ret = system(FTM_WLAN_LOAD_CMD))) { - DPRINTF(FTM_DBG_ERROR, "WLAN driver load failed!\n"); - return ret; - } -#else -#error "FTM_WLAN_LOAD_CMD is not defined!" -#endif - - DPRINTF(FTM_DBG_TRACE, "WLAN driver loaded in FTM mode successfully!\n"); - - return ret; -} -/*=========================================================================== -FUNCTION - Unload_wifi_driver if the drvier is detected existing already - -DESCRIPTION - Use system call to unload driver - -DEPENDENCIES - NIL - -RETURN VALUE - NONE - -SIDE EFFECTS - NONE -===========================================================================*/ -static int unload_wifi_driver(void) -{ - int ret = 0; - - if (is_wifi_driver_loaded(DRIVER_MODULE_TAG)) { -#ifdef FTM_WLAN_UNLOAD_CMD - if ((ret = system(FTM_WLAN_UNLOAD_CMD))) { - DPRINTF(FTM_DBG_ERROR, "WLAN driver unload failed!\n"); - return ret; - } -#else -#error "FTM_WLAN_UNLOAD_CMD is not defined!" -#endif - } - - DPRINTF(FTM_DBG_TRACE, "WLAN driver unloaded successfully!\n"); - - return ret; -} - -/*=========================================================================== -FUNCTION - is_wifi_driver_loaded - -DESCRIPTION - Check if WLAN driver is loaded or not - -DEPENDENCIES - NIL - -RETURN VALUE - Returns true if driver already loaded, false if driver not loaded - -SIDE EFFECTS - NONE -===========================================================================*/ -static bool is_wifi_driver_loaded(char *mod_tag) -{ - FILE *proc = NULL; - char cmd[NAME_MAX + 64]; /* File name max + room for command */ - bool ret = false; - - snprintf(cmd, sizeof(cmd), "cat /proc/modules | grep %s", mod_tag); - - proc = popen(cmd, "r"); - - if (proc == NULL) { - DPRINTF(FTM_DBG_ERROR, "%s failed!\n", __func__); - return ret; - } - - if (fread (cmd, 1, sizeof(cmd), proc) > 0) - ret = true; - - fclose(proc); - - return ret; -} -#endif /* CONFIG_FTM_WLAN_AUTOLOAD */ - -#ifdef WIN_AP_AFC -/*=========================================================================== -FUNCTION ftm_wlan_ssp_get_id - -DESCRIPTION - Retrieve device config ids - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void* ftm_wlan_ssp_get_id(ftm_wlan_req_pkt_type *wlan_ftm_pkt) { - - uint32 serial = 0; - uint16 oem_id = 0; - uint16 prd_id = 0; - uint16 *ptr = NULL; - - ftm_wlan_rsp_pkt_type *rsp = NULL; - uint16 rsp_pkt_len = le16toh(wlan_ftm_pkt->cmd_rsp_pkt_size); - - rsp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, FTM_WLAN_CMD_CODE, rsp_pkt_len); - if (!rsp) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - - rsp->common_header.cmd_id = wlan_ftm_pkt->cmd_id; - rsp->common_header.cmd_data_len = 0; - rsp->common_header.cmd_rsp_pkt_size = htole16(rsp_pkt_len); - rsp->cmd.ssp.result = htole16(FTM_WLAN_SSP_SUCCESS); - - if(ftm_mfg_provision_id(&serial, &oem_id, &prd_id)) { - rsp->cmd.ssp.result = htole16(FTM_WLAN_SSP_FAIL); - return rsp; - } - - rsp->cmd.ssp.serial = htole32(serial); - ptr = (uint16 *)rsp->cmd.ssp.data; - *ptr = htole16(oem_id); - *(ptr + 1) = htole16(prd_id); - - return rsp; -} - -/*=========================================================================== -FUNCTION ftm_wlan_ssp_file - -DESCRIPTION - Write the data received from application to device / location config file - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -static void* ftm_wlan_ssp_file(ftm_wlan_req_pkt_type *wlan_ftm_pkt) { - - ftm_wlan_rsp_pkt_type *rsp = NULL; - uint16 rsp_pkt_len = sizeof(rsp->common_header) + sizeof(rsp->cmd.ssp); - uint16 size = le16toh(wlan_ftm_pkt->cmd_rsp_pkt_size); - - rsp = (ftm_wlan_rsp_pkt_type *)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, FTM_WLAN_CMD_CODE, rsp_pkt_len); - if (!rsp) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag resp packet\n"); - return NULL; - } - - rsp->common_header.cmd_id = wlan_ftm_pkt->cmd_id; - rsp->common_header.cmd_data_len = 0; - rsp->common_header.cmd_rsp_pkt_size = htole16(size); - rsp->cmd.ssp.result = htole16(FTM_WLAN_SSP_SUCCESS); - - if(ftm_mfg_provision_store(wlan_ftm_pkt)) - rsp->cmd.ssp.result = htole16(FTM_WLAN_SSP_FAIL); - - return rsp; -} -#endif /*WIN_AP_AFC*/ - -/*=========================================================================== -FUNCTION ftm_wlan_dispatch - -DESCRIPTION - WLAN FTM dispatch routine. Main entry point routine for WLAN FTM for - AR6003 - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant to be passed to the diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -void* ftm_wlan_dispatch(ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len) -{ - if (!wlan_ftm_pkt || !pkt_len) { - DPRINTF(FTM_DBG_ERROR, "Invalid ftm wlan Requst Packet\n"); - return NULL; - } -#ifdef DEBUG - current_time(); -#endif - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: cmd: %d\n", wlan_ftm_pkt->cmd_id); - DPRINTF(FTM_DBG_TRACE, "ftm_daemon: Request Packet Dump:\n"); - print_uchar_array((uint8_t *)wlan_ftm_pkt, pkt_len); - - switch (le16toh(wlan_ftm_pkt->cmd_id)) { - case FTM_WLAN_COMMON_OP: - return ftm_wlan_common_op(wlan_ftm_pkt, pkt_len); - case FTM_WLAN_BDF_GET_MAX_TRANSFER_SIZE: - return ftm_wlan_bdf_get_max_transfer_size(); - case FTM_WLAN_BDF_READ: - return ftm_wlan_bdf_read(wlan_ftm_pkt); - case FTM_WLAN_BDF_WRITE: - return ftm_wlan_bdf_write(wlan_ftm_pkt); - case FTM_WLAN_BDF_GET_FNAMEPATH: - return ftm_wlan_bdf_get_filename(); - case FTM_WLAN_BDF_SET_FNAMEPATH: - return ftm_wlan_bdf_set_filename(wlan_ftm_pkt); -#ifdef WIN_AP_AFC - case FTM_WLAN_SSP_GET_ID: - return ftm_wlan_ssp_get_id(wlan_ftm_pkt); - case FTM_WLAN_SSP_STR_SSP: - case FTM_WLAN_SSP_STR_LOC: - case FTM_WLAN_SSP_STR_CFG: - return ftm_wlan_ssp_file(wlan_ftm_pkt); -#endif - default: - DPRINTF(FTM_DBG_ERROR, " Unknown Command\n"); - return NULL; - } -} - - - diff --git a/feeds/ipq95xx/ftm/src/ftm_wlan.h b/feeds/ipq95xx/ftm/src/ftm_wlan.h deleted file mode 100755 index bb767804e..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_wlan.h +++ /dev/null @@ -1,235 +0,0 @@ -/*========================================================================== - - FTM WLAN Header File - -Description - The header file includes enums, struct definitions for WLAN FTM packets - -# Copyright (c) 2010-2011, 2014 by Qualcomm Technologies, Inc. -# All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - - Edit History - - -when who what, where, why --------- --- ---------------------------------------------------------- -07/11/11 karthikm Created header file to include enums, struct for WLAN FTM - for Atheros support -========================================================================*/ - -#ifndef FTM_WLAN_H_ -#define FTM_WLAN_H_ - -#ifdef CONFIG_FTM_WLAN - -#include "diagpkt.h" -#include - -#define FTM_WLAN_CMD_CODE 22 - -/* TODO: For LE platforms only - need to extend it for BE platform too*/ -#define cpu32_to_le32(buf, val) \ - do { \ - buf[0] = val & 0xff; \ - buf[1] = (val >> 8) & 0xff; \ - buf[2] = (val >> 16) & 0xff; \ - buf[3] = (val >> 24) & 0xff; \ - } while(0) - -/* TODO: For LE platforms only - need to extend it for BE platform too*/ -#define le_to_cpu16(buf, uint16_val) \ - do { \ - uint16_val = (buf[0] | buf[1] << 8); \ - } while(0) - -/* TODO: For LE platforms only - need to extend it for BE platform too*/ -#define le_to_cpu32(buf, uint32_val) \ - do { \ - uint32_val = (buf[0] | buf[1] << 8 | buf[2] << 16 | buf[3] << 24); \ - } while(0) - -extern char g_ifname[]; - -/* Various ERROR CODES supported by the FTM WLAN module*/ -typedef enum { - FTM_ERR_CODE_PASS = 0, - FTM_ERR_CODE_IOCTL_FAIL, - FTM_ERR_CODE_SOCK_FAIL, - FTM_ERR_CODE_UNRECOG_FTM -}FTM_WLAN_LOAD_ERROR_CODES; - - -#define CONFIG_HOST_TCMD_SUPPORT 1 -#define AR6000_IOCTL_SUPPORTED 1 - -#define ATH_MAC_LEN 6 - -#define FTM_WLAN_SSP_SUCCESS 0 -#define FTM_WLAN_SSP_FAIL 1 - -typedef enum { - FTM_WLAN_COMMON_OP, - FTM_WLAN_BDF_GET_MAX_TRANSFER_SIZE, - FTM_WLAN_BDF_READ, - FTM_WLAN_BDF_WRITE, - FTM_WLAN_BDF_GET_FNAMEPATH, - FTM_WLAN_BDF_SET_FNAMEPATH, -#ifdef WIN_AP_AFC - FTM_WLAN_SSP_GET_ID = 16, - FTM_WLAN_SSP_STR_SSP = 17, - FTM_WLAN_SSP_STR_LOC = 18, - FTM_WLAN_SSP_STR_CFG = 19 -#endif /* WIN_AP_AFC */ -}FTM_WLAN_CMD; - -typedef enum { - WLAN_BDF_READ_SUCCESS, - WLAN_BDF_READ_FAILED, - WLAN_BDF_WRITE_SUCCESS, - WLAN_BDF_WRITE_FAILED, - WLAN_BDF_INVALID_SIZE = 5, - WLAN_BDF_BAD_OFFSET, - WLAN_BDF_FILE_OPEN_FAIL, - WLAN_BDF_FILE_SEEK_FAIL, - WLAN_BDF_FILE_STAT_FAIL, - WLAN_BDF_PATH_GET_SUCCESS, - WLAN_BDF_PATH_GET_FAILED, - WLAN_BDF_PATH_SET_SUCCESS, - WLAN_BDF_PATH_SET_FAILED -}FTM_WLAN_ERROR_CODES; - -#ifdef WIN_AP_HOST -#define PACKED_STRUCT __attribute__((__packed__)) -#else -#define PACKED_STRUCT __attribute__((packed)) -#endif - -/*FTM WLAN request type*/ - -typedef struct -{ - diagpkt_cmd_code_type cmd_code; - diagpkt_subsys_id_type subsys_id; - diagpkt_subsys_cmd_code_type subsys_cmd_code; - uint16 cmd_id; /* command id (required) */ - uint16 cmd_data_len; - uint16 cmd_rsp_pkt_size; - union { - struct { - uint16 rsvd; - byte rsvd1; - byte rsvd2; - byte wlanslotno; - byte wlandeviceno; - byte data[0]; - }PACKED_STRUCT common_ops; - struct { - byte rsvd[6]; - byte data[0]; - }PACKED_STRUCT get_max_transfer_size; - struct { - uint32 offset; - byte rsvd[2]; - byte data[0]; - }PACKED_STRUCT read_file; - struct { - uint16 size; - uint8 append_flag; - byte rsvd[3]; - byte data[0]; - }PACKED_STRUCT write_file; - struct { - byte rsvd[6]; - byte data[0]; - }PACKED_STRUCT get_fname; - struct { - byte rsvd[6]; - byte data[0]; - }PACKED_STRUCT set_fname; - }cmd; -}PACKED_STRUCT ftm_wlan_req_pkt_type; - -/*FTM WLAM response type */ -typedef struct -{ - struct { - diagpkt_subsys_header_type header; /*diag header*/ - uint16 cmd_id; /* command id (required) */ - uint16 cmd_data_len; - uint16 cmd_rsp_pkt_size; - }PACKED_STRUCT common_header; - union { - struct { - uint16 rsvd; - uint32 result ;/* error_code */ - union { - struct { - byte data[0]; /*rxReport*/ - }rxReport; - struct { - byte data[0]; /*ThermValReport*/ - }thermval_report; - }rx_and_therm; - }PACKED_STRUCT common_ops; - struct { - uint16 result; /*error_code*/ - byte rsvd[4]; - uint16 max_size; - }PACKED_STRUCT get_max_transfer_size; - struct { - byte result; /*error_code*/ - uint16 size; - byte bytes_remaining[3]; - byte data[0]; - }PACKED_STRUCT read_file; - struct { - byte result; - byte rsvd[5]; - byte data[0]; - }PACKED_STRUCT write_file; - struct { - byte result; - byte rsvd[5]; - byte data[0]; - }PACKED_STRUCT get_fname; - struct { - byte result; - byte rsvd[5]; - byte data[0]; - }PACKED_STRUCT set_fname; - struct { - uint16 win_cmd_specific; - uint16 data_len; - uint8 rsvd; - uint8 wlandeviceno; - byte data[0]; - }PACKED_STRUCT win_resp; - struct { - uint16 result; - uint32 serial; - byte data[0]; - }PACKED_STRUCT ssp; - }cmd; -}PACKED_STRUCT ftm_wlan_rsp_pkt_type; - -void* ftm_wlan_dispatch(ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len); - -#ifdef WIN_AP_HOST -void setBoardDataCaptureFlag (int flag); -void setDeviceId(int id); -extern ftm_wlan_rsp_pkt_type *win_bt_mac_flash_write( - ftm_wlan_req_pkt_type *wlan_ftm_pkt, - int pkt_len); - -extern void win_host_handle_fw_resp (ftm_wlan_rsp_pkt_type *rsp, void *data, uint32_t data_len); -extern ftm_wlan_rsp_pkt_type *win_host_handle_bdf_req( - ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len); -#endif - -#endif /* CONFIG_FTM_WLAN */ -#endif /* FTM_WLAN_H_ */ diff --git a/feeds/ipq95xx/ftm/src/ftm_wlan_win.h b/feeds/ipq95xx/ftm/src/ftm_wlan_win.h deleted file mode 100755 index d96e814d1..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_wlan_win.h +++ /dev/null @@ -1,196 +0,0 @@ -/* -*Copyright (c) 2017-2019 Qualcomm Technologies, Inc. -* -*All Rights Reserved. -*Confidential and Proprietary - Qualcomm Technologies, Inc. -*/ - -#ifndef __FTM_WLAN_WIN_H -#define __FTM_WLAN_WIN_H - -#include -#include -#include -#include -#include -#include - -#include -#include -#include "comdef.h" -#include "diagcmd.h" - -#include "ftm_wlan.h" -#include "ftm_dbg.h" - -#define MAC_XTAL_LENGTH 7 -#define MAC_LENGTH_POS 103 -#define MAC_POS 105 -#define BT_TLV1_RESP_LEN 84 -#define BT_RESP_LEN 100 -#define FLASH_SECTOR_SIZE 0x10000 -#define BD_LEN_EXPECTED 500 -#define BD_SIZE_REQ_ID 106 -#define BD_SIZE_REQ_POS 28 -#define BD_SIZE_VAL 60 - -/* Identifier for first segment of - * Board data response - */ -#define FIRST_SEG 48 - -/* Identifier for second segment of - * board data response - */ -#define SECOND_SEG 49 -#define THIRD_SEG 50 -#define NO_ERROR 0 - -/* header length for first segment of - * board data response - */ -#define FIRST_SEG_TLV_HDR 84 -#define SECOND_SEG_TLV_HDR 28 -#define THIRD_SEG_TLV_HDR 28 - -#define SEQUENCE_ID_POS 24 - -/* Position at which first parameter of - * TLV request is located - */ -#define TLV_PAYLOAD_PARAM_1 80 - -/* Position at which second paramter of - * TLV request is located - */ -#define TLV_PAYLOAD_PARAM_2 96 - -/* Parameter 1 value if request is for - * board data capture - */ -#define BD_CAPTURE_REQ 101 - -/* Parameter 1 value if flash write request */ -#define FLASH_WRITE_REQ 102 - -/* Parameter 1 value for device identify request */ -#define DEVICE_IDENTIFY 103 - - -/* Parameter 2 value for swift device identify */ -#define QC9887_DEVICE_ID 0x50 -#define QC9888_DEVICE_ID 0x3c -#define QC99xx_DEVICE_ID 0x46 -#define QCN9000_DEVICE_ID 0x1104 - -#define TLV1_CMD_RESP_SIZE 118 -#define TLV1_RESP_LEN 102 - -/* Offset at which BT_mac is to be stored in flash */ -#define BT_MAC_OFFSET 0x40 - -#define FLASH_BASE_CALDATA_OFFSET_SOC_0 0x1000 -#define FLASH_BASE_CALDATA_OFFSET_SOC_1 0x33000 -#define MAX_ART_SLOTS 3 -#define REQ_SEG_SIZE 4096 - -#define CALDATA_SEG_SIZE (150 * 1024) -#define FLASH_BASE_CALDATA_OFFSET_PCI_1 (REQ_SEG_SIZE + CALDATA_SEG_SIZE) -#define FLASH_BASE_CALDATA_OFFSET_PCI_2 (FLASH_BASE_CALDATA_OFFSET_PCI_1 + CALDATA_SEG_SIZE) - -#define DIAG_HDR_LEN 16 - -#define FLASH_PARTITION "/dev/caldata" -#define VIRTUAL_FLASH_PARTITION "/tmp/virtual_art.bin" -#define WRITE_ART "/lib/compress_vart.sh write_caldata" - -/* (0x33000-0x1000)=0x32000, Max available BDF size */ -#define MAX_BDF_SIZE 200*1024 - -#define QC98XX_BLOCK_SIZE 512 - -#define BD_BLOCK_SIZE 256 - -/* Position of block size for the data */ -#define QC98XX_BLOCK_SIZE_VAL 164 - -/* Position of block size for the data (radio != qc98XX) */ -#define LEGACY_BLOCK_SIZE_VAL 100 - -#define M_EEEPROM_BLOCK_READ_ID_QC98XX 0xC8 - -#define M_EEEPROM_BLOCK_READ_ID_LEGACY 0xE9 - -/* Position where block data starts */ -#define QC98XX_BLOCK_START_POS 200 - -#define LEGACY_BLOCK_START_POS 104 - -#define BD_READ_CMD_ID_POS 48 - -#define BD_READ_RESP_PARAM_POS 88 - -#define BD_READ_RESP_PARAM 0x7 - -/* Use of this parameter is not known */ -#define LEGACY_RADIO_PARAM_POS 103 - -#define LEGACY_RADIO_PARAM_THRESHOLD 0x30 - -/* Valid caldata in each segment from FW */ -#define CALDATA_SIZE_FIRST_SEG 1480 -#define CALDATA_SIZE_SECOND_SEG 1536 -#define CALDATA_SIZE_THIRD_SEG 1080 - - -uint16_t TLV2_Specific_byte; - -unsigned char BDbuffer[MAX_BDF_SIZE]; -uint32_t BDbuffer_offset; -uint32_t resp_counter; -uint32_t bd_size; -uint8_t start_capture; - -/* Deviceno is the instance id sent from - * Qdart for the radio. - */ -int deviceno; - -/* Device id received in the radio's - * radio flash write requests, defaults to 0 - */ -int deviceid = 0; - -/* This is the remainder after whole 4096 size responses are sent */ -uint32_t remaining_bytes ; -uint32_t total_4K_responses; - -unsigned char BTsetmacResponse[] = { - 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x38, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xC6, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; - -/* Response sent for BDcapture and Flash write Requests */ -unsigned char ftm_wlan_tlvRespMsg[] = { - 0x05, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x4A, 0x00, 0x00, 0x00, - 0x72, 0xD0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, - 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xEA, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x07, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x2F -}; - -#endif /* __FTM_WLAN_WIN_H */ - diff --git a/feeds/ipq95xx/ftm/src/ftm_write_to_flash.c b/feeds/ipq95xx/ftm/src/ftm_write_to_flash.c deleted file mode 100755 index 41245fff8..000000000 --- a/feeds/ipq95xx/ftm/src/ftm_write_to_flash.c +++ /dev/null @@ -1,534 +0,0 @@ -/* -*Copyright (c) 2017-2019 Qualcomm Technologies, Inc. -* -*All Rights Reserved. -*Confidential and Proprietary - Qualcomm Technologies, Inc. -*/ - -#include "ftm_dbg.h" -#ifdef WIN_AP_HOST -#include "ftm_wlan_win.h" -#include - -/*=========================================================================== -FUNCTION bt_setmac_flash_write - -DESCRIPTION - Write MAC and XTAL to flash region - -DEPENDENCIES - NIL - -RETURN VALUE - Returns status success or failure - -SIDE EFFECTS - NONE - -===========================================================================*/ -int bt_setmac_flash_write(uint8_t *mac, unsigned int len) -{ - int fd; - int offset; - int i; - uint8_t *flashdata; - - fd = open(VIRTUAL_FLASH_PARTITION, O_RDWR); - - if (fd < 0) { - perror("Could not open flash. Returning without write\n"); - return -1; - } - - DPRINTF(FTM_DBG_TRACE,"\nNumber of bytes = %d\n",len); - - offset = BT_MAC_OFFSET; - lseek(fd, offset, SEEK_SET); - if (write(fd, mac, len) < 1) { - DPRINTF(FTM_DBG_TRACE,"flash write error. Returning\n"); - close(fd); - return -1; - } - - DPRINTF(FTM_DBG_TRACE, - "BT mac written successfully to flash @ offset %X size %X\n", - offset, len); - - flashdata = (uint8_t *)malloc(len); - if (!flashdata){ - DPRINTF(FTM_DBG_TRACE, "Write verification failed. Unable to allocate memory.\n"); - close(fd); - return -1; - } - - lseek(fd, offset, SEEK_SET); - if (read(fd, flashdata, len) < 1){ - DPRINTF(FTM_DBG_TRACE, "Flashdata read failed\n"); - free(flashdata); - return -1; - } - for(i = 0; i < len; i++){ - DPRINTF(FTM_DBG_TRACE, "input mac = 0x%x, flashdata = 0x%x\n", mac[i], flashdata[i]); - } - - free(flashdata); - close(fd); - return 1; -} - - -/*=========================================================================== -FUNCTION win_bt_mac_flash_write - -DESCRIPTION - Call bt_setmac_flash_write function and populate response to Qdart - -DEPENDENCIES - NIL - -RETURN VALUE - Returns resp to qdart - -SIDE EFFECTS - NONE - -===========================================================================*/ -ftm_wlan_rsp_pkt_type *win_bt_mac_flash_write(ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len) -{ - int i; - int status; - ftm_wlan_rsp_pkt_type *rsp; - unsigned char BtDiagMAC[MAC_XTAL_LENGTH]; - unsigned int dataLen = 0; - uint8_t *input_msg = (uint8_t*)wlan_ftm_pkt; - TLV2_Specific_byte = wlan_ftm_pkt->cmd.common_ops.rsvd; - - dataLen = input_msg[MAC_LENGTH_POS]; - for(i=0; icommon_header) + - sizeof(rsp->cmd.common_ops)+ - BT_TLV1_RESP_LEN )); - if (!rsp) - return rsp; - - rsp->common_header.cmd_rsp_pkt_size = BT_RESP_LEN; - rsp->common_header.cmd_data_len = 0; - rsp->cmd.win_resp.data_len = BT_TLV1_RESP_LEN; - rsp->cmd.win_resp.win_cmd_specific = TLV2_Specific_byte; - - status = bt_setmac_flash_write(BtDiagMAC, dataLen); - if (status > 0) { - memcpy(rsp->cmd.win_resp.data, BTsetmacResponse, BT_TLV1_RESP_LEN); - DPRINTF(FTM_DBG_TRACE,"Response sent to Qdart\n"); - /*print_uchar_array((uint8_t*)(rsp->cmd.win_resp.data), BT_TLV1_RESP_LEN);*/ - return rsp; - } - else - return rsp; -} - -/*=========================================================================== -FUNCTION win_host_handle_bdf_req - -DESCRIPTION - Function to process WIN specific bdf requests. - This handles the requests related to device identify, - boarddata capture and flash write requests, and sends - the response to QDART. - - -DEPENDENCIES - NIL - -RETURN VALUE - Returns back buffer that is meant for diag callback - -SIDE EFFECTS - NONE - -===========================================================================*/ -ftm_wlan_rsp_pkt_type *win_host_handle_bdf_req(ftm_wlan_req_pkt_type *wlan_ftm_pkt, int pkt_len) -{ - uint8_t *input_msg = (uint8_t*)wlan_ftm_pkt; - int error = 0; - int fd; - int file_offset = 0; - int art_slot_id; - ftm_wlan_rsp_pkt_type *rsp; - deviceno = wlan_ftm_pkt->cmd.common_ops.wlandeviceno; - art_slot_id = wlan_ftm_pkt->cmd.common_ops.wlanslotno; - TLV2_Specific_byte = wlan_ftm_pkt->cmd.common_ops.rsvd; - rsp = (ftm_wlan_rsp_pkt_type*)diagpkt_subsys_alloc(DIAG_SUBSYS_FTM, - FTM_WLAN_CMD_CODE, - (sizeof(rsp->common_header) + - sizeof(rsp->cmd.common_ops)+ - TLV1_RESP_LEN)); - - if (rsp == NULL) { - DPRINTF(FTM_DBG_ERROR, "Failed to allocate Diag packet: %p\n", rsp); - return rsp; - } - rsp->cmd.win_resp.win_cmd_specific = htole16(TLV2_Specific_byte); - rsp->common_header.cmd_rsp_pkt_size = htole16(TLV1_CMD_RESP_SIZE); - rsp->common_header.cmd_data_len = 0; - rsp->cmd.win_resp.data_len = htole16(TLV1_RESP_LEN); - rsp->cmd.win_resp.rsvd = 0; - rsp->cmd.win_resp.wlandeviceno = deviceno; - - DPRINTF(FTM_DBG_TRACE, "Received FTM daemon specific TLV\n"); - - /* Byte 80 in request signifies type of request, 101 is used for BD capture*/ - if(input_msg[TLV_PAYLOAD_PARAM_1] == BD_CAPTURE_REQ) { - DPRINTF(FTM_DBG_TRACE, "BOARD_DATA_CAPTURE\n"); - if (input_msg[TLV_PAYLOAD_PARAM_2] == 1) { - setBoardDataCaptureFlag(1); - } else if (input_msg[TLV_PAYLOAD_PARAM_2] == 0) { - setBoardDataCaptureFlag(0); - } - - } else if (input_msg[TLV_PAYLOAD_PARAM_1] == FLASH_WRITE_REQ) { - fd = open(VIRTUAL_FLASH_PARTITION, O_RDWR); - if (fd < 0) { - DPRINTF(FTM_DBG_TRACE, "FILE OPEN FAILED\n"); - error = WLAN_BDF_FILE_OPEN_FAIL; - } else { - DPRINTF(FTM_DBG_TRACE, "FILE OPEN SUCCESSFULL\n"); - if (access("/tmp/ftm.conf", F_OK) == 0) { - if (art_slot_id == 0) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_0; - } else if (art_slot_id == 1) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_0 + (ftm_cfg.slot_size[0] * 1024); - } else if (art_slot_id == 2) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_0 + - ((ftm_cfg.slot_size[0] + ftm_cfg.slot_size[1]) * 1024); - } else if (art_slot_id == 3) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_0 + - ((ftm_cfg.slot_size[0] + ftm_cfg.slot_size[1] + - ftm_cfg.slot_size[2]) * 1024); - } - } else if (!deviceid) { - if (art_slot_id > MAX_ART_SLOTS) { - close(fd); - return rsp; - } - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_0 + - (art_slot_id * CALDATA_SEG_SIZE); - - } else if (deviceid == QC9887_DEVICE_ID || - deviceid == QC9888_DEVICE_ID) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_1; - } else if (deviceid == QC99xx_DEVICE_ID) { - file_offset = FLASH_BASE_CALDATA_OFFSET_SOC_1; - } else if (deviceid == QCN9000_DEVICE_ID) { - if (art_slot_id == 1) - file_offset = FLASH_BASE_CALDATA_OFFSET_PCI_1; - else if (art_slot_id == 2) - file_offset = FLASH_BASE_CALDATA_OFFSET_PCI_2; - else { - close(fd); - return rsp; - } - } else { - DPRINTF(FTM_DBG_TRACE, "%s:%d - Invalid Device ID %d\n", - __func__, __LINE__, deviceid); - close(fd); - return rsp; - } - lseek(fd, file_offset, SEEK_SET); - if (write(fd, BDbuffer , BDbuffer_offset) < 1) { - DPRINTF(FTM_DBG_TRACE, "%s:%d - Flash write error\n", - __func__, __LINE__); - error = WLAN_BDF_WRITE_FAILED; - close(fd); - } else { - fsync(fd); - close(fd); - system(WRITE_ART); - - DPRINTF(FTM_DBG_INFO, - "Flash commit success @ offset %0x Size %d\n", - file_offset, BDbuffer_offset); - } - } - - } else if (input_msg[TLV_PAYLOAD_PARAM_1] == DEVICE_IDENTIFY) { - DPRINTF(FTM_DBG_TRACE, "Device Identify \n"); - setDeviceId(input_msg[TLV_PAYLOAD_PARAM_2]); - } - if (error!=NO_ERROR) - /* These commands will not go to firmware */ - return rsp; - else { - memcpy(rsp->cmd.win_resp.data, ftm_wlan_tlvRespMsg, TLV1_RESP_LEN); - return rsp; - } -} - -/*=========================================================================== -FUNCTION setBordDataCaptureFlag - -DESCRIPTION - Sets the BDCapture variable - -DEPENDENCIES - NIL - -RETURN VALUE - NONE - -SIDE EFFECTS - NONE - -===========================================================================*/ -void setBoardDataCaptureFlag (int flag) -{ - DPRINTF(FTM_DBG_TRACE, "Setting BDCapture flag to %d\n", flag); - if (flag == 1) { - BDbuffer_offset = 0; - resp_counter = 0; - start_capture = 1; - } - - // when board data capture is turned off, set the device id to 0 - if (flag == 0){ - start_capture = 0; - setDeviceId(0); - } -} - -/*=========================================================================== -FUNCTION setDeviceId - -DESCRIPTION - Sets the global variable device id, upon requests - according to the parameter 2 of the TLV command - -DEPENDENCIES - NIL - -RETURN VALUE - NONE - -SIDE EFFECTS - NONE -============================================================================*/ -void setDeviceId(int id) -{ - DPRINTF(FTM_DBG_TRACE, "Setting Device id to %d\n", id); - deviceid = id; -} - -#define BD_SIZE_SIGNATURE_POS 32 -#define BD_SIZE_SIGNATURE 1147011573 - -uint8_t ftm_check_bdf_sizereq_signature(uint8_t *data) -{ - uint8_t ret = 0; - uint32_t signature = 0; - - le_to_cpu32(((uint8_t *)data + BD_SIZE_SIGNATURE_POS), signature); - if (signature == BD_SIZE_SIGNATURE) - ret = 1; - - return ret; -} - -/*=========================================================================== -FUNCTION win_host_handle_fw_resp - -DESCRIPTION - WIN specific handler for responses from FW. - FW responses for board data are snooped here - and stored in a global buffer which is then - accessed by the WIN request handler for flash - write requests. - -DEPENDENCIES - NIL - -RETURN VALUE - 0 on success - 1 on failure - -SIDE EFFECTS - NONE -===========================================================================*/ - -void win_host_handle_fw_resp (ftm_wlan_rsp_pkt_type *rsp, void *data, uint32_t data_len) -{ - uint32_t sequence_id; - int legacy_dataSize; - if (!rsp || !data || !data_len) { - DPRINTF(FTM_DBG_ERROR, "rsp/data is NULL\n"); - rsp = NULL; - return; - } - rsp->cmd.win_resp.win_cmd_specific = htole16(TLV2_Specific_byte); - rsp->common_header.cmd_rsp_pkt_size = htole16(data_len + DIAG_HDR_LEN); - rsp->cmd.win_resp.data_len = htole16(data_len); - rsp->cmd.win_resp.wlandeviceno = deviceno; - rsp->cmd.win_resp.rsvd = 0; - memcpy(rsp->cmd.win_resp.data, data, data_len); - - /*TODO: Need better identification method for BDF responses*/ - /* Check if the deviceid is set */ - - switch (deviceid) { - - /* DeviceId is 0 for HK and lithium family targets */ - case 0: - { /* Check if request is for BD_get size. */ - if (((uint8_t *)data)[BD_SIZE_REQ_POS] == BD_SIZE_REQ_ID && - ftm_check_bdf_sizereq_signature(data)) { - bd_size = 0 ; - BDbuffer_offset = 0; - resp_counter = 0; - le_to_cpu32(((uint8_t *)data + BD_SIZE_VAL), bd_size); - DPRINTF(FTM_DBG_INFO, "bd_size = %d \n", bd_size); - total_4K_responses = bd_size / REQ_SEG_SIZE; - remaining_bytes = bd_size % REQ_SEG_SIZE; - DPRINTF(FTM_DBG_INFO, "Total_responses= %d \n", - total_4K_responses); - DPRINTF(FTM_DBG_INFO, "Remaining_bytes = %d \n", - remaining_bytes); - } - - if (data_len > BD_LEN_EXPECTED && start_capture == 1) { - sequence_id = ((uint8_t *)data)[SEQUENCE_ID_POS]; - DPRINTF(FTM_DBG_INFO, "Sequence_ID= %d\n", sequence_id); - - if (sequence_id == FIRST_SEG) - resp_counter ++; - DPRINTF(FTM_DBG_INFO, "Response counter == %d\n", - resp_counter); - DPRINTF(FTM_DBG_INFO, "Buffer offset == %d\n", - BDbuffer_offset); - - if (resp_counter < total_4K_responses + 1) { - /* Handle 3 segments of BDF resonses - * 1st segment - BDF is from offset 84 - * 2nd segment - BDF is from offset 28 - * 3rd segment - BDF is from offset 28 - */ - switch (sequence_id) { - - case FIRST_SEG: - memcpy(BDbuffer + BDbuffer_offset, - (void *)((uint8_t*)data + FIRST_SEG_TLV_HDR), - data_len - FIRST_SEG_TLV_HDR); - BDbuffer_offset += (data_len - FIRST_SEG_TLV_HDR); - break; - - case SECOND_SEG: - memcpy(BDbuffer + BDbuffer_offset, - (void *)((uint8_t *)data + SECOND_SEG_TLV_HDR), - data_len - SECOND_SEG_TLV_HDR); - BDbuffer_offset += (data_len - SECOND_SEG_TLV_HDR); - break; - - case THIRD_SEG: - memcpy(BDbuffer + BDbuffer_offset, - (void *)((uint8_t*)data + THIRD_SEG_TLV_HDR), - data_len - THIRD_SEG_TLV_HDR); - BDbuffer_offset += (data_len - THIRD_SEG_TLV_HDR); - break; - - default: - /* error */ - break; - - } - /* In case of total bdf data size not being a multiple - * of 4k, extra remaining bdf data is handled based on - * which segment of 4k it belongs to. - */ - } else { - switch (sequence_id) { - case FIRST_SEG: - if (remaining_bytes < CALDATA_SIZE_FIRST_SEG) { - memcpy(BDbuffer + BDbuffer_offset, - data + FIRST_SEG_TLV_HDR, - remaining_bytes); - BDbuffer_offset += remaining_bytes; - } else { - memcpy(BDbuffer + BDbuffer_offset, - data + FIRST_SEG_TLV_HDR, - data_len - FIRST_SEG_TLV_HDR); - BDbuffer_offset += (data_len - FIRST_SEG_TLV_HDR); - remaining_bytes -= CALDATA_SIZE_FIRST_SEG; - } - break; - - case SECOND_SEG: - if (remaining_bytes < CALDATA_SIZE_SECOND_SEG) { - memcpy(BDbuffer + BDbuffer_offset, - data + SECOND_SEG_TLV_HDR, - remaining_bytes); - BDbuffer_offset += remaining_bytes; - } else { - memcpy(BDbuffer + BDbuffer_offset, - data + SECOND_SEG_TLV_HDR, - data_len - SECOND_SEG_TLV_HDR); - BDbuffer_offset += (data_len - SECOND_SEG_TLV_HDR); - remaining_bytes -= CALDATA_SIZE_SECOND_SEG; - } - break; - - case THIRD_SEG: - memcpy(BDbuffer + BDbuffer_offset, - (void *)((uint8_t*)data + THIRD_SEG_TLV_HDR), - remaining_bytes); - BDbuffer_offset += remaining_bytes; - break; - } - } - } - break; - } - case QC9887_DEVICE_ID: - case QC9888_DEVICE_ID: - { - if ((((uint8_t *)data)[BD_READ_CMD_ID_POS] == M_EEEPROM_BLOCK_READ_ID_QC98XX) && - (((uint8_t *)data)[BD_READ_RESP_PARAM_POS] == BD_READ_RESP_PARAM)){ - le_to_cpu32(((uint8_t *)data + QC98XX_BLOCK_SIZE_VAL), - legacy_dataSize); - DPRINTF(FTM_DBG_TRACE, - "Capturing Caldata for QC98xx by FTM :: Size %d\n", - legacy_dataSize); - DPRINTF(FTM_DBG_TRACE, - "BDbuffer Offset : %d \n", - (resp_counter * QC98XX_BLOCK_SIZE)); - memcpy(BDbuffer + BDbuffer_offset, (void *)((uint8_t *)data + - QC98XX_BLOCK_START_POS), - legacy_dataSize); - resp_counter = resp_counter + 1; - BDbuffer_offset += legacy_dataSize; - } - break; - } - case QC99xx_DEVICE_ID: - { - if ((((uint8_t *)data)[BD_READ_CMD_ID_POS] == M_EEEPROM_BLOCK_READ_ID_LEGACY) && - (((uint8_t *)data)[BD_READ_RESP_PARAM_POS] == BD_READ_RESP_PARAM) && - ((uint8_t *)data)[LEGACY_RADIO_PARAM_POS] < LEGACY_RADIO_PARAM_THRESHOLD) { - le_to_cpu16(((uint8_t *)data + LEGACY_BLOCK_SIZE_VAL), legacy_dataSize); - DPRINTF(FTM_DBG_TRACE, - "Capturing Caldata by FTM :: Size %d\n", - legacy_dataSize); - DPRINTF(FTM_DBG_TRACE, - "BDbuffer Offset : %d \n", - (resp_counter * BD_BLOCK_SIZE)); - memcpy(BDbuffer + BDbuffer_offset, - (void *)((uint8_t *)data + LEGACY_BLOCK_START_POS), - legacy_dataSize); - resp_counter = resp_counter + 1; - BDbuffer_offset+=legacy_dataSize; - } - break; - } - } -} -#endif diff --git a/feeds/ipq95xx/ftm/src/testcmd.h b/feeds/ipq95xx/ftm/src/testcmd.h deleted file mode 100755 index 9a7b89934..000000000 --- a/feeds/ipq95xx/ftm/src/testcmd.h +++ /dev/null @@ -1,159 +0,0 @@ -/*========================================================================== - - TCMD header File - -# Copyright (c) 2011, 2013-2014 by Qualcomm Technologies, Inc. -# All Rights Reserved. -# Qualcomm Technologies Proprietary and Confidential. - -===========================================================================*/ - -/*=========================================================================== - -*/ - -/* - * Copyright (c) 2006 Atheros Communications Inc. - * All rights reserved. - * - * -// The software source and binaries included in this development package are -// licensed, not sold. You, or your company, received the package under one -// or more license agreements. The rights granted to you are specifically -// listed in these license agreement(s). All other rights remain with Atheros -// Communications, Inc., its subsidiaries, or the respective owner including -// those listed on the included copyright notices. Distribution of any -// portion of this package must be in strict compliance with the license -// agreement(s) terms. -// -// -// - * - */ - -#ifndef TESTCMD_H_ -#define TESTCMD_H_ - -#include - -#ifdef AR6002_REV2 -#define TCMD_MAX_RATES 12 -#else -#define TCMD_MAX_RATES 28 -#endif - -#define PREPACK -#define POSTPACK __attribute__ ((packed)) - -#define ATH_MAC_LEN 6 -#define TC_CMDS_SIZE_MAX 256 - -/* Continuous Rx - act: TCMD_CONT_RX_PROMIS - promiscuous mode (accept all incoming frames) - TCMD_CONT_RX_FILTER - filter mode (accept only frames with dest - address equal specified - mac address (set via act =3) - TCMD_CONT_RX_REPORT off mode (disable cont rx mode and get the - report from the last cont - Rx test) - - TCMD_CONT_RX_SETMAC - set MacAddr mode (sets the MAC address for the - target. This Overrides - the default MAC address.) - -*/ -typedef enum { - TCMD_CONT_RX_PROMIS = 0, - TCMD_CONT_RX_FILTER, - TCMD_CONT_RX_REPORT, - TCMD_CONT_RX_SETMAC, - TCMD_CONT_RX_SET_ANT_SWITCH_TABLE, - TC_CMD_RESP, - TCMD_CONT_RX_GETMAC, -} TCMD_CONT_RX_ACT; - -typedef PREPACK struct { - uint32_t testCmdId; - uint32_t act; - uint32_t enANI; - PREPACK union { - struct PREPACK TCMD_CONT_RX_PARA { - uint32_t freq; - uint32_t antenna; - uint32_t wlanMode; - } POSTPACK para; - struct PREPACK TCMD_CONT_RX_REPORT { - uint32_t totalPkt; - int32_t rssiInDBm; - uint32_t crcErrPkt; - uint32_t secErrPkt; - uint16_t rateCnt[TCMD_MAX_RATES]; - uint16_t rateCntShortGuard[TCMD_MAX_RATES]; - } POSTPACK report; - struct PREPACK TCMD_CONT_RX_MAC { - char addr[ATH_MAC_LEN]; - char btaddr[ATH_MAC_LEN]; - uint16_t regDmn[2]; - uint32_t otpWriteFlag; - } POSTPACK mac; - struct PREPACK TCMD_CONT_RX_ANT_SWITCH_TABLE { - uint32_t antswitch1; - uint32_t antswitch2; - } POSTPACK antswitchtable; - } POSTPACK u; -} POSTPACK TCMD_CONT_RX; - -typedef enum { - TC_CMDS_TS =0, - TC_CMDS_CAL, - TC_CMDS_TPCCAL = TC_CMDS_CAL, - TC_CMDS_TPCCAL_WITH_OTPWRITE, - TC_CMDS_OTPDUMP, - TC_CMDS_OTPSTREAMWRITE, - TC_CMDS_EFUSEDUMP, - TC_CMDS_EFUSEWRITE, - TC_CMDS_READTHERMAL, -} TC_CMDS_ACT; - -typedef PREPACK struct { - uint32_t testCmdId; - uint32_t act; - PREPACK union { - uint32_t enANI; // to be identical to CONT_RX struct - struct PREPACK { - uint16_t length; - uint8_t version; - uint8_t bufLen; - } POSTPACK parm; - } POSTPACK u; -} POSTPACK TC_CMDS_HDR; - -typedef PREPACK struct { - TC_CMDS_HDR hdr; - char buf[TC_CMDS_SIZE_MAX]; -} POSTPACK TC_CMDS; - -typedef enum { - TCMD_CONT_TX_ID, - TCMD_CONT_RX_ID, - TCMD_PM_ID, - TC_CMDS_ID, - TCMD_SET_REG_ID, - TC_CMD_TLV_ID, - OP_GENERIC_NART_CMD = 8, - - /*For synergy purpose we added the following tcmd id but these - tcmd's will not go to the firmware instead we will write values - to the NV area */ - - TCMD_NIC_MAC = 100, - TCMD_CAL_FILE_INDEX = 101, - TCMD_LOAD_DRIVER = 102, - TCMD_SET_MAC_ADDR = 198, -} TCMD_ID; - -#ifdef __cplusplus -} -#endif - -#endif /* TESTCMD_H_ */ diff --git a/feeds/ipq95xx/ftm/src/wds/Android.mk b/feeds/ipq95xx/ftm/src/wds/Android.mk deleted file mode 100755 index 1d00d925b..000000000 --- a/feeds/ipq95xx/ftm/src/wds/Android.mk +++ /dev/null @@ -1,45 +0,0 @@ -ifeq ($(call is-vendor-board-platform,QCOM),true) -ifeq ($(findstring true, $(BOARD_HAVE_QCOM_FM) $(BOARD_HAVE_BLUETOOTH)),true) - -LOCAL_PATH := $(call my-dir) - -include $(CLEAR_VARS) - -BDROID_DIR:= system/bt -ifeq ($(TARGET_SUPPORTS_WEARABLES),true) -QTI_DIR := hardware/qcom/bt/msm8909/libbt-vendor -else -QTI_DIR := hardware/qcom/bt/libbt-vendor -endif - -LOCAL_C_INCLUDES := $(TARGET_OUT_HEADERS)/common/inc -LOCAL_C_INCLUDES += $(BDROID_DIR)/hci/include -LOCAL_C_INCLUDES += $(QTI_DIR)/include -ifeq ($(TARGET_SUPPORTS_WEARABLES),true) -LOCAL_C_INCLUDES += device/qcom/msm8909w/opensource/bluetooth/tools/hidl_client/inc -else -LOCAL_C_INCLUDES += vendor/qcom/opensource/bluetooth/tools/hidl_client/inc -endif - -LOCAL_CFLAGS := -DANDROID - -ifneq ($(BOARD_ANT_WIRELESS_DEVICE), ) -LOCAL_CFLAGS += -DCONFIG_ANT -endif -LOCAL_SRC_FILES := wds_main.c -LOCAL_SRC_FILES += wds_hci_pfal_linux.c - -LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) -LOCAL_MODULE := wdsdaemon -ifeq ($(PRODUCT_VENDOR_MOVE_ENABLED),true) -LOCAL_PROPRIETARY_MODULE := true -endif -LOCAL_MODULE_TAGS := optional -LOCAL_SHARED_LIBRARIES := libdiag -LOCAL_SHARED_LIBRARIES += libcutils \ - libdl \ - libbt-hidlclient - -include $(BUILD_EXECUTABLE) -endif # filter -endif # is-vendor-board-platform diff --git a/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal.h b/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal.h deleted file mode 100755 index 60bd8830f..000000000 --- a/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal.h +++ /dev/null @@ -1,170 +0,0 @@ -/* - * Copyright (c) 2016 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Copyright (c) 2012 by Qualcomm Atheros, Inc.. - * All Rights Reserved. - * Qualcomm Atheros Confidential and Proprietary. - */ - -#ifndef DEBUG -#define DEBUG printf -#endif - -#ifndef ERROR -#define ERROR printf -#endif - -#include "bt_vendor_qcom.h" - -/* error codes */ -enum { - STATUS_SUCCESS, - STATUS_ERROR, - STATUS_INVALID_LENGTH, - STATUS_NO_MEMORY, - STATUS_NULL_POINTER, - STATUS_CLIENT_ERROR, -}; - -enum { - RX_ERROR = -1, - RX_BT_EVT_IND = 1, - RX_BT_HDR, - RX_BT_DATA, - RX_ANT_HDR, - RX_ANT_DATA, - RX_FM_EVT_IND, - RX_FM_HDR, - RX_FM_DATA, - RX_PKT_IND -}; - -enum pkt_type { - BT_PKT_TYPE = 1, - FM_PKT_TYPE, - ANT_PKT_TYPE -}; -/* device to communicate between PC and DUT */ -#define BT_HS_NMEA_DEVICE "/dev/ttyGS0" -#define BT_HSLITE_UART_DEVICE "/dev/ttyHSL0" - -/* interface between PC-DUT */ -typedef struct pc_uart_interafce { - unsigned char *intf; - int uart_fd; -} pc_uart_interface; - -typedef union pc_interface { - pc_uart_interface uart; -} pc_interface; - -/* device to communicate between DUT and BTSOC */ -#define APPS_RIVA_FM_CMD_CH "/dev/smd1" -#define APPS_RIVA_BT_ACL_CH "/dev/smd2" -#define APPS_RIVA_BT_CMD_CH "/dev/smd3" -#define APPS_RIVA_ANT_CMD "/dev/smd5" -#define APPS_RIVA_ANT_DATA "/dev/smd6" -#define BT_HS_UART_DEVICE "/dev/ttyHS0" - -/* SMD interface between DUT-SOC */ -typedef struct soc_smd_interface { - unsigned char *fm_cmd; - unsigned char *bt_acl; - unsigned char *bt_cmd; - unsigned char *ant_cmd; - unsigned char *ant_data; - int fm_cmd_fd; - int bt_acl_fd; - int bt_cmd_fd; - int ant_cmd_fd; - int ant_data_fd; -} soc_smd_interface; - -/* UART interface between DUT-SOC */ -typedef struct soc_uart_interface { - unsigned char *intf; - int uart_fd; -} soc_uart_interface; - -typedef union soc_interface { - soc_smd_interface smd; - soc_uart_interface uart; -} soc_interface; - -/* context for wdsdaemon */ -typedef struct wdsdaemon { - int mode; - int soc_type; - bool pcinit_mask; - pc_interface pc_if; - soc_interface soc_if; - bool is_server_enabled; - int server_socket_fd; - pthread_t soc_rthread; -} wdsdaemon; - -/* packet types */ -#define PACKET_TYPE_INVALID (0) -#define PACKET_TYPE_BT_CMD (1) -#define PACKET_TYPE_FM_CMD (2) -#define PACKET_TYPE_BT_ACL (3) -#define PACKET_TYPE_ANT_CMD (4) -#define PACKET_TYPE_ANT_DATA (5) - -/* operation modes for wdsdaemon */ -#define MODE_BT_SMD (0) -#define MODE_FM_SMD (1) -#define MODE_ANT_SMD (2) -#define MODE_ALL_SMD (3) -#define MODE_BT_UART (4) -#define MODE_ANT_UART (5) -#define MODE_FM_UART (6) - -/* Bluetooth Header */ -#define BT_CMD_PKT_HDR_LEN (2) -#define BT_EVT_PKT_HDR_LEN (2) -#define BT_FM_PKT_UART_HDR_LEN (4) -#define BT_ACL_PKT_HDR_LEN (4) -#define BT_ACL_PKT_UART_HDR_LEN (5) - -/* FM Header */ -#define FM_CMD_PKT_HDR_LEN (3) //Opcode(2byte) + Param len(1 byte) -#define FM_EVT_PKT_HDR_LEN (2) //Opcode(1 byte) + Param len(1 byte) - -/* ANT Header */ -#define ANT_CMD_PKT_HDR_LEN (1) -#define ANT_DATA_PKT_HDR_LEN (1) -#define ANT_CMD_DATA_PKT_UART_HDR_LEN (2) - -#define BT_EVT_PKT_HDR_LEN_UART (BT_CMD_PKT_HDR_LEN+1) -#define BT_ACL_PKT_HDR_LEN_UART (BT_ACL_PKT_HDR_LEN+1) - -/* ANT data packet type */ -#define ANT_DATA_TYPE_BROADCAST (0x4E) -#define ANT_DATA_TYPE_ACKNOWLEDGED (0x4F) -#define ANT_DATA_TYPE_BURST (0x50) -#define ANT_DATA_TYPE_ADV_BURST (0x72) - -/*Packet Identifiers */ -#define BT_CMD_PKT_ID 0x01 -#define FM_CMD_PKT_ID 0x11 -#define BT_EVT_PKT_ID 0x04 -#define FM_EVT_PKT_ID 0x14 -#define ANT_CMD_PKT_ID 0x0C -#define ANT_EVT_PKT_ID 0x0C -#define ANT_DATA_PKT_ID 0x0E -#define BT_ACL_DATA_PKT_ID 0x02 - -#define SMD_BUF_SIZE (9000) -#define UART_BUF_SIZE (9000) - -#define PC_TO_SOC (1) -#define SOC_TO_PC (2) - -int get_acl_pkt_length(unsigned char, unsigned char); -unsigned short get_pkt_data_len(unsigned char type, unsigned char *buf); -int init_pc_interface(wdsdaemon *wds); -int init_soc_interface(wdsdaemon *wds); -int establish_server_socket(wdsdaemon *wds); diff --git a/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal_linux.c b/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal_linux.c deleted file mode 100755 index 05f47344a..000000000 --- a/feeds/ipq95xx/ftm/src/wds/wds_hci_pfal_linux.c +++ /dev/null @@ -1,720 +0,0 @@ -/* - * Copyright (c) 2016 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Copyright (c) 2012 by Qualcomm Atheros, Inc.. - * All Rights Reserved. - * Qualcomm Atheros Confidential and Proprietary. - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "wds_hci_pfal.h" -#include -#include -#include -#include -#include "hidl_client.h" - -#ifdef ANDROID -#include "bt_vendor_lib.h" -#else -#ifdef BT_SOC_TYPE_ROME -#include "bt_vendor_lib.h" -#endif -#endif - -#define SOCKET_NAME "wdssock" - -typedef unsigned char uint8; -extern int process_packet_type(wdsdaemon *wds, unsigned char pkt_id, - int *dst_fd, int *len, int dir); - -#ifdef ANDROID -extern int soc_type; -#endif - -static int find_max(int *arr, int len) -{ - int max = arr[0]; - int i; - - for (i = 1; i < len; i++) { - if (arr[i] > max) - max = arr[i]; - } - - return max; -} - -unsigned short get_pkt_data_len(unsigned char type, - unsigned char *buf) -{ - unsigned short len = 0; - switch (type) { - case BT_EVT_PKT_ID: - /* Event packet: 1 byte length */ - len = buf[BT_EVT_PKT_HDR_LEN_UART - 1]; - break; - case BT_ACL_DATA_PKT_ID: - /* ACL packet: 2 byte length */ - len = - (((unsigned short) buf[BT_ACL_PKT_HDR_LEN_UART - 1] << 8) & - 0xFF00) | (((unsigned short) buf[BT_ACL_PKT_HDR_LEN_UART - 2]) - & 0x00FF); - break; - case BT_CMD_PKT_ID: - len = buf[BT_EVT_PKT_HDR_LEN_UART]; - break; - case FM_CMD_PKT_ID: - /* FM Cmd packet param len: 1 byte length */ - len = buf[FM_CMD_PKT_HDR_LEN]; - break; - case FM_EVT_PKT_ID: - /* FM Evt packet param len: 1 byte length */ - len = buf[FM_EVT_PKT_HDR_LEN]; - break; - } - return len; -} - -static int process_soc_data_to_pc(wdsdaemon *wds, unsigned char *buf_in, - int src_fd) -{ - int retval = STATUS_SUCCESS; - ssize_t n_bytes = 0, n_total = 0; - int len = 1, dst_fd = 0, i; - int state = RX_PKT_IND, offset = 0; - unsigned char pkt_ind_to_read = 1; - - - /* In case of Pronto, we have different channels for CMD and ACL, - * so we don't get packet indicator from SoC. - * Below condition will skip reading packet indicator byte in - * case of Pronto. - */ - if (wds->mode != MODE_BT_UART && wds->mode != MODE_ANT_UART && - wds->mode != MODE_FM_UART) { - pkt_ind_to_read = 0; - offset++; - } - - do { - while (len) { - if (pkt_ind_to_read == 0) - goto dont_read_pkt_ind; - - if ((n_bytes = read(src_fd, - (unsigned char *)(&buf_in[offset + n_total]), - len)) > 0) { - n_total += n_bytes; - len -= n_bytes; - if (len) - continue; -dont_read_pkt_ind: - switch(state) { - case RX_PKT_IND: - pkt_ind_to_read = 1; - state = process_packet_type(wds, buf_in[0], &dst_fd, &len, - SOC_TO_PC); - break; - case RX_BT_HDR: - len = get_pkt_data_len(buf_in[0], buf_in); - state = RX_BT_DATA; - break; - case RX_BT_DATA: - len = 0; - break; - case RX_ANT_HDR: - pkt_ind_to_read = 1; - len = buf_in[n_total]; - state = RX_ANT_DATA; - break; - case RX_ANT_DATA: - if (buf_in[2] == - ANT_DATA_TYPE_BROADCAST || - buf_in[2] == - ANT_DATA_TYPE_ACKNOWLEDGED || - buf_in[2] == ANT_DATA_TYPE_BURST || - buf_in[2] == ANT_DATA_TYPE_ADV_BURST) - buf_in[0] = ANT_DATA_PKT_ID; - else - buf_in[0] = ANT_EVT_PKT_ID; - - retval = STATUS_SUCCESS; - break; - case RX_FM_HDR: - len = get_pkt_data_len(buf_in[0], buf_in); - state = RX_FM_DATA; - break; - case RX_FM_DATA: - len = 0; - break; - default: - retval = STATUS_ERROR; - break; - } - } else { - ERROR("%s Failed To read from SoC fd = %d\n",__func__, src_fd); - break; - } - } - if (retval) - break; - n_total += offset; - len = 0; - - DEBUG("evt:\t"); - for (i = 0; i < n_total; i++) - DEBUG("0x%x\t", buf_in[i]); - DEBUG("\n"); - while (n_total) { - if((n_bytes = write(dst_fd, buf_in + len, n_total)) >= 0) { - len += n_bytes; - n_total -= n_bytes; - } - else { - if (wds->is_server_enabled) { - retval = STATUS_CLIENT_ERROR; - ERROR("%s: unable to write to client socket, fd = %d err = %s\n", __func__, dst_fd, strerror(errno)); - } - else { - retval = STATUS_ERROR; - ERROR("%s: unable to write to pc_if fd = %d err = %s\n", __func__, dst_fd, strerror(errno)); - } - break; - } - } - } while (0); - - return retval; -} - -static void *process_soc_data(void *arg) -{ - int retval = STATUS_ERROR; - fd_set readfds, saved_readfds; - wdsdaemon *wds = (wdsdaemon *) arg; - int max, src_fd = 0, dst_fd = 0; - size_t sz = 0; - unsigned char *buf_in = NULL; - int arr[5], num = 0; - - FD_ZERO(&readfds); - FD_ZERO(&saved_readfds); - - if (wds->mode == MODE_BT_UART || wds->mode == MODE_ANT_UART || - wds->mode == MODE_FM_UART) { - FD_SET(wds->soc_if.uart.uart_fd, &saved_readfds); - max = wds->soc_if.uart.uart_fd; - sz = UART_BUF_SIZE * sizeof(unsigned char); - } else { - if (wds->mode == MODE_BT_SMD || wds->mode == MODE_ALL_SMD) { - FD_SET((arr[num] = wds->soc_if.smd.bt_acl_fd), &saved_readfds);num++; - FD_SET((arr[num] = wds->soc_if.smd.bt_cmd_fd), &saved_readfds);num++; - } - if (wds->mode == MODE_ANT_SMD || wds->mode == MODE_ALL_SMD) { - FD_SET((arr[num] = wds->soc_if.smd.ant_cmd_fd), &saved_readfds);num++; - FD_SET((arr[num] = wds->soc_if.smd.ant_data_fd), &saved_readfds);num++; - } - - if (wds->mode == MODE_FM_SMD || wds->mode == MODE_ALL_SMD) - FD_SET((arr[num] = wds->soc_if.smd.fm_cmd_fd), &saved_readfds);num++; - - max = find_max(arr, num); - - sz = SMD_BUF_SIZE * sizeof(unsigned char); - } - - buf_in = (unsigned char *) calloc(sz, 1); - if (!buf_in) { - ERROR("Insufficient Memory"); - retval = STATUS_NO_MEMORY; - goto failed; - } - - do { - readfds = saved_readfds; - retval = select(max + 1, &readfds, NULL, NULL, NULL); - if (retval == -1) { - ERROR("select failed, Error: %s (%d)\n", strerror(errno), - errno); - break; - } - - switch (wds->mode) { - case MODE_BT_UART: - case MODE_FM_UART: - case MODE_ANT_UART: - src_fd = wds->soc_if.uart.uart_fd; - if (FD_ISSET(src_fd,&readfds)) - retval = process_soc_data_to_pc(wds, buf_in, src_fd); - break; - case MODE_ALL_SMD: - case MODE_BT_SMD: - src_fd = wds->soc_if.smd.bt_cmd_fd; - if (FD_ISSET(src_fd ,&readfds)) { - buf_in[0] = BT_EVT_PKT_ID; - retval = process_soc_data_to_pc(wds, buf_in,src_fd); - } - src_fd = wds->soc_if.smd.bt_acl_fd; - if (FD_ISSET(src_fd ,&readfds)) { - buf_in[0] = BT_ACL_DATA_PKT_ID; - retval = process_soc_data_to_pc(wds, buf_in, src_fd); - } - if (wds->mode == MODE_BT_SMD) - break; - case MODE_FM_SMD: - src_fd = wds->soc_if.smd.fm_cmd_fd; - if (FD_ISSET(src_fd ,&readfds)) { - buf_in[0] = FM_EVT_PKT_ID; - retval = process_soc_data_to_pc(wds, buf_in, src_fd); - } - if (wds->mode == MODE_FM_SMD) - break; - break; - case MODE_ANT_SMD: - src_fd = wds->soc_if.smd.ant_cmd_fd; - if (FD_ISSET(src_fd, &readfds)) { - buf_in[0] = ANT_EVT_PKT_ID; - retval = process_soc_data_to_pc(wds, buf_in, src_fd); - } - src_fd = wds->soc_if.smd.ant_data_fd; - if (FD_ISSET(src_fd ,&readfds)) { - buf_in[0] = ANT_DATA_PKT_ID; - retval = process_soc_data_to_pc(wds, buf_in, src_fd); - } - break; - } - - if (STATUS_SUCCESS != retval) { - if (retval == STATUS_CLIENT_ERROR) { - ERROR("Write to client failed\n"); - continue; - } - ERROR("Failed to process SOC data\n"); - break; - } - } while(1); - -failed: - ERROR("\nReader thread exited\n"); - if (buf_in) { - free(buf_in); - buf_in = NULL; - } - return 0; -} - -static int set_port_raw_mode(int fd) -{ - struct termios term; - int ret = STATUS_SUCCESS; - - if (tcgetattr(fd, &term) < 0) { - ERROR("Failed to get attributes"); - ERROR("Error: %s (%d)", strerror(errno), errno); - return STATUS_ERROR; - } - cfmakeraw(&term); - if (tcsetattr(fd, TCSANOW, &term) < 0) { - ERROR("Failed to set attributes"); - ERROR("Error: %s (%d)", strerror(errno), errno); - return STATUS_ERROR; - } - if (tcflush(fd, TCIFLUSH) < 0) { - ERROR("Failed to flush port"); - ERROR("Error: %s (%d)", strerror(errno), errno); - return STATUS_ERROR; - } - - return ret; -} - -/*=========================================================================== -FUNCTION port_init_libbt - -DESCRIPTION -Initilize port and open the file through libbt-vendor - -DEPENDENCIES -NIL - -RETURN VALUE -RETURN fd handle - -SIDE EFFECTS -None - -===========================================================================*/ -#ifndef BT_BLUEZ -static int port_init_libbt(uint8 option) -{ - int fd_array[CH_MAX]; - bt_vendor_callbacks_t cb; - uint8_t init_bd_addr[6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 }; - bt_vendor_interface_t * p_btf = NULL; - bt_vendor_opcode_t opCmd1, opCmd2; - int iState; - - void* vendor_handle = dlopen("libbt-vendor.so", RTLD_NOW); - if(!vendor_handle){ - ERROR("Error open libbt-vendor \n"); - return -1; - } - p_btf = (bt_vendor_interface_t *)dlsym(vendor_handle, - "BLUETOOTH_VENDOR_LIB_INTERFACE"); - if(!p_btf){ - ERROR("Failed obtain the address of libbt-vendor \n"); - return -1; - } - if (p_btf->init(&cb, &init_bd_addr[0]) < 0){ - ERROR("bt vendor init failed \n"); - return -1; - } - - switch (option) { - case MODE_BT_UART: - opCmd1 = BT_VND_OP_POWER_CTRL; - opCmd2 = BT_VND_OP_USERIAL_OPEN; - break; - case MODE_FM_UART: - opCmd1 = FM_VND_OP_POWER_CTRL; - opCmd2 = BT_VND_OP_FM_USERIAL_OPEN; - break; - case MODE_ANT_UART: - opCmd1 = BT_VND_OP_POWER_CTRL; - opCmd2 = BT_VND_OP_USERIAL_OPEN; - break; - default: - printf("Invalid option\n"); - return -1; - } - - iState = BT_VND_PWR_ON; - - if (p_btf->op(opCmd1, &iState) < 0){ - ERROR("Power on failed \n"); - return -1; - } - - if (p_btf->op(opCmd2, (void*)fd_array) < 0){ - ERROR("op(VND_OP_USERIAL_OPEN) failed \n"); - return -1; - } - - return fd_array[0]; -} -#endif - -static int change_baud(int fd, speed_t baud) -{ - struct termios term; - int ret = STATUS_SUCCESS; /* assume success */ - - do { - if (tcgetattr(fd, &term) < 0) { - ERROR("Failed to get attributes"); - ret = STATUS_ERROR; - break; - } - cfsetospeed(&term, baud); - /* don't change speed until last write done */ - if (tcsetattr(fd, TCSADRAIN, &term) < 0) { - ERROR("Failed to set attribute"); - ERROR("Error: %s (%d)", strerror(errno), errno); - ret = STATUS_ERROR; - break; - } - } while(0); - return 0; -} - -int init_soc_interface(wdsdaemon *wds) -{ - int ret = STATUS_ERROR; - int fd = 0; - struct termios term; - - if (!wds) { - ret = STATUS_NULL_POINTER; - ERROR("Invalid input argument\n"); - return ret; - } - - switch (wds->mode) { - case MODE_FM_UART: - if(hidl_client_initialize(MODE_FM,&fd) == false) - { - ERROR("HIDL client initialization failed"); - exit(1); - } - wds->soc_if.uart.uart_fd = fd; - ret = STATUS_SUCCESS; - break; - case MODE_BT_UART: -#ifdef BT_BLUEZ - fd = open(wds->soc_if.uart.intf, - O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - break; - } - if (tcflush(fd, TCIOFLUSH) < 0) { - ERROR("Failed to flush port: %s\n", - wds->soc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - close(fd); - break; - } - if (tcgetattr(fd, &term) < 0) { - ERROR("Failed to get attributes for port: %s\n", - wds->soc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - close(fd); - break; - } - cfmakeraw(&term); - /* enable flow control */ - term.c_cflag |= (CRTSCTS | CLOCAL); - if (tcsetattr(fd, TCSANOW, &term) < 0) { - ERROR("Failed to set attributes for port: %s\n", - wds->soc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - close(fd); - break; - } - if (STATUS_SUCCESS != change_baud(fd, B3000000)) { //TODO:set baud rate - ERROR("Failed to change baud rate\n"); - close(fd); - break; - } -#else - if(hidl_client_initialize(MODE_BT,&fd) == false) - { - ERROR("HIDL client initialization failed"); - exit(1); - } -#endif - /* everything okay */ - wds->soc_if.uart.uart_fd = fd; - ret = STATUS_SUCCESS; - break; - case MODE_ANT_UART: -#ifndef BT_BLUEZ - if(hidl_client_initialize(MODE_ANT,&fd) == true){ - wds->soc_if.uart.uart_fd = fd; - } - else { - ERROR("HIDL client initialization failed, opening port with port_init_libbt\n"); - wds->soc_if.uart.uart_fd = port_init_libbt(wds->mode); - } - ret = STATUS_SUCCESS; -#endif - break; - case MODE_ALL_SMD: - case MODE_ANT_SMD: - /* ANT commdnas */ - fd = open(wds->soc_if.smd.ant_cmd, - O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.smd.ant_cmd); - ERROR("Error: %s (%d)\n", strerror(errno), - errno); - break; - } - set_port_raw_mode(fd); - wds->soc_if.smd.ant_cmd_fd = fd; - /* ANT data */ - fd = open(wds->soc_if.smd.ant_data, - O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.smd.ant_data); - ERROR("Error: %s (%d)", strerror(errno), - errno); - break; - } - set_port_raw_mode(fd); - wds->soc_if.smd.ant_data_fd = fd; - if (wds->mode == MODE_ANT_SMD) { - ret = STATUS_SUCCESS; - break; - } - /* fallthrough intentional for MODE_ALL_SMD */ - case MODE_BT_SMD: - /* BT commdnas */ - fd = open(wds->soc_if.smd.bt_cmd, - O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.smd.bt_cmd_fd); - ERROR("Error: %s (%d)\n", - strerror(errno), errno); - break; - } - set_port_raw_mode(fd); - wds->soc_if.smd.bt_cmd_fd = fd; - /* BT ACL */ - fd = open(wds->soc_if.smd.bt_acl, - O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.smd.bt_acl); - ERROR("Error: %s (%d)\n", - strerror(errno), errno); - break; - } - set_port_raw_mode(fd); - wds->soc_if.smd.bt_acl_fd = fd; - if (wds->mode == MODE_BT_SMD) { - ret = STATUS_SUCCESS; - break; - } - /* fallthrough intentional for MODE_ALL_SMD */ - case MODE_FM_SMD: - /* FM commdnas */ - fd = open(wds->soc_if.smd.fm_cmd, O_RDWR | O_NONBLOCK | O_NOCTTY); - if (-1 == fd) { - ERROR("Failed to open port: %s\n", - wds->soc_if.smd.fm_cmd_fd); - ERROR("Error: %s (%d)\n", - strerror(errno), errno); - break; - } - set_port_raw_mode(fd); - wds->soc_if.smd.fm_cmd_fd = fd; - ret = STATUS_SUCCESS; - break; - } - - if (ret == STATUS_SUCCESS) - if (pthread_create(&wds->soc_rthread, NULL, process_soc_data, - wds) != 0) { - ERROR("%s:Unable to create pthread err = %s\n", __func__, - strerror(errno)); - close(fd); - ret = STATUS_ERROR; - } - -failed: - return ret; -} - -int init_pc_interface(wdsdaemon *wds) -{ - int fd = 0; - int ret = STATUS_ERROR; - struct termios term; - - if (!wds) { - ret = STATUS_NULL_POINTER; - ERROR("Invalid input argument"); - return ret; - } - - do { - fd = open(wds->pc_if.uart.intf, O_RDWR); - if (-1 == fd) { - ERROR("Unable to open port: %s", wds->pc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - ret = STATUS_ERROR; - break; - } - /* set terminal properties */ - if (tcgetattr(fd, &term) < 0) { - ERROR("Failed to get attributes of port: %s", - wds->pc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - close(fd); - ret = STATUS_ERROR; - break; - } - cfmakeraw(&term); - term.c_lflag = term.c_lflag & ((tcflag_t)(~ECHO)); - /* TODO: Make baud rate command line argument */ - cfsetospeed(&term, B115200); - cfsetispeed(&term, B115200); - if (tcsetattr(fd, TCSANOW, &term) < 0) { - ERROR("Failed to set attributes of port: %s", - wds->pc_if.uart.intf); - ERROR("Error: %s (%d)", strerror(errno), errno); - close(fd); - ret = STATUS_ERROR; - break; - } - tcflush(fd, TCIOFLUSH); - - /* everything okay, set success */ - wds->pc_if.uart.uart_fd = fd; - ret = STATUS_SUCCESS; - } while(0); - - return ret; -} - -int establish_server_socket(wdsdaemon *wds) -{ - int fd = -1; - struct sockaddr_un client_address; - socklen_t clen; - int sock_id, ret = STATUS_ERROR; - DEBUG("%s(%s) Entry \n", __func__, SOCKET_NAME); - - if (!wds) { - ret = STATUS_NULL_POINTER; - ERROR("Invalid input argument\n"); - return ret; - } - - sock_id = socket(AF_LOCAL, SOCK_STREAM, 0); - if (sock_id < 0) { - ERROR("%s: server Socket creation failure\n", __func__); - return ret; - } - - DEBUG("convert name to android abstract name:%s %d\n", SOCKET_NAME, sock_id); - if (socket_local_server_bind(sock_id, - SOCKET_NAME, ANDROID_SOCKET_NAMESPACE_ABSTRACT) >= 0) { - if (listen(sock_id, 5) == 0) { - DEBUG("listen to local socket:%s, fd:%d\n", SOCKET_NAME, sock_id); - } else { - ERROR("listen to local socket:failed\n"); - close(sock_id); - return ret; - } - } else { - close(sock_id); - ERROR("%s: server bind failed for socket : %s\n", __func__, SOCKET_NAME); - return ret; - } - - clen = sizeof(client_address); - DEBUG("%s: before accept_server_socket\n", SOCKET_NAME); - fd = accept(sock_id, (struct sockaddr *)&client_address, &clen); - if (fd > 0) { - DEBUG("%s accepted fd:%d for server fd:%d\n", SOCKET_NAME, fd, sock_id); - close(sock_id); - wds->server_socket_fd = fd; - return STATUS_SUCCESS; - } else { - ERROR("Accept failed fd:%d sock d:%d error %s\n", fd, sock_id, strerror(errno)); - close(sock_id); - return ret; - } -} diff --git a/feeds/ipq95xx/ftm/src/wds/wds_main.c b/feeds/ipq95xx/ftm/src/wds/wds_main.c deleted file mode 100755 index 9c1c8f768..000000000 --- a/feeds/ipq95xx/ftm/src/wds/wds_main.c +++ /dev/null @@ -1,568 +0,0 @@ -/* - * Copyright (c) 2016 Qualcomm Technologies, Inc. - * All Rights Reserved. - * Confidential and Proprietary - Qualcomm Technologies, Inc. - * - * Copyright (c) 2012 by Qualcomm Atheros, Inc.. - * All Rights Reserved. - * Qualcomm Atheros Confidential and Proprietary. - */ - -/* -* Description: -* Added wdsdaemon to enable testing of Host Controller Interface (HCI) -* communication with stack layers bypassed. -* 1. Acts as a communication bridge between PC to DUT over UART (/dev/ttyHSL0) -* and also UART transport between DUT and BTSOC (/dev/ttyHS0). -* 2. Used to test exchange of BT-FM HCI commands, events and ACL data packets -* between host and controller. -**/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include "wds_hci_pfal.h" -#include "hidl_client.h" - -#ifdef ANDROID -#include -#endif - -/*=========================================================================== -FUNCTION get_pkt_type - -DESCRIPTION - Routine to get the packet type from the data bytes received - -DEPENDENCIES - NIL - -RETURN VALUE - Packet type for the data bytes received - -SIDE EFFECTS - None - -===========================================================================*/ -static int get_packet_type(unsigned char id) -{ - int type; - - switch (id) { - case BT_CMD_PKT_ID: - type = PACKET_TYPE_BT_CMD; - break; - case FM_CMD_PKT_ID: - type = PACKET_TYPE_FM_CMD; - break; - case BT_ACL_DATA_PKT_ID: - type = PACKET_TYPE_BT_ACL; - break; - case ANT_CMD_PKT_ID: - type = PACKET_TYPE_ANT_CMD; - break; - case ANT_DATA_PKT_ID: - type = PACKET_TYPE_ANT_DATA; - break; - default: - type = PACKET_TYPE_INVALID; - } - - return type; -} - -#ifdef ANDROID - -int soc_type; - -/** Get Bluetooth SoC type from system setting */ -static int get_bt_soc_type() -{ - int ret = 0; - char bt_soc_type[PROPERTY_VALUE_MAX]; - - DEBUG("bt-hci: get_bt_soc_type\n"); - - ret = property_get("qcom.bluetooth.soc", bt_soc_type, NULL); - if (ret != 0) { - DEBUG("qcom.bluetooth.soc set to %s\n", bt_soc_type); - if (!strncasecmp(bt_soc_type, "rome", sizeof("rome"))) { - return BT_SOC_ROME; - } - else if (!strncasecmp(bt_soc_type, "cherokee", sizeof("cherokee"))) { - return BT_SOC_CHEROKEE; - } - else if (!strncasecmp(bt_soc_type, "ath3k", sizeof("ath3k"))) { - return BT_SOC_AR3K; - } - else if (!strncasecmp(bt_soc_type, "napier", sizeof("napier"))) { - return BT_SOC_NAPIER; - } - else { - DEBUG("qcom.bluetooth.soc not set, so using default.\n"); - return BT_SOC_DEFAULT; - } - } - else { - DEBUG("%s: Failed to get soc type\n", __FUNCTION__); - ret = BT_SOC_DEFAULT; - } - - return ret; -} -#endif - -static int parse_options(wdsdaemon *wds, int argc, char *argv[]) -{ - int ret = STATUS_SUCCESS; - int opt; - - if (argc > 2) { - ERROR("Invalid number of arguments\n"); - ret = STATUS_INVALID_LENGTH; - ERROR("Usage %s [-abfunht]", argv[0]); - return ret; - } - - if (argc == 1) { - wds->mode = MODE_ALL_SMD; - return ret; - } - - while ((opt = getopt(argc, argv, "abfunhstm")) != -1) { - switch (opt) { - case 'a': - DEBUG("Opening ANT SMD channels\n"); - wds->mode = MODE_ANT_SMD; - break; - case 'b': - DEBUG("Opening BT SMD channels\n"); - wds->mode = MODE_BT_SMD; - break; - case 'f': - DEBUG("Opening FM SMD channels\n"); - wds->mode = MODE_FM_SMD; - break; - case 't': - ERROR("Setting mask for pc initialization\n"); - wds->pcinit_mask = true; - break; - case 's': - ERROR("Opening WDS server socket\n"); - wds->is_server_enabled = true; - wds->pcinit_mask = true; - break; -#ifdef ANDROID - if (soc_type == BT_SOC_ROME || soc_type == BT_SOC_CHEROKEE) { - case 'u': - DEBUG("Opening UART BT Channel\n"); - wds->mode = MODE_BT_UART; - break; - } - if (soc_type == BT_SOC_CHEROKEE) { - case 'm': - DEBUG("Opening UART FM Channel\n"); - wds->mode = MODE_FM_UART; - break; - } -#else -#ifdef BT_SOC_TYPE_ROME - case 'u': - DEBUG("Opening UART BT Channel\n"); - wds->mode = MODE_BT_UART; - break; -#endif -#endif -#ifdef CONFIG_ANT - case 'n': - ERROR("Opening ANT UART channels\n"); - wds->mode = MODE_ANT_UART; - break; -#endif - case 'h': - DEBUG("By Default, it will open all SMD channels\n"); - DEBUG("Use -a for opening only ANT Channels\n"); - DEBUG("Use -b for opening only BT Channels\n"); - DEBUG("Use -f for opening only FM Channels\n"); - -#ifdef ANDROID - if (soc_type == BT_SOC_ROME || soc_type == BT_SOC_CHEROKEE) { - DEBUG("Use -u for opening only UART Channel for BT (ROME)\n"); - } - if (soc_type == BT_SOC_CHEROKEE) { - DEBUG("Use -m for opening only UART Channel for FM\n"); - } -#else -#ifdef BT_SOC_TYPE_ROME - DEBUG("Use -u for opening only UART Channel for BT (ROME)\n"); -#endif -#endif - -#ifdef CONFIG_ANT - DEBUG("Use -n for opening ANT UART channels only\n"); -#endif - DEBUG("Use -t for masking pc initialization\n"); - DEBUG("Use -s for setting communication via server socket\n"); - DEBUG("Use -h to print help\n"); - ret = STATUS_ERROR; - break; - default: - DEBUG("Usage %s [-abfunhmst]\n", argv[0]); - ret = STATUS_ERROR; - break; - } - } - - return ret; -} - -static void wdsdaemon_init(wdsdaemon *wds) -{ - /* PC-DUT interface */ -#ifdef BT_BLUEZ - wds->pc_if.uart.intf = (unsigned char *)BT_HSLITE_UART_DEVICE; -#else - wds->pc_if.uart.intf = (unsigned char *)BT_HS_NMEA_DEVICE; -#endif - - /* DUT-BTSOC interface */ - switch (wds->mode) { - case MODE_ALL_SMD: - wds->soc_if.smd.fm_cmd = (unsigned char *)APPS_RIVA_FM_CMD_CH; - wds->soc_if.smd.bt_acl = (unsigned char*)APPS_RIVA_BT_ACL_CH; - wds->soc_if.smd.bt_cmd = (unsigned char *)APPS_RIVA_BT_CMD_CH; - wds->soc_if.smd.ant_cmd = (unsigned char *)APPS_RIVA_ANT_CMD; - wds->soc_if.smd.ant_data = (unsigned char *)APPS_RIVA_ANT_DATA; - break; - case MODE_ANT_SMD: - wds->soc_if.smd.ant_cmd = (unsigned char *)APPS_RIVA_ANT_CMD; - wds->soc_if.smd.ant_data = (unsigned char *)APPS_RIVA_ANT_DATA; - break; - case MODE_BT_SMD: - wds->soc_if.smd.bt_acl = (unsigned char *)APPS_RIVA_BT_ACL_CH; - wds->soc_if.smd.bt_cmd = (unsigned char *)APPS_RIVA_BT_CMD_CH; - break; - case MODE_FM_SMD: - wds->soc_if.smd.fm_cmd = (unsigned char *)APPS_RIVA_FM_CMD_CH; - break; - case MODE_BT_UART: - case MODE_ANT_UART: - wds->soc_if.uart.intf = (unsigned char *)BT_HS_UART_DEVICE; - break; - } -} - -int process_packet_type(wdsdaemon *wds, unsigned char pkt_id, - int *dst_fd, int *len, int dir) -{ - int state; - - switch(pkt_id) { - case BT_CMD_PKT_ID: - *len = BT_EVT_PKT_HDR_LEN_UART; - case BT_EVT_PKT_ID: - case BT_ACL_DATA_PKT_ID: - state = RX_BT_HDR; - if (wds->mode == MODE_BT_UART) - *dst_fd = wds->soc_if.uart.uart_fd; - else - if (pkt_id == BT_CMD_PKT_ID) - *dst_fd = wds->soc_if.smd.bt_cmd_fd; - else - *dst_fd = wds->soc_if.smd.bt_acl_fd; - if (pkt_id == BT_ACL_DATA_PKT_ID) - *len = BT_ACL_PKT_HDR_LEN; - else if (pkt_id == BT_EVT_PKT_ID) - *len = BT_EVT_PKT_HDR_LEN; - break; - case FM_CMD_PKT_ID: - if (wds-> mode == MODE_FM_UART) - *dst_fd = wds->soc_if.uart.uart_fd; - else - *dst_fd = wds->soc_if.smd.fm_cmd_fd; - case FM_EVT_PKT_ID: - state = RX_FM_HDR; - if (pkt_id == FM_CMD_PKT_ID) - *len = FM_CMD_PKT_HDR_LEN; - else if (pkt_id == FM_EVT_PKT_ID) - *len = FM_EVT_PKT_HDR_LEN; - break; - case ANT_CMD_PKT_ID: - case ANT_DATA_PKT_ID: - state = RX_ANT_HDR; - if (wds->mode == MODE_ANT_UART) - *dst_fd = wds->soc_if.uart.uart_fd; - else - if (pkt_id == ANT_CMD_PKT_ID) - *dst_fd = wds->soc_if.smd.ant_cmd_fd; - else - *dst_fd = wds->soc_if.smd.ant_data_fd; - break; - default: - state = RX_ERROR; - break; - } - - if (dir == SOC_TO_PC) { - if (wds->is_server_enabled) - *dst_fd = wds->server_socket_fd; - else - *dst_fd = wds->pc_if.uart.uart_fd; - } - - return state; -} - -static int process_pc_data_to_soc(wdsdaemon *wds, unsigned char *buf, int src_fd) -{ - int retval = STATUS_SUCCESS; - int len = 1, n_bytes = 0, n_total = 0; - int pkt_id = 0, dst_fd = 0; - int state = RX_PKT_IND, i; - - do { - if ((n_bytes = read(src_fd, (unsigned char *)&buf[n_total], len)) > 0) { - n_total += n_bytes; - len -= n_bytes; - if (len) - continue; - - switch(state) { - case RX_PKT_IND: - pkt_id = buf[0]; - state = process_packet_type(wds, pkt_id, &dst_fd, &len, - PC_TO_SOC); - break; - case RX_BT_HDR: - len = get_pkt_data_len(pkt_id, buf); - state = RX_BT_DATA; - break; - case RX_ANT_HDR: - len = buf[0]; - state = RX_ANT_DATA; - break; - case RX_FM_HDR: - len = get_pkt_data_len(pkt_id, buf); - state = RX_FM_DATA; - break; - case RX_BT_DATA: - case RX_ANT_DATA: - case RX_FM_DATA: - len = 0; - break; - default: - retval = STATUS_ERROR; - break; - } - } else { - ERROR("%s: error while reading from fd = %d err = %s\n", - __func__, src_fd, strerror(errno)); - if (n_bytes < 0) - ERROR("%s:read returns err: %d\n", __func__,n_bytes); - if (n_bytes == 0) - ERROR("%s: This indicates the close of other end\n", __func__); - retval = STATUS_ERROR; - break; - } - } while (len); - - if(retval) - goto fail; - - /* In case of Pronto, for BT, we have different channels for CMD and ACL, - * so we don't send packet indicator to SoC. - * Below condition will skip the packet indicator byte to Soc in\ - * case of Pronto. - */ - if (wds->mode != MODE_BT_UART && wds->mode != MODE_ANT_UART && - wds->mode != MODE_FM_UART) { - n_total -= 1; - len = 1; - } - while(n_total) { - if((n_bytes = write(dst_fd, buf + len, n_total)) > 0) { - len += n_bytes; - n_total -= n_bytes; - } else - ERROR("%s :Error while writeto fd = %d err = %s\n", - __func__, dst_fd, strerror(errno)); - break; - } - - DEBUG("cmd:\t"); - for (i = 0; i < len; i++) - DEBUG("0x%x\t", buf[i]); - DEBUG("\n"); - - if (n_total) - retval = STATUS_ERROR; - -fail: - return retval; -} - -static void thread_exit_handler(int signo){ - DEBUG("%s: %d",__func__,signo); -} - -int server_create(wdsdaemon *wds,int *src_fd) { - int retval = establish_server_socket(wds); - if (STATUS_SUCCESS == retval) - *src_fd = wds->server_socket_fd; - else - ERROR("Failed to init server socket\n"); - - return retval; -} - -int main(int argc, char *argv[]) -{ - int retval = STATUS_ERROR, src_fd = 0; - fd_set readfds; - wdsdaemon wds; - unsigned char *buf = NULL; - size_t size = UART_BUF_SIZE; - struct sigaction action; - sigset_t sigmask, emptymask; - - sigemptyset(&sigmask); - sigaddset(&sigmask, SIGINT); - sigaddset(&sigmask, SIGPIPE); - if (sigprocmask(SIG_BLOCK, &sigmask, NULL) == -1) { - ERROR("failed to sigprocmask"); - } - memset(&action, 0, sizeof(struct sigaction)); - sigemptyset(&action.sa_mask); - action.sa_flags = 0; - action.sa_handler = thread_exit_handler; - - sigemptyset(&emptymask); - - if (sigaction(SIGINT, &action, NULL) < 0) { - ERROR("%s:sigaction failed\n", __func__); - } - - memset(&wds, 0, sizeof(wdsdaemon)); - -#ifdef ANDROID - soc_type = get_bt_soc_type(); -#endif - - /* parse options */ - retval = parse_options(&wds, argc, argv); - if (STATUS_SUCCESS != retval) { - goto fail; - } - - wdsdaemon_init(&wds); - - if(!(wds.pcinit_mask)) - { - retval = init_pc_interface(&wds); - if (STATUS_SUCCESS != retval) { - ERROR("Failed to init DUT-PC interface\n"); - goto fail; - } - src_fd = wds.pc_if.uart.uart_fd; - } - - retval = init_soc_interface(&wds); - if (STATUS_SUCCESS != retval) { - ERROR("Failed to init DUT-BTSOC interface\n"); - goto fail; - } -#ifdef BT_BLUEZ - fflush(stdout); - fflush(stderr); -#endif - - buf = (unsigned char *)calloc(size, 1); - if (!buf) { - ERROR("%s:Unable to allocate memory\n", __func__); - goto fail; - } - - if( wds.is_server_enabled && ( server_create(&wds, &src_fd)!= STATUS_SUCCESS )) - goto fail; - - do { - FD_ZERO(&readfds); - FD_SET(src_fd, &readfds); - - DEBUG("Waiting for data:\n"); - if ((retval = select(src_fd + 1, &readfds, NULL, NULL, NULL)) == -1) { - ERROR("%s:select failed\n", __func__); - if (wds.is_server_enabled) - { - ERROR("%s:closing the server socket and reopening\n", __func__); - close(src_fd); - if(server_create(&wds, &src_fd)== STATUS_SUCCESS) - continue; - } - break; - } - - if (FD_ISSET(src_fd, &readfds)) { - retval = process_pc_data_to_soc(&wds, buf, src_fd); - } else - ERROR("%s:src_fd port not set\n",__func__); - if (retval != STATUS_SUCCESS) { - ERROR("%s: Error while processing Data to SoC err = %d\n", __func__, retval); - if (wds.is_server_enabled) - { - ERROR("%s:closing the server socket and reopening\n", __func__); - close(src_fd); - if(server_create(&wds, &src_fd)== STATUS_SUCCESS) - continue; - } - break; - } - }while(1); - -fail: - if (buf) - free(buf); - shutdown(src_fd, SHUT_RDWR); - switch (wds.mode) { - case MODE_BT_UART: - case MODE_FM_UART: - case MODE_ANT_UART: - shutdown(wds.soc_if.uart.uart_fd, SHUT_RDWR); - break; - case MODE_ALL_SMD: - case MODE_BT_SMD: - shutdown(wds.soc_if.smd.bt_cmd_fd, SHUT_RDWR); - shutdown(wds.soc_if.smd.bt_acl_fd, SHUT_RDWR); - if(wds.mode == MODE_BT_SMD) - break; - case MODE_FM_SMD: - shutdown(wds.soc_if.smd.fm_cmd_fd, SHUT_RDWR); - if (wds.mode == MODE_FM_SMD) - break; - case MODE_ANT_SMD: - shutdown(wds.soc_if.smd.ant_cmd_fd, SHUT_RDWR); - shutdown(wds.soc_if.smd.ant_data_fd, SHUT_RDWR); - break; - } - pthread_join(wds.soc_rthread, NULL); - - hidl_client_close(); - return retval; -} diff --git a/feeds/ipq95xx/hostapd.old/Config.in b/feeds/ipq95xx/hostapd.old/Config.in deleted file mode 100644 index aee2a15fd..000000000 --- a/feeds/ipq95xx/hostapd.old/Config.in +++ /dev/null @@ -1,52 +0,0 @@ -# wpa_supplicant config -config WPA_SUPPLICANT_NO_TIMESTAMP_CHECK - bool "Disable timestamp check" - depends on PACKAGE_wpa-supplicant || PACKAGE_wpa-supplicant-mesh || PACKAGE_wpa-supplicant-mini || PACKAGE_wpad || PACKAGE_wpad-mini || PACAKGE_wpad-mesh - default n - help - This disables the timestamp check for certificates in wpa_supplicant - Useful for devices without RTC that cannot reliably get the real date/time - -choice - prompt "Choose TLS provider" - default WPA_SUPPLICANT_INTERNAL - depends on PACKAGE_wpa-supplicant || PACKAGE_wpa-supplicant-mesh || PACKAGE_wpad || PACKAGE_wpad-mesh - -config WPA_SUPPLICANT_INTERNAL - bool "internal" - depends on PACKAGE_wpa-supplicant || PACKAGE_wpad - -config WPA_SUPPLICANT_OPENSSL - bool "openssl" - select PACKAGE_libopenssl - -endchoice - -config WPA_RFKILL_SUPPORT - bool "Add rfkill support" - depends on PACKAGE_wpa-supplicant || PACKAGE_wpa-supplicant-mesh || PACKAGE_wpa-supplicant-mini || PACKAGE_wpad || PACKAGE_wpad-mini || PACKAGE_wpad-mesh - default n - -config WPA_MSG_MIN_PRIORITY - int "Minimum debug message priority" - default 3 - help - Useful values are: - 0 = all messages - 1 = raw message dumps - 2 = most debugging messages - 3 = info messages - 4 = warnings - 5 = errors - -config DRIVER_WEXT_SUPPORT - bool - default n - -config DRIVER_11N_SUPPORT - bool - default n - -config DRIVER_11W_SUPPORT - bool - default n diff --git a/feeds/ipq95xx/hostapd.old/M b/feeds/ipq95xx/hostapd.old/M deleted file mode 100755 index 0419399ef..000000000 --- a/feeds/ipq95xx/hostapd.old/M +++ /dev/null @@ -1,511 +0,0 @@ -# Copyright (C) 2006-2014 OpenWrt.org -# -# This is free software, licensed under the GNU General Public License v2. -# See /LICENSE for more information. -# - -include $(TOPDIR)/rules.mk - -PKG_NAME:=hostapd -PKG_VERSION:=2021-12-13 -PKG_RELEASE:=1 -PKG_REV:=b26f5c0fe3 - -PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2 -PKG_SOURCE_URL:=http://w1.fi/hostap.git -PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION) -PKG_SOURCE_VERSION:=$(PKG_REV) -PKG_SOURCE_PROTO:=git -PKG_MIRROR_MD5SUM:=skip - -PKG_MAINTAINER:=Felix Fietkau -PKG_LICENSE:=BSD-3-Clause - -PKG_BUILD_PARALLEL:=1 - -PKG_CONFIG_DEPENDS:= \ - CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK \ - CONFIG_PACKAGE_kmod-ath9k \ - CONFIG_PACKAGE_kmod-cfg80211 \ - CONFIG_PACKAGE_hostapd \ - CONFIG_PACKAGE_hostapd-mini \ - CONFIG_PACKAGE_kmod-hostap \ - CONFIG_WPA_RFKILL_SUPPORT \ - CONFIG_DRIVER_WEXT_SUPPORT \ - CONFIG_DRIVER_11N_SUPPORT - -LOCAL_TYPE=$(strip \ - $(if $(findstring wpad,$(BUILD_VARIANT)),wpad, \ - $(if $(findstring supplicant,$(BUILD_VARIANT)),supplicant, \ - hostapd \ - ))) -LOCAL_VARIANT=$(patsubst wpad-%,%,$(patsubst supplicant-%,%,$(BUILD_VARIANT))) - -ifeq ($(LOCAL_TYPE),supplicant) - ifeq ($(LOCAL_VARIANT),full) - PKG_CONFIG_DEPENDS += \ - CONFIG_WPA_SUPPLICANT_INTERNAL \ - CONFIG_WPA_SUPPLICANT_OPENSSL - endif - ifeq ($(LOCAL_VARIANT),mesh) - PKG_CONFIG_DEPENDS += \ - CONFIG_WPA_SUPPLICANT_OPENSSL - endif -endif - -PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION) - -include $(INCLUDE_DIR)/package.mk -TARGET_LDFLAGS_C:=$(TARGET_LDFLAGS) - -STAMP_CONFIGURED:=$(STAMP_CONFIGURED)_$(CONFIG_WPA_MSG_MIN_PRIORITY) - -ifneq ($(CONFIG_DRIVER_11N_SUPPORT),) - HOSTAPD_IEEE80211N:=y -endif - -DRIVER_MAKEOPTS= \ - CONFIG_ACS=$(CONFIG_PACKAGE_kmod-cfg80211) \ - CONFIG_DRIVER_NL80211=$(CONFIG_PACKAGE_kmod-cfg80211) \ - CONFIG_DRIVER_HOSTAP=$(CONFIG_PACKAGE_kmod-hostap) \ - CONFIG_IEEE80211N=$(HOSTAPD_IEEE80211N) \ - CONFIG_DRIVER_WEXT=$(CONFIG_DRIVER_WEXT_SUPPORT) \ - -ifeq ($(LOCAL_VARIANT),full) - DRIVER_MAKEOPTS += CONFIG_IEEE80211W=$(CONFIG_DRIVER_11W_SUPPORT) -endif - -ifneq ($(LOCAL_TYPE),hostapd) - ifdef CONFIG_WPA_SUPPLICANT_OPENSSL - ifeq ($(LOCAL_VARIANT),full) - DRIVER_MAKEOPTS += CONFIG_TLS=openssl - TARGET_LDFLAGS += -lcrypto -lssl - endif - endif - ifeq ($(LOCAL_VARIANT),mesh) - DRIVER_MAKEOPTS += CONFIG_TLS=openssl - TARGET_LDFLAGS += -lcrypto -lssl - endif - ifdef CONFIG_WPA_SUPPLICANT_NO_TIMESTAMP_CHECK - TARGET_CFLAGS += -DNO_TIMESTAMP_CHECK - endif - ifdef CONFIG_WPA_RFKILL_SUPPORT - DRIVER_MAKEOPTS += NEED_RFKILL=y - endif - DRIVER_MAKEOPTS += \ - CONFIG_DRIVER_ROBOSWITCH=$(CONFIG_PACKAGE_kmod-switch) -endif - -ifdef CONFIG_USE_GLIBC - TARGET_LDFLAGS += -lrt - TARGET_LDFLAGS_C += -lrt -endif - -DRV_DEPENDS:=+PACKAGE_kmod-cfg80211:libnl - -define Package/hostapd/Default - SECTION:=net - CATEGORY:=Network - TITLE:=IEEE 802.1x Authenticator - URL:=http://hostap.epitest.fi/ - DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus +libnl -endef - -define Package/hostapd -$(call Package/hostapd/Default) - TITLE+= (full) - VARIANT:=full - CONFLICTS:=wpad wpad-mini wpad-mesh -endef - -define Package/hostapd/description - This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS - Authenticator. -endef - -define Package/hostapd-macsec -$(call Package/hostapd/Default) - TITLE+= (macsec) - DEPENDS+= @TARGET_ipq||TARGET_ipq50xx||TARGET_ipq60xx||TARGET_ipq95xx +kmod-qca-nss-macsec +libopenssl - VARIANT:=macsec -endef - -define Package/hostapd-macsec/description - This package is Hostapd Authenticator for macsec support. -endef - -define Package/hostapd-mini -$(call Package/hostapd/Default) - TITLE+= (WPA-PSK only) - VARIANT:=mini - CONFLICTS:=wpad wpad-mini wpad-mesh -endef - -define Package/hostapd-mini/description - This package contains a minimal IEEE 802.1x/WPA Authenticator (WPA-PSK only). -endef - -define Package/hostapd-utils - $(call Package/hostapd/Default) - TITLE+= (utils) - DEPENDS:=@PACKAGE_hostapd||PACKAGE_hostapd-mini||PACKAGE_wpad||PACKAGE_wpad-mesh||PACKAGE_wpad-mini -endef - -define Package/hostapd-utils/description - This package contains a command line utility to control the - IEEE 802.1x/WPA/EAP/RADIUS Authenticator. -endef - -define Package/wpad/Default - SECTION:=net - CATEGORY:=Network - TITLE:=IEEE 802.1x Authenticator/Supplicant - DEPENDS:=$(DRV_DEPENDS) +hostapd-common +libubus - URL:=http://hostap.epitest.fi/ -endef - -define Package/wpad -$(call Package/wpad/Default) - TITLE+= (full) - DEPENDS+=+WPA_SUPPLICANT_OPENSSL:libopenssl +libnl - VARIANT:=wpad-full -endef - -define Package/wpad/description - This package contains a full featured IEEE 802.1x/WPA/EAP/RADIUS - Authenticator and Supplicant -endef - -define Package/wpad-mini -$(call Package/wpad/Default) - TITLE+= (WPA-PSK only) - DEPENDS:=$(DRV_DEPENDS) +libnl - VARIANT:=wpad-mini -endef - -define Package/wpad-mini/description - This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (WPA-PSK only). -endef - -define Package/wpad-mesh -$(call Package/wpad/Default) - TITLE+= (with 802.11s mesh and SAE support) - DEPENDS:=$(DRV_DEPENDS) +libubus +libopenssl +@CONFIG_WPA_SUPPLICANT_OPENSSL @(!TARGET_uml||BROKEN) - CONFLICTS:=@WPA_SUPPLICANT_INTERNAL - VARIANT:=wpad-mesh -endef - -define Package/wpad-mesh/description - This package contains a minimal IEEE 802.1x/WPA Authenticator and Supplicant (with 802.11s mesh and SAE support). -endef - -define Package/wpa-supplicant - SECTION:=net - CATEGORY:=Network - TITLE:=WPA Supplicant - URL:=http://hostap.epitest.fi/wpa_supplicant/ - DEPENDS:=$(DRV_DEPENDS) +WPA_SUPPLICANT_OPENSSL:libopenssl - CONFLICTS:=wpad wpad-mini wpad-mesh - VARIANT:=supplicant-full -endef - -define Package/wpa-supplicant/Description - WPA Supplicant -endef - -define Package/wpa-supplicant/config - source "$(SOURCE)/Config.in" -endef - -define Package/wpa-supplicant-macsec - $(call Package/wpa-supplicant) - TITLE:=WPA Supplicant (MACSEC) - DEPENDS+= @TARGET_ipq||TARGET_ipq50xx||TARGET_ipq60xx||TARGET_ipq95xx +kmod-qca-nss-macsec - CONFLICTS:= - VARIANT:=supplicant-macsec -endef - -define Package/wpa-supplicant-macsec/Description - WPA Supplicant with MACSEC support. -endef - -define Package/wpa-supplicant-p2p - $(Package/wpa-supplicant) - TITLE:=WPA Supplicant (with Wi-Fi P2P support) - DEPENDS:=$(DRV_DEPENDS) - CONFLICTS:=wpad wpad-mini wpad-mesh - VARIANT:=supplicant-p2p -endef - -define Package/wpa-supplicant-p2p/Description - WPA Supplicant (with Wi-Fi P2P support) -endef - -define Package/wpa-supplicant-mesh - $(Package/wpa-supplicant) - TITLE:=WPA Supplicant (with 802.11s and SAE) - DEPENDS:=$(DRV_DEPENDS) @(!TARGET_uml||BROKEN) - CONFLICTS:=wpad wpad-mini wpad-mesh - VARIANT:=supplicant-mesh -endef - -define Package/wpa-supplicant-mesh/Description - WPA Supplicant (variant with 802.11s and SAE support) -endef - -define Package/wpa-supplicant-mini - $(Package/wpa-supplicant) - TITLE:=WPA Supplicant (minimal version) - DEPENDS:=$(DRV_DEPENDS) - CONFLICTS:=wpad wpad-mini wpad-mesh - VARIANT:=supplicant-mini -endef - -define Package/wpa-supplicant-mini/Description - WPA Supplicant (minimal version) -endef - -define Package/wpa-cli - SECTION:=net - CATEGORY:=Network - DEPENDS:=@PACKAGE_wpa-supplicant||PACKAGE_wpa-supplicant-p2p||PACKAGE_wpad-mini||PACKAGE_wpad||PACKAGE_wpad-mesh - TITLE:=WPA Supplicant command line interface -endef - -define Package/wpa-cli/Description - WPA Supplicant control utility -endef - -define Package/hostapd-common - TITLE:=hostapd/wpa_supplicant common support files - SECTION:=net - CATEGORY:=Network -endef - -define Package/hostapd-common-old - TITLE:=hostapd/wpa_supplicant common support files (legacy drivers) - SECTION:=net - CATEGORY:=Network -endef - -define Package/eapol-test - TITLE:=802.1x authentication test utility - SECTION:=net - CATEGORY:=Network - VARIANT:=supplicant-full - DEPENDS:=$(DRV_DEPENDS) -endef - - -ifneq ($(wildcard $(PKG_BUILD_DIR)/.config_*),$(subst .configured_,.config_,$(STAMP_CONFIGURED))) - define Build/Configure/rebuild - $(FIND) $(PKG_BUILD_DIR) -name \*.o -or -name \*.a | $(XARGS) rm -f - rm -f $(PKG_BUILD_DIR)/hostapd/hostapd - rm -f $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant - rm -f $(PKG_BUILD_DIR)/.config_* - touch $(subst .configured_,.config_,$(STAMP_CONFIGURED)) - endef -endif - -define Build/Configure - $(Build/Configure/rebuild) - $(if $(wildcard ./files/hostapd-$(LOCAL_VARIANT).config), \ - $(CP) ./files/hostapd-$(LOCAL_VARIANT).config $(PKG_BUILD_DIR)/hostapd/.config \ - ) - $(CP) ./files/wpa_supplicant-$(LOCAL_VARIANT).config $(PKG_BUILD_DIR)/wpa_supplicant/.config -endef - -TARGET_CPPFLAGS := \ - -I$(STAGING_DIR)/usr/include/libnl3 \ - -I$(PKG_BUILD_DIR)/src/crypto \ - $(TARGET_CPPFLAGS) \ - -D_GNU_SOURCE \ - $(if $(CONFIG_WPA_MSG_MIN_PRIORITY),-DCONFIG_MSG_MIN_PRIORITY=$(CONFIG_WPA_MSG_MIN_PRIORITY)) - -TARGET_CFLAGS += -ffunction-sections -fdata-sections -Wall -Werror -Wno-pointer-sign -TARGET_LDFLAGS += -Wl,--gc-sections -ifeq ($(findstring supplicant,$(BUILD_VARIANT)),) - TARGET_LDFLAGS += -lubox -lubus -endif - -ifdef CONFIG_PACKAGE_kmod-cfg80211 - TARGET_LDFLAGS += -lm -lnl-3 -lnl-genl-3 -lnl-route-3 -endif - -ifeq ($(LOCAL_VARIANT),macsec) - TARGET_LDFLAGS += -lcrypto -lssl -lfal -L$(STAGING_DIR)/usr/lib - TARGET_CPPFLAGS += \ - -I$(STAGING_DIR)/usr/include/qca-nss-macsec -endif - -define Build/RunMake - CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \ - $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/$(1) \ - $(TARGET_CONFIGURE_OPTS) \ - $(DRIVER_MAKEOPTS) \ - LIBS="$(TARGET_LDFLAGS)" \ - LIBS_c="$(TARGET_LDFLAGS_C)" \ - BCHECK= \ - $(2) -endef - -define Build/Compile/wpad - echo ` \ - $(call Build/RunMake,hostapd,-s MULTICALL=1 dump_cflags); \ - $(call Build/RunMake,wpa_supplicant,-s MULTICALL=1 dump_cflags) | \ - sed -e 's,-n ,,g' -e 's^$(TARGET_CFLAGS)^^' \ - ` > $(PKG_BUILD_DIR)/.cflags - +$(call Build/RunMake,hostapd, \ - CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \ - MULTICALL=1 \ - hostapd_cli hostapd_multi.a \ - ) - +$(call Build/RunMake,wpa_supplicant, \ - CFLAGS="$$$$(cat $(PKG_BUILD_DIR)/.cflags)" \ - MULTICALL=1 \ - wpa_cli wpa_supplicant_multi.a \ - libwpa_client.so \ - ) - $(TARGET_CC) -o $(PKG_BUILD_DIR)/wpad \ - $(TARGET_CFLAGS) \ - ./files/multicall.c \ - $(PKG_BUILD_DIR)/hostapd/hostapd_multi.a \ - $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant_multi.a \ - $(TARGET_LDFLAGS) -endef - -define Build/Compile/hostapd - $(call Build/RunMake,hostapd, \ - hostapd hostapd_cli \ - ) -endef - -define Build/Compile/supplicant - $(call Build/RunMake,wpa_supplicant, \ - wpa_cli wpa_supplicant \ - ) -endef - -define Build/Compile/supplicant-full - $(call Build/RunMake,wpa_supplicant, \ - eapol_test \ - ) -endef - -define Build/Compile - $(Build/Compile/$(LOCAL_TYPE)) - $(Build/Compile/$(BUILD_VARIANT)) -endef - -define Build/InstallDev - $(INSTALL_DIR) $(1)/usr/include - $(INSTALL_DIR) $(1)/usr/lib/ - $(CP) $(PKG_BUILD_DIR)/src/common/wpa_ctrl.h $(1)/usr/include -ifneq ($(CONFIG_PACKAGE_hostapd-utils),) -ifneq ($(LOCAL_VARIANT),macsec) - $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/libwpa_client.so $(1)/usr/lib -endif -endif -endef - -define Install/hostapd - $(INSTALL_DIR) $(1)/usr/sbin -endef - -define Install/supplicant - $(INSTALL_DIR) $(1)/usr/sbin -endef - -define Package/hostapd-common/install - $(INSTALL_DIR) $(1)/lib/netifd - $(INSTALL_DATA) ./files/netifd.sh $(1)/lib/netifd/hostapd.sh - $(INSTALL_DIR) $(1)/etc/init.d - $(INSTALL_BIN) ./files/wpad.init $(1)/etc/init.d/wpad -endef - -define Package/hostapd-common-old/install - $(INSTALL_DIR) $(1)/lib/wifi - $(INSTALL_DATA) ./files/hostapd.sh $(1)/lib/wifi/hostapd.sh - $(INSTALL_DATA) ./files/wpa_supplicant.sh $(1)/lib/wifi/wpa_supplicant.sh -endef - -define Package/hostapd/install - $(call Install/hostapd,$(1)) - $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd $(1)/usr/sbin/ -endef - -define Package/hostapd-macsec/install - $(call Install/hostapd,$(1)) - $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd $(1)/usr/sbin/hostapd-macsec -endef - -Package/hostapd-mini/install = $(Package/hostapd/install) - -ifneq ($(LOCAL_TYPE),supplicant) -ifneq ($(LOCAL_VARIANT),macsec) - define Package/hostapd-utils/install - $(INSTALL_DIR) $(1)/usr/sbin $(1)/etc/rc.button - $(INSTALL_BIN) $(PKG_BUILD_DIR)/hostapd/hostapd_cli $(1)/usr/sbin/ - $(INSTALL_BIN) ./files/wps-hotplug.sh $(1)/etc/rc.button/wps - endef -endif -endif - -define Package/wpad/install - $(call Install/hostapd,$(1)) - $(call Install/supplicant,$(1)) - $(INSTALL_DIR) $(1)/usr/lib - $(INSTALL_DIR) $(1)/usr/include - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpad $(1)/usr/sbin/ - $(LN) wpad $(1)/usr/sbin/hostapd - $(LN) wpad $(1)/usr/sbin/wpa_supplicant - $(INSTALL_DATA) $(PKG_BUILD_DIR)/wpa_supplicant/libwpa_client.so $(1)/usr/lib/ -endef -Package/wpad-mini/install = $(Package/wpad/install) -Package/wpad-mesh/install = $(Package/wpad/install) - -define Package/wpa-supplicant/install - $(call Install/supplicant,$(1)) - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant $(1)/usr/sbin/ -endef - -define Package/wpa-supplicant-macsec/install - $(call Install/supplicant,$(1)) - $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_supplicant $(1)/usr/sbin/wpa_supplicant-macsec -endef - -Package/wpa-supplicant-mini/install = $(Package/wpa-supplicant/install) -Package/wpa-supplicant-p2p/install = $(Package/wpa-supplicant/install) - -ifneq ($(LOCAL_TYPE),hostapd) -ifneq ($(LOCAL_VARIANT),macsec) - define Package/wpa-cli/install - $(INSTALL_DIR) $(1)/usr/sbin - $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/wpa_cli $(1)/usr/sbin/ - endef -endif -endif - -ifeq ($(BUILD_VARIANT),supplicant-full) - define Package/eapol-test/install - $(INSTALL_DIR) $(1)/usr/sbin - $(CP) $(PKG_BUILD_DIR)/wpa_supplicant/eapol_test $(1)/usr/sbin/ - endef -endif - -$(eval $(call BuildPackage,hostapd)) -$(eval $(call BuildPackage,hostapd-mini)) -$(eval $(call BuildPackage,hostapd-macsec)) -$(eval $(call BuildPackage,wpad)) -$(eval $(call BuildPackage,wpad-mesh)) -$(eval $(call BuildPackage,wpad-mini)) -$(eval $(call BuildPackage,wpa-supplicant)) -$(eval $(call BuildPackage,wpa-supplicant-macsec)) -$(eval $(call BuildPackage,wpa-supplicant-mesh)) -$(eval $(call BuildPackage,wpa-supplicant-mini)) -$(eval $(call BuildPackage,wpa-supplicant-p2p)) -$(eval $(call BuildPackage,wpa-cli)) -$(eval $(call BuildPackage,hostapd-utils)) -$(eval $(call BuildPackage,hostapd-common)) -$(eval $(call BuildPackage,hostapd-common-old)) -$(eval $(call BuildPackage,eapol-test)) diff --git a/feeds/ipq95xx/hostapd.old/files/hostapd-full.config b/feeds/ipq95xx/hostapd.old/files/hostapd-full.config deleted file mode 100644 index c260da340..000000000 --- a/feeds/ipq95xx/hostapd.old/files/hostapd-full.config +++ /dev/null @@ -1,176 +0,0 @@ -# Example hostapd build time configuration -# -# This file lists the configuration options that are used when building the -# hostapd binary. All lines starting with # are ignored. Configuration option -# lines must be commented out complete, if they are not to be included, i.e., -# just setting VARIABLE=n is not disabling that variable. -# -# This file is included in Makefile, so variables like CFLAGS and LIBS can also -# be modified from here. In most cass, these lines should use += in order not -# to override previous values of the variables. - -# Driver interface for Host AP driver -CONFIG_DRIVER_HOSTAP=y - -# Driver interface for wired authenticator -CONFIG_DRIVER_WIRED=y - -# Driver interface for Prism54 driver -#CONFIG_DRIVER_PRISM54=y - -# Driver interface for drivers using the nl80211 kernel interface -CONFIG_DRIVER_NL80211=y -# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be -# shipped with your distribution yet. If that is the case, you need to build -# newer libnl version and point the hostapd build to use it. -#LIBNL=/usr/src/libnl -#CFLAGS += -I$(LIBNL)/include -#LIBS += -L$(LIBNL)/lib - -# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) -#CONFIG_DRIVER_BSD=y -#CFLAGS += -I/usr/local/include -#LIBS += -L/usr/local/lib - -# Driver interface for no driver (e.g., RADIUS server only) -#CONFIG_DRIVER_NONE=y - -# IEEE 802.11F/IAPP -CONFIG_IAPP=y - -# WPA2/IEEE 802.11i RSN pre-authentication -CONFIG_RSN_PREAUTH=y - -# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) -CONFIG_PEERKEY=y - -# IEEE 802.11w (management frame protection) -# This version is an experimental implementation based on IEEE 802.11w/D1.0 -# draft and is subject to change since the standard has not yet been finalized. -# Driver support is also needed for IEEE 802.11w. -#CONFIG_IEEE80211W=y - -# Integrated EAP server -CONFIG_EAP=y - -# EAP-MD5 for the integrated EAP server -CONFIG_EAP_MD5=y - -# EAP-TLS for the integrated EAP server -CONFIG_EAP_TLS=y - -# EAP-MSCHAPv2 for the integrated EAP server -CONFIG_EAP_MSCHAPV2=y - -# EAP-PEAP for the integrated EAP server -CONFIG_EAP_PEAP=y - -# EAP-GTC for the integrated EAP server -CONFIG_EAP_GTC=y - -# EAP-TTLS for the integrated EAP server -CONFIG_EAP_TTLS=y - -# EAP-SIM for the integrated EAP server -#CONFIG_EAP_SIM=y - -# EAP-AKA for the integrated EAP server -#CONFIG_EAP_AKA=y - -# EAP-AKA' for the integrated EAP server -# This requires CONFIG_EAP_AKA to be enabled, too. -#CONFIG_EAP_AKA_PRIME=y - -# EAP-PAX for the integrated EAP server -#CONFIG_EAP_PAX=y - -# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) -#CONFIG_EAP_PSK=y - -# EAP-SAKE for the integrated EAP server -#CONFIG_EAP_SAKE=y - -# EAP-GPSK for the integrated EAP server -#CONFIG_EAP_GPSK=y -# Include support for optional SHA256 cipher suite in EAP-GPSK -#CONFIG_EAP_GPSK_SHA256=y - -# EAP-FAST for the integrated EAP server -# Note: Default OpenSSL package does not include support for all the -# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, -# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch) -# to add the needed functions. -#CONFIG_EAP_FAST=y - -# Wi-Fi Protected Setup (WPS) -CONFIG_WPS=y -CONFIG_WPS2=y -# Enable UPnP support for external WPS Registrars -CONFIG_WPS_UPNP=y - -# EAP-IKEv2 -#CONFIG_EAP_IKEV2=y - -# Trusted Network Connect (EAP-TNC) -#CONFIG_EAP_TNC=y - -# PKCS#12 (PFX) support (used to read private key and certificate file from -# a file that usually has extension .p12 or .pfx) -CONFIG_PKCS12=y - -# RADIUS authentication server. This provides access to the integrated EAP -# server from external hosts using RADIUS. -#CONFIG_RADIUS_SERVER=y - -# Build IPv6 support for RADIUS operations -CONFIG_IPV6=y - -# IEEE Std 802.11r-2008 (Fast BSS Transition) -CONFIG_IEEE80211R=y - -# Use the hostapd's IEEE 802.11 authentication (ACL), but without -# the IEEE 802.11 Management capability (e.g. FreeBSD/net80211) -#CONFIG_DRIVER_RADIUS_ACL=y - -# IEEE 802.11n (High Throughput) support -CONFIG_IEEE80211N=y - -# IEEE 802.11ac (Very High Throughput) support -CONFIG_IEEE80211AC=y - -# Remove debugging code that is printing out debug messages to stdout. -# This can be used to reduce the size of the hostapd considerably if debugging -# code is not needed. -#CONFIG_NO_STDOUT_DEBUG=y - -# Remove support for RADIUS accounting -#CONFIG_NO_ACCOUNTING=y - -# Remove support for RADIUS -#CONFIG_NO_RADIUS=y - -# Remove support for VLANs -#CONFIG_NO_VLAN=y - -CONFIG_TLS=internal -CONFIG_INTERNAL_LIBTOMMATH=y -CONFIG_INTERNAL_AES=y -NEED_AES_DEC=y - -CONFIG_NO_RANDOM_POOL=y -CONFIG_NO_DUMP_STATE=y - -CONFIG_WPS=y -CONFIG_FULL_DYNAMIC_VLAN=y - -CONFIG_UBUS=y -CONFIG_HS20=y -CONFIG_P2P_MANAGER=y -CONFIG_INTERWORKING=y -CONFIG_WNM=y -CONFIG_PROXYARP=y -CONFIG_LIBNL32=y -CONFIG_LIBNL3_ROUTE=y - -CONFIG_AIRTIME_POLICY=y -CONFIG_FILS=y diff --git a/feeds/ipq95xx/hostapd.old/files/hostapd-macsec.config b/feeds/ipq95xx/hostapd.old/files/hostapd-macsec.config deleted file mode 100644 index 2fefc6ee0..000000000 --- a/feeds/ipq95xx/hostapd.old/files/hostapd-macsec.config +++ /dev/null @@ -1,111 +0,0 @@ -# Example hostapd build time configuration -# -# This file lists the configuration options that are used when building the -# hostapd binary. All lines starting with # are ignored. Configuration option -# lines must be commented out complete, if they are not to be included, i.e., -# just setting VARIABLE=n is not disabling that variable. -# -# This file is included in Makefile, so variables like CFLAGS and LIBS can also -# be modified from here. In most cass, these lines should use += in order not -# to override previous values of the variables. - -# Driver interface for Host AP driver -CONFIG_DRIVER_HOSTAP=y - -# Driver interface for wired authenticator -CONFIG_DRIVER_WIRED=y - -# Driver interface for Prism54 driver -#CONFIG_DRIVER_PRISM54=y - -# Driver interface for drivers using the nl80211 kernel interface -CONFIG_DRIVER_NL80211=y - -# IEEE 802.11F/IAPP -CONFIG_IAPP=y - -# WPA2/IEEE 802.11i RSN pre-authentication -CONFIG_RSN_PREAUTH=y - -# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) -CONFIG_PEERKEY=y - -# Integrated EAP server -CONFIG_EAP=y - -# EAP-MD5 for the integrated EAP server -CONFIG_EAP_MD5=y - -# EAP-TLS for the integrated EAP server -CONFIG_EAP_TLS=y - -# EAP-MSCHAPv2 for the integrated EAP server -CONFIG_EAP_MSCHAPV2=y - -# EAP-PEAP for the integrated EAP server -CONFIG_EAP_PEAP=y - -# EAP-GTC for the integrated EAP server -CONFIG_EAP_GTC=y - -# EAP-TTLS for the integrated EAP server -CONFIG_EAP_TTLS=y - -# Wi-Fi Protected Setup (WPS) -CONFIG_WPS=y -CONFIG_WPS2=y -# Enable UPnP support for external WPS Registrars -CONFIG_WPS_UPNP=y - -# PKCS#12 (PFX) support (used to read private key and certificate file from -# a file that usually has extension .p12 or .pfx) -CONFIG_PKCS12=y - -# Build IPv6 support for RADIUS operations -CONFIG_IPV6=y - -# IEEE Std 802.11r-2008 (Fast BSS Transition) -CONFIG_IEEE80211R=y - -# IEEE 802.11n (High Throughput) support -CONFIG_IEEE80211N=y - -# IEEE 802.11ac (Very High Throughput) support -CONFIG_IEEE80211AC=y - -# IEEE 802.11ax (HE Throughput) support -CONFIG_IEEE80211AX=y - -# IEEE 802.11be (EHT Throughput) support -CONFIG_IEEE80211BE=y - -CONFIG_TLS=openssl -CONFIG_INTERNAL_LIBTOMMATH=y -NEED_AES_DEC=y - -CONFIG_NO_RANDOM_POOL=y -CONFIG_NO_DUMP_STATE=y - -CONFIG_WPS=y -CONFIG_FULL_DYNAMIC_VLAN=y - -CONFIG_UBUS=y -CONFIG_HS20=y -CONFIG_P2P_MANAGER=y -CONFIG_INTERWORKING=y -CONFIG_WNM=y -CONFIG_PROXYARP=y -CONFIG_LIBNL32=y -CONFIG_LIBNL3_ROUTE=y - -CONFIG_AIRTIME_POLICY=y -CONFIG_FILS=y -CONFIG_CTRL_IFACE_MIB=y -CONFIG_SAE=y -CONFIG_OWE=y - -# Driver interface for MACsec (Only for wired network) -CONFIG_DRIVER_MACSEC_QCA=y - -# Enable MACsec support for hostapd -CONFIG_MACSEC=y diff --git a/feeds/ipq95xx/hostapd.old/files/hostapd-mesh.config b/feeds/ipq95xx/hostapd.old/files/hostapd-mesh.config deleted file mode 100644 index 07d129367..000000000 --- a/feeds/ipq95xx/hostapd.old/files/hostapd-mesh.config +++ /dev/null @@ -1,195 +0,0 @@ -# Example hostapd build time configuration -# -# This file lists the configuration options that are used when building the -# hostapd binary. All lines starting with # are ignored. Configuration option -# lines must be commented out complete, if they are not to be included, i.e., -# just setting VARIABLE=n is not disabling that variable. -# -# This file is included in Makefile, so variables like CFLAGS and LIBS can also -# be modified from here. In most cass, these lines should use += in order not -# to override previous values of the variables. - -# Driver interface for Host AP driver -CONFIG_DRIVER_HOSTAP=y - -# Driver interface for wired authenticator -CONFIG_DRIVER_WIRED=y - -# Driver interface for Prism54 driver -#CONFIG_DRIVER_PRISM54=y - -# Driver interface for drivers using the nl80211 kernel interface -CONFIG_DRIVER_NL80211=y -# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be -# shipped with your distribution yet. If that is the case, you need to build -# newer libnl version and point the hostapd build to use it. -#LIBNL=/usr/src/libnl -#CFLAGS += -I$(LIBNL)/include -#LIBS += -L$(LIBNL)/lib - -# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) -#CONFIG_DRIVER_BSD=y -#CFLAGS += -I/usr/local/include -#LIBS += -L/usr/local/lib - -# Driver interface for no driver (e.g., RADIUS server only) -#CONFIG_DRIVER_NONE=y - -# IEEE 802.11F/IAPP -CONFIG_IAPP=y - -# WPA2/IEEE 802.11i RSN pre-authentication -CONFIG_RSN_PREAUTH=y - -# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) -CONFIG_PEERKEY=y - -# IEEE 802.11w (management frame protection) -# This version is an experimental implementation based on IEEE 802.11w/D1.0 -# draft and is subject to change since the standard has not yet been finalized. -# Driver support is also needed for IEEE 802.11w. -CONFIG_IEEE80211W=y - -# Integrated EAP server -CONFIG_EAP=y - -# EAP-MD5 for the integrated EAP server -CONFIG_EAP_MD5=y - -# EAP-TLS for the integrated EAP server -CONFIG_EAP_TLS=y - -# EAP-MSCHAPv2 for the integrated EAP server -CONFIG_EAP_MSCHAPV2=y - -# EAP-PEAP for the integrated EAP server -CONFIG_EAP_PEAP=y - -# EAP-GTC for the integrated EAP server -CONFIG_EAP_GTC=y - -# EAP-TTLS for the integrated EAP server -CONFIG_EAP_TTLS=y - -# EAP-SIM for the integrated EAP server -#CONFIG_EAP_SIM=y - -# EAP-AKA for the integrated EAP server -#CONFIG_EAP_AKA=y - -# EAP-AKA' for the integrated EAP server -# This requires CONFIG_EAP_AKA to be enabled, too. -#CONFIG_EAP_AKA_PRIME=y - -# EAP-PAX for the integrated EAP server -#CONFIG_EAP_PAX=y - -# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) -#CONFIG_EAP_PSK=y - -# EAP-SAKE for the integrated EAP server -#CONFIG_EAP_SAKE=y - -# EAP-GPSK for the integrated EAP server -#CONFIG_EAP_GPSK=y -# Include support for optional SHA256 cipher suite in EAP-GPSK -#CONFIG_EAP_GPSK_SHA256=y - -# EAP-FAST for the integrated EAP server -# Note: Default OpenSSL package does not include support for all the -# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, -# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch) -# to add the needed functions. -#CONFIG_EAP_FAST=y - -# Wi-Fi Protected Setup (WPS) -CONFIG_WPS=y -CONFIG_WPS2=y -# Enable UPnP support for external WPS Registrars -CONFIG_WPS_UPNP=y - -# EAP-IKEv2 -#CONFIG_EAP_IKEV2=y - -# Trusted Network Connect (EAP-TNC) -#CONFIG_EAP_TNC=y - -# PKCS#12 (PFX) support (used to read private key and certificate file from -# a file that usually has extension .p12 or .pfx) -CONFIG_PKCS12=y - -# RADIUS authentication server. This provides access to the integrated EAP -# server from external hosts using RADIUS. -#CONFIG_RADIUS_SERVER=y - -# Build IPv6 support for RADIUS operations -CONFIG_IPV6=y - -# IEEE Std 802.11r-2008 (Fast BSS Transition) -CONFIG_IEEE80211R=y - -# Use the hostapd's IEEE 802.11 authentication (ACL), but without -# the IEEE 802.11 Management capability (e.g. FreeBSD/net80211) -#CONFIG_DRIVER_RADIUS_ACL=y - -# IEEE 802.11n (High Throughput) support -CONFIG_IEEE80211N=y - -# IEEE 802.11ac (Very High Throughput) support -CONFIG_IEEE80211AC=y - -# IEEE 802.11ax (HE Throughput) support -CONFIG_IEEE80211AX=y - -# IEEE 802.11be (EHT Throughput) support -CONFIG_IEEE80211BE=y - -# Multiband Operation support -# These extentions facilitate efficient use of multiple frequency bands -# available to the AP and the devices that may associate with it. -CONFIG_MBO=y - -# Remove debugging code that is printing out debug messages to stdout. -# This can be used to reduce the size of the hostapd considerably if debugging -# code is not needed. -#CONFIG_NO_STDOUT_DEBUG=y - -# Remove support for RADIUS accounting -#CONFIG_NO_ACCOUNTING=y - -# Remove support for RADIUS -#CONFIG_NO_RADIUS=y - -# Remove support for VLANs -#CONFIG_NO_VLAN=y - -CONFIG_TLS=internal -CONFIG_INTERNAL_LIBTOMMATH=y -CONFIG_INTERNAL_AES=y -NEED_AES_DEC=y - -CONFIG_NO_RANDOM_POOL=y -CONFIG_NO_DUMP_STATE=y - -CONFIG_WPS=y -CONFIG_FULL_DYNAMIC_VLAN=y - -CONFIG_UBUS=y -CONFIG_HS20=y -CONFIG_P2P_MANAGER=y -CONFIG_INTERWORKING=y -CONFIG_WNM=y -CONFIG_PROXYARP=y -CONFIG_LIBNL32=y -CONFIG_LIBNL3_ROUTE=y -CONFIG_ACS=y -CONFIG_CTRL_IFACE_MIB=y -CONFIG_RX_PROBE_REQ_EVENT=y -CONFIG_SAE=y -CONFIG_OWE=y -CONFIG_SUITEB192=y -CONFIG_SUITEB=y -NEED_DH_GROUPS_ALL=y - -CONFIG_AIRTIME_POLICY=y -CONFIG_FILS=y diff --git a/feeds/ipq95xx/hostapd.old/files/hostapd-mini.config b/feeds/ipq95xx/hostapd.old/files/hostapd-mini.config deleted file mode 100644 index 118d97cb3..000000000 --- a/feeds/ipq95xx/hostapd.old/files/hostapd-mini.config +++ /dev/null @@ -1,159 +0,0 @@ -# Example hostapd build time configuration -# -# This file lists the configuration options that are used when building the -# hostapd binary. All lines starting with # are ignored. Configuration option -# lines must be commented out complete, if they are not to be included, i.e., -# just setting VARIABLE=n is not disabling that variable. -# -# This file is included in Makefile, so variables like CFLAGS and LIBS can also -# be modified from here. In most cass, these lines should use += in order not -# to override previous values of the variables. - -# Driver interface for Host AP driver -CONFIG_DRIVER_HOSTAP=y - -# Driver interface for wired authenticator -CONFIG_DRIVER_WIRED=y - -# Driver interface for Prism54 driver -#CONFIG_DRIVER_PRISM54=y - -# Driver interface for drivers using the nl80211 kernel interface -CONFIG_DRIVER_NL80211=y -# driver_nl80211.c requires a rather new libnl (version 1.1) which may not be -# shipped with your distribution yet. If that is the case, you need to build -# newer libnl version and point the hostapd build to use it. -#LIBNL=/usr/src/libnl -#CFLAGS += -I$(LIBNL)/include -#LIBS += -L$(LIBNL)/lib - -# Driver interface for FreeBSD net80211 layer (e.g., Atheros driver) -#CONFIG_DRIVER_BSD=y -#CFLAGS += -I/usr/local/include -#LIBS += -L/usr/local/lib - -# Driver interface for no driver (e.g., RADIUS server only) -#CONFIG_DRIVER_NONE=y - -# IEEE 802.11F/IAPP -# CONFIG_IAPP=y - -# WPA2/IEEE 802.11i RSN pre-authentication -CONFIG_RSN_PREAUTH=y - -# PeerKey handshake for Station to Station Link (IEEE 802.11e DLS) -CONFIG_PEERKEY=y - -# IEEE 802.11w (management frame protection) -# This version is an experimental implementation based on IEEE 802.11w/D1.0 -# draft and is subject to change since the standard has not yet been finalized. -# Driver support is also needed for IEEE 802.11w. -#CONFIG_IEEE80211W=y - -# Integrated EAP server -#CONFIG_EAP=y - -# EAP-MD5 for the integrated EAP server -#CONFIG_EAP_MD5=y - -# EAP-TLS for the integrated EAP server -#CONFIG_EAP_TLS=y - -# EAP-MSCHAPv2 for the integrated EAP server -#CONFIG_EAP_MSCHAPV2=y - -# EAP-PEAP for the integrated EAP server -#CONFIG_EAP_PEAP=y - -# EAP-GTC for the integrated EAP server -#CONFIG_EAP_GTC=y - -# EAP-TTLS for the integrated EAP server -#CONFIG_EAP_TTLS=y - -# EAP-SIM for the integrated EAP server -#CONFIG_EAP_SIM=y - -# EAP-AKA for the integrated EAP server -#CONFIG_EAP_AKA=y - -# EAP-AKA' for the integrated EAP server -# This requires CONFIG_EAP_AKA to be enabled, too. -#CONFIG_EAP_AKA_PRIME=y - -# EAP-PAX for the integrated EAP server -#CONFIG_EAP_PAX=y - -# EAP-PSK for the integrated EAP server (this is _not_ needed for WPA-PSK) -#CONFIG_EAP_PSK=y - -# EAP-SAKE for the integrated EAP server -#CONFIG_EAP_SAKE=y - -# EAP-GPSK for the integrated EAP server -#CONFIG_EAP_GPSK=y -# Include support for optional SHA256 cipher suite in EAP-GPSK -#CONFIG_EAP_GPSK_SHA256=y - -# EAP-FAST for the integrated EAP server -# Note: Default OpenSSL package does not include support for all the -# functionality needed for EAP-FAST. If EAP-FAST is enabled with OpenSSL, -# the OpenSSL library must be patched (openssl-0.9.9-session-ticket.patch) -# to add the needed functions. -#CONFIG_EAP_FAST=y - -# Wi-Fi Protected Setup (WPS) -#CONFIG_WPS=y -# Enable UPnP support for external WPS Registrars -#CONFIG_WPS_UPNP=y - -# EAP-IKEv2 -#CONFIG_EAP_IKEV2=y - -# Trusted Network Connect (EAP-TNC) -#CONFIG_EAP_TNC=y - -# PKCS#12 (PFX) support (used to read private key and certificate file from -# a file that usually has extension .p12 or .pfx) -#CONFIG_PKCS12=y - -# RADIUS authentication server. This provides access to the integrated EAP -# server from external hosts using RADIUS. -#CONFIG_RADIUS_SERVER=y - -# Build IPv6 support for RADIUS operations -#CONFIG_IPV6=y - -# IEEE Std 802.11r-2008 (Fast BSS Transition) -#CONFIG_IEEE80211R=y - -# Use the hostapd's IEEE 802.11 authentication (ACL), but without -# the IEEE 802.11 Management capability (e.g. FreeBSD/net80211) -#CONFIG_DRIVER_RADIUS_ACL=y - -# IEEE 802.11n (High Throughput) support -CONFIG_IEEE80211N=y - -# IEEE 802.11ac (Very High Throughput) support -CONFIG_IEEE80211AC=y - -# Remove debugging code that is printing out debug messages to stdout. -# This can be used to reduce the size of the hostapd considerably if debugging -# code is not needed. -#CONFIG_NO_STDOUT_DEBUG=y - -# Remove support for RADIUS accounting -CONFIG_NO_ACCOUNTING=y - -# Remove support for RADIUS -CONFIG_NO_RADIUS=y - -# Remove support for VLANs -#CONFIG_NO_VLAN=y - -CONFIG_TLS=internal - -CONFIG_NO_RANDOM_POOL=y -CONFIG_NO_DUMP_STATE=y - -CONFIG_UBUS=y diff --git a/feeds/ipq95xx/hostapd.old/files/hostapd.sh b/feeds/ipq95xx/hostapd.old/files/hostapd.sh deleted file mode 100644 index 7aec7ad8a..000000000 --- a/feeds/ipq95xx/hostapd.old/files/hostapd.sh +++ /dev/null @@ -1,394 +0,0 @@ -hostapd_set_bss_options() { - local var="$1" - local vif="$2" - local enc wep_rekey wpa_group_rekey wpa_pair_rekey wpa_master_rekey wps_possible wpa_key_mgmt - - config_get enc "$vif" encryption "none" - config_get wep_rekey "$vif" wep_rekey # 300 - config_get wpa_group_rekey "$vif" wpa_group_rekey # 300 - config_get wpa_pair_rekey "$vif" wpa_pair_rekey # 300 - config_get wpa_master_rekey "$vif" wpa_master_rekey # 640 - config_get_bool ap_isolate "$vif" isolate 0 - config_get_bool disassoc_low_ack "$vif" disassoc_low_ack 1 - config_get max_num_sta "$vif" max_num_sta 0 - config_get max_inactivity "$vif" max_inactivity 0 - config_get_bool preamble "$vif" short_preamble 1 - - config_get device "$vif" device - config_get hwmode "$device" hwmode - config_get phy "$device" phy - - append "$var" "ctrl_interface=/var/run/hostapd-$phy" "$N" - - if [ "$ap_isolate" -gt 0 ]; then - append "$var" "ap_isolate=$ap_isolate" "$N" - fi - if [ "$max_num_sta" -gt 0 ]; then - append "$var" "max_num_sta=$max_num_sta" "$N" - fi - if [ "$max_inactivity" -gt 0 ]; then - append "$var" "ap_max_inactivity=$max_inactivity" "$N" - fi - append "$var" "disassoc_low_ack=$disassoc_low_ack" "$N" - if [ "$preamble" -gt 0 ]; then - append "$var" "preamble=$preamble" "$N" - fi - - # Examples: - # psk-mixed/tkip => WPA1+2 PSK, TKIP - # wpa-psk2/tkip+aes => WPA2 PSK, CCMP+TKIP - # wpa2/tkip+aes => WPA2 RADIUS, CCMP+TKIP - # ... - - # TODO: move this parsing function somewhere generic, so that - # later it can be reused by drivers that don't use hostapd - - # crypto defaults: WPA2 vs WPA1 - case "$enc" in - wpa2*|*psk2*) - wpa=2 - crypto="CCMP" - ;; - *mixed*) - wpa=3 - crypto="CCMP TKIP" - ;; - *) - wpa=1 - crypto="TKIP" - ;; - esac - - # explicit override for crypto setting - case "$enc" in - *tkip+aes|*tkip+ccmp|*aes+tkip|*ccmp+tkip) crypto="CCMP TKIP";; - *aes|*ccmp) crypto="CCMP";; - *tkip) crypto="TKIP";; - esac - - # enforce CCMP for 11ng and 11na - case "$hwmode:$crypto" in - *ng:TKIP|*na:TKIP) crypto="CCMP TKIP";; - esac - - # use crypto/auth settings for building the hostapd config - case "$enc" in - none) - wps_possible=1 - wpa=0 - crypto= - # Here we make the assumption that if we're in open mode - # with WPS enabled, we got to be in unconfigured state. - wps_not_configured=1 - ;; - *psk*) - config_get psk "$vif" key - if [ ${#psk} -eq 64 ]; then - append "$var" "wpa_psk=$psk" "$N" - else - append "$var" "wpa_passphrase=$psk" "$N" - fi - wps_possible=1 - [ -n "$wpa_group_rekey" ] && append "$var" "wpa_group_rekey=$wpa_group_rekey" "$N" - [ -n "$wpa_pair_rekey" ] && append "$var" "wpa_ptk_rekey=$wpa_pair_rekey" "$N" - [ -n "$wpa_master_rekey" ] && append "$var" "wpa_gmk_rekey=$wpa_master_rekey" "$N" - append wpa_key_mgmt "WPA-PSK" - ;; - *wpa*|*8021x*) - # required fields? formats? - # hostapd is particular, maybe a default configuration for failures - config_get auth_server "$vif" auth_server - [ -z "$auth_server" ] && config_get auth_server "$vif" server - append "$var" "auth_server_addr=$auth_server" "$N" - config_get auth_port "$vif" auth_port - [ -z "$auth_port" ] && config_get auth_port "$vif" port - auth_port=${auth_port:-1812} - append "$var" "auth_server_port=$auth_port" "$N" - config_get auth_secret "$vif" auth_secret - [ -z "$auth_secret" ] && config_get auth_secret "$vif" key - append "$var" "auth_server_shared_secret=$auth_secret" "$N" - # You don't really want to enable this unless you are doing - # some corner case testing or are using OpenWrt as a work around - # for some systematic issues. - config_get_bool auth_cache "$vif" auth_cache 0 - config_get rsn_preauth "$vif" rsn_preauth - [ "$auth_cache" -gt 0 ] || [[ "$rsn_preauth" = 1 ]] || append "$var" "disable_pmksa_caching=1" "$N" - [ "$auth_cache" -gt 0 ] || [[ "$rsn_preauth" = 1 ]] || append "$var" "okc=0" "$N" - config_get acct_server "$vif" acct_server - [ -n "$acct_server" ] && append "$var" "acct_server_addr=$acct_server" "$N" - config_get acct_port "$vif" acct_port - [ -n "$acct_port" ] && acct_port=${acct_port:-1813} - [ -n "$acct_port" ] && append "$var" "acct_server_port=$acct_port" "$N" - config_get acct_secret "$vif" acct_secret - [ -n "$acct_secret" ] && append "$var" "acct_server_shared_secret=$acct_secret" "$N" - config_get eap_reauth_period "$vif" eap_reauth_period - [ -n "$eap_reauth_period" ] && append "$var" "eap_reauth_period=$eap_reauth_period" "$N" - config_get dae_client "$vif" dae_client - config_get dae_secret "$vif" dae_secret - [ -n "$dae_client" -a -n "$dae_secret" ] && { - config_get dae_port "$vif" dae_port - append "$var" "radius_das_port=${dae_port:-3799}" "$N" - append "$var" "radius_das_client=$dae_client $dae_secret" "$N" - } - config_get ownip "$vif" ownip - append "$var" "own_ip_addr=$ownip" "$N" - append "$var" "eapol_key_index_workaround=1" "$N" - append "$var" "ieee8021x=1" "$N" - append wpa_key_mgmt "WPA-EAP" - [ -n "$wpa_group_rekey" ] && append "$var" "wpa_group_rekey=$wpa_group_rekey" "$N" - [ -n "$wpa_pair_rekey" ] && append "$var" "wpa_ptk_rekey=$wpa_pair_rekey" "$N" - [ -n "$wpa_master_rekey" ] && append "$var" "wpa_gmk_rekey=$wpa_master_rekey" "$N" - ;; - *wep*) - config_get key "$vif" key - key="${key:-1}" - case "$key" in - [1234]) - for idx in 1 2 3 4; do - local zidx - zidx=$(($idx - 1)) - config_get ckey "$vif" "key${idx}" - [ -n "$ckey" ] && \ - append "$var" "wep_key${zidx}=$(prepare_key_wep "$ckey")" "$N" - done - append "$var" "wep_default_key=$((key - 1))" "$N" - ;; - *) - append "$var" "wep_key0=$(prepare_key_wep "$key")" "$N" - append "$var" "wep_default_key=0" "$N" - [ -n "$wep_rekey" ] && append "$var" "wep_rekey_period=$wep_rekey" "$N" - ;; - esac - case "$enc" in - *shared*) - auth_algs=2 - ;; - *mixed*) - auth_algs=3 - ;; - esac - wpa=0 - crypto= - ;; - *) - wpa=0 - crypto= - ;; - esac - append "$var" "auth_algs=${auth_algs:-1}" "$N" - append "$var" "wpa=$wpa" "$N" - [ -n "$crypto" ] && append "$var" "wpa_pairwise=$crypto" "$N" - [ -n "$wpa_group_rekey" ] && append "$var" "wpa_group_rekey=$wpa_group_rekey" "$N" - - config_get ssid "$vif" ssid - config_get bridge "$vif" bridge - config_get ieee80211d "$vif" ieee80211d - config_get iapp_interface "$vif" iapp_interface - - config_get_bool wps_pbc "$vif" wps_pushbutton 0 - config_get_bool wps_label "$vif" wps_label 0 - - config_get config_methods "$vif" wps_config - [ "$wps_pbc" -gt 0 ] && append config_methods push_button - - [ -n "$wps_possible" -a -n "$config_methods" ] && { - config_get device_type "$vif" wps_device_type "6-0050F204-1" - config_get device_name "$vif" wps_device_name "OpenWrt AP" - config_get manufacturer "$vif" wps_manufacturer "openwrt.org" - config_get wps_pin "$vif" wps_pin - - config_get_bool ext_registrar "$vif" ext_registrar 0 - [ "$ext_registrar" -gt 0 -a -n "$bridge" ] && append "$var" "upnp_iface=$bridge" "$N" - - append "$var" "eap_server=1" "$N" - [ -n "$wps_pin" ] && append "$var" "ap_pin=$wps_pin" "$N" - append "$var" "wps_state=${wps_not_configured:-2}" "$N" - append "$var" "ap_setup_locked=0" "$N" - append "$var" "device_type=$device_type" "$N" - append "$var" "device_name=$device_name" "$N" - append "$var" "manufacturer=$manufacturer" "$N" - append "$var" "config_methods=$config_methods" "$N" - } - - append "$var" "ssid=$ssid" "$N" - [ -n "$bridge" ] && append "$var" "bridge=$bridge" "$N" - [ -n "$ieee80211d" ] && append "$var" "ieee80211d=$ieee80211d" "$N" - [ -n "$iapp_interface" ] && append "$var" iapp_interface=$(uci_get_state network "$iapp_interface" ifname "$iapp_interface") "$N" - - if [ "$wpa" -ge "1" ] - then - config_get nasid "$vif" nasid - [ -n "$nasid" ] && append "$var" "nas_identifier=$nasid" "$N" - - config_get_bool ieee80211r "$vif" ieee80211r 0 - if [ "$ieee80211r" -gt 0 ] - then - config_get mobility_domain "$vif" mobility_domain "4f57" - config_get r0_key_lifetime "$vif" r0_key_lifetime "10000" - config_get r1_key_holder "$vif" r1_key_holder "00004f577274" - config_get reassociation_deadline "$vif" reassociation_deadline "1000" - config_get r0kh "$vif" r0kh - config_get r1kh "$vif" r1kh - config_get_bool pmk_r1_push "$vif" pmk_r1_push 0 - - append "$var" "mobility_domain=$mobility_domain" "$N" - append "$var" "r0_key_lifetime=$r0_key_lifetime" "$N" - append "$var" "r1_key_holder=$r1_key_holder" "$N" - append "$var" "reassociation_deadline=$reassociation_deadline" "$N" - append "$var" "pmk_r1_push=$pmk_r1_push" "$N" - - for kh in $r0kh; do - "$var" "r0kh=${kh//,/ }" "$N" - done - for kh in $r1kh; do - "$var" "r1kh=${kh//,/ }" "$N" - done - - [ "$wpa_key_mgmt" != "${wpa_key_mgmt/EAP/}" ] && append wpa_key_mgmt "FT-EAP" - [ "$wpa_key_mgmt" != "${wpa_key_mgmt/PSK/}" ] && append wpa_key_mgmt "FT-PSK" - fi - - [ -n "wpa_key_mgmt" ] && append "$var" "wpa_key_mgmt=$wpa_key_mgmt" - fi - - if [ "$wpa" -ge "2" ] - then - # RSN -> allow preauthentication. You have two - # options, rsn_preauth for production or rsn_preauth_testing - # for validation / testing. - if [ -n "$bridge" -a "$rsn_preauth" = 1 ] - then - append "$var" "rsn_preauth=1" "$N" - append "$var" "rsn_preauth_interfaces=$bridge" "$N" - append "$var" "okc=1" "$N" - else - # RSN preauthentication testings hould disable - # Opportunistic Key Caching (okc) as otherwise the PMKSA - # entry for a test could come from the Opportunistic Key Caching - config_get rsn_preauth_testing "$vif" rsn_preauth_testing - if [ -n "$bridge" -a "$rsn_preauth_testing" = 1 ] - then - append "$var" "rsn_preauth=1" "$N" - append "$var" "rsn_preauth_interfaces=$bridge" "$N" - append "$var" "okc=0" "$N" - fi - fi - - # RSN -> allow management frame protection - config_get ieee80211w "$vif" ieee80211w - case "$ieee80211w" in - [012]) - append "$var" "ieee80211w=$ieee80211w" "$N" - [ "$ieee80211w" -gt "0" ] && { - config_get ieee80211w_max_timeout "$vif" ieee80211w_max_timeout - config_get ieee80211w_retry_timeout "$vif" ieee80211w_retry_timeout - [ -n "$ieee80211w_max_timeout" ] && \ - append "$var" "assoc_sa_query_max_timeout=$ieee80211w_max_timeout" "$N" - [ -n "$ieee80211w_retry_timeout" ] && \ - append "$var" "assoc_sa_query_retry_timeout=$ieee80211w_retry_timeout" "$N" - } - ;; - esac - fi - - config_get macfile "$vif" macfile - config_get maclist "$vif" maclist - if [ -z "$macfile" ] - then - # if no macfile has been specified, fallback to the default name - # and truncate file to avoid aggregating entries over time - macfile="/var/run/hostapd-$ifname.maclist" - echo "" > "$macfile" - else - if [ -n "$maclist" ] - then - # to avoid to overwrite the original file, make a copy - # before appending the entries specified by the maclist - # option - cp $macfile $macfile.maclist - macfile=$macfile.maclist - fi - fi - - if [ -n "$maclist" ] - then - for mac in $maclist; do - echo "$mac" >> $macfile - done - fi - - config_get macfilter "$vif" macfilter - case "$macfilter" in - allow) - append "$var" "macaddr_acl=1" "$N" - append "$var" "accept_mac_file=$macfile" "$N" - ;; - deny) - append "$var" "macaddr_acl=0" "$N" - append "$var" "deny_mac_file=$macfile" "$N" - ;; - esac -} - -hostapd_set_log_options() { - local var="$1" - local cfg="$2" - local log_level log_80211 log_8021x log_radius log_wpa log_driver log_iapp log_mlme - - config_get log_level "$cfg" log_level 2 - - config_get_bool log_80211 "$cfg" log_80211 1 - config_get_bool log_8021x "$cfg" log_8021x 1 - config_get_bool log_radius "$cfg" log_radius 1 - config_get_bool log_wpa "$cfg" log_wpa 1 - config_get_bool log_driver "$cfg" log_driver 1 - config_get_bool log_iapp "$cfg" log_iapp 1 - config_get_bool log_mlme "$cfg" log_mlme 1 - - local log_mask=$(( \ - ($log_80211 << 0) | \ - ($log_8021x << 1) | \ - ($log_radius << 2) | \ - ($log_wpa << 3) | \ - ($log_driver << 4) | \ - ($log_iapp << 5) | \ - ($log_mlme << 6) \ - )) - - append "$var" "logger_syslog=$log_mask" "$N" - append "$var" "logger_syslog_level=$log_level" "$N" - append "$var" "logger_stdout=$log_mask" "$N" - append "$var" "logger_stdout_level=$log_level" "$N" -} - -hostapd_setup_vif() { - local vif="$1" - local driver="$2" - local ifname device channel hwmode - - hostapd_cfg= - - config_get ifname "$vif" ifname - config_get device "$vif" device - config_get channel "$device" channel - config_get hwmode "$device" hwmode - - hostapd_set_log_options hostapd_cfg "$device" - hostapd_set_bss_options hostapd_cfg "$vif" - - case "$hwmode" in - *bg|*gdt|*gst|*fh) hwmode=g;; - *adt|*ast) hwmode=a;; - esac - [ "$channel" = auto ] && channel= - [ -n "$channel" -a -z "$hwmode" ] && wifi_fixup_hwmode "$device" - cat > /var/run/hostapd-$ifname.conf < -#include -#include - -extern int hostapd_main(int argc, char **argv); -extern int wpa_supplicant_main(int argc, char **argv); - -int main(int argc, char **argv) -{ - bool restart = false; - const char *prog = argv[0]; - -restart: - if (strstr(argv[0], "hostapd")) - return hostapd_main(argc, argv); - else if (strstr(argv[0], "wpa_supplicant")) - return wpa_supplicant_main(argc, argv); - - if (!restart && argc > 1) { - argv++; - argc--; - restart = true; - goto restart; - } - - fprintf(stderr, "Invalid command.\nUsage: %s wpa_supplicant|hostapd []\n", prog); - return 255; -} diff --git a/feeds/ipq95xx/hostapd.old/files/netifd.sh b/feeds/ipq95xx/hostapd.old/files/netifd.sh deleted file mode 100644 index b45363134..000000000 --- a/feeds/ipq95xx/hostapd.old/files/netifd.sh +++ /dev/null @@ -1,903 +0,0 @@ -wpa_supplicant_add_rate() { - local var="$1" - local val="$(($2 / 1000))" - local sub="$((($2 / 100) % 10))" - append $var "$val" "," - [ $sub -gt 0 ] && append $var "." -} - -hostapd_add_rate() { - local var="$1" - local val="$(($2 / 100))" - append $var "$val" " " -} - -hostapd_append_wep_key() { - local var="$1" - - wep_keyidx=0 - set_default key 1 - case "$key" in - [1234]) - for idx in 1 2 3 4; do - local zidx - zidx=$(($idx - 1)) - json_get_var ckey "key${idx}" - [ -n "$ckey" ] && \ - append $var "wep_key${zidx}=$(prepare_key_wep "$ckey")" "$N$T" - done - wep_keyidx=$((key - 1)) - ;; - *) - append $var "wep_key0=$(prepare_key_wep "$key")" "$N$T" - ;; - esac -} - -hostapd_add_log_config() { - config_add_boolean \ - log_80211 \ - log_8021x \ - log_radius \ - log_wpa \ - log_driver \ - log_iapp \ - log_mlme - - config_add_int log_level -} - -hostapd_common_add_device_config() { - config_add_array basic_rate - config_add_array supported_rates - - config_add_string country - config_add_boolean country_ie doth - config_add_string require_mode - - config_add_int pwr_constraint - config_add_boolean spectrum_mgmt - - hostapd_add_log_config -} - -hostapd_prepare_device_config() { - local config="$1" - local driver="$2" - - local base="${config%%.conf}" - local base_cfg= - - json_get_vars country country_ie beacon_int doth require_mode \ - pwr_constraint spectrum_mgmt - - airtime_mode= - json_get_vars airtime_mode airtime_update_interval - - hostapd_set_log_options base_cfg - - set_default country_ie 1 - set_default doth 1 - - set_default airtime_update_interval 200 - [ -n "$country" ] && { - append base_cfg "country_code=$country" "$N" - - [ "$country_ie" -gt 0 ] && append base_cfg "ieee80211d=1" "$N" - [ "$hwmode" = "a" -a "$doth" -gt 0 ] && append base_cfg "ieee80211h=1" "$N" - [ "$country_ie" -gt 0 -a -n "$pwr_constraint" ] && append base_cfg "local_pwr_constraint=$pwr_constraint" "$N" - [ "$country_ie" -gt 0 -a -n "$pwr_constraint" -a -n "$spectrum_mgmt" ] && append base_cfg "spectrum_mgmt_required=$spectrum_mgmt" "$N" - } - [ -n "$hwmode" ] && append base_cfg "hw_mode=$hwmode" "$N" - - local brlist= br - json_get_values basic_rate_list basic_rate - for br in $basic_rate_list; do - hostapd_add_rate brlist "$br" - done - case "$require_mode" in - g) brlist="60 120 240" ;; - n) append base_cfg "require_ht=1" "$N";; - ac) append base_cfg "require_vht=1" "$N";; - esac - - local rlist= r - json_get_values rate_list supported_rates - for r in $rate_list; do - hostapd_add_rate rlist "$r" - done - - [ -n "$rlist" ] && append base_cfg "supported_rates=$rlist" "$N" - [ -n "$brlist" ] && append base_cfg "basic_rates=$brlist" "$N" - [ -n "$beacon_int" ] && append base_cfg "beacon_int=$beacon_int" "$N" - - case "$airtime_mode" in - static) append base_cfg "airtime_mode=1" "$N" ;; - dynamic) append base_cfg "airtime_mode=2" "$N" ;; - limited) append base_cfg "airtime_mode=3" "$N" ;; - esac - - if [ -n "$airtime_mode" ]; then - append base_cfg "airtime_update_interval=$airtime_update_interval" "$N" - fi - - cat > "$config" <