1#
2# Copyright (C) 2021 The Android Open-Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16
17ifdef RELEASE_GOOGLE_CAIMAN_RADIO_DIR
18RELEASE_GOOGLE_PRODUCT_RADIO_DIR := $(RELEASE_GOOGLE_CAIMAN_RADIO_DIR)
19endif
20ifdef RELEASE_GOOGLE_CAIMAN_RADIOCFG_DIR
21RELEASE_GOOGLE_PRODUCT_RADIOCFG_DIR := $(RELEASE_GOOGLE_CAIMAN_RADIOCFG_DIR)
22endif
23RELEASE_GOOGLE_BOOTLOADER_CAIMAN_DIR ?= 24D1# Keep this for pdk TODO: b/327119000
24RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/$(RELEASE_GOOGLE_BOOTLOADER_CAIMAN_DIR)
25$(call soong_config_set,caimito_bootloader,prebuilt_dir,$(RELEASE_GOOGLE_BOOTLOADER_CAIMAN_DIR))
26
27ifdef RELEASE_KERNEL_CAIMAN_DIR
28TARGET_KERNEL_DIR ?= $(RELEASE_KERNEL_CAIMAN_DIR)
29TARGET_BOARD_KERNEL_HEADERS ?= $(RELEASE_KERNEL_CAIMAN_DIR)/kernel-headers
30else
31TARGET_KERNEL_DIR ?= device/google/caimito-kernels/6.1/24D1
32TARGET_BOARD_KERNEL_HEADERS ?= device/google/caimito-kernels/6.1/24D1/kernel-headers
33endif
34
35LOCAL_PATH := device/google/caimito
36
37ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
38    USE_UWBFIELDTESTQM := true
39endif
40ifeq ($(filter factory_caiman, $(TARGET_PRODUCT)),)
41    include device/google/caimito/caiman/uwb/uwb_calibration.mk
42endif
43
44$(call inherit-product-if-exists, vendor/google_devices/caimito/prebuilts/device-vendor-caiman.mk)
45$(call inherit-product-if-exists, vendor/google_devices/zumapro/prebuilts/device-vendor.mk)
46$(call inherit-product-if-exists, vendor/google_devices/zumapro/proprietary/device-vendor.mk)
47$(call inherit-product-if-exists, vendor/google_devices/caiman/proprietary/device-vendor.mk)
48$(call inherit-product-if-exists, vendor/google_devices/caimito/proprietary/caiman/device-vendor-caiman.mk)
49$(call inherit-product-if-exists, vendor/qorvo/uwb/qm35-hal/Device.mk)
50
51ifeq ($(filter factory_caiman, $(TARGET_PRODUCT)),)
52    $(call inherit-product-if-exists, vendor/google_devices/caimito/proprietary/WallpapersCaiman.mk)
53endif
54
55# display
56DEVICE_PACKAGE_OVERLAYS += device/google/caimito/caiman/overlay
57
58ifeq ($(RELEASE_PIXEL_AIDL_AUDIO_HAL),true)
59USE_AUDIO_HAL_AIDL := true
60endif
61
62include device/google/caimito/audio/caiman/audio-tables.mk
63include device/google/zumapro/device-shipping-common.mk
64include hardware/google/pixel/vibrator/cs40l26/device.mk
65include device/google/gs-common/bcmbt/bluetooth.mk
66include device/google/gs-common/touch/gti/predump_gti.mk
67include device/google/caimito/fingerprint/ultrasonic_udfps.mk
68include device/google/gs-common/modem/radio_ext/radio_ext.mk
69include device/google/gs-common/pixelsupport/pixelsupport.mk
70
71# Increment the SVN for any official public releases
72ifdef RELEASE_SVN_CAIMAN
73TARGET_SVN ?= $(RELEASE_SVN_CAIMAN)
74else
75# Set this for older releases that don't use build flag
76TARGET_SVN ?= 04
77endif
78
79PRODUCT_VENDOR_PROPERTIES += \
80    ro.vendor.build.svn=$(TARGET_SVN)
81
82# go/lyric-soong-variables
83$(call soong_config_set,lyric,camera_hardware,caiman)
84$(call soong_config_set,lyric,tuning_product,caiman)
85$(call soong_config_set,google3a_config,target_device,caiman)
86
87PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.ignore_hdr_camera_layers=true
88
89# Init files
90PRODUCT_COPY_FILES += \
91	device/google/caimito/conf/init.caiman.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/hw/init.caiman.rc
92
93# Recovery files
94PRODUCT_COPY_FILES += \
95        device/google/caimito/conf/init.recovery.device.rc:$(TARGET_COPY_OUT_RECOVERY)/root/init.recovery.caiman.rc
96
97# NFC
98PRODUCT_COPY_FILES += \
99	frameworks/native/data/etc/android.hardware.nfc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.xml \
100	frameworks/native/data/etc/android.hardware.nfc.hce.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hce.xml \
101	frameworks/native/data/etc/android.hardware.nfc.hcef.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.hcef.xml \
102	frameworks/native/data/etc/com.nxp.mifare.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.nxp.mifare.xml \
103	frameworks/native/data/etc/android.hardware.nfc.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.nfc.ese.xml \
104	device/google/caimito/nfc/libnfc-hal-st.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libnfc-hal-st.conf \
105	device/google/caimito/nfc/libnfc-nci.conf:$(TARGET_COPY_OUT_PRODUCT)/etc/libnfc-nci.conf
106
107PRODUCT_PACKAGES += \
108	$(RELEASE_PACKAGE_NFC_STACK) \
109	Tag \
110	android.hardware.nfc-service.st \
111	NfcOverlayCaiman
112
113# SecureElement
114PRODUCT_PACKAGES += \
115	android.hardware.secure_element-service.thales
116
117PRODUCT_COPY_FILES += \
118	frameworks/native/data/etc/android.hardware.se.omapi.ese.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.ese.xml \
119	frameworks/native/data/etc/android.hardware.se.omapi.uicc.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.se.omapi.uicc.xml \
120	device/google/caimito/nfc/libse-gto-hal.conf:$(TARGET_COPY_OUT_VENDOR)/etc/libse-gto-hal.conf
121
122# Bluetooth HAL
123PRODUCT_COPY_FILES += \
124	device/google/caimito/bluetooth/bt_vendor_overlay_caiman.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf
125PRODUCT_PROPERTY_OVERRIDES += \
126    ro.bluetooth.a2dp_offload.supported=true \
127    persist.bluetooth.a2dp_offload.disabled=false \
128    persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac-opus
129
130# Coex Config
131PRODUCT_SOONG_NAMESPACES += device/google/caimito/radio/caiman/coex
132PRODUCT_PACKAGES += \
133    camera_front_mipi_coex_table \
134    camera_rear_main_dbr_coex_table \
135    camera_rear_main_mipi_coex_table \
136    camera_rear_tele_mipi_coex_table \
137    camera_rear_wide_mipi_coex_table \
138    display_primary_mipi_coex_table
139
140# Bluetooth Tx power caps
141PRODUCT_COPY_FILES += \
142        $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_caiman.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits.csv \
143        $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_caiman_JP.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_JP.csv \
144        $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_caiman_CA.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_CA.csv \
145        $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_caiman_EU.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_EU.csv \
146        $(LOCAL_PATH)/bluetooth/bluetooth_power_limits_caiman_US.csv:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_power_limits_US.csv
147
148# DCK properties based on target
149PRODUCT_PROPERTY_OVERRIDES += \
150    ro.gms.dck.eligible_wcc=3 \
151    ro.gms.dck.se_capability=1
152
153# POF
154PRODUCT_PRODUCT_PROPERTIES += \
155    ro.bluetooth.finder.supported=true
156
157# Spatial Audio
158PRODUCT_PACKAGES += \
159	libspatialaudio
160
161# declare use of spatial audio
162PRODUCT_PROPERTY_OVERRIDES += \
163       ro.audio.spatializer_enabled=true
164
165# declare use of stereo spatialization
166PRODUCT_PROPERTY_OVERRIDES += \
167    ro.audio.stereo_spatialization_enabled=true
168
169ifneq ($(USE_AUDIO_HAL_AIDL),true)
170# HIDL Sound Dose
171PRODUCT_PACKAGES += \
172	android.hardware.audio.sounddose-vendor-impl \
173	audio_sounddose_aoc
174endif
175
176# HdMic Audio
177PRODUCT_SOONG_NAMESPACES += device/google/caimito/audio/caiman/prebuilt/libspeechenhancer
178PRODUCT_PROPERTY_OVERRIDES += \
179    persist.vendor.app.audio.gsenet.version=1
180PRODUCT_PACKAGES += \
181    libspeechenhancer
182
183# Audio CCA property
184PRODUCT_PROPERTY_OVERRIDES += \
185	persist.vendor.audio.cca.enabled=false
186
187# Bluetooth hci_inject test tool
188PRODUCT_PACKAGES_DEBUG += \
189    hci_inject
190
191# Bluetooth OPUS codec
192PRODUCT_PRODUCT_PROPERTIES += \
193    persist.bluetooth.opus.enabled=true
194
195# Bluetooth SAR test tool
196PRODUCT_PACKAGES_DEBUG += \
197    sar_test
198
199# Bluetooth EWP test tool
200PRODUCT_PACKAGES_DEBUG += \
201    ewp_tool
202
203# Bluetooth AAC VBR
204PRODUCT_PRODUCT_PROPERTIES += \
205    persist.bluetooth.a2dp_aac.vbr_supported=true
206
207# Bluetooth Super Wide Band
208PRODUCT_PRODUCT_PROPERTIES += \
209    bluetooth.hfp.swb.supported=true
210
211# Override BQR mask to enable LE Audio Choppy report, remove BTRT logging
212ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
213PRODUCT_PRODUCT_PROPERTIES += \
214    persist.bluetooth.bqr.event_mask=295006 \
215    persist.bluetooth.bqr.vnd_quality_mask=29 \
216    persist.bluetooth.bqr.vnd_trace_mask=0 \
217    persist.bluetooth.vendor.btsnoop=true
218else
219PRODUCT_PRODUCT_PROPERTIES += \
220    persist.bluetooth.bqr.event_mask=295006 \
221    persist.bluetooth.bqr.vnd_quality_mask=16 \
222    persist.bluetooth.bqr.vnd_trace_mask=0 \
223    persist.bluetooth.vendor.btsnoop=false
224endif
225
226# default BDADDR for EVB only
227PRODUCT_PROPERTY_OVERRIDES += \
228	ro.vendor.bluetooth.evb_bdaddr="22:22:22:33:44:55"
229
230# Spatial Audio
231PRODUCT_PACKAGES += \
232	libspatialaudio \
233	librondo
234
235# Keymaster HAL
236#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service
237
238# Gatekeeper HAL
239#LOCAL_GATEKEEPER_PRODUCT_PACKAGE ?= android.hardware.gatekeeper@1.0-service.software
240
241
242# Gatekeeper
243# PRODUCT_PACKAGES += \
244# 	android.hardware.gatekeeper@1.0-service.software
245
246# Keymint replaces Keymaster
247# PRODUCT_PACKAGES += \
248# 	android.hardware.security.keymint-service
249
250# Keymaster
251#PRODUCT_PACKAGES += \
252#	android.hardware.keymaster@4.0-impl \
253#	android.hardware.keymaster@4.0-service
254
255#PRODUCT_PACKAGES += android.hardware.keymaster@4.0-service.remote
256#PRODUCT_PACKAGES += android.hardware.keymaster@4.1-service.remote
257#LOCAL_KEYMASTER_PRODUCT_PACKAGE := android.hardware.keymaster@4.1-service
258#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service
259
260# PRODUCT_PROPERTY_OVERRIDES += \
261# 	ro.hardware.keystore_desede=true \
262# 	ro.hardware.keystore=software \
263# 	ro.hardware.gatekeeper=software
264
265# PowerStats HAL
266PRODUCT_SOONG_NAMESPACES += \
267    device/google/caimito/powerstats/caiman
268
269# WiFi Overlay
270PRODUCT_PACKAGES += \
271    WifiOverlay2024
272
273# Settings Overlay
274PRODUCT_PACKAGES += \
275    SettingsCaimanOverlay
276
277# Trusty liboemcrypto.so
278PRODUCT_SOONG_NAMESPACES += vendor/google_devices/caimito/prebuilts
279
280# UWB
281PRODUCT_SOONG_NAMESPACES += \
282    device/google/caimito/caiman/uwb
283
284# Location
285PRODUCT_SOONG_NAMESPACES += device/google/caimito/location/caiman
286$(call soong_config_set, gpssdk, buildtype, $(TARGET_BUILD_VARIANT))
287PRODUCT_PACKAGES += gps.cfg
288# For GPS property
289PRODUCT_VENDOR_PROPERTIES += ro.vendor.gps.pps.enabled=true
290
291# Display LBE
292PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.display.lbe.supported=1
293
294# Display ACL
295PRODUCT_DEFAULT_PROPERTY_OVERRIDES += vendor.display.0.brightness.acl.default=1
296
297#Thermal VT estimator
298PRODUCT_PACKAGES += \
299    libthermal_tflite_wrapper
300
301PRODUCT_VENDOR_PROPERTIES += \
302	persist.device_config.configuration.disable_rescue_party=true
303
304PRODUCT_VENDOR_PROPERTIES += \
305    persist.vendor.udfps.als_feed_forward_supported=true \
306    persist.vendor.udfps.lhbm_controlled_in_hal_supported=true
307
308# OIS with system imu
309PRODUCT_VENDOR_PROPERTIES += \
310    persist.vendor.camera.ois_with_system_imu=true
311
312# Allow external binning setting
313PRODUCT_VENDOR_PROPERTIES += \
314    persist.vendor.camera.allow_external_binning_setting=true
315
316# Camera Vendor property
317PRODUCT_VENDOR_PROPERTIES += \
318    persist.vendor.camera.front_720P_always_binning=true
319
320# Enable camera exif model/make reporting
321PRODUCT_VENDOR_PROPERTIES += \
322    persist.vendor.camera.exif_reveal_make_model=true
323
324# Media Performance Class 14
325PRODUCT_PRODUCT_PROPERTIES += ro.odm.build.media_performance_class=34
326
327# Display RRS default Config
328PRODUCT_DEFAULT_PROPERTY_OVERRIDES += persist.vendor.display.primary.boot_config=960x2142@120:120
329PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.vendor.primarydisplay.preferred_mode=960x2142@120:120
330
331ifeq ($(filter factory_caiman, $(TARGET_PRODUCT)),)
332    PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.vendor.primarydisplay.xrr.version=2.1
333    PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.vendor.primarydisplay.blocking_zone.min_refresh_rate_by_nits=:1
334    PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.vendor.primarydisplay.vrr.expected_present.headsup_ns=30000000
335    PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.vendor.primarydisplay.vrr.expected_present.timeout_ns=500000000
336endif
337
338# Display fixed TE2
339PRODUCT_VENDOR_PROPERTIES += vendor.primarydisplay.fixed_te2.default_rate_hz=120
340
341# Vibrator HAL
342$(call soong_config_set,haptics,kernel_ver,v$(subst .,_,$(TARGET_LINUX_KERNEL_VERSION)))
343ACTUATOR_MODEL := luxshare_ict_081545
344ADAPTIVE_HAPTICS_FEATURE := adaptive_haptics_v1
345PRODUCT_VENDOR_PROPERTIES += \
346    ro.vendor.vibrator.hal.chirp.enabled=1 \
347    ro.vendor.vibrator.hal.device.mass=0.222 \
348    ro.vendor.vibrator.hal.loc.coeff=2.8 \
349    persist.vendor.vibrator.hal.context.enable=false \
350    persist.vendor.vibrator.hal.context.scale=60 \
351    persist.vendor.vibrator.hal.context.fade=true \
352    persist.vendor.vibrator.hal.context.cooldowntime=1600 \
353    persist.vendor.vibrator.hal.context.settlingtime=5000 \
354    ro.vendor.vibrator.hal.pm.activetimeout=5
355
356# PKVM Memory Reclaim
357PRODUCT_VENDOR_PROPERTIES += \
358    hypervisor.memory_reclaim.supported=1
359
360# Bluetooth LE Audio
361# Unicast
362PRODUCT_PRODUCT_PROPERTIES += \
363	bluetooth.profile.bap.unicast.client.enabled=true \
364	bluetooth.profile.csip.set_coordinator.enabled=true \
365	bluetooth.profile.hap.client.enabled=true \
366	bluetooth.profile.mcp.server.enabled=true \
367	bluetooth.profile.ccp.server.enabled=true \
368	bluetooth.profile.vcp.controller.enabled=true
369
370# Set support one-handed mode
371PRODUCT_PRODUCT_PROPERTIES += \
372    ro.support_one_handed_mode=true
373
374ifeq ($(RELEASE_PIXEL_BROADCAST_ENABLED), true)
375PRODUCT_PRODUCT_PROPERTIES += \
376	bluetooth.profile.bap.broadcast.assist.enabled=true \
377	bluetooth.profile.bap.broadcast.source.enabled=true
378endif
379
380# LE Audio switcher in developer options
381PRODUCT_PRODUCT_PROPERTIES += \
382	ro.bluetooth.leaudio_switcher.supported=true \
383
384# Enable hardware offloading
385PRODUCT_PRODUCT_PROPERTIES += \
386	ro.bluetooth.leaudio_offload.supported=true \
387	persist.bluetooth.leaudio_offload.disabled=false
388
389# Bluetooth LE Audio CIS handover to SCO
390# Set the property only for the controller couldn't support CIS/SCO simultaneously. More detailed in b/242908683.
391PRODUCT_PRODUCT_PROPERTIES += \
392	persist.bluetooth.leaudio.notify.idle.during.call=true
393
394# LE Audio Offload Capabilities setting
395PRODUCT_COPY_FILES += \
396    device/google/caimito/bluetooth/le_audio_codec_capabilities.xml:$(TARGET_COPY_OUT_VENDOR)/etc/le_audio_codec_capabilities.xml
397
398# Disable LE Audio dual mic SWB call support
399# This may depend on the BT controller capability or the launch strategy
400# For example, P22 BT chip is not able to support 32k dual mic
401# P23a disabled the 32k dual mic as it is not in the phase 2 launch plan
402PRODUCT_PRODUCT_PROPERTIES += \
403    bluetooth.leaudio.dual_bidirection_swb.supported=true
404
405# LE Audio Unicast Allowlist
406PRODUCT_PRODUCT_PROPERTIES += \
407   persist.bluetooth.leaudio.allow_list=SM-R510
408
409# Support LE & Classic concurrent encryption (b/330704060)
410PRODUCT_PRODUCT_PROPERTIES += \
411    bluetooth.ble.allow_enc_with_bredr=true
412
413# Keyboard height ratio and bottom padding in dp for portrait mode
414PRODUCT_PRODUCT_PROPERTIES += \
415          ro.com.google.ime.kb_pad_port_b=8 \
416          ro.com.google.ime.height_ratio=1.12
417
418# Exynos RIL and telephony
419# Support RIL Domain-selection
420SUPPORT_RIL_DOMAIN_SELECTION := true
421
422# ETM
423ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
424$(call inherit-product-if-exists, device/google/common/etm/device-userdebug-modules.mk)
425endif
426
427# Enable Bluetooth AutoOn feature
428PRODUCT_PRODUCT_PROPERTIES += \
429    bluetooth.server.automatic_turn_on=true
430
431# Window Extensions
432$(call inherit-product, $(SRC_TARGET_DIR)/product/window_extensions.mk)
433
434# Connectivity Resources Overlay
435PRODUCT_PACKAGES += \
436    ConnectivityResourcesOverlayCaimitoOverride
437
438#Component Override for Pixel Troubleshooting App
439PRODUCT_COPY_FILES += \
440    device/google/caimito/caiman/caiman-component-overrides.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sysconfig/caiman-component-overrides.xml
441
442PRODUCT_PRODUCT_PROPERTIES += \
443    persist.bluetooth.thread_dispatcher.enabled=true
444