From a5f757134ce86bc73a23d8b30bd82d7da3b555d1 Mon Sep 17 00:00:00 2001 From: Rex Lin Date: Wed, 29 Jun 2022 09:45:44 +0800 Subject: [PATCH] uwb: enable production stack on T6P Bug: 236791087 Test: ranging works Signed-off-by: Rex Lin Change-Id: Id912e57c1282bbfc75560da4f87d62ddbbe1e9a0 --- device-tangorpro.mk | 4 ++ uwb/UWB-calibration.conf | 135 +++++++++++++++++++++++++++++++++++++ uwb/init.uwb.calib.xtal.sh | 25 +++++++ uwb/uwb_calibration.mk | 28 ++++++++ 4 files changed, 192 insertions(+) create mode 100644 uwb/UWB-calibration.conf create mode 100644 uwb/init.uwb.calib.xtal.sh create mode 100644 uwb/uwb_calibration.mk diff --git a/device-tangorpro.mk b/device-tangorpro.mk index b3ebfe5..3fdbb6b 100644 --- a/device-tangorpro.mk +++ b/device-tangorpro.mk @@ -35,6 +35,10 @@ include device/google/tangorpro/audio/tangorpro/audio-tables.mk $(call soong_config_set,lyric,tuning_product,cloudripper) $(call soong_config_set,google3a_config,target_device,cloudripper) +ifeq ($(filter factory_tangorpro, $(TARGET_PRODUCT)),) +include device/google/tangorpro/uwb/uwb_calibration.mk +endif + # Touch files PRODUCT_COPY_FILES += \ device/google/tangorpro/NVTCapacitiveTouchScreen.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/NVTCapacitiveTouchScreen.idc \ diff --git a/uwb/UWB-calibration.conf b/uwb/UWB-calibration.conf new file mode 100644 index 0000000..155fac7 --- /dev/null +++ b/uwb/UWB-calibration.conf @@ -0,0 +1,135 @@ +[CCC]version=2 +[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0 +[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0 +[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0 +[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0 +[CCC]ant0.ch5.prf64.pdoa_offset=0 +[CCC]ant0.ch9.prf64.pdoa_offset=0 +[CCC]ant0.ch5.prf64.pll_locking_code=0 +[CCC]ant0.ch9.prf64.pll_locking_code=0 +[CCC]id=0 +[CCC]wifi_coex_time_gap=10 +[CCC]ap_coop_mode=1 +[CCC]antenna_selection=4 +[CCC]wifi_coex_min_spacing=0x08 +ant0.ch5.prf16.ant_delay=16450 +ant0.ch5.prf16.tx_power=0 +ant0.ch5.prf16.pg_count=0 +ant0.ch5.prf16.pg_delay=0 +ant0.ch5.prf64.ant_delay=16450 +ant0.ch5.prf64.tx_power=0 +ant0.ch5.prf64.pg_count=0 +ant0.ch5.prf64.pg_delay=0 +ant0.ch9.prf16.ant_delay=16450 +ant0.ch9.prf16.tx_power=0 +ant0.ch9.prf16.pg_count=0 +ant0.ch9.prf16.pg_delay=0 +ant0.ch9.prf64.ant_delay=16450 +ant0.ch9.prf64.tx_power=0 +ant0.ch9.prf64.pg_count=0 +ant0.ch9.prf64.pg_delay=0 +ant0.port=0 +ant0.selector_gpio=7 +ant0.selector_gpio_value=0 +ant1.ch5.prf16.ant_delay=16450 +ant1.ch5.prf16.tx_power=0 +ant1.ch5.prf16.pg_count=0 +ant1.ch5.prf16.pg_delay=0 +ant1.ch5.prf64.ant_delay=16450 +ant1.ch5.prf64.tx_power=0 +ant1.ch5.prf64.pg_count=0 +ant1.ch5.prf64.pg_delay=0 +ant1.ch9.prf16.ant_delay=16450 +ant1.ch9.prf16.tx_power=0 +ant1.ch9.prf16.pg_count=0 +ant1.ch9.prf16.pg_delay=0 +ant1.ch9.prf64.ant_delay=16450 +ant1.ch9.prf64.tx_power=0 +ant1.ch9.prf64.pg_count=0 +ant1.ch9.prf64.pg_delay=0 +ant1.port=0 +ant1.selector_gpio=7 +ant1.selector_gpio_value=1 +ant2.ch5.prf16.ant_delay=16450 +ant2.ch5.prf16.tx_power=0 +ant2.ch5.prf16.pg_count=0 +ant2.ch5.prf16.pg_delay=0 +ant2.ch5.prf64.ant_delay=16450 +ant2.ch5.prf64.tx_power=0 +ant2.ch5.prf64.pg_count=0 +ant2.ch5.prf64.pg_delay=0 +ant2.ch9.prf16.ant_delay=16450 +ant2.ch9.prf16.tx_power=0 +ant2.ch9.prf16.pg_count=0 +ant2.ch9.prf16.pg_delay=0 +ant2.ch9.prf64.ant_delay=16450 +ant2.ch9.prf64.tx_power=0 +ant2.ch9.prf64.pg_count=0 +ant2.ch9.prf64.pg_delay=0 +ant2.port=1 +ant2.selector_gpio=6 +ant2.selector_gpio_value=0 +ant3.ch5.prf16.ant_delay=16450 +ant3.ch5.prf16.tx_power=0 +ant3.ch5.prf16.pg_count=0 +ant3.ch5.prf16.pg_delay=0 +ant3.ch5.prf64.ant_delay=16450 +ant3.ch5.prf64.tx_power=0 +ant3.ch5.prf64.pg_count=0 +ant3.ch5.prf64.pg_delay=0 +ant3.ch9.prf16.ant_delay=16450 +ant3.ch9.prf16.tx_power=0 +ant3.ch9.prf16.pg_count=0 +ant3.ch9.prf16.pg_delay=0 +ant3.ch9.prf64.ant_delay=16450 +ant3.ch9.prf64.tx_power=0 +ant3.ch9.prf64.pg_count=0 +ant3.ch9.prf64.pg_delay=0 +ant3.port=1 +ant3.selector_gpio=6 +ant3.selector_gpio_value=1 +ant0.ant1.ch5.pdoa_offset=0 +ant0.ant1.ch9.pdoa_offset=0 +ant0.ant2.ch5.pdoa_offset=0 +ant0.ant2.ch9.pdoa_offset=0 +ant1.ant2.ch5.pdoa_offset=2173 +ant1.ant2.ch9.pdoa_offset=3555 +ant0.ant3.ch5.pdoa_offset=0 +ant0.ant3.ch9.pdoa_offset=0 +ant1.ant3.ch5.pdoa_offset=3845 +ant1.ant3.ch9.pdoa_offset=647 +ant2.ant3.ch5.pdoa_offset=0 +ant2.ant3.ch9.pdoa_offset=0 +ch5.pll_locking_code=0 +ch9.pll_locking_code=0 +ant1.ant2.ch5.pdoa_lut=3d:ea:7b:0a:66:ea:c3:09:a4:ea:0a:09:cd:ea:66:08:0a:eb:ae:07:33:eb:f6:06:48:eb:52:06:71:eb:9a:05:c3:eb:e1:04:e1:ec:29:04:c3:ef:85:03:a4:f4:cd:02:14:f8:14:02:b8:fa:5c:01:8f:fc:b8:00:e1:fe:00:00:48:01:48:ff:85:03:a4:fe:ae:05:ec:fd:00:08:33:fd:d7:09:7b:fc:85:0b:d7:fb:0a:0d:1f:fb:66:0e:66:fa:33:0f:ae:f9:00:10:0a:f9:a4:10:52:f8:1f:11:9a:f7:5c:11:f6:f6:9a:11:3d:f6:ae:11:85:f5 +ant1.ant2.ch9.pdoa_lut=c3:ed:7b:0a:29:ee:c3:09:3d:ee:0a:09:cd:ee:66:08:c3:ef:ae:07:f6:f0:f6:06:3d:f2:52:06:52:f2:9a:05:cd:f2:e1:04:5c:f3:29:04:c3:f3:85:03:b8:f4:cd:02:71:f7:14:02:52:fa:5c:01:85:fd:b8:00:00:00:00:00:0a:01:48:ff:5c:01:a4:fe:14:02:ec:fd:5c:03:33:fd:48:05:7b:fc:b8:06:d7:fb:14:08:1f:fb:33:09:66:fa:ec:09:ae:f9:3d:0a:0a:f9:0a:0b:52:f8:1f:0b:9a:f7:48:0b:f6:f6:85:0b:3d:f6:9a:0b:85:f5 +ant1.ant3.ch5.pdoa_lut=66:ec:7b:0a:e1:ec:c3:09:14:ee:0a:09:d7:ef:66:08:8f:f2:ae:07:00:f6:f6:06:cd:f6:52:06:33:f7:9a:05:d7:f7:e1:04:48:f9:29:04:33:fd:85:03:d7:fd:cd:02:3d:fe:14:02:ec:ff:5c:01:14:00:b8:00:3d:00:00:00:cd:02:48:ff:29:04:a4:fe:a4:04:ec:fd:85:05:33:fd:e1:06:7b:fc:b8:08:d7:fb:14:0a:1f:fb:e1:0a:66:fa:1f:0b:0a:f9:1f:0b:ae:f9:5c:0b:52:f8:c3:0b:9a:f7:52:0c:f6:f6:0a:0d:3d:f6:00:0e:85:f5 +ant1.ant3.ch9.pdoa_lut=0a:ef:7b:0a:c3:ef:c3:09:00:f0:0a:09:14:f0:66:08:7b:f0:ae:07:48:f1:f6:06:00:f2:52:06:c3:f3:9a:05:00:f6:e1:04:d7:f7:29:04:1f:f9:85:03:ae:f9:cd:02:e1:fa:14:02:e1:fc:5c:01:b8:fe:b8:00:c3:ff:00:00:00:02:48:ff:5c:05:a4:fe:52:08:ec:fd:14:0a:33:fd:e1:0a:7b:fc:14:0c:d7:fb:14:0e:1f:fb:1f:0f:66:fa:00:10:ae:f9:b8:10:0a:f9:29:12:52:f8:00:14:9a:f7:7b:16:f6:f6:d7:17:3d:f6:29:18:85:f5 +xtal_trim=23 +temperature_reference=85 +smart_tx_power=1 +auto_sleep_margin=20000 +restricted_channels=0 +[HAL]aoa_capability=1 +[HAL]ant_sets.ch5.range.rx_ant_set_nonranging = 6 +[HAL]ant_sets.ch5.range.rx_ant_set_ranging = 4 +[HAL]ant_sets.ch5.range.tx_ant_set_nonranging = 0 +[HAL]ant_sets.ch5.range.tx_ant_set_ranging = 0 +[HAL]ant_sets.ch5.azimuth.rx_ant_set_nonranging = 6 +[HAL]ant_sets.ch5.azimuth.rx_ant_set_ranging = 4 +[HAL]ant_sets.ch5.azimuth.tx_ant_set_nonranging = 0 +[HAL]ant_sets.ch5.azimuth.tx_ant_set_ranging = 0 +[HAL]ant_sets.ch9.range.rx_ant_set_nonranging = 6 +[HAL]ant_sets.ch9.range.rx_ant_set_ranging = 4 +[HAL]ant_sets.ch9.range.tx_ant_set_nonranging = 0 +[HAL]ant_sets.ch9.range.tx_ant_set_ranging = 0 +[HAL]ant_sets.ch9.azimuth.rx_ant_set_nonranging = 6 +[HAL]ant_sets.ch9.azimuth.rx_ant_set_ranging = 4 +[HAL]ant_sets.ch9.azimuth.tx_ant_set_nonranging = 0 +[HAL]ant_sets.ch9.azimuth.tx_ant_set_ranging = 0 +[HAL]minimum_system_offset_uwbtime0=300 +coex_gpio=4 +coex_delay_us=1000 +coex_margin_us=500 +coex_interval_us=2000 diff --git a/uwb/init.uwb.calib.xtal.sh b/uwb/init.uwb.calib.xtal.sh new file mode 100644 index 0000000..efdfd6b --- /dev/null +++ b/uwb/init.uwb.calib.xtal.sh @@ -0,0 +1,25 @@ +#!/vendor/bin/sh +# only use xtal_trim from factory calibration +if [ -z "$2" ] +then + echo "usage is $0 input-calibration output_calibration" + exit 0 +fi +OUTPUT_CALIB="$2" +if [ ! -f "$OUTPUT_CALIB" ]; then + touch $OUTPUT_CALIB + chmod 0644 $OUTPUT_CALIB + file="$1" + while IFS=, read -r f1 f2 + do + case $f1 in + "UWB_cal_tx_xtal_reg_final_value") + if [ $((0x$f2)) -gt 63 ]; then + f2=63 + fi + echo 'xtal_trim=0x'$f2 >> $OUTPUT_CALIB + ;; + esac + done <"$file" + exit 0 +fi diff --git a/uwb/uwb_calibration.mk b/uwb/uwb_calibration.mk new file mode 100644 index 0000000..c7075bf --- /dev/null +++ b/uwb/uwb_calibration.mk @@ -0,0 +1,28 @@ +# +# Copyright (C) 2021 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. + +# UWB - ultra wide band +$(call inherit-product-if-exists, vendor/qorvo/uwb/uwb.mk) + +LOCAL_UWB_CAL_DIR=device/google/tangorpro/uwb + +PRODUCT_COPY_FILES += \ + $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/uwb/UWB-calibration.conf \ + $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/uwb/UWB-calibration-unknown.conf \ + $(LOCAL_UWB_CAL_DIR)/UWB-calibration.conf:$(TARGET_COPY_OUT_VENDOR)/etc/uwb/UWB-calibration-default.conf \ + $(LOCAL_UWB_CAL_DIR)/init.uwb.calib.xtal.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.uwb.calib.sh \ + +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.uwb.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.uwb.xml