Compare commits

...

81 commits

Author SHA1 Message Date
Anand S
f80c8c1dde
sm6375-common: ueventd: Set permissions for focaltech fps
Change-Id: I2d93047e9d566f73cf4cb42254adba256cde7bbc
2025-05-15 20:43:13 +05:30
Sevenrock
6c053535b2
sm6375-common: rootdir: create /data/vendor/focaltech
Change-Id: I0f935b0be92a44cbd9a90702a0531504aa621ecc
2025-05-15 20:37:46 +05:30
Anand S
dd9784f955
Revert "[TMP] Revert "sm7325-common: Enable LZ4 compression for ramdisks""
This reverts commit ba9668d835.

Change-Id: Ife78bfc42077f7502bb2030d27cab5d110b8de30
2025-05-08 22:42:41 +05:30
Roopesh Nataraja
96620c897e
sm6375-common: vintf: Remove schedulerservice from device compatibility matrix
android.frameworks.schedulerservice is deprecated and limited to
max-level=5 in framework manifest. Hence, remove it from device
compatibility matrix to allow super image generation.

Change-Id: Icbeeeb07c9ba8c094a1c531e0a67bd1dbac8b926
2025-05-02 15:43:49 +05:30
Tyler Wear
8df2921cda
sm6375-common: tetheroffload: Version 1.1
Update tetheroffload to version 1.1.

Change-Id: I004e44e416a88a1b39a4c80366df9008722f096b
2025-05-02 15:43:42 +05:30
Yumi Yukimura
e5559edd52
sm6375-common: manifest: Bump target-level to 6
Change-Id: I8d419d248f29b7d316a87d55e19ae7ff141e19a5
2025-05-02 15:43:42 +05:30
Michael Bestas
3992e14abe
sm6375-common: Get rid of TARGET_RECOVERY_DEVICE_DIRS
Change-Id: Id32dc00987178a6e9b0fd7fac0f4598f1b3be7e3
2025-04-27 16:34:18 +05:30
Anand S
5b907a19e0
sm6375-common: Address rhodep vibrator denials
Change-Id: Ia9d5e0ec5a808f6f82ca36e8c8273b94c6961f09
2025-04-25 13:45:12 +05:30
Dhina17
dddd2bc8c5
sm6375-common: sepolicy: Add rules for focaltech fp
Change-Id: I9bf360696c6362b42e532228bf3ec9c1e684f163
2025-04-24 19:10:52 +05:30
Dobsgw
484f46a605
sm6375-common: rootdir: Fix PowerHAL nodes
Fix for:
libperfmgr: Failed to write to node: /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us with value: 2000, fd: -1
libperfmgr: Failed to write to node: /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us with value: 2000, fd: -1
libperfmgr: Failed to write to node: /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us with value: 2000, fd: -1
libperfmgr: Failed to write to node: /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us with value: 2000, fd: -1

Change-Id: I1e232a488ed8e7d87607f543425b6138cd6df53a
2025-04-22 12:01:31 +05:30
Anand S
3e8ae7bbde
sm6375-common: Label mmi-discrete-charger wakeup node
Change-Id: I11842e43fc6390d6722ef619bf029b1e9c9c7257
2025-04-16 20:47:11 +05:30
Michael Bestas
c4adc79acf
sm6375-common: Unset BUILD_BROKEN_VENDOR_PROPERTY_NAMESPACE
We don't need this

Change-Id: I3ae4826687c8f11730636f177501ea31e419d84e
2025-04-16 13:45:27 +05:30
Michael Bestas
aad3703afe
sm6375-common: Remove unused RFS MDM MPSS symlink
Change-Id: Ib61df731835f70e566308c272d56430fb00c1531
2025-04-16 13:45:27 +05:30
basamaryan
a5f7bafa78
sm6375-common: Unset VNDK flag
Change-Id: I2ef63b9e95b35e23b6026b3f28bbb70590b427c1
2025-04-16 13:45:19 +05:30
LuK1337
38b601ffbe
sm6375-common: Add libwfdservice_shim for WFD
e69a5be2449122f90220151f9d01ace15221facf | AOSP in system/hardware/interfaces
broke the ABI ;'(

Change-Id: I3badfc56581a6bf3de5d7e996fa51f59eb164aae
2025-04-15 22:35:56 +05:30
Cosmin Tanislav
b53ed0077c
sm6375-common: use common RFS FSG symlink
Change-Id: Ibd1eb2b3f6e7fd6982eb1bc1c995ba9ba75e3ec3
2025-04-15 22:35:22 +05:30
Anand S
f894c36737
sm6375-common: Label rhodep/rhodei fingerprint service
Change-Id: I41d3a08857023fe7b62e778cbe8a6da3b6889783
2025-04-15 22:34:07 +05:30
Giovanni Ricca
b12cf76a55
sm6375-common: Temporarily downgrade kernel clang version
19.0.1 doesn't boot for us. Let's keep using the old one for now.

Change-Id: I6693b36674539c20870be49d564b652a93478de1
2025-04-11 14:39:17 +05:30
Anand S
949bc437d2
sm6375-common: sepolicy: Drop duplicate genfs entries
Change-Id: I2c60c04641350e5d53987399f35234a1f977e368
2025-04-04 18:35:25 +05:30
tejas101k
118e788bb4
sm6375-common: Drop android.hardware.tetheroffload.config from manifest
Causes hotspot to crash

Change-Id: I4714f2bdf88833979bffd6090e3fbd631e9a22d6
2025-04-04 18:33:57 +05:30
Michael Bestas
de472a95f9
sm6375-common: Add hardware/motorola to soong namespaces
Change-Id: I1606d2dc9cef82a4ce9d8764c1f52b59d183e9b2
2025-04-04 18:30:30 +05:30
Demon000
c0cc3b0db4
sm6375-common: switch to common QCOM AIDL bootctrl HAL
Change-Id: I04ab771d3b1c38b58913607fbff1bb3b55e1fe25
2025-04-04 18:26:53 +05:30
Vivekachooz
bf06a689e7
sm6375-common: powerhint: Retune powerhint
Change-Id: I9faaa5e69d3c0091a69c8fdc3d80c614e98c7e34
2025-02-25 14:42:27 +05:30
DennySPB
e854c59f76
sm6375-common:powerhint: Decrease launch boost to 3sec
* 5s is just too much long plus battery drainer

Change-Id: I7e037c45cd2296a8bbd67d6bd63c212c0ef2a805
2025-02-25 14:33:40 +05:30
daniml3
208b65c9dd
sm6375-common: powerhint: Set 1 second timeout for interaction boosts
* Having no timeout makes the boosts to be permanently triggered until
  some other hint overrides it, for example, making the minimum
  frequency to be stuck at 1248mhz

Signed-off-by: daniml3 <daniel@danielml.dev>
Change-Id: I5edb50f937d0ccede5bc3463572010b20d75fe78
2025-02-25 14:31:40 +05:30
Anand S
600d9f7c4f
sm6375-common: Add missing lib
* F linker  : CANNOT LINK EXECUTABLE "/system/system_ext/bin/dpmd": library "libdiag_system.so" not found: needed by main executable.

Change-Id: If4aaa2650ba2b98a663e73dc88fe5561de3c16e1
2025-02-03 10:18:20 +05:30
Anand S
52b5ccd4f3
sm6375-common: Add patches for qcrilNr.db and sql
* Fix it during extraction.
* Since we moved to py extract utils, adding patches does the job.

Change-Id: I7f56ecaac51abb6525c6022d92eac1c285ab0688
2025-02-01 00:38:54 +05:30
Michael Bestas
8e4608fb0a
sm6375-common: Remove unused Android.mk
Change-Id: I98105c127066f7de7012a1895d19c96356105921
2025-01-20 22:11:42 +05:30
Michael Bestas
da6c6ed6df
sm6375-common: overlay: Convert Android.mk to bp
Change-Id: I4f55c426943dd6b64524ad8a7207dd2b865bf972
2025-01-20 22:11:42 +05:30
Michael Bestas
9469797e13
sm6375-common: Migrate mount point creation out of Android.mk
Change-Id: Id5986b8a740e45f864eecdd2bd82d9455f128d6b
2025-01-20 22:11:41 +05:30
Bruno Martins
7ab7fcb724
sm6375-common: Unset BUILD_BROKEN_INCORRECT_PARTITION_IMAGES
Qualcomm targets can now build hermetic partitions.

Change-Id: I241105e01d85fea983b34846ca675666ac07541b
2025-01-20 22:11:41 +05:30
Bruno Martins
f5c6781fbc
sm6375-common: Convert WiFi firmware symlink to install_symlink target
The last bit that was preventing building hermetic images.

Change-Id: I75bb7de4593a7992f6015317cf97e088beeba0cb
2025-01-20 22:11:41 +05:30
dianlujitao
f72567d2c6
sm6375-common: declare expat as symlink during extraction
Change-Id: I98f6793151a8c4a7ed216a7775c6899e17bca89e
2025-01-20 22:11:40 +05:30
Bruno Martins
0d91049072
sm6375-common: Mark CNE symlink target as required package
Change-Id: I0bfe65ba61b6aa9916fe6459be2a84d772939a2f
2025-01-20 22:11:40 +05:30
Bruno Martins
2437053b0c
sm6375-common: Declare EGL libs as symlinks during extraction
Change-Id: I4b2f3e79b5e518889d9771bf8990e27babca8b61
2025-01-20 22:11:39 +05:30
Bruno Martins
fbc5d3df98
sm6375-common: Declare IMS libs as symlinks during extraction
Change-Id: Ia1b8097d28dd4888232fe383b830515b1b9bafaa
2025-01-20 22:11:39 +05:30
Michael Bestas
d3d8da216e
sm6375-common: Create rfs fsg symlink
Change-Id: Id337670d40aeb598e4b2507bd94d4885344c675c
2025-01-20 22:11:38 +05:30
Bruno Martins
52912b9925
sm6375-common: Move to new RFS install_symlink targets
Change-Id: I9560fd0da00958d9349a0881b5a5f64a2c02e495
2025-01-20 22:11:38 +05:30
Aaron Kling
eb87fd229e
sm6375-common: Re-enable broken dup rules check
All failures of this have been resolved

Change-Id: I56a923ac90b98e63c093c8cb65cb1059dde57c49
2025-01-20 22:11:37 +05:30
Anand S
6b98e8ab7c
!fixup: sm6375-common: Fix a few more ELF checks
Change-Id: I68e8f23bda9794408f5653e66d4f37f45f2c0f22
2025-01-20 22:10:30 +05:30
Anand S
6676ba9e20
sm6375-common: Drop duplicate rootdir scripts
* Already being included in vendor.

Change-Id: Ic9f9ebad2ed83685722554d8334da3902007c43b
2025-01-20 13:48:25 +05:30
Edwin Moquete
2efc5625de
sm6375-common: Enable ELF checks for libril-qcril-hook-oem.so
* And moto deps.

Change-Id: I5079c44b4ea3cd5f94ade580272704e4f37c2385
2025-01-20 03:47:08 +05:30
Nick Reuter
967a55f175
sm6375-common: Address missing libbinder symbols in libwfdnative
_ZN7android6binder12atrace_beginEmPKc
_ZN7android6binder10atrace_endEm

Change-Id: I942d51721461dbbf9c8d0f2f32128529bb7480c3
2025-01-20 03:47:07 +05:30
Nick Reuter
ddb23ebb41
sm6375-common: Bump libwfdservice to android.media.audio.common.types-V4
Change-Id: I81060d8c73430a9598c676e18dc04e31a2f31c0c
2025-01-20 03:47:07 +05:30
Michael Bestas
4f6162e8ed
sm6375-common: Patch libwfdservice to resolve duplicate dependencies
Fixes:
error: module "libwfdservice" variant
"android_arm_armv8-a_cortex-a76_static": depends on multiple
versions of the same aidl_interface:
android.media.audio.common.types-V2-cpp-source,
android.media.audio.common.types-V3-cpp-source

Change-Id: I8086a80fcc238d6b03d16640ee2c4e134129bbab
2025-01-20 03:47:06 +05:30
Marc Bourgoin
493a343577
sm6375-common: Nuke some unused 32bit blobs
Change-Id: I55e74a8d4b9c753849dc6faab24e84d8190e0823
2025-01-20 03:46:56 +05:30
Michael Bestas
d17fd6452b
sm6375-common: Disable ELF checks on device specific libs
Change-Id: Iff53502e94cee5a065b75300992a632aca84e0c3
2025-01-20 03:31:29 +05:30
Marc Bourgoin
f444e38f54
sm6375-common: Fix a few more ELF checks
Change-Id: I6cf0937ccba61156d404637c780cc9ded4e301f0
2025-01-20 03:26:23 +05:30
LuK1337
4f1dfdbbe0
sm6375-common: Add extra blobs to make checkelf happy
Change-Id: I34945e373b62714538813cc0fd12ee8ad4f04e1f
2025-01-19 20:12:50 +05:30
Anand S
e006c6600d
sm6375-common: Explicitly override persist.vendor.radio.poweron_opt
Change-Id: I30f05ce600a2396579396a71023472efab988abf
2025-01-19 19:53:54 +05:30
Ahmed ElArabawy
46dc4b19fc
sm6375-common: Wifi: Replace config_wifi_dual_band_support
As part of the 6GHz band support, there is now more than 2 bands and
hence config_wifi_dual_band_support is misleading.
This commit replaces this config with config_wifi5ghzSupport which is
more reflecting to the device support check.

Bug: 145936758
Bug: 139354972
Test: Builds and Wifi runs successfully.
Change-Id: I6a1a18965b8020049f9b395ae97b6d84e4f5ae94
2025-01-19 19:48:04 +05:30
Nolen Johnson
94d2bec581
sm6375-common: Nuke update-sha1sums.py
* We have py extract to do this now.

Change-Id: I031938ddb78e8f343864da521dc577cfcb67ee45
2025-01-18 01:41:57 +05:30
LuK1337
43b0d1baea
sm6375-common: Use common lib_fixups
Change-Id: I862e547f3375184729eb1a909bb7d6f676d45dfe
2025-01-18 01:10:26 +05:30
Anand S
73b61767a5
sm6375-common: Remove duplicate blobs
Change-Id: I2dd1c83d83cfffe6ff8f0bd5e2f7eba117b9f663
2025-01-18 01:09:42 +05:30
Michael Bestas
2583909891
sm6375-common: Switch to python extract-utils
Change-Id: Ida4b83459d9739ac880b26a91df974e1db8423e9
2025-01-18 00:55:48 +05:30
LuK1337
8dba08430d
sm6375-common: Turn 64-bit rfsa copy into symlink
Change-Id: I2d2be3e37d2618523937178480c4f3d433d1dee7
2025-01-18 00:46:26 +05:30
Michael Bestas
f1bc5e8335
sm6375-common: extract-files improvements
Change-Id: I517698ca3b5a93e10a5b167417631c7f8d0ab9e2
2025-01-18 00:43:23 +05:30
Michael Bestas
3e5115e374
sm6375-common: Sync extract scripts with templates
Change-Id: I98a36854c5a0c0390592911bb2558b34eff77efc
2025-01-18 00:33:27 +05:30
Demon000
78a3586e4e
sm6375-common: do not manually build dependencies
Change-Id: I4046d8eeabfc70842898b7034f75cdd6bcfc441b
2025-01-18 00:32:57 +05:30
Michael Bestas
f48f093f6a
sm6375-common: Libraries are now automatically added to PRODUCT_PACKAGES
Change-Id: Ie92fe02b7e6279195bf28944942c815db773b798
2025-01-18 00:31:29 +05:30
Michael Bestas
3bd00e49f0
sm6375-common: Disable ELF checks for certain libraries
Change-Id: I61dbc3559b43becc22f69ae2c1c3e8edf95e2483
2025-01-18 00:27:31 +05:30
Cosmin Tanislav
629de4a8a4
sm6375-common: skip dependencies which aren't defined in .bp
Change-Id: I01a653661856495788c05b720c0577dac44998a4
2025-01-18 00:24:34 +05:30
Cosmin Tanislav
79e052ca90
sm6375-common: fix vendor.qti.imsrtpservice@3.0 ELF checks
Change-Id: Ia1995d0a3360317843685082e3226ab30f124d09
2025-01-18 00:23:05 +05:30
Michael Bestas
fd4205dfc2
sm6375-common: fix vendor.qti.hardware.fm@1.0 ELF checks
Change-Id: I43f0824f88c24dd9d039f9075090c17f4266ab2d
2025-01-18 00:15:45 +05:30
Cosmin Tanislav
8994ad487a
sm6375-common: fix com.qualcomm.qti.dpm.api@1.0 ELF checks
Change-Id: I759752ccc133d7047d415eb83c5d3c55820437a4
2025-01-18 00:11:05 +05:30
Aaron Kling
8d167757f0
sm6375-common: Remove elf files in copy files check
New extract files uses packages instead of copy files

Change-Id: I337c07d13bd350958d4808e1693cc6e03753a96c
2025-01-18 00:00:51 +05:30
Aaron Kling
b29c3f156d
sm6375-common: Add vendor soong imports to extract
Change-Id: Ib19e69dc35af6b04519eeb695228af65f3d01d2a
2025-01-17 23:57:27 +05:30
Aaron Kling
2710a972f0
sm7325-common: Enable elf checks
Change-Id: Ia6c9a381abb3384c77532d75e02fd84c841a4d1e
2025-01-17 23:32:31 +05:30
Anand S
c1ab7949ac
sm6375-common: Update from MMI-U1UGS34.23-82-2-6
* From fogos_g-user 14 U1UGS34.23-82-2-6 e21904 release-keys.

Change-Id: If8b8175ac813f905585ddc956bf0519a988ab890
2025-01-17 14:52:40 +05:30
Moeta Yuko
0b4dabfaba
sm6375-coommon: remove OMX
* OMX HW video codecs are no longer used after enabling Codec2
 * OMX HW audio codecs won't work without QCOM A/V enhancements, which
   we don't have on Lineage.

Change-Id: I65852151c8fb6387add5fc4402ba3f13c97b5f64
2025-01-17 14:28:15 +05:30
Anand S
f58c3b584a
sm6375-common: Drop DT2W from common tree
* It wasn't working anyways, and we're using custom sensors HAL to handle DT2W.

Change-Id: Ic23bea4ebef2766bc5161c178fa1869e43e8b8b4
2025-01-15 15:35:39 +05:30
Marc Bourgoin
1c4218f9e2
sm6375-common: Rework ims patches
Change-Id: Ib8589f65c8cbcd362a74141555546dc9c5caac2c
2024-12-17 13:09:41 +05:30
dianlujitao
a10ea3beb1
sm6375-common: Nuke ATFWD
It's normally not used at all.

Change-Id: Idb824b3b8c783b6ac962e604df05f9154beb4ed2
2024-12-17 13:05:00 +05:30
Anand S
8451ea6b97
sm6375-common: Fix VINTF Compatibility check
* We're already inheriting these from QTI FCM. So it throws error while running VINTF check since these are only defined in manifest and not in device FCM.

Change-Id: If3c68b027fe7337ed2bc936f0035477ccca4d9b6
2024-11-12 12:08:53 +05:30
Nolen Johnson
f125b49b3b
sm6375-common: Ensure we build the vendor version of libcrypto_shim
Reference: Ia42de59ff157cddc930a111f8ce5e36e645055ed
Change-Id: I9c9340b37a1ad0d6c22d3947541fe1196a5efeec
2024-11-11 12:51:15 +05:30
Michael Bestas
e1c4d04fe0
sm6375-common: Sync extract scripts with 22 templates
Change-Id: I7963ae050cfb193c5d0c2636da9c1e8f82bcdbdb
2024-11-11 12:50:46 +05:30
LuK1337
22c8464422
sm6375-common: Shim WFD with libgui_shim/libinput_shim
Change-Id: I42bf06bc6b19942303031ef0147dafa6df127fe5
2024-11-11 12:47:03 +05:30
Michael Bestas
c1d90ad058
sm6375-common: Shim widevine with libcrypto_shim
The following change
e202e51cb0
removed symbols that our libs require.

Change-Id: I1325c34ecec3d339dd68c665010ecb36fa2e6a29
2024-11-11 12:35:47 +05:30
Michael Bestas
add45126b8
sm6375-common: Switch to AIDL USB HAL
Change-Id: I70f6a4e57eef577d86987bfae44f381a4f107624
2024-11-11 12:35:20 +05:30
Michael Bestas
f194c4c58c
sm6375-common: Switch to AIDL thermal HAL
Change-Id: I6ae621194044ab66fad69b9ef997b3b347bf6120
2024-11-11 12:35:03 +05:30
Anand S
0607293922
Revert "sm6375-common: Switch to Thermal 2.0 mock"
This reverts commit e03aec7112.

Reason for revert: We're switching to QTI AIDL thermal.

Change-Id: I27b78d5dcc32e0dce31a39d2a71ba4b3b9892a50
2024-11-11 12:33:52 +05:30
72 changed files with 542 additions and 5212 deletions

View file

@ -1,6 +1,25 @@
//
// Copyright (C) 2022-2024 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
soong_namespace { soong_namespace {
imports: [ imports: [
"hardware/google/interfaces", "hardware/google/interfaces",
"hardware/google/pixel" "hardware/google/pixel"
], ],
} }
install_symlink {
name: "firmware_wlan_mac.bin_symlink",
vendor: true,
installed_location: "firmware/wlan/qca_cld/wlan_mac.bin",
symlink_target: "/mnt/vendor/persist/wlan_mac.bin",
}
install_symlink {
name: "firmware_WCNSS_qcom_cfg.ini_symlink",
vendor: true,
installed_location: "firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini",
symlink_target: "/vendor/etc/wifi/WCNSS_qcom_cfg.ini",
}

View file

@ -1,138 +0,0 @@
#
# Copyright (C) 2022-2023 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
LOCAL_PATH := $(call my-dir)
ifneq ($(filter bangkk fogos,$(TARGET_DEVICE)),)
subdir_makefiles=$(call first-makefiles-under,$(LOCAL_PATH))
$(foreach mk,$(subdir_makefiles),$(info including $(mk) ...)$(eval include $(mk)))
include $(CLEAR_VARS)
# A/B builds require us to create the mount points at compile time.
# Just creating it for all cases since it does not hurt.
FIRMWARE_MOUNT_POINT := $(TARGET_OUT_VENDOR)/firmware_mnt
$(FIRMWARE_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(FIRMWARE_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/firmware_mnt
BT_FIRMWARE_MOUNT_POINT := $(TARGET_OUT_VENDOR)/bt_firmware
$(BT_FIRMWARE_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(BT_FIRMWARE_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/bt_firmware
DSP_MOUNT_POINT := $(TARGET_OUT_VENDOR)/dsp
$(DSP_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(DSP_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/dsp
FSG_MOUNT_POINT := $(TARGET_OUT_VENDOR)/fsg
$(FSG_MOUNT_POINT): $(LOCAL_INSTALLED_MODULE)
@echo "Creating $(FSG_MOUNT_POINT)"
@mkdir -p $(TARGET_OUT_VENDOR)/fsg
ALL_DEFAULT_INSTALLED_MODULES += $(FIRMWARE_MOUNT_POINT) $(BT_FIRMWARE_MOUNT_POINT) $(DSP_MOUNT_POINT) $(FSG_MOUNT_POINT)
RFS_MSM_ADSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/adsp/
$(RFS_MSM_ADSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM ADSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/lpass $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/adsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_CDSP_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/cdsp/
$(RFS_MSM_CDSP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM CDSP folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/cdsp $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/cdsp $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_MPSS_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/mpss/
$(RFS_MSM_MPSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM MPSS folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/fsg
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/modem $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/mpss $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
$(hide) ln -sf /vendor/fsg $@/readonly/vendor/fsg
RFS_MSM_SLPI_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/slpi/
$(RFS_MSM_SLPI_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM SLPI folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/slpi $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/slpi $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
RFS_MSM_WPSS_SYMLINKS := $(TARGET_OUT_VENDOR)/rfs/msm/wpss/
$(RFS_MSM_WPSS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating RFS MSM WPSS folder structure: $@"
@rm -rf $@/*
@mkdir -p $(dir $@)/readonly/vendor
$(hide) ln -sf /data/vendor/tombstones/rfs/wpss $@/ramdumps
$(hide) ln -sf /mnt/vendor/persist/rfs/msm/wpss $@/readwrite
$(hide) ln -sf /mnt/vendor/persist/rfs/shared $@/shared
$(hide) ln -sf /mnt/vendor/persist/hlos_rfs/shared $@/hlos
$(hide) ln -sf /vendor/firmware_mnt $@/readonly/firmware
$(hide) ln -sf /vendor/firmware $@/readonly/vendor/firmware
WIFI_FIRMWARE_SYMLINKS := $(TARGET_OUT_VENDOR)/firmware/wlan/qca_cld
$(WIFI_FIRMWARE_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating wifi firmware symlinks: $@"
@mkdir -p $@
$(hide) ln -sf /mnt/vendor/persist/wlan_mac.bin $@/wlan_mac.bin
$(hide) ln -sf /vendor/etc/wifi/WCNSS_qcom_cfg.ini $@/WCNSS_qcom_cfg.ini
ALL_DEFAULT_INSTALLED_MODULES += $(RFS_MSM_ADSP_SYMLINKS) $(RFS_MSM_CDSP_SYMLINKS) $(RFS_MSM_MPSS_SYMLINKS) \
$(RFS_MSM_WPSS_SYMLINKS) $(RFS_MSM_SLPI_SYMLINKS) $(WIFI_FIRMWARE_SYMLINKS)
IMS_LIBS := libimscamera_jni.so libimsmedia_jni.so
IMS_SYMLINKS := $(addprefix $(TARGET_OUT_SYSTEM_EXT_APPS_PRIVILEGED)/ims/lib/arm64/,$(notdir $(IMS_LIBS)))
$(IMS_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "IMS lib link: $@"
@mkdir -p $(dir $@)
@rm -rf $@
$(hide) ln -sf /system_ext/lib64/$(notdir $@) $@
ALL_DEFAULT_INSTALLED_MODULES += $(IMS_SYMLINKS)
CNE_APP_SYMLINKS := $(TARGET_OUT_VENDOR)/app/CneApp/lib/arm64
$(CNE_APP_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Creating CneApp symlinks: $@"
@mkdir -p $@
$(hide) ln -sf /vendor/lib64/libvndfwk_detect_jni.qti.so $@/libvndfwk_detect_jni.qti.so
ALL_DEFAULT_INSTALLED_MODULES += $(CNE_APP_SYMLINKS)
EXPAT_SYMLINKS := $(TARGET_OUT_VENDOR_EXECUTABLES)/expat
$(EXPAT_SYMLINKS): $(LOCAL_INSTALLED_MODULE)
@echo "Expat bin link: $@"
@rm -rf $@
@mkdir -p $(dir $@)
$(hide) ln -sf motobox $@
ALL_DEFAULT_INSTALLED_MODULES += $(EXPAT_SYMLINKS)
endif

View file

@ -36,11 +36,6 @@ TARGET_2ND_CPU_VARIANT_RUNTIME := kryo385
# Bootloader # Bootloader
TARGET_NO_BOOTLOADER := true TARGET_NO_BOOTLOADER := true
# BUILD_BROKEN_*
BUILD_BROKEN_DUP_RULES := true
BUILD_BROKEN_ELF_PREBUILT_PRODUCT_COPY_FILES := true
BUILD_BROKEN_INCORRECT_PARTITION_IMAGES := true
# Kernel # Kernel
BOARD_BOOT_HEADER_VERSION := 3 BOARD_BOOT_HEADER_VERSION := 3
BOARD_KERNEL_BASE := 0x00000000 BOARD_KERNEL_BASE := 0x00000000
@ -58,7 +53,9 @@ BOARD_KERNEL_IMAGE_NAME := Image
BOARD_KERNEL_PAGESIZE := 4096 BOARD_KERNEL_PAGESIZE := 4096
BOARD_KERNEL_SEPARATED_DTBO := true BOARD_KERNEL_SEPARATED_DTBO := true
BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION) BOARD_MKBOOTIMG_ARGS += --header_version $(BOARD_BOOT_HEADER_VERSION)
BOARD_RAMDISK_USE_LZ4 := true
TARGET_KERNEL_ADDITIONAL_FLAGS := DTC_EXT=$(shell pwd)/prebuilts/misc/linux-x86/dtc/dtc LLVM=1 TARGET_KERNEL_ADDITIONAL_FLAGS := DTC_EXT=$(shell pwd)/prebuilts/misc/linux-x86/dtc/dtc LLVM=1
TARGET_KERNEL_CLANG_VERSION := r530567
TARGET_KERNEL_SOURCE := kernel/motorola/sm6375 TARGET_KERNEL_SOURCE := kernel/motorola/sm6375
# Platform # Platform
@ -165,7 +162,6 @@ TARGET_NO_RECOVERY := true
TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888 TARGET_RECOVERY_PIXEL_FORMAT := RGBX_8888
TARGET_USERIMAGES_USE_EXT4 := true TARGET_USERIMAGES_USE_EXT4 := true
TARGET_USERIMAGES_USE_F2FS := true TARGET_USERIMAGES_USE_F2FS := true
TARGET_RECOVERY_DEVICE_DIRS += $(COMMON_PATH)
TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/rootdir/etc/fstab.qcom TARGET_RECOVERY_FSTAB := $(COMMON_PATH)/rootdir/etc/fstab.qcom
TARGET_RECOVERY_WIPE := $(COMMON_PATH)/recovery/recovery.wipe TARGET_RECOVERY_WIPE := $(COMMON_PATH)/recovery/recovery.wipe
@ -175,7 +171,6 @@ ENABLE_VENDOR_RIL_SERVICE := true
# SELinux # SELinux
include device/lineage/sepolicy/libperfmgr/sepolicy.mk include device/lineage/sepolicy/libperfmgr/sepolicy.mk
include device/qcom/sepolicy_vndr/SEPolicy.mk include device/qcom/sepolicy_vndr/SEPolicy.mk
BUILD_BROKEN_VENDOR_PROPERTY_NAMESPACE := true
BOARD_VENDOR_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/vendor BOARD_VENDOR_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/vendor
PRODUCT_PRIVATE_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/private PRODUCT_PRIVATE_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/private
PRODUCT_PUBLIC_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/public PRODUCT_PUBLIC_SEPOLICY_DIRS += $(COMMON_PATH)/sepolicy/public

View file

@ -1,24 +0,0 @@
filegroup {
name: "android.hardware.boot@1.1-impl-qti_src",
srcs: ["BootControl.cpp"],
}
cc_defaults {
name: "android.hardware.boot@1.1-impl-qti_defaults",
defaults: [
"hidl_defaults",
"libboot_control_qti_defaults",
],
relative_install_path: "hw",
vendor: true,
recovery_available: true,
srcs: [":android.hardware.boot@1.1-impl-qti_src"],
shared_libs: [
"liblog",
"libhidlbase",
"libhardware",
"libutils",
"android.hardware.boot@1.0",
"android.hardware.boot@1.1",
],
}

View file

@ -1,132 +0,0 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_TAG "android.hardware.boot@1.1-impl-qti"
#include <memory>
#include <log/log.h>
#include "BootControl.h"
namespace android {
namespace hardware {
namespace boot {
namespace V1_1 {
namespace implementation {
using ::android::hardware::boot::V1_0::CommandResult;
bool BootControl::Init() {
return bootcontrol_init();
}
Return<uint32_t> BootControl::getNumberSlots() {
return get_number_slots();
}
Return<uint32_t> BootControl::getCurrentSlot() {
return get_current_slot();
}
Return<void> BootControl::markBootSuccessful(markBootSuccessful_cb _hidl_cb) {
int ret = mark_boot_successful();
struct CommandResult cr;
cr.success = (ret == 0);
cr.errMsg = strerror(-ret);
_hidl_cb(cr);
return Void();
}
Return<void> BootControl::setActiveBootSlot(uint32_t slot, setActiveBootSlot_cb _hidl_cb) {
int ret = set_active_boot_slot(slot);
struct CommandResult cr;
cr.success = (ret == 0);
cr.errMsg = strerror(-ret);
_hidl_cb(cr);
return Void();
}
Return<void> BootControl::setSlotAsUnbootable(uint32_t slot, setSlotAsUnbootable_cb _hidl_cb) {
int ret = set_slot_as_unbootable(slot);
struct CommandResult cr;
cr.success = (ret == 0);
cr.errMsg = strerror(-ret);
_hidl_cb(cr);
return Void();
}
Return<BoolResult> BootControl::isSlotBootable(uint32_t slot) {
int32_t ret = is_slot_bootable(slot);
if (ret < 0) {
return BoolResult::INVALID_SLOT;
}
return ret ? BoolResult::TRUE : BoolResult::FALSE;
}
Return<BoolResult> BootControl::isSlotMarkedSuccessful(uint32_t slot) {
int32_t ret = is_slot_marked_successful(slot);
if (ret < 0) {
return BoolResult::INVALID_SLOT;
}
return ret ? BoolResult::TRUE : BoolResult::FALSE;
}
Return<void> BootControl::getSuffix(uint32_t slot, getSuffix_cb _hidl_cb) {
hidl_string ans;
const char* suffix = get_suffix(slot);
if (suffix) {
ans = suffix;
}
_hidl_cb(ans);
return Void();
}
Return<bool> BootControl::setSnapshotMergeStatus(MergeStatus status) {
return set_snapshot_merge_status(status);
}
Return<MergeStatus> BootControl::getSnapshotMergeStatus() {
return get_snapshot_merge_status();
}
IBootControl* HIDL_FETCH_IBootControl(const char* /* hal */) {
auto module = std::make_unique<BootControl>();
if (!module->Init()) {
ALOGE("Could not initialize BootControl module");
return nullptr;
}
return module.release();
}
} // namespace implementation
} // namespace V1_1
} // namespace boot
} // namespace hardware
} // namespace android

View file

@ -1,75 +0,0 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include <android/hardware/boot/1.1/IBootControl.h>
#include <hidl/MQDescriptor.h>
#include <hidl/Status.h>
#include <libboot_control_qti.h>
namespace android {
namespace hardware {
namespace boot {
namespace V1_1 {
namespace implementation {
using ::android::hardware::Return;
using ::android::hardware::Void;
using ::android::hardware::boot::V1_0::BoolResult;
using ::android::hardware::boot::V1_1::IBootControl;
using ::android::hardware::boot::V1_1::MergeStatus;
class BootControl : public IBootControl {
public:
bool Init();
// Methods from ::android::hardware::boot::V1_0::IBootControl follow.
Return<uint32_t> getNumberSlots() override;
Return<uint32_t> getCurrentSlot() override;
Return<void> markBootSuccessful(markBootSuccessful_cb _hidl_cb) override;
Return<void> setActiveBootSlot(uint32_t slot, setActiveBootSlot_cb _hidl_cb) override;
Return<void> setSlotAsUnbootable(uint32_t slot, setSlotAsUnbootable_cb _hidl_cb) override;
Return<BoolResult> isSlotBootable(uint32_t slot) override;
Return<BoolResult> isSlotMarkedSuccessful(uint32_t slot) override;
Return<void> getSuffix(uint32_t slot, getSuffix_cb _hidl_cb) override;
// Methods from ::android::hardware::boot::V1_1::IBootControl follow.
Return<bool> setSnapshotMergeStatus(MergeStatus status) override;
Return<MergeStatus> getSnapshotMergeStatus() override;
};
extern "C" IBootControl* HIDL_FETCH_IBootControl(const char* name);
} // namespace implementation
} // namespace V1_1
} // namespace boot
} // namespace hardware
} // namespace android

View file

@ -1,38 +0,0 @@
filegroup {
name: "libboot_control_qti_src",
srcs: ["libboot_control_qti.cpp"],
}
cc_library_headers {
name: "libboot_control_qti_headers",
vendor: true,
recovery_available: true,
export_include_dirs: ["."],
}
cc_defaults {
name: "libboot_control_qti_defaults",
vendor: true,
recovery_available: true,
shared_libs: [
"android.hardware.boot@1.1",
"libbase",
"libcutils",
"liblog",
"libz",
],
static_libs: [
"libboot_control",
"libbootloader_message_vendor",
"libfstab",
],
owner: "qti",
cflags: [
"-Wall",
"-Werror",
],
srcs: [
":libboot_control_qti_src",
],
header_libs: ["libboot_control_qti_headers"],
}

View file

@ -1,754 +0,0 @@
/*
* Copyright (c) 2016,2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
//#define LOG_NDEBUG 0
#define LOG_TAG "bootcontrolhal"
#include <libboot_control_qti.h>
#include <map>
#include <list>
#include <string>
#include <vector>
#include <errno.h>
#include <cutils/log.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <limits.h>
#include <cutils/properties.h>
#include <gpt-utils.h>
#include <bootloader_message/bootloader_message.h>
#include <libboot_control/libboot_control.h>
#define BOOTDEV_DIR "/dev/block/bootdevice/by-name"
#define BOOT_IMG_PTN_NAME "boot"
#define LUN_NAME_END_LOC 14
#define BOOT_SLOT_PROP "ro.boot.slot_suffix"
#define BOARD_PLATFORM_PROP "ro.build.product"
#define GVMQ_PLATFORM "msmnile_gvmq"
#define SLOT_ACTIVE 1
#define SLOT_INACTIVE 2
#define UPDATE_SLOT(pentry, guid, slot_state) ({ \
memcpy(pentry, guid, TYPE_GUID_SIZE); \
if (slot_state == SLOT_ACTIVE)\
*(pentry + AB_FLAG_OFFSET) = AB_SLOT_ACTIVE_VAL; \
else if (slot_state == SLOT_INACTIVE) \
*(pentry + AB_FLAG_OFFSET) = (*(pentry + AB_FLAG_OFFSET)& \
~AB_PARTITION_ATTR_SLOT_ACTIVE); \
})
using namespace std;
const char *slot_suffix_arr[] = {
AB_SLOT_A_SUFFIX,
AB_SLOT_B_SUFFIX,
NULL};
enum part_attr_type {
ATTR_SLOT_ACTIVE = 0,
ATTR_BOOT_SUCCESSFUL,
ATTR_UNBOOTABLE,
};
bool mGvmqPlatform = false;
using ::android::bootable::GetMiscVirtualAbMergeStatus;
using ::android::bootable::InitMiscVirtualAbMessageIfNeeded;
using ::android::bootable::SetMiscVirtualAbMergeStatus;
using ::android::hardware::boot::V1_1::MergeStatus;
//Get the value of one of the attribute fields for a partition.
static int get_partition_attribute(char *partname,
enum part_attr_type part_attr)
{
struct gpt_disk *disk = NULL;
uint8_t *pentry = NULL;
int retval = -1;
uint8_t *attr = NULL;
if (!partname)
goto error;
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk struct", __func__);
goto error;
}
if (gpt_disk_get_disk_info(partname, disk)) {
ALOGE("%s: Failed to get disk info", __func__);
goto error;
}
pentry = gpt_disk_get_pentry(disk, partname, PRIMARY_GPT);
if (!pentry) {
ALOGE("%s: pentry does not exist in disk struct",
__func__);
goto error;
}
attr = pentry + AB_FLAG_OFFSET;
if (part_attr == ATTR_SLOT_ACTIVE)
retval = !!(*attr & AB_PARTITION_ATTR_SLOT_ACTIVE);
else if (part_attr == ATTR_BOOT_SUCCESSFUL)
retval = !!(*attr & AB_PARTITION_ATTR_BOOT_SUCCESSFUL);
else if (part_attr == ATTR_UNBOOTABLE)
retval = !!(*attr & AB_PARTITION_ATTR_UNBOOTABLE);
else
retval = -1;
gpt_disk_free(disk);
return retval;
error:
if (disk)
gpt_disk_free(disk);
return retval;
}
//Set a particular attribute for all the partitions in a
//slot
static int update_slot_attribute(const char *slot,
enum part_attr_type ab_attr)
{
unsigned int i = 0;
char buf[PATH_MAX];
struct stat st;
struct gpt_disk *disk = NULL;
uint8_t *pentry = NULL;
uint8_t *pentry_bak = NULL;
int rc = -1;
uint8_t *attr = NULL;
uint8_t *attr_bak = NULL;
char partName[MAX_GPT_NAME_SIZE + 1] = {0};
const char ptn_list[][MAX_GPT_NAME_SIZE] = { AB_PTN_LIST };
int slot_name_valid = 0;
if (!slot) {
ALOGE("%s: Invalid argument", __func__);
goto error;
}
for (i = 0; slot_suffix_arr[i] != NULL; i++)
{
if (!strncmp(slot, slot_suffix_arr[i],
strlen(slot_suffix_arr[i])))
slot_name_valid = 1;
}
if (!slot_name_valid) {
ALOGE("%s: Invalid slot name", __func__);
goto error;
}
for (i=0; i < ARRAY_SIZE(ptn_list); i++) {
memset(buf, '\0', sizeof(buf));
//Check if A/B versions of this ptn exist
snprintf(buf, sizeof(buf) - 1,
"%s/%s%s",
BOOT_DEV_DIR,
ptn_list[i],
AB_SLOT_A_SUFFIX
);
if (stat(buf, &st)) {
//partition does not have _a version
continue;
}
memset(buf, '\0', sizeof(buf));
snprintf(buf, sizeof(buf) - 1,
"%s/%s%s",
BOOT_DEV_DIR,
ptn_list[i],
AB_SLOT_B_SUFFIX
);
if (stat(buf, &st)) {
//partition does not have _a version
continue;
}
memset(partName, '\0', sizeof(partName));
snprintf(partName,
sizeof(partName) - 1,
"%s%s",
ptn_list[i],
slot);
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk struct",
__func__);
goto error;
}
rc = gpt_disk_get_disk_info(partName, disk);
if (rc != 0) {
ALOGE("%s: Failed to get disk info for %s",
__func__,
partName);
goto error;
}
pentry = gpt_disk_get_pentry(disk, partName, PRIMARY_GPT);
pentry_bak = gpt_disk_get_pentry(disk, partName, SECONDARY_GPT);
if (!pentry || !pentry_bak) {
ALOGE("%s: Failed to get pentry/pentry_bak for %s",
__func__,
partName);
goto error;
}
attr = pentry + AB_FLAG_OFFSET;
attr_bak = pentry_bak + AB_FLAG_OFFSET;
if (ab_attr == ATTR_BOOT_SUCCESSFUL) {
*attr = (*attr) | AB_PARTITION_ATTR_BOOT_SUCCESSFUL;
*attr_bak = (*attr_bak) |
AB_PARTITION_ATTR_BOOT_SUCCESSFUL;
} else if (ab_attr == ATTR_UNBOOTABLE) {
*attr = (*attr) | AB_PARTITION_ATTR_UNBOOTABLE;
*attr_bak = (*attr_bak) | AB_PARTITION_ATTR_UNBOOTABLE;
} else if (ab_attr == ATTR_SLOT_ACTIVE) {
*attr = (*attr) | AB_PARTITION_ATTR_SLOT_ACTIVE;
*attr_bak = (*attr) | AB_PARTITION_ATTR_SLOT_ACTIVE;
} else {
ALOGE("%s: Unrecognized attr", __func__);
goto error;
}
if (gpt_disk_update_crc(disk)) {
ALOGE("%s: Failed to update crc for %s",
__func__,
partName);
goto error;
}
if (gpt_disk_commit(disk)) {
ALOGE("%s: Failed to write back entry for %s",
__func__,
partName);
goto error;
}
gpt_disk_free(disk);
disk = NULL;
}
return 0;
error:
if (disk)
gpt_disk_free(disk);
return -1;
}
static int boot_control_check_slot_sanity(unsigned slot)
{
uint32_t num_slots = get_number_slots();
if ((num_slots < 1) || (slot > num_slots - 1)) {
ALOGE("Invalid slot number");
return -1;
}
return 0;
}
//Return a gpt disk structure representing the disk that holds
//partition.
static struct gpt_disk* boot_ctl_get_disk_info(char *partition)
{
struct gpt_disk *disk = NULL;
if (!partition)
return NULL;
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk",
__func__);
goto error;
}
if (gpt_disk_get_disk_info(partition, disk)) {
ALOGE("failed to get disk info for %s",
partition);
goto error;
}
return disk;
error:
if (disk)
gpt_disk_free(disk);
return NULL;
}
//The argument here is a vector of partition names(including the slot suffix)
//that lie on a single disk
static int boot_ctl_set_active_slot_for_partitions(vector<string> part_list,
unsigned slot)
{
char buf[PATH_MAX] = {0};
struct gpt_disk *diskA = NULL;
struct gpt_disk *diskB = NULL;
char slotA[MAX_GPT_NAME_SIZE + 1] = {0};
char slotB[MAX_GPT_NAME_SIZE + 1] = {0};
char active_guid[TYPE_GUID_SIZE + 1] = {0};
char inactive_guid[TYPE_GUID_SIZE + 1] = {0};
//Pointer to the partition entry of current 'A' partition
uint8_t *pentryA = NULL;
uint8_t *pentryA_bak = NULL;
//Pointer to partition entry of current 'B' partition
uint8_t *pentryB = NULL;
uint8_t *pentryB_bak = NULL;
struct stat st;
vector<string>::iterator partition_iterator;
for (partition_iterator = part_list.begin();
partition_iterator != part_list.end();
partition_iterator++) {
//Chop off the slot suffix from the partition name to
//make the string easier to work with.
string prefix = *partition_iterator;
if (prefix.size() < (strlen(AB_SLOT_A_SUFFIX) + 1)) {
ALOGE("Invalid partition name: %s", prefix.c_str());
goto error;
}
prefix.resize(prefix.size() - strlen(AB_SLOT_A_SUFFIX));
//Check if A/B versions of this ptn exist
snprintf(buf, sizeof(buf) - 1, "%s/%s%s", BOOT_DEV_DIR,
prefix.c_str(),
AB_SLOT_A_SUFFIX);
if (stat(buf, &st))
continue;
memset(buf, '\0', sizeof(buf));
snprintf(buf, sizeof(buf) - 1, "%s/%s%s", BOOT_DEV_DIR,
prefix.c_str(),
AB_SLOT_B_SUFFIX);
if (stat(buf, &st))
continue;
memset(slotA, 0, sizeof(slotA));
memset(slotB, 0, sizeof(slotB));
snprintf(slotA, sizeof(slotA) - 1, "%s%s", prefix.c_str(),
AB_SLOT_A_SUFFIX);
snprintf(slotB, sizeof(slotB) - 1,"%s%s", prefix.c_str(),
AB_SLOT_B_SUFFIX);
//Get the disks containing the partitions that were passed in.
if (!diskA) {
diskA = boot_ctl_get_disk_info(slotA);
if (!diskA)
goto error;
}
if (!diskB) {
diskB = boot_ctl_get_disk_info(slotB);
if (!diskB)
goto error;
}
//Get partition entry for slot A & B from the primary
//and backup tables.
pentryA = gpt_disk_get_pentry(diskA, slotA, PRIMARY_GPT);
pentryA_bak = gpt_disk_get_pentry(diskA, slotA, SECONDARY_GPT);
pentryB = gpt_disk_get_pentry(diskB, slotB, PRIMARY_GPT);
pentryB_bak = gpt_disk_get_pentry(diskB, slotB, SECONDARY_GPT);
if ( !pentryA || !pentryA_bak || !pentryB || !pentryB_bak) {
//None of these should be NULL since we have already
//checked for A & B versions earlier.
ALOGE("Slot pentries for %s not found.",
prefix.c_str());
goto error;
}
memset(active_guid, '\0', sizeof(active_guid));
memset(inactive_guid, '\0', sizeof(inactive_guid));
if (get_partition_attribute(slotA, ATTR_SLOT_ACTIVE) == 1) {
//A is the current active slot
memcpy((void*)active_guid, (const void*)pentryA,
TYPE_GUID_SIZE);
memcpy((void*)inactive_guid,(const void*)pentryB,
TYPE_GUID_SIZE);
} else if (get_partition_attribute(slotB,
ATTR_SLOT_ACTIVE) == 1) {
//B is the current active slot
memcpy((void*)active_guid, (const void*)pentryB,
TYPE_GUID_SIZE);
memcpy((void*)inactive_guid, (const void*)pentryA,
TYPE_GUID_SIZE);
} else {
ALOGE("Both A & B for %s are inactive..Aborting",
prefix.c_str());
goto error;
}
if (!strncmp(slot_suffix_arr[slot], AB_SLOT_A_SUFFIX,
strlen(AB_SLOT_A_SUFFIX))){
//Mark A as active in primary table
UPDATE_SLOT(pentryA, active_guid, SLOT_ACTIVE);
//Mark A as active in backup table
UPDATE_SLOT(pentryA_bak, active_guid, SLOT_ACTIVE);
//Mark B as inactive in primary table
UPDATE_SLOT(pentryB, inactive_guid, SLOT_INACTIVE);
//Mark B as inactive in backup table
UPDATE_SLOT(pentryB_bak, inactive_guid, SLOT_INACTIVE);
} else if (!strncmp(slot_suffix_arr[slot], AB_SLOT_B_SUFFIX,
strlen(AB_SLOT_B_SUFFIX))){
//Mark B as active in primary table
UPDATE_SLOT(pentryB, active_guid, SLOT_ACTIVE);
//Mark B as active in backup table
UPDATE_SLOT(pentryB_bak, active_guid, SLOT_ACTIVE);
//Mark A as inavtive in primary table
UPDATE_SLOT(pentryA, inactive_guid, SLOT_INACTIVE);
//Mark A as inactive in backup table
UPDATE_SLOT(pentryA_bak, inactive_guid, SLOT_INACTIVE);
} else {
//Something has gone terribly terribly wrong
ALOGE("%s: Unknown slot suffix!", __func__);
goto error;
}
if (diskA) {
if (gpt_disk_update_crc(diskA) != 0) {
ALOGE("%s: Failed to update gpt_disk crc",
__func__);
goto error;
}
}
if (diskB) {
if (gpt_disk_update_crc(diskB) != 0) {
ALOGE("%s: Failed to update gpt_disk crc",
__func__);
goto error;
}
}
}
//write updated content to disk
if (diskA) {
if (gpt_disk_commit(diskA)) {
ALOGE("Failed to commit disk entry");
goto error;
}
gpt_disk_free(diskA);
}
if (diskB) {
if (gpt_disk_commit(diskB)) {
ALOGE("Failed to commit disk entry");
goto error;
}
gpt_disk_free(diskB);
}
return 0;
error:
if (diskA)
gpt_disk_free(diskA);
if (diskB)
gpt_disk_free(diskB);
return -1;
}
bool bootcontrol_init()
{
char platform[256];
property_get(BOARD_PLATFORM_PROP , platform, "");
if (!strncmp(platform, GVMQ_PLATFORM, strlen(GVMQ_PLATFORM)))
mGvmqPlatform = true;
return InitMiscVirtualAbMessageIfNeeded();
}
unsigned get_number_slots()
{
if (mGvmqPlatform)
return 2;
struct dirent *de = NULL;
DIR *dir_bootdev = NULL;
unsigned slot_count = 0;
dir_bootdev = opendir(BOOTDEV_DIR);
if (!dir_bootdev) {
ALOGE("%s: Failed to open bootdev dir (%s)",
__func__,
strerror(errno));
goto error;
}
while ((de = readdir(dir_bootdev))) {
if (de->d_name[0] == '.')
continue;
if (!strncmp(de->d_name, BOOT_IMG_PTN_NAME,
strlen(BOOT_IMG_PTN_NAME)))
slot_count++;
}
closedir(dir_bootdev);
return slot_count;
error:
if (dir_bootdev)
closedir(dir_bootdev);
return 0;
}
unsigned get_current_slot()
{
uint32_t num_slots = 0;
char bootSlotProp[PROPERTY_VALUE_MAX] = {'\0'};
unsigned i = 0;
num_slots = get_number_slots();
if (num_slots <= 1) {
//Slot 0 is the only slot around.
return 0;
}
property_get(BOOT_SLOT_PROP, bootSlotProp, "N/A");
if (!strncmp(bootSlotProp, "N/A", strlen("N/A"))) {
ALOGE("%s: Unable to read boot slot property",
__func__);
goto error;
}
//Iterate through a list of partitons named as boot+suffix
//and see which one is currently active.
for (i = 0; slot_suffix_arr[i] != NULL ; i++) {
if (!strncmp(bootSlotProp,
slot_suffix_arr[i],
strlen(slot_suffix_arr[i])))
return i;
}
error:
//The HAL spec requires that we return a number between
//0 to num_slots - 1. Since something went wrong here we
//are just going to return the default slot.
return 0;
}
int mark_boot_successful(){
if (mGvmqPlatform) {
std::string err;
std::string misc_blk_device = get_bootloader_message_blk_device(&err);
if (misc_blk_device.empty()) {
ALOGE("Could not find bootloader message block device: %s", err.c_str());
return -1;
}
bootloader_message boot;
if (!read_bootloader_message_from(&boot, misc_blk_device, &err)) {
ALOGE(" Failed to read from %s due to %s ", misc_blk_device.c_str(), err.c_str());
return -1;
}
ALOGV(" bootloader_message is : boot.reserved[0] = %c, boot.reserved[1] = %c",
boot.reserved[0], boot.reserved[1]);
boot.reserved[2] = 'y';
if (!write_bootloader_message_to(boot, misc_blk_device, &err)) {
ALOGE("Failed to write to %s because : %s", misc_blk_device.c_str(), err.c_str());
return -1;
}
bootloader_message boot_verify;
if (!read_bootloader_message_from(&boot_verify, misc_blk_device, &err)) {
ALOGE("Failed to read from %s due to %s ", misc_blk_device.c_str(), err.c_str());
return -1;
}
ALOGV(" bootloader_message : boot_verify.reserved[0] = %c, boot_verify.reserved[1] = %c,boot_verify.reserved[2] = %c",
boot_verify.reserved[0],boot_verify.reserved[1], boot_verify.reserved[2]);
}
unsigned cur_slot = 0;
cur_slot = get_current_slot();
if (update_slot_attribute(slot_suffix_arr[cur_slot],
ATTR_BOOT_SUCCESSFUL)) {
goto error;
}
return 0;
error:
ALOGE("%s: Failed to mark boot successful", __func__);
return -1;
}
int set_active_boot_slot(unsigned slot)
{
if (mGvmqPlatform) {
std::string err;
std::string misc_blk_device = get_bootloader_message_blk_device(&err);
if (misc_blk_device.empty()) {
ALOGE("Could not find bootloader message block device: %s", err.c_str());
return -1;
}
unsigned current_slot = get_current_slot();
uint32_t num_slots = get_number_slots();
if ((num_slots < 1) || (current_slot > num_slots - 1)) {
ALOGE("Invalid slot number");
return -1;
}
bootloader_message boot;
if(current_slot == 0)
boot.reserved[0] = 'a';
else
boot.reserved[0] = 'b';
if(slot == 0)
boot.reserved[1] = 'a';
else
boot.reserved[1] = 'b';
boot.reserved[2] = '\0';
if (!write_bootloader_message_to(boot, misc_blk_device, &err)) {
ALOGE("Failed to write to %s because : %s", misc_blk_device.c_str(), err.c_str());
return -1;
}
bootloader_message boot_verify;
if (!read_bootloader_message_from(&boot_verify, misc_blk_device, &err)) {
ALOGE("Failed to read from %s due to %s ", misc_blk_device.c_str(), err.c_str());
return -1;
}
ALOGV("bootloader_message is : boot_verify.reserved[0] = %c, boot_verify.reserved[1] = %c,boot_verify.reserved[2] = %c",
boot_verify.reserved[0],boot_verify.reserved[1], boot_verify.reserved[2]);
}
map<string, vector<string>> ptn_map;
vector<string> ptn_vec;
const char ptn_list[][MAX_GPT_NAME_SIZE] = { AB_PTN_LIST };
uint32_t i;
int rc = -1;
int is_ufs = gpt_utils_is_ufs_device();
map<string, vector<string>>::iterator map_iter;
if (boot_control_check_slot_sanity(slot)) {
ALOGE("%s: Bad arguments", __func__);
goto error;
}
//The partition list just contains prefixes(without the _a/_b) of the
//partitions that support A/B. In order to get the layout we need the
//actual names. To do this we append the slot suffix to every member
//in the list.
for (i = 0; i < ARRAY_SIZE(ptn_list); i++) {
//XBL & XBL_CFG are handled differrently for ufs devices so
//ignore them
if (is_ufs && (!strncmp(ptn_list[i],
PTN_XBL,
strlen(PTN_XBL))
|| !strncmp(ptn_list[i],
PTN_XBL_CFG,
strlen(PTN_XBL_CFG))))
continue;
//The partition list will be the list of partitions
//corresponding to the slot being set active
string cur_ptn = ptn_list[i];
cur_ptn.append(slot_suffix_arr[slot]);
ptn_vec.push_back(cur_ptn);
}
//The partition map gives us info in the following format:
// [path_to_block_device_1]--><partitions on device 1>
// [path_to_block_device_2]--><partitions on device 2>
// ...
// ...
// eg:
// [/dev/block/sdb]---><system, boot, rpm, tz,....>
if (gpt_utils_get_partition_map(ptn_vec, ptn_map)) {
ALOGE("%s: Failed to get partition map",
__func__);
goto error;
}
for (map_iter = ptn_map.begin(); map_iter != ptn_map.end(); map_iter++){
if (map_iter->second.size() < 1)
continue;
if (boot_ctl_set_active_slot_for_partitions(map_iter->second,
slot)) {
ALOGE("%s: Failed to set active slot", __func__);
goto error;
}
}
if (is_ufs) {
if (!strncmp(slot_suffix_arr[slot], AB_SLOT_A_SUFFIX,
strlen(AB_SLOT_A_SUFFIX))){
//Set xbl_a as the boot lun
rc = gpt_utils_set_xbl_boot_partition(NORMAL_BOOT);
} else if (!strncmp(slot_suffix_arr[slot], AB_SLOT_B_SUFFIX,
strlen(AB_SLOT_B_SUFFIX))){
//Set xbl_b as the boot lun
rc = gpt_utils_set_xbl_boot_partition(BACKUP_BOOT);
} else {
//Something has gone terribly terribly wrong
ALOGE("%s: Unknown slot suffix!", __func__);
goto error;
}
if (rc) {
ALOGE("%s: Failed to switch xbl boot partition",
__func__);
goto error;
}
}
return 0;
error:
return -1;
}
int set_slot_as_unbootable(unsigned slot)
{
if (boot_control_check_slot_sanity(slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
if (update_slot_attribute(slot_suffix_arr[slot],
ATTR_UNBOOTABLE)) {
goto error;
}
return 0;
error:
ALOGE("%s: Failed to mark slot unbootable", __func__);
return -1;
}
int is_slot_bootable(unsigned slot)
{
int attr = 0;
char bootPartition[MAX_GPT_NAME_SIZE + 1] = {0};
if (boot_control_check_slot_sanity(slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
snprintf(bootPartition,
sizeof(bootPartition) - 1, "boot%s",
slot_suffix_arr[slot]);
attr = get_partition_attribute(bootPartition, ATTR_UNBOOTABLE);
if (attr >= 0)
return !attr;
error:
return -1;
}
int is_slot_marked_successful(unsigned slot)
{
int attr = 0;
char bootPartition[MAX_GPT_NAME_SIZE + 1] = {0};
if (boot_control_check_slot_sanity(slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
snprintf(bootPartition,
sizeof(bootPartition) - 1,
"boot%s", slot_suffix_arr[slot]);
attr = get_partition_attribute(bootPartition, ATTR_BOOT_SUCCESSFUL);
if (attr >= 0)
return attr;
error:
return -1;
}
const char* get_suffix(unsigned slot)
{
if (boot_control_check_slot_sanity(slot) != 0)
return NULL;
else
return slot_suffix_arr[slot];
}
bool set_snapshot_merge_status(MergeStatus status)
{
bool retval = SetMiscVirtualAbMergeStatus(get_current_slot(), status);
ALOGI("%s: MergeStatus = %d, current_slot = %d, returning: %s \n", __func__,
status, get_current_slot(), retval ? "true" : "false");
return retval;
}
MergeStatus get_snapshot_merge_status()
{
MergeStatus status;
if (!GetMiscVirtualAbMergeStatus(get_current_slot(), &status)) {
ALOGI("%s: MergeStatus read from misc failed, returning unknown\n", __func__);
return MergeStatus::UNKNOWN;
}
ALOGI("%s: Returning MergeStatus = %d\n", __func__, status);
return status;
}

View file

@ -1,50 +0,0 @@
/*
* Copyright (c) 2020, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include <string>
#include <android/hardware/boot/1.1/IBootControl.h>
using MergeStatus = ::android::hardware::boot::V1_1::MergeStatus;
// IBootControl 1.0 methods
bool bootcontrol_init();
unsigned get_number_slots();
unsigned get_current_slot();
int mark_boot_successful();
int set_active_boot_slot(unsigned slot);
int set_slot_as_unbootable(unsigned slot);
int is_slot_bootable(unsigned slot);
int is_slot_marked_successful(unsigned slot);
const char* get_suffix(unsigned slot);
// IBootControl 1.1 methods
bool set_snapshot_merge_status(MergeStatus status);
MergeStatus get_snapshot_merge_status();

View file

@ -1,44 +0,0 @@
filegroup {
name: "bootctrl_hal_src",
srcs: [
"boot_control.cpp",
],
}
cc_defaults {
name: "bootctrl_hal_defaults",
proprietary: true,
recovery_available: true,
header_libs: [
"libhardware_headers",
"libsystem_headers",
],
shared_libs: [
"libcutils",
"liblog",
"libz",
],
owner: "qti",
relative_install_path: "hw",
cflags: [
"-Wall",
"-Werror",
],
srcs: [
":bootctrl_hal_src",
],
}
cc_library {
name: "bootctrl.holi",
defaults: ["bootctrl_hal_defaults"],
static_libs: ["libgptutils.moto_holi"],
}
cc_library_shared {
name: "android.hardware.boot@1.1-impl-qti",
stem: "android.hardware.boot@1.0-impl-1.1-qti",
defaults: ["android.hardware.boot@1.1-impl-qti_defaults"],
static_libs: ["libgptutils.moto_holi"],
}

View file

@ -1,26 +0,0 @@
Copyright (c) 2016, The Linux Foundation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of The Linux Foundation nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -1,703 +0,0 @@
/*
* Copyright (c) 2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <map>
#include <list>
#include <string>
#include <vector>
#ifdef __cplusplus
extern "C" {
#endif
#include <errno.h>
#define LOG_TAG "bootcontrolhal"
#include <cutils/log.h>
#include <hardware/boot_control.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <limits.h>
#include <cutils/properties.h>
#include "gpt-utils.h"
#define BOOTDEV_DIR "/dev/block/bootdevice/by-name"
#define BOOT_IMG_PTN_NAME "boot"
#define LUN_NAME_END_LOC 14
#define BOOT_SLOT_PROP "ro.boot.slot_suffix"
#define SLOT_ACTIVE 1
#define SLOT_INACTIVE 2
#define UPDATE_SLOT(pentry, guid, slot_state) ({ \
memcpy(pentry, guid, TYPE_GUID_SIZE); \
if (slot_state == SLOT_ACTIVE)\
*(pentry + AB_FLAG_OFFSET) = AB_SLOT_ACTIVE_VAL; \
else if (slot_state == SLOT_INACTIVE) \
*(pentry + AB_FLAG_OFFSET) = (*(pentry + AB_FLAG_OFFSET)& \
~AB_PARTITION_ATTR_SLOT_ACTIVE); \
})
using namespace std;
const char *slot_suffix_arr[] = {
AB_SLOT_A_SUFFIX,
AB_SLOT_B_SUFFIX,
NULL};
enum part_attr_type {
ATTR_SLOT_ACTIVE = 0,
ATTR_BOOT_SUCCESSFUL,
ATTR_UNBOOTABLE,
};
void boot_control_init(struct boot_control_module *module)
{
if (!module) {
ALOGE("Invalid argument passed to %s", __func__);
return;
}
return;
}
//Get the value of one of the attribute fields for a partition.
static int get_partition_attribute(char *partname,
enum part_attr_type part_attr)
{
struct gpt_disk *disk = NULL;
uint8_t *pentry = NULL;
int retval = -1;
uint8_t *attr = NULL;
if (!partname)
goto error;
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk struct", __func__);
goto error;
}
if (gpt_disk_get_disk_info(partname, disk)) {
ALOGE("%s: Failed to get disk info", __func__);
goto error;
}
pentry = gpt_disk_get_pentry(disk, partname, PRIMARY_GPT);
if (!pentry) {
ALOGE("%s: pentry does not exist in disk struct",
__func__);
goto error;
}
attr = pentry + AB_FLAG_OFFSET;
if (part_attr == ATTR_SLOT_ACTIVE)
retval = !!(*attr & AB_PARTITION_ATTR_SLOT_ACTIVE);
else if (part_attr == ATTR_BOOT_SUCCESSFUL)
retval = !!(*attr & AB_PARTITION_ATTR_BOOT_SUCCESSFUL);
else if (part_attr == ATTR_UNBOOTABLE)
retval = !!(*attr & AB_PARTITION_ATTR_UNBOOTABLE);
else
retval = -1;
gpt_disk_free(disk);
return retval;
error:
if (disk)
gpt_disk_free(disk);
return retval;
}
//Set a particular attribute for all the partitions in a
//slot
static int update_slot_attribute(const char *slot,
enum part_attr_type ab_attr)
{
unsigned int i = 0;
char buf[PATH_MAX];
struct stat st;
struct gpt_disk *disk = NULL;
uint8_t *pentry = NULL;
uint8_t *pentry_bak = NULL;
int rc = -1;
uint8_t *attr = NULL;
uint8_t *attr_bak = NULL;
char partName[MAX_GPT_NAME_SIZE + 1] = {0};
const char ptn_list[][MAX_GPT_NAME_SIZE] = { AB_PTN_LIST };
int slot_name_valid = 0;
if (!slot) {
ALOGE("%s: Invalid argument", __func__);
goto error;
}
for (i = 0; slot_suffix_arr[i] != NULL; i++)
{
if (!strncmp(slot, slot_suffix_arr[i],
strlen(slot_suffix_arr[i])))
slot_name_valid = 1;
}
if (!slot_name_valid) {
ALOGE("%s: Invalid slot name", __func__);
goto error;
}
for (i=0; i < ARRAY_SIZE(ptn_list); i++) {
memset(buf, '\0', sizeof(buf));
//Check if A/B versions of this ptn exist
snprintf(buf, sizeof(buf) - 1,
"%s/%s%s",
BOOT_DEV_DIR,
ptn_list[i],
AB_SLOT_A_SUFFIX
);
if (stat(buf, &st)) {
//partition does not have _a version
continue;
}
memset(buf, '\0', sizeof(buf));
snprintf(buf, sizeof(buf) - 1,
"%s/%s%s",
BOOT_DEV_DIR,
ptn_list[i],
AB_SLOT_B_SUFFIX
);
if (stat(buf, &st)) {
//partition does not have _a version
continue;
}
memset(partName, '\0', sizeof(partName));
snprintf(partName,
sizeof(partName) - 1,
"%s%s",
ptn_list[i],
slot);
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk struct",
__func__);
goto error;
}
rc = gpt_disk_get_disk_info(partName, disk);
if (rc != 0) {
ALOGE("%s: Failed to get disk info for %s",
__func__,
partName);
goto error;
}
pentry = gpt_disk_get_pentry(disk, partName, PRIMARY_GPT);
pentry_bak = gpt_disk_get_pentry(disk, partName, SECONDARY_GPT);
if (!pentry || !pentry_bak) {
ALOGE("%s: Failed to get pentry/pentry_bak for %s",
__func__,
partName);
goto error;
}
attr = pentry + AB_FLAG_OFFSET;
attr_bak = pentry_bak + AB_FLAG_OFFSET;
if (ab_attr == ATTR_BOOT_SUCCESSFUL) {
*attr = (*attr) | AB_PARTITION_ATTR_BOOT_SUCCESSFUL;
*attr_bak = (*attr_bak) |
AB_PARTITION_ATTR_BOOT_SUCCESSFUL;
} else if (ab_attr == ATTR_UNBOOTABLE) {
*attr = (*attr) | AB_PARTITION_ATTR_UNBOOTABLE;
*attr_bak = (*attr_bak) | AB_PARTITION_ATTR_UNBOOTABLE;
} else if (ab_attr == ATTR_SLOT_ACTIVE) {
*attr = (*attr) | AB_PARTITION_ATTR_SLOT_ACTIVE;
*attr_bak = (*attr) | AB_PARTITION_ATTR_SLOT_ACTIVE;
} else {
ALOGE("%s: Unrecognized attr", __func__);
goto error;
}
if (gpt_disk_update_crc(disk)) {
ALOGE("%s: Failed to update crc for %s",
__func__,
partName);
goto error;
}
if (gpt_disk_commit(disk)) {
ALOGE("%s: Failed to write back entry for %s",
__func__,
partName);
goto error;
}
gpt_disk_free(disk);
disk = NULL;
}
return 0;
error:
if (disk)
gpt_disk_free(disk);
return -1;
}
unsigned get_number_slots(struct boot_control_module *module)
{
struct dirent *de = NULL;
DIR *dir_bootdev = NULL;
unsigned slot_count = 0;
if (!module) {
ALOGE("%s: Invalid argument", __func__);
goto error;
}
dir_bootdev = opendir(BOOTDEV_DIR);
if (!dir_bootdev) {
ALOGE("%s: Failed to open bootdev dir (%s)",
__func__,
strerror(errno));
goto error;
}
while ((de = readdir(dir_bootdev))) {
if (de->d_name[0] == '.')
continue;
if (!strncmp(de->d_name, BOOT_IMG_PTN_NAME,
strlen(BOOT_IMG_PTN_NAME)))
slot_count++;
}
closedir(dir_bootdev);
return slot_count;
error:
if (dir_bootdev)
closedir(dir_bootdev);
return 0;
}
unsigned get_current_slot(struct boot_control_module *module)
{
uint32_t num_slots = 0;
char bootSlotProp[PROPERTY_VALUE_MAX] = {'\0'};
unsigned i = 0;
if (!module) {
ALOGE("%s: Invalid argument", __func__);
goto error;
}
num_slots = get_number_slots(module);
if (num_slots <= 1) {
//Slot 0 is the only slot around.
return 0;
}
property_get(BOOT_SLOT_PROP, bootSlotProp, "N/A");
if (!strncmp(bootSlotProp, "N/A", strlen("N/A"))) {
ALOGE("%s: Unable to read boot slot property",
__func__);
goto error;
}
//Iterate through a list of partitons named as boot+suffix
//and see which one is currently active.
for (i = 0; slot_suffix_arr[i] != NULL ; i++) {
if (!strncmp(bootSlotProp,
slot_suffix_arr[i],
strlen(slot_suffix_arr[i])))
return i;
}
error:
//The HAL spec requires that we return a number between
//0 to num_slots - 1. Since something went wrong here we
//are just going to return the default slot.
return 0;
}
static int boot_control_check_slot_sanity(struct boot_control_module *module,
unsigned slot)
{
if (!module)
return -1;
uint32_t num_slots = get_number_slots(module);
if ((num_slots < 1) || (slot > num_slots - 1)) {
ALOGE("Invalid slot number");
return -1;
}
return 0;
}
int mark_boot_successful(struct boot_control_module *module)
{
unsigned cur_slot = 0;
if (!module) {
ALOGE("%s: Invalid argument", __func__);
goto error;
}
cur_slot = get_current_slot(module);
if (update_slot_attribute(slot_suffix_arr[cur_slot],
ATTR_BOOT_SUCCESSFUL)) {
goto error;
}
return 0;
error:
ALOGE("%s: Failed to mark boot successful", __func__);
return -1;
}
const char *get_suffix(struct boot_control_module *module, unsigned slot)
{
if (boot_control_check_slot_sanity(module, slot) != 0)
return NULL;
else
return slot_suffix_arr[slot];
}
//Return a gpt disk structure representing the disk that holds
//partition.
static struct gpt_disk* boot_ctl_get_disk_info(char *partition)
{
struct gpt_disk *disk = NULL;
if (!partition)
return NULL;
disk = gpt_disk_alloc();
if (!disk) {
ALOGE("%s: Failed to alloc disk",
__func__);
goto error;
}
if (gpt_disk_get_disk_info(partition, disk)) {
ALOGE("failed to get disk info for %s",
partition);
goto error;
}
return disk;
error:
if (disk)
gpt_disk_free(disk);
return NULL;
}
//The argument here is a vector of partition names(including the slot suffix)
//that lie on a single disk
static int boot_ctl_set_active_slot_for_partitions(vector<string> part_list,
unsigned slot)
{
char buf[PATH_MAX] = {0};
struct gpt_disk *diskA = NULL;
struct gpt_disk *diskB = NULL;
char slotA[MAX_GPT_NAME_SIZE + 1] = {0};
char slotB[MAX_GPT_NAME_SIZE + 1] = {0};
char active_guid[TYPE_GUID_SIZE + 1] = {0};
char inactive_guid[TYPE_GUID_SIZE + 1] = {0};
//Pointer to the partition entry of current 'A' partition
uint8_t *pentryA = NULL;
uint8_t *pentryA_bak = NULL;
//Pointer to partition entry of current 'B' partition
uint8_t *pentryB = NULL;
uint8_t *pentryB_bak = NULL;
struct stat st;
vector<string>::iterator partition_iterator;
for (partition_iterator = part_list.begin();
partition_iterator != part_list.end();
partition_iterator++) {
//Chop off the slot suffix from the partition name to
//make the string easier to work with.
string prefix = *partition_iterator;
if (prefix.size() < (strlen(AB_SLOT_A_SUFFIX) + 1)) {
ALOGE("Invalid partition name: %s", prefix.c_str());
goto error;
}
prefix.resize(prefix.size() - strlen(AB_SLOT_A_SUFFIX));
//Check if A/B versions of this ptn exist
snprintf(buf, sizeof(buf) - 1, "%s/%s%s", BOOT_DEV_DIR,
prefix.c_str(),
AB_SLOT_A_SUFFIX);
if (stat(buf, &st))
continue;
memset(buf, '\0', sizeof(buf));
snprintf(buf, sizeof(buf) - 1, "%s/%s%s", BOOT_DEV_DIR,
prefix.c_str(),
AB_SLOT_B_SUFFIX);
if (stat(buf, &st))
continue;
memset(slotA, 0, sizeof(slotA));
memset(slotB, 0, sizeof(slotB));
snprintf(slotA, sizeof(slotA) - 1, "%s%s", prefix.c_str(),
AB_SLOT_A_SUFFIX);
snprintf(slotB, sizeof(slotB) - 1,"%s%s", prefix.c_str(),
AB_SLOT_B_SUFFIX);
//Get the disks containing the partitions that were passed in.
if (!diskA) {
diskA = boot_ctl_get_disk_info(slotA);
if (!diskA)
goto error;
}
if (!diskB) {
diskB = boot_ctl_get_disk_info(slotB);
if (!diskB)
goto error;
}
//Get partition entry for slot A & B from the primary
//and backup tables.
pentryA = gpt_disk_get_pentry(diskA, slotA, PRIMARY_GPT);
pentryA_bak = gpt_disk_get_pentry(diskA, slotA, SECONDARY_GPT);
pentryB = gpt_disk_get_pentry(diskB, slotB, PRIMARY_GPT);
pentryB_bak = gpt_disk_get_pentry(diskB, slotB, SECONDARY_GPT);
if ( !pentryA || !pentryA_bak || !pentryB || !pentryB_bak) {
//None of these should be NULL since we have already
//checked for A & B versions earlier.
ALOGE("Slot pentries for %s not found.",
prefix.c_str());
goto error;
}
memset(active_guid, '\0', sizeof(active_guid));
memset(inactive_guid, '\0', sizeof(inactive_guid));
if (get_partition_attribute(slotA, ATTR_SLOT_ACTIVE) == 1) {
//A is the current active slot
memcpy((void*)active_guid, (const void*)pentryA,
TYPE_GUID_SIZE);
memcpy((void*)inactive_guid,(const void*)pentryB,
TYPE_GUID_SIZE);
} else if (get_partition_attribute(slotB,
ATTR_SLOT_ACTIVE) == 1) {
//B is the current active slot
memcpy((void*)active_guid, (const void*)pentryB,
TYPE_GUID_SIZE);
memcpy((void*)inactive_guid, (const void*)pentryA,
TYPE_GUID_SIZE);
} else {
ALOGE("Both A & B for %s are inactive..Aborting",
prefix.c_str());
goto error;
}
if (!strncmp(slot_suffix_arr[slot], AB_SLOT_A_SUFFIX,
strlen(AB_SLOT_A_SUFFIX))){
//Mark A as active in primary table
UPDATE_SLOT(pentryA, active_guid, SLOT_ACTIVE);
//Mark A as active in backup table
UPDATE_SLOT(pentryA_bak, active_guid, SLOT_ACTIVE);
//Mark B as inactive in primary table
UPDATE_SLOT(pentryB, inactive_guid, SLOT_INACTIVE);
//Mark B as inactive in backup table
UPDATE_SLOT(pentryB_bak, inactive_guid, SLOT_INACTIVE);
} else if (!strncmp(slot_suffix_arr[slot], AB_SLOT_B_SUFFIX,
strlen(AB_SLOT_B_SUFFIX))){
//Mark B as active in primary table
UPDATE_SLOT(pentryB, active_guid, SLOT_ACTIVE);
//Mark B as active in backup table
UPDATE_SLOT(pentryB_bak, active_guid, SLOT_ACTIVE);
//Mark A as inavtive in primary table
UPDATE_SLOT(pentryA, inactive_guid, SLOT_INACTIVE);
//Mark A as inactive in backup table
UPDATE_SLOT(pentryA_bak, inactive_guid, SLOT_INACTIVE);
} else {
//Something has gone terribly terribly wrong
ALOGE("%s: Unknown slot suffix!", __func__);
goto error;
}
if (diskA) {
if (gpt_disk_update_crc(diskA) != 0) {
ALOGE("%s: Failed to update gpt_disk crc",
__func__);
goto error;
}
}
if (diskB) {
if (gpt_disk_update_crc(diskB) != 0) {
ALOGE("%s: Failed to update gpt_disk crc",
__func__);
goto error;
}
}
}
//write updated content to disk
if (diskA) {
if (gpt_disk_commit(diskA)) {
ALOGE("Failed to commit disk entry");
goto error;
}
gpt_disk_free(diskA);
}
if (diskB) {
if (gpt_disk_commit(diskB)) {
ALOGE("Failed to commit disk entry");
goto error;
}
gpt_disk_free(diskB);
}
return 0;
error:
if (diskA)
gpt_disk_free(diskA);
if (diskB)
gpt_disk_free(diskB);
return -1;
}
int set_active_boot_slot(struct boot_control_module *module, unsigned slot)
{
map<string, vector<string>> ptn_map;
vector<string> ptn_vec;
const char ptn_list[][MAX_GPT_NAME_SIZE] = { AB_PTN_LIST };
uint32_t i;
int rc = -1;
int is_ufs = gpt_utils_is_ufs_device();
map<string, vector<string>>::iterator map_iter;
if (boot_control_check_slot_sanity(module, slot)) {
ALOGE("%s: Bad arguments", __func__);
goto error;
}
//The partition list just contains prefixes(without the _a/_b) of the
//partitions that support A/B. In order to get the layout we need the
//actual names. To do this we append the slot suffix to every member
//in the list.
for (i = 0; i < ARRAY_SIZE(ptn_list); i++) {
//XBL & XBL_CFG are handled differrently for ufs devices so
//ignore them
if (is_ufs && (!strncmp(ptn_list[i],
PTN_XBL,
strlen(PTN_XBL))
|| !strncmp(ptn_list[i],
PTN_XBL_CFG,
strlen(PTN_XBL_CFG))))
continue;
//The partition list will be the list of partitions
//corresponding to the slot being set active
string cur_ptn = ptn_list[i];
cur_ptn.append(slot_suffix_arr[slot]);
ptn_vec.push_back(cur_ptn);
}
//The partition map gives us info in the following format:
// [path_to_block_device_1]--><partitions on device 1>
// [path_to_block_device_2]--><partitions on device 2>
// ...
// ...
// eg:
// [/dev/block/sdb]---><system, boot, rpm, tz,....>
if (gpt_utils_get_partition_map(ptn_vec, ptn_map)) {
ALOGE("%s: Failed to get partition map",
__func__);
goto error;
}
for (map_iter = ptn_map.begin(); map_iter != ptn_map.end(); map_iter++){
if (map_iter->second.size() < 1)
continue;
if (boot_ctl_set_active_slot_for_partitions(map_iter->second,
slot)) {
ALOGE("%s: Failed to set active slot", __func__);
goto error;
}
}
if (is_ufs) {
if (!strncmp(slot_suffix_arr[slot], AB_SLOT_A_SUFFIX,
strlen(AB_SLOT_A_SUFFIX))){
//Set xbl_a as the boot lun
rc = gpt_utils_set_xbl_boot_partition(NORMAL_BOOT);
} else if (!strncmp(slot_suffix_arr[slot], AB_SLOT_B_SUFFIX,
strlen(AB_SLOT_B_SUFFIX))){
//Set xbl_b as the boot lun
rc = gpt_utils_set_xbl_boot_partition(BACKUP_BOOT);
} else {
//Something has gone terribly terribly wrong
ALOGE("%s: Unknown slot suffix!", __func__);
goto error;
}
if (rc) {
ALOGE("%s: Failed to switch xbl boot partition",
__func__);
goto error;
}
}
return 0;
error:
return -1;
}
int set_slot_as_unbootable(struct boot_control_module *module, unsigned slot)
{
if (boot_control_check_slot_sanity(module, slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
if (update_slot_attribute(slot_suffix_arr[slot],
ATTR_UNBOOTABLE)) {
goto error;
}
return 0;
error:
ALOGE("%s: Failed to mark slot unbootable", __func__);
return -1;
}
int is_slot_bootable(struct boot_control_module *module, unsigned slot)
{
int attr = 0;
char bootPartition[MAX_GPT_NAME_SIZE + 1] = {0};
if (boot_control_check_slot_sanity(module, slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
snprintf(bootPartition,
sizeof(bootPartition) - 1, "boot%s",
slot_suffix_arr[slot]);
attr = get_partition_attribute(bootPartition, ATTR_UNBOOTABLE);
if (attr >= 0)
return !attr;
error:
return -1;
}
int is_slot_marked_successful(struct boot_control_module *module, unsigned slot)
{
int attr = 0;
char bootPartition[MAX_GPT_NAME_SIZE + 1] = {0};
if (boot_control_check_slot_sanity(module, slot) != 0) {
ALOGE("%s: Argument check failed", __func__);
goto error;
}
snprintf(bootPartition,
sizeof(bootPartition) - 1,
"boot%s", slot_suffix_arr[slot]);
attr = get_partition_attribute(bootPartition, ATTR_BOOT_SUCCESSFUL);
if (attr >= 0)
return attr;
error:
return -1;
}
static hw_module_methods_t boot_control_module_methods = {
.open = NULL,
};
boot_control_module_t HAL_MODULE_INFO_SYM = {
.common = {
.tag = HARDWARE_MODULE_TAG,
.module_api_version = 1,
.hal_api_version = 0,
.id = BOOT_CONTROL_HARDWARE_MODULE_ID,
.name = "Boot control HAL",
.author = "Code Aurora Forum",
.methods = &boot_control_module_methods,
},
.init = boot_control_init,
.getNumberSlots = get_number_slots,
.getCurrentSlot = get_current_slot,
.markBootSuccessful = mark_boot_successful,
.setActiveBootSlot = set_active_boot_slot,
.setSlotAsUnbootable = set_slot_as_unbootable,
.isSlotBootable = is_slot_bootable,
.getSuffix = get_suffix,
.isSlotMarkedSuccessful = is_slot_marked_successful,
};
#ifdef __cplusplus
}
#endif

169
common.mk
View file

@ -1,5 +1,5 @@
# #
# Copyright (C) 2022 The LineageOS Project # Copyright (C) 2022-2024 The LineageOS Project
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@ -14,6 +14,13 @@
# limitations under the License. # limitations under the License.
# #
# Partitions
PRODUCT_PACKAGES += \
vendor_bt_firmware_mountpoint \
vendor_dsp_mountpoint \
vendor_firmware_mnt_mountpoint \
vendor_fsg_mountpoint
PRODUCT_BUILD_SUPER_PARTITION := false PRODUCT_BUILD_SUPER_PARTITION := false
PRODUCT_USE_DYNAMIC_PARTITIONS := true PRODUCT_USE_DYNAMIC_PARTITIONS := true
@ -23,6 +30,9 @@ $(call inherit-product, $(SRC_TARGET_DIR)/product/emulated_storage.mk)
# Installs gsi keys into ramdisk, to boot a GSI with verified boot. # Installs gsi keys into ramdisk, to boot a GSI with verified boot.
$(call inherit-product, $(SRC_TARGET_DIR)/product/developer_gsi_keys.mk) $(call inherit-product, $(SRC_TARGET_DIR)/product/developer_gsi_keys.mk)
# Add common definitions for Qualcomm
$(call inherit-product, hardware/qcom-caf/common/common.mk)
# Overlays # Overlays
DEVICE_PACKAGE_OVERLAYS += \ DEVICE_PACKAGE_OVERLAYS += \
$(LOCAL_PATH)/overlay-lineage $(LOCAL_PATH)/overlay-lineage
@ -69,19 +79,12 @@ PRODUCT_COPY_FILES += \
# Boot control # Boot control
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.boot@1.1-impl-qti \ android.hardware.boot-service.qti \
android.hardware.boot@1.1-impl-qti.recovery \ android.hardware.boot-service.qti.recovery
android.hardware.boot@1.1-service \
bootctrl.holi \
bootctrl.holi.recovery
PRODUCT_PACKAGES_DEBUG += \ PRODUCT_PACKAGES_DEBUG += \
bootctl bootctl
# Ant
PRODUCT_PACKAGES += \
com.dsi.ant@1.0.vendor
# Atrace # Atrace
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.atrace@1.0-service android.hardware.atrace@1.0-service
@ -92,7 +95,6 @@ PRODUCT_PACKAGES += \
android.hardware.audio.effect@6.0-impl \ android.hardware.audio.effect@6.0-impl \
android.hardware.audio.service \ android.hardware.audio.service \
android.hardware.bluetooth@1.0 \ android.hardware.bluetooth@1.0 \
android.hardware.bluetooth@1.0.vendor \
android.hardware.bluetooth.audio-impl \ android.hardware.bluetooth.audio-impl \
android.hardware.soundtrigger@2.3-impl \ android.hardware.soundtrigger@2.3-impl \
audioadsprpcd \ audioadsprpcd \
@ -134,26 +136,10 @@ PRODUCT_COPY_FILES += \
frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml
# Authsecret
PRODUCT_PACKAGES += \
android.hardware.authsecret@1.0.vendor
# Bluetooth
PRODUCT_PACKAGES += \
android.hardware.bluetooth@1.0.vendor \
vendor.qti.hardware.bluetooth_audio@2.1.vendor \
vendor.qti.hardware.btconfigstore@1.0.vendor \
vendor.qti.hardware.btconfigstore@2.0.vendor
# Camera # Camera
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.camera.provider@2.4-impl \ android.hardware.camera.provider@2.4-impl \
android.hardware.camera.provider@2.4-service_64 \ android.hardware.camera.provider@2.4-service_64
libcamera2ndk_vendor \
libexif.vendor:64 \
libgui_vendor \
libyuv.vendor:64 \
vendor.qti.hardware.camera.postproc@1.0.vendor
# Charger # Charger
WITH_LINEAGE_CHARGER := false WITH_LINEAGE_CHARGER := false
@ -167,31 +153,13 @@ PRODUCT_PACKAGES += \
android.hardware.graphics.mapper@3.0-impl-qti-display \ android.hardware.graphics.mapper@3.0-impl-qti-display \
android.hardware.graphics.mapper@4.0-impl-qti-display \ android.hardware.graphics.mapper@4.0-impl-qti-display \
init.qti.display_boot.sh \ init.qti.display_boot.sh \
libdisplayconfig.qti \
libdisplayconfig.system.qti \
libmemutils \
libqdMetaData \
libsdmcore \
libsdmutils \
libtinyxml \
vendor.display.config@1.15.vendor \
vendor.display.config@2.0 \
vendor.display.config@2.0.vendor \
vendor.qti.hardware.display.allocator-service \ vendor.qti.hardware.display.allocator-service \
vendor.qti.hardware.display.composer-service \ vendor.qti.hardware.display.composer-service \
vendor.qti.hardware.display.mapper@1.1.vendor \ vendor.qti.hardware.memtrack-service \
vendor.qti.hardware.display.mapper@2.0.vendor \ libdisplayconfig.system.qti
vendor.qti.hardware.display.mapper@3.0.vendor \
vendor.qti.hardware.display.mapper@4.0.vendor \
vendor.qti.hardware.display.mapperextensions@1.0.vendor \
vendor.qti.hardware.display.mapperextensions@1.1.vendor \
vendor.qti.hardware.display.mapperextensions@1.2.vendor \
vendor.qti.hardware.display.mapperextensions@1.3.vendor \
vendor.qti.hardware.memtrack-service
# DRM # DRM
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.drm@1.4.vendor \
android.hardware.drm-service.clearkey android.hardware.drm-service.clearkey
# fastbootd # fastbootd
@ -199,9 +167,9 @@ PRODUCT_PACKAGES += \
android.hardware.fastboot@1.1-impl.custom \ android.hardware.fastboot@1.1-impl.custom \
fastbootd fastbootd
# Gatekeeper # Framework detect
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.gatekeeper@1.0.vendor libvndfwk_detect_jni.qti.vendor # Needed by CNE app
# GPS # GPS
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
@ -215,11 +183,6 @@ PRODUCT_PACKAGES += \
android.hardware.health@2.1-impl.recovery \ android.hardware.health@2.1-impl.recovery \
android.hardware.health@2.1-service android.hardware.health@2.1-service
# HIDL
PRODUCT_PACKAGES += \
libhidltransport.vendor \
libhwbinder.vendor
# Init # Init
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/rootdir/etc/fstab.qcom:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.qcom $(LOCAL_PATH)/rootdir/etc/fstab.qcom:$(TARGET_COPY_OUT_VENDOR_RAMDISK)/first_stage_ramdisk/fstab.qcom
@ -235,6 +198,9 @@ $(foreach f,$(wildcard $(LOCAL_PATH)/rootdir/etc/init/*.rc),\
$(foreach f,$(wildcard $(LOCAL_PATH)/rootdir/bin/*.sh),\ $(foreach f,$(wildcard $(LOCAL_PATH)/rootdir/bin/*.sh),\
$(eval PRODUCT_COPY_FILES += $(f):$(TARGET_COPY_OUT_VENDOR)/bin/$(notdir $f))) $(eval PRODUCT_COPY_FILES += $(f):$(TARGET_COPY_OUT_VENDOR)/bin/$(notdir $f)))
PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/recovery/root/init.recovery.qcom.rc:recovery/root/init.recovery.qcom.rc
# IPACM # IPACM
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
ipacm \ ipacm \
@ -247,11 +213,11 @@ PRODUCT_COPY_FILES += \
# Kernel # Kernel
PRODUCT_ENABLE_UFFD_GC := false PRODUCT_ENABLE_UFFD_GC := false
# Keymaster
PRODUCT_PACKAGES += \
android.hardware.keymaster@4.1.vendor
# Media # Media
PRODUCT_PACKAGES += \
libcodec2_hidl@1.0.vendor \
libcodec2_vndk.vendor
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/media/init.qti.media.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qti.media.sh \ $(LOCAL_PATH)/media/init.qti.media.sh:$(TARGET_COPY_OUT_VENDOR)/bin/init.qti.media.sh \
$(LOCAL_PATH)/media/init.qti.media.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.qti.media.rc $(LOCAL_PATH)/media/init.qti.media.rc:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.qti.media.rc
@ -273,37 +239,11 @@ PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/media/blair/media_codecs_blair.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_blair.xml \ $(LOCAL_PATH)/media/blair/media_codecs_blair.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_blair.xml \
$(LOCAL_PATH)/media/blair/media_profiles_blair.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_blair.xml $(LOCAL_PATH)/media/blair/media_profiles_blair.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_blair.xml
PRODUCT_PACKAGES += \
android.hardware.media.omx@1.0-service \
libstagefright_omx.vendor \
libavservices_minijail \
libavservices_minijail.vendor \
libcodec2_hidl@1.0.vendor
# Moto hardware # Moto hardware
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
MotoActions \ MotoActions \
MotoCommonOverlay MotoCommonOverlay
# Neural Networks
PRODUCT_PACKAGES += \
android.hardware.neuralnetworks@1.3.vendor
# OMX
PRODUCT_PACKAGES += \
libcodec2_hidl@1.0.vendor \
libcodec2_vndk.vendor \
libmm-omxcore \
libOmxAacEnc \
libOmxAmrEnc \
libOmxCore \
libOmxEvrcEnc \
libOmxG711Enc \
libOmxQcelp13Enc \
libstagefrighthw \
libstagefright_softomx.vendor \
libstagefright_softomx_plugin.vendor
# Permissions # Permissions
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \ frameworks/native/data/etc/android.hardware.audio.pro.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.audio.pro.xml \
@ -364,41 +304,17 @@ PRODUCT_PACKAGES += \
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/configs/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json $(LOCAL_PATH)/configs/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json
# QMI
PRODUCT_PACKAGES += \
libjson \
libjsoncpp.vendor \
libcurl.vendor \
libnetutils.vendor:64 \
libqti_vndfwk_detect \
libqti_vndfwk_detect.vendor \
libsqlite.vendor:64 \
libvndfwk_detect_jni.qti \
libvndfwk_detect_jni.qti.vendor
# RenderScript # RenderScript
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.renderscript@1.0-impl android.hardware.renderscript@1.0-impl
# RIL # RFS MSM MPSS symlinks
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.radio@1.5.vendor \ rfs_msm_mpss_readonly_vendor_fsg_symlink
android.hardware.radio.config@1.2.vendor \
android.hardware.radio.deprecated@1.0.vendor \
android.system.net.netd@1.1.vendor \
libion.vendor \
libprotobuf-cpp-full \
libprotobuf-cpp-full-3.9.1-vendorcompat \
libprotobuf-cpp-lite-3.9.1-vendorcompat \
librmnetctl \
libsysutils.vendor \
libxml2
# Sensors # Sensors
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.frameworks.sensorservice@1.0.vendor \ android.hardware.sensors@2.0-service.multihal
android.hardware.sensors@2.0-service.multihal \
libsensorndkbridge
# Soong namespaces # Soong namespaces
PRODUCT_SOONG_NAMESPACES += \ PRODUCT_SOONG_NAMESPACES += \
@ -406,6 +322,7 @@ PRODUCT_SOONG_NAMESPACES += \
hardware/google/interfaces \ hardware/google/interfaces \
hardware/google/pixel \ hardware/google/pixel \
hardware/lineage/interfaces/power-libperfmgr \ hardware/lineage/interfaces/power-libperfmgr \
hardware/motorola \
hardware/qcom-caf/common/libqti-perfd-client hardware/qcom-caf/common/libqti-perfd-client
# Telephony # Telephony
@ -435,14 +352,7 @@ PRODUCT_COPY_FILES += \
# Thermal # Thermal
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.thermal@2.0-service.mock \ android.hardware.thermal-service.qti
android.hardware.thermal@2.0 \
android.hardware.thermal@2.0.vendor
# Trusted UI
PRODUCT_PACKAGES += \
android.hidl.memory.block@1.0.vendor \
vendor.qti.hardware.systemhelper@1.0.vendor
# Update engine # Update engine
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
@ -455,7 +365,7 @@ PRODUCT_PACKAGES_DEBUG += \
# USB # USB
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.usb@1.3-service-qti \ android.hardware.usb-service.qti \
init.qcom.usb.rc \ init.qcom.usb.rc \
init.qcom.usb.sh init.qcom.usb.sh
@ -472,9 +382,6 @@ PRODUCT_PACKAGES += \
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
vendor/qcom/opensource/vibrator/excluded-input-devices.xml:$(TARGET_COPY_OUT_VENDOR)/etc/excluded-input-devices.xml vendor/qcom/opensource/vibrator/excluded-input-devices.xml:$(TARGET_COPY_OUT_VENDOR)/etc/excluded-input-devices.xml
# VNDK
PRODUCT_ENFORCE_ARTIFACT_PATH_REQUIREMENTS := strict
# WiFi # WiFi
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
android.hardware.wifi-service \ android.hardware.wifi-service \
@ -483,15 +390,14 @@ PRODUCT_PACKAGES += \
libwpa_client \ libwpa_client \
libwifi-hal-ctrl \ libwifi-hal-ctrl \
libwifi-hal-qcom \ libwifi-hal-qcom \
vendor.qti.hardware.wifi.hostapd@1.0.vendor \
vendor.qti.hardware.wifi.hostapd@1.1.vendor \
vendor.qti.hardware.wifi.hostapd@1.2.vendor \
vendor.qti.hardware.wifi.supplicant@2.0.vendor \
vendor.qti.hardware.wifi.supplicant@2.1.vendor \
vendor.qti.hardware.wifi.supplicant@2.2.vendor \
wpa_supplicant \ wpa_supplicant \
wpa_supplicant.conf wpa_supplicant.conf
# WiFi firmware symlinks
PRODUCT_PACKAGES += \
firmware_wlan_mac.bin_symlink \
firmware_WCNSS_qcom_cfg.ini_symlink
PRODUCT_COPY_FILES += \ PRODUCT_COPY_FILES += \
$(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \ $(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \
$(LOCAL_PATH)/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \ $(LOCAL_PATH)/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
@ -501,7 +407,8 @@ PRODUCT_VENDOR_MOVE_ENABLED := true
# WiFi Display # WiFi Display
PRODUCT_PACKAGES += \ PRODUCT_PACKAGES += \
libavservices_minijail \ libgui_shim \
libinput_shim \
libnl \ libnl \
libpng.vendor \ libpng.vendor \
libwfdaac_vendor libwfdaac_vendor

View file

@ -26,14 +26,6 @@ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--> -->
<compatibility-matrix version="2.0" type="device"> <compatibility-matrix version="2.0" type="device">
<hal format="hidl" optional="false">
<name>android.frameworks.schedulerservice</name>
<version>1.0</version>
<interface>
<name>ISchedulingPolicyService</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl" optional="false"> <hal format="hidl" optional="false">
<name>android.frameworks.sensorservice</name> <name>android.frameworks.sensorservice</name>
<version>1.0</version> <version>1.0</version>

View file

@ -6,10 +6,10 @@
"Values": [ "Values": [
"9999999", "9999999",
"1708800", "1708800",
"1651200", "576000",
"1516800" "300000"
], ],
"DefaultIndex": 3, "DefaultIndex": 0,
"ResetOnInit": true "ResetOnInit": true
}, },
{ {
@ -17,13 +17,14 @@
"Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq", "Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq",
"Values": [ "Values": [
"9999999", "9999999",
"1708800",
"1324800", "1324800",
"1113600", "1113600",
"691200", "691200",
"576000", "576000",
"300000" "300000"
], ],
"DefaultIndex": 5, "DefaultIndex": 6,
"ResetOnInit": true "ResetOnInit": true
}, },
{ {
@ -53,7 +54,7 @@
"1900800", "1900800",
"1516800" "1516800"
], ],
"DefaultIndex": 3, "DefaultIndex": 0,
"ResetOnInit": true "ResetOnInit": true
}, },
{ {
@ -61,10 +62,13 @@
"Path": "/sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq", "Path": "/sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq",
"Values": [ "Values": [
"9999999", "9999999",
"2054400",
"1651200", "1651200",
"1228800",
"691200", "691200",
"0" "0"
], ],
"DefaultIndex": 5,
"ResetOnInit": true "ResetOnInit": true
}, },
{ {
@ -110,72 +114,20 @@
"Path": "/dev/cpuctl/foreground/cpu.uclamp.min", "Path": "/dev/cpuctl/foreground/cpu.uclamp.min",
"Values": [ "Values": [
"0", "0",
"50",
"100" "100"
], ],
"DefaultIndex": 0, "DefaultIndex": 0,
"ResetOnInit": true "ResetOnInit": true
}, },
{
"Name": "SchedPreferSpread",
"Path": "/proc/sys/kernel/sched_prefer_spread",
"Values": [
"2",
"0"
],
"ResetOnInit": true
},
{
"Name": "SchedBusyHystNs",
"Path": "/proc/sys/kernel/sched_busy_hyst_ns",
"Values": [
"99000000",
"3000000",
"0"
],
"ResetOnInit": true
},
{
"Name": "SchedBusyHystEnableCPUs",
"Path": "/proc/sys/kernel/sched_busy_hysteresis_enable_cpus",
"Values": [
"192",
"15",
"0"
],
"ResetOnInit": true
},
{
"Name": "SchedMinTaskUtilForBoost",
"Path": "/proc/sys/kernel/sched_min_task_util_for_boost",
"Values": [
"0",
"51"
],
"ResetOnInit": true
},
{
"Name": "SchedMinTaskUtilForColoc",
"Path": "/proc/sys/kernel/sched_min_task_util_for_colocation",
"Values": [
"0",
"35"
],
"ResetOnInit": true
},
{ {
"Name": "GPUMaxFreq", "Name": "GPUMaxFreq",
"Path": "/sys/class/kgsl/kgsl-3d0/max_pwrlevel", "Path": "/sys/class/kgsl/kgsl-3d0/max_pwrlevel",
"Values": [ "Values": [
"0", "0",
"1", "1"
"2"
], ],
"Comments": [ "DefaultIndex": 0,
"0 => 840000000",
"1 => 650000000",
"2 => 266000000"
],
"DefaultIndex": 2,
"ResetOnInit": true "ResetOnInit": true
}, },
{ {
@ -184,14 +136,8 @@
"Values": [ "Values": [
"0", "0",
"1", "1",
"2", "3",
"3" "5"
],
"Comments": [
"0 => 840000000",
"1 => 650000000",
"2 => 490000000",
"3 => 266000000"
], ],
"ResetOnInit": true "ResetOnInit": true
}, },
@ -218,7 +164,7 @@
"Path": "/sys/class/kgsl/kgsl-3d0/idle_timer", "Path": "/sys/class/kgsl/kgsl-3d0/idle_timer",
"Values": [ "Values": [
"10000", "10000",
"58" "80"
], ],
"ResetOnInit": true "ResetOnInit": true
}, },
@ -263,9 +209,7 @@
"Path": "/sys/class/devfreq/soc:qcom,cpu-cpu-ddr-bw/min_freq", "Path": "/sys/class/devfreq/soc:qcom,cpu-cpu-ddr-bw/min_freq",
"Values": [ "Values": [
"7980", "7980",
"6881", "5161",
"5931",
"3879",
"762" "762"
], ],
"ResetOnInit": true "ResetOnInit": true
@ -330,14 +274,6 @@
], ],
"ResetOnInit": true "ResetOnInit": true
}, },
{
"Name": "DoubleTapToWakeEnable",
"Path": "/sys/class/sensors/dt-gesture/enable",
"Values": [
"1",
"0"
],
},
{ {
"Name": "PowerHALMainState", "Name": "PowerHALMainState",
"Path": "vendor.powerhal.state", "Path": "vendor.powerhal.state",
@ -374,7 +310,7 @@
"PowerHint": "SUSTAINED_PERFORMANCE", "PowerHint": "SUSTAINED_PERFORMANCE",
"Node": "CPULittleClusterMaxFreq", "Node": "CPULittleClusterMaxFreq",
"Duration": 0, "Duration": 0,
"Value": "1651200" "Value": "1708800"
}, },
{ {
"PowerHint": "SUSTAINED_PERFORMANCE", "PowerHint": "SUSTAINED_PERFORMANCE",
@ -385,19 +321,19 @@
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUBigClusterMinFreq", "Node": "CPUBigClusterMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "1651200" "Value": "1651200"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPULittleClusterMinFreq", "Node": "CPULittleClusterMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "1113600" "Value": "1708800"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "UclampTAMin", "Node": "UclampTAMin",
"Duration": 0, "Duration": 1000,
"Value": "50" "Value": "50"
}, },
{ {
@ -408,92 +344,74 @@
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "SchedPreferSpread", "Node": "UclampFgMin",
"Duration": 0, "Duration": 1000,
"Value": "2" "Value": "50"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "SchedBusyHystNs", "Node": "GPUMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "99000000" "Value": "3"
},
{
"PowerHint": "INTERACTION",
"Node": "SchedBusyHystEnableCPUs",
"Duration": 0,
"Value": "192"
},
{
"PowerHint": "INTERACTION",
"Node": "SchedMinTaskUtilForBoost",
"Duration": 0,
"Value": "0"
},
{
"PowerHint": "INTERACTION",
"Node": "SchedMinTaskUtilForColoc",
"Duration": 0,
"Value": "0"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUBWHystTriggerCount", "Node": "CPUBWHystTriggerCount",
"Duration": 0, "Duration": 1000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUBWHystLength", "Node": "CPUBWHystLength",
"Duration": 0, "Duration": 1000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUBWHistMemory", "Node": "CPUBWHistMemory",
"Duration": 0, "Duration": 1000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUBWMinFreq", "Node": "CPUBWMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "7980" "Value": "5161"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUDDRLatLittleMinFreq", "Node": "CPUDDRLatLittleMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUDDRLatBigMinFreq", "Node": "CPUDDRLatBigMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUDDRLatfloorLittleMinFreq", "Node": "CPUDDRLatfloorLittleMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "CPUDDRLatfloorBigMinFreq", "Node": "CPUDDRLatfloorBigMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "L3LittleClusterMinFreq", "Node": "L3LittleClusterMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "1171200000" "Value": "1171200000"
}, },
{ {
"PowerHint": "INTERACTION", "PowerHint": "INTERACTION",
"Node": "L3BigClusterMinFreq", "Node": "L3BigClusterMinFreq",
"Duration": 0, "Duration": 1000,
"Value": "1171200000" "Value": "1171200000"
}, },
{ {
@ -520,41 +438,29 @@
"Duration": 0, "Duration": 0,
"Value": "20000" "Value": "20000"
}, },
{
"PowerHint": "INTERACTIVE",
"Node": "SchedBusyHystNs",
"Duration": 0,
"Value": "3000000"
},
{
"PowerHint": "INTERACTIVE",
"Node": "SchedBusyHystEnableCPUs",
"Duration": 0,
"Value": "15"
},
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBigClusterMaxFreq", "Node": "CPUBigClusterMaxFreq",
"Duration": 5000, "Duration": 3000,
"Value": "9999999" "Value": "9999999"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBigClusterMinFreq", "Node": "CPUBigClusterMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "9999999" "Value": "9999999"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPULittleClusterMinFreq", "Node": "CPULittleClusterMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "9999999" "Value": "9999999"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "UclampTAMin", "Node": "UclampTAMin",
"Duration": 3000, "Duration": 3000,
"Value": "50" "Value": "100"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
@ -565,87 +471,81 @@
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBWHystTriggerCount", "Node": "CPUBWHystTriggerCount",
"Duration": 5000, "Duration": 3000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBWHystLength", "Node": "CPUBWHystLength",
"Duration": 5000, "Duration": 3000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBWHistMemory", "Node": "CPUBWHistMemory",
"Duration": 5000, "Duration": 3000,
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUBWMinFreq", "Node": "CPUBWMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUDDRLatLittleMinFreq", "Node": "CPUDDRLatLittleMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUDDRLatBigMinFreq", "Node": "CPUDDRLatBigMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUDDRLatfloorLittleMinFreq", "Node": "CPUDDRLatfloorLittleMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "CPUDDRLatfloorBigMinFreq", "Node": "CPUDDRLatfloorBigMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "7980" "Value": "7980"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "GPUForceClkOn", "Node": "GPUForceClkOn",
"Duration": 5000, "Duration": 3000,
"Value": "1" "Value": "1"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "GPUForceRailOn", "Node": "GPUForceRailOn",
"Duration": 5000, "Duration": 3000,
"Value": "1" "Value": "1"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "GPUIdleTimer", "Node": "GPUIdleTimer",
"Duration": 5000, "Duration": 3000,
"Value": "10000" "Value": "10000"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "L3LittleClusterMinFreq", "Node": "L3LittleClusterMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "1497600000" "Value": "1497600000"
}, },
{ {
"PowerHint": "LAUNCH", "PowerHint": "LAUNCH",
"Node": "L3BigClusterMinFreq", "Node": "L3BigClusterMinFreq",
"Duration": 5000, "Duration": 3000,
"Value": "1497600000" "Value": "1497600000"
}, },
{
"PowerHint": "DOUBLE_TAP_TO_WAKE",
"Node": "DoubleTapToWakeEnable",
"Duration": 0,
"Value": "1"
},
{ {
"PowerHint": "FIXED_PERFORMANCE", "PowerHint": "FIXED_PERFORMANCE",
"Node": "CPUBigClusterMaxFreq", "Node": "CPUBigClusterMaxFreq",
@ -701,22 +601,16 @@
"Value": "0" "Value": "0"
}, },
{ {
"PowerHint": "Flipendo", "PowerHint": "EXPENSIVE_RENDERING",
"Node": "CPULittleClusterMaxFreq",
"Duration": 0,
"Value": "1651200"
},
{
"PowerHint": "Flipendo",
"Node": "CPUBigClusterMaxFreq",
"Duration": 0,
"Value": "1516800"
},
{
"PowerHint": "DISPLAY_INACTIVE",
"Node": "CPULittleClusterMinFreq", "Node": "CPULittleClusterMinFreq",
"Duration": 0, "Duration": 0,
"Value": "300000" "Value": "1708800"
},
{
"PowerHint": "EXPENSIVE_RENDERING",
"Node": "CPUBigClusterMinFreq",
"Duration": 0,
"Value": "1651200"
} }
] ]
} }

90
extract-files.py Executable file
View file

@ -0,0 +1,90 @@
#!/usr/bin/env -S PYTHONPATH=../../../tools/extract-utils python3
#
# SPDX-FileCopyrightText: 2024 The LineageOS Project
# SPDX-License-Identifier: Apache-2.0
#
from extract_utils.fixups_blob import (
blob_fixup,
blob_fixups_user_type,
)
from extract_utils.fixups_lib import (
lib_fixup_remove,
lib_fixups,
lib_fixups_user_type,
)
from extract_utils.main import (
ExtractUtils,
ExtractUtilsModule,
)
namespace_imports = [
'device/motorola/sm6375-common',
'hardware/qcom-caf/common/libqti-perfd-client',
'hardware/qcom-caf/sm8350',
'hardware/qcom-caf/wlan',
'hardware/motorola',
'vendor/qcom/opensource/commonsys/display',
'vendor/qcom/opensource/commonsys-intf/display',
'vendor/qcom/opensource/dataservices',
'vendor/qcom/opensource/display',
]
def lib_fixup_vendor_suffix(lib: str, partition: str, *args, **kwargs):
return f'{lib}_{partition}' if partition == 'vendor' else None
lib_fixups: lib_fixups_user_type = {
**lib_fixups,
(
'com.qualcomm.qti.dpm.api@1.0',
'libmmosal',
'vendor.qti.diaghal@1.0',
'vendor.qti.hardware.fm@1.0',
'vendor.qti.hardware.qccsyshal@1.0',
'vendor.qti.hardware.wifidisplaysession@1.0',
'vendor.qti.imsrtpservice@3.0',
): lib_fixup_vendor_suffix,
(
'libdiag_system',
'libqsap_sdk',
'libthermalclient',
'libwpa_client',
'vendor.qti.qspmhal@1.0',
): lib_fixup_remove,
}
blob_fixups: blob_fixups_user_type = {
'system_ext/bin/wfdservice': blob_fixup()
.add_needed('libwfdservice_shim.so'),
'system_ext/etc/permissions/moto-telephony.xml': blob_fixup()
.regex_replace('/system/', '/system_ext/'),
'system_ext/priv-app/ims/ims.apk': blob_fixup()
.apktool_patch('ims-patches'),
'vendor/lib64/libwvhidl.so': blob_fixup()
.add_needed('libcrypto_shim.so'),
('system_ext/lib/libwfdmmsrc_system.so', 'system_ext/lib64/libwfdmmsrc_system.so'): blob_fixup()
.add_needed('libgui_shim.so'),
'system_ext/lib64/libwfdnative.so': blob_fixup()
.add_needed('libbinder_shim.so')
.add_needed('libinput_shim.so'),
('system_ext/lib/libwfdservice.so', 'system_ext/lib64/libwfdservice.so'): blob_fixup()
.replace_needed('android.media.audio.common.types-V2-cpp.so', 'android.media.audio.common.types-V4-cpp.so'),
'vendor/etc/vintf/manifest/vendor.dolby.media.c2@1.0-service.xml': blob_fixup()
.regex_replace('IComponentStore/default9', 'IComponentStore/default'),
'vendor/etc/qcril_database/qcrilNr.db': blob_fixup()
.patch_file('qcril-patches/qcrilNr.db.patch'),
'vendor/etc/qcril_database/upgrade/config/6.0_config.sql': blob_fixup()
.patch_file('qcril-patches/6.0_config.sql.patch'),
} # fmt: skip
module = ExtractUtilsModule(
'sm6375-common',
'motorola',
blob_fixups=blob_fixups,
lib_fixups=lib_fixups,
namespace_imports=namespace_imports,
)
if __name__ == '__main__':
utils = ExtractUtils.device(module)
utils.run()

View file

@ -1,132 +0,0 @@
#!/bin/bash
#
# SPDX-FileCopyrightText: 2016 The CyanogenMod Project
# SPDX-FileCopyrightText: 2017-2024 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Default to sanitizing the vendor folder before extraction
CLEAN_VENDOR=true
ONLY_COMMON=
ONLY_FIRMWARE=
ONLY_TARGET=
KANG=
SECTION=
while [ "${#}" -gt 0 ]; do
case "${1}" in
--only-common )
ONLY_COMMON=true
;;
--only-firmware )
ONLY_FIRMWARE=true
;;
--only-target )
ONLY_TARGET=true
;;
-n | --no-cleanup )
CLEAN_VENDOR=false
;;
-k | --kang )
KANG="--kang"
;;
-s | --section )
SECTION="${2}"
shift
CLEAN_VENDOR=false
;;
* )
SRC="${1}"
;;
esac
shift
done
if [ -z "${SRC}" ]; then
SRC="adb"
fi
function blob_fixup() {
case "${1}" in
system_ext/lib64/libwfdnative.so)
[ "$2" = "" ] && return 0
"${PATCHELF}" --remove-needed "android.hidl.base@1.0.so" "${2}"
;;
system_ext/etc/permissions/moto-telephony.xml)
[ "$2" = "" ] && return 0
sed -i "s#/system/#/system_ext/#" "${2}"
;;
system_ext/priv-app/ims/ims.apk)
apktool_patch "${2}" "$MY_DIR/ims-patches"
;;
vendor/etc/vintf/manifest/vendor.dolby.media.c2@1.0-service.xml)
[ "$2" = "" ] && return 0
sed -ni '/default.*fqname/!p' "${2}"
;;
*)
return 1
;;
vendor/etc/qcril_database/qcrilNr.db|\
vendor/etc/qcril_database/upgrade/config/*)
sed -i '/persist.vendor.radio.poweron_opt/ s/1/0/g' "${2}"
;;
esac
return 0
}
function blob_fixup_dry() {
blob_fixup "$1" ""
}
function prepare_firmware() {
if [ "${SRC}" != "adb" ]; then
local STAR="${ANDROID_ROOT}"/lineage/scripts/motorola/star.sh
for IMAGE in bootloader radio; do
if [ -f "${SRC}/${IMAGE}.img" ]; then
echo "Extracting Motorola star image ${SRC}/${IMAGE}.img"
sh "${STAR}" "${SRC}/${IMAGE}.img" "${SRC}"
fi
done
local INFO="${ANDROID_ROOT}"/lineage/scripts/motorola/info.sh
./${INFO} "${SRC}"
fi
}
if [ -z "${ONLY_FIRMWARE}" ] && [ -z "${ONLY_TARGET}" ]; then
# Initialize the helper for common device
setup_vendor "${DEVICE_COMMON}" "${VENDOR_COMMON:-$VENDOR}" "${ANDROID_ROOT}" true "${CLEAN_VENDOR}"
extract "${MY_DIR}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
fi
if [ -z "${ONLY_COMMON}" ] && [ -s "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-files.txt" ]; then
# Reinitialize the helper for device
source "${MY_DIR}/../../${VENDOR}/${DEVICE}/extract-files.sh"
setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false "${CLEAN_VENDOR}"
if [ -z "${ONLY_FIRMWARE}" ]; then
extract "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-files.txt" "${SRC}" "${KANG}" --section "${SECTION}"
fi
if [ -z "${SECTION}" ] && [ -f "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-firmware.txt" ]; then
extract_firmware "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-firmware.txt" "${SRC}"
fi
fi
"${MY_DIR}/setup-makefiles.sh"

View file

@ -1,41 +0,0 @@
//
// Copyright (C) 2018 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.
//
cc_library {
name: "libgptutils.moto_holi",
vendor: true,
recovery_available: true,
shared_libs: [
"libcutils",
"liblog",
"libz",
],
cflags: [
"-Wall",
"-Werror",
"-D_BSG_FRAMEWORK_KERNEL_HEADERS",
],
srcs: [
"gpt-utils.cpp",
"recovery-ufs-bsg.cpp",
],
owner: "qti",
header_libs: [
"generated_kernel_headers",
],
export_include_dirs: ["."],
}

File diff suppressed because it is too large Load diff

View file

@ -1,193 +0,0 @@
/*
* Copyright (c) 2013,2016, The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef __GPT_UTILS_H__
#define __GPT_UTILS_H__
#include <vector>
#include <string>
#include <map>
#ifdef __cplusplus
extern "C" {
#endif
#include <unistd.h>
#include <stdlib.h>
/******************************************************************************
* GPT HEADER DEFINES
******************************************************************************/
#define GPT_SIGNATURE "EFI PART"
#define HEADER_SIZE_OFFSET 12
#define HEADER_CRC_OFFSET 16
#define PRIMARY_HEADER_OFFSET 24
#define BACKUP_HEADER_OFFSET 32
#define FIRST_USABLE_LBA_OFFSET 40
#define LAST_USABLE_LBA_OFFSET 48
#define PENTRIES_OFFSET 72
#define PARTITION_COUNT_OFFSET 80
#define PENTRY_SIZE_OFFSET 84
#define PARTITION_CRC_OFFSET 88
#define TYPE_GUID_OFFSET 0
#define TYPE_GUID_SIZE 16
#define PTN_ENTRY_SIZE 128
#define UNIQUE_GUID_OFFSET 16
#define FIRST_LBA_OFFSET 32
#define LAST_LBA_OFFSET 40
#define ATTRIBUTE_FLAG_OFFSET 48
#define PARTITION_NAME_OFFSET 56
#define MAX_GPT_NAME_SIZE 72
/******************************************************************************
* AB RELATED DEFINES
******************************************************************************/
//Bit 48 onwords in the attribute field are the ones where we are allowed to
//store our AB attributes.
#define AB_FLAG_OFFSET (ATTRIBUTE_FLAG_OFFSET + 6)
#define GPT_DISK_INIT_MAGIC 0xABCD
#define AB_PARTITION_ATTR_SLOT_ACTIVE (0x1<<2)
#define AB_PARTITION_ATTR_BOOT_SUCCESSFUL (0x1<<6)
#define AB_PARTITION_ATTR_UNBOOTABLE (0x1<<7)
#define AB_SLOT_ACTIVE_VAL 0x3F
#define AB_SLOT_INACTIVE_VAL 0x0
#define AB_SLOT_ACTIVE 1
#define AB_SLOT_INACTIVE 0
#define AB_SLOT_A_SUFFIX "_a"
#define AB_SLOT_B_SUFFIX "_b"
#define PTN_XBL "xbl"
#define PTN_XBL_CFG "xbl_config"
#define PTN_SWAP_LIST PTN_XBL, PTN_XBL_CFG, "sbl1", "rpm", "tz", "aboot", "abl", "hyp", "lksecapp", "keymaster", "cmnlib", "cmnlib32", "cmnlib64", "pmic", "apdp", "devcfg", "hosd", "keystore", "msadp", "mdtp", "mdtpsecapp", "dsp", "aop", "qupfw", "vbmeta", "dtbo", "imagefv", "ImageFv", "multiimgoem", "multiimgqti", "uefisecapp", "shrm", "cpucp"
#define AB_PTN_LIST PTN_SWAP_LIST, "boot", "system", "vendor", "odm", "modem", "bluetooth", "fsg", "logo", "mdm1m9kefs3", "prov", "spss", "storsec", "vbmeta_system", "vendor_boot"
#define BOOT_DEV_DIR "/dev/block/bootdevice/by-name"
/******************************************************************************
* HELPER MACROS
******************************************************************************/
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
/******************************************************************************
* TYPES
******************************************************************************/
enum boot_update_stage {
UPDATE_MAIN = 1,
UPDATE_BACKUP,
UPDATE_FINALIZE
};
enum gpt_instance {
PRIMARY_GPT = 0,
SECONDARY_GPT
};
enum boot_chain {
NORMAL_BOOT = 0,
BACKUP_BOOT
};
struct gpt_disk {
//GPT primary header
uint8_t *hdr;
//primary header crc
uint32_t hdr_crc;
//GPT backup header
uint8_t *hdr_bak;
//backup header crc
uint32_t hdr_bak_crc;
//Partition entries array
uint8_t *pentry_arr;
//Partition entries array for backup table
uint8_t *pentry_arr_bak;
//Size of the pentry array
uint32_t pentry_arr_size;
//Size of each element in the pentry array
uint32_t pentry_size;
//CRC of the partition entry array
uint32_t pentry_arr_crc;
//CRC of the backup partition entry array
uint32_t pentry_arr_bak_crc;
//Path to block dev representing the disk
char devpath[PATH_MAX];
//Block size of disk
uint32_t block_size;
uint32_t is_initialized;
};
/******************************************************************************
* FUNCTION PROTOTYPES
******************************************************************************/
int prepare_boot_update(enum boot_update_stage stage);
//GPT disk methods
struct gpt_disk* gpt_disk_alloc();
//Free previously allocated gpt_disk struct
void gpt_disk_free(struct gpt_disk *disk);
//Get the details of the disk holding the partition whose name
//is passed in via dev
int gpt_disk_get_disk_info(const char *dev, struct gpt_disk *disk);
//Get pointer to partition entry from a allocated gpt_disk structure
uint8_t* gpt_disk_get_pentry(struct gpt_disk *disk,
const char *partname,
enum gpt_instance instance);
//Update the crc fields of the modified disk structure
int gpt_disk_update_crc(struct gpt_disk *disk);
//Write the contents of struct gpt_disk back to the actual disk
int gpt_disk_commit(struct gpt_disk *disk);
//Return if the current device is UFS based or not
int gpt_utils_is_ufs_device();
//Swtich betwieen using either the primary or the backup
//boot LUN for boot. This is required since UFS boot partitions
//cannot have a backup GPT which is what we use for failsafe
//updates of the other 'critical' partitions. This function will
//not be invoked for emmc targets and on UFS targets is only required
//to be invoked for XBL.
//
//The algorithm to do this is as follows:
//- Find the real block device(eg: /dev/block/sdb) that corresponds
// to the /dev/block/bootdevice/by-name/xbl(bak) symlink
//
//- Once we have the block device 'node' name(sdb in the above example)
// use this node to to locate the scsi generic device that represents
// it by checking the file /sys/block/sdb/device/scsi_generic/sgY
//
//- Once we locate sgY we call the query ioctl on /dev/sgy to switch
//the boot lun to either LUNA or LUNB
int gpt_utils_set_xbl_boot_partition(enum boot_chain chain);
//Given a vector of partition names as a input and a reference to a map,
//populate the map to indicate which physical disk each of the partitions
//sits on. The key in the map is the path to the block device where the
//partiton lies and the value is a vector of strings indicating which of
//the passed in partiton names sits on that device.
int gpt_utils_get_partition_map(std::vector<std::string>& partition_list,
std::map<std::string,std::vector<std::string>>& partition_map);
#ifdef __cplusplus
}
#endif
#endif /* __GPT_UTILS_H__ */

View file

@ -1,255 +0,0 @@
/*
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#define LOG_TAG "recovery_ufs"
#include "recovery-ufs-bsg.h"
#ifndef _BSG_FRAMEWORK_KERNEL_HEADERS
#ifndef _GENERIC_KERNEL_HEADERS
#include <scsi/ufs/ioctl.h>
#include <scsi/ufs/ufs.h>
#endif
#endif
//Size of the buffer that needs to be passed to the UFS ioctl
#define UFS_ATTR_DATA_SIZE 32
#ifdef _BSG_FRAMEWORK_KERNEL_HEADERS
static int get_ufs_bsg_dev(void)
{
DIR *dir;
struct dirent *ent;
int ret = -ENODEV;
if ((dir = opendir ("/dev")) != NULL) {
/* read all the files and directories within directory */
while ((ent = readdir(dir)) != NULL) {
if (!strcmp(ent->d_name, "ufs-bsg") ||
!strcmp(ent->d_name, "ufs-bsg0")) {
snprintf(ufs_bsg_dev, FNAME_SZ, "/dev/%s", ent->d_name);
ret = 0;
break;
}
}
if (ret)
ALOGE("could not find the ufs-bsg dev\n");
closedir (dir);
} else {
/* could not open directory */
ALOGE("could not open /dev (error no: %d)\n", errno);
ret = -EINVAL;
}
return ret;
}
int ufs_bsg_dev_open(void)
{
int ret;
if (!fd_ufs_bsg) {
fd_ufs_bsg = open(ufs_bsg_dev, O_RDWR);
ret = errno;
if (fd_ufs_bsg < 0) {
ALOGE("Unable to open %s (error no: %d)",
ufs_bsg_dev, errno);
fd_ufs_bsg = 0;
return ret;
}
}
return 0;
}
void ufs_bsg_dev_close(void)
{
if (fd_ufs_bsg) {
close(fd_ufs_bsg);
fd_ufs_bsg = 0;
}
}
static int ufs_bsg_ioctl(int fd, struct ufs_bsg_request *req,
struct ufs_bsg_reply *rsp, __u8 *buf, __u32 buf_len,
enum bsg_ioctl_dir dir)
{
int ret;
struct sg_io_v4 sg_io{};
sg_io.guard = 'Q';
sg_io.protocol = BSG_PROTOCOL_SCSI;
sg_io.subprotocol = BSG_SUB_PROTOCOL_SCSI_TRANSPORT;
sg_io.request_len = sizeof(*req);
sg_io.request = (__u64)req;
sg_io.response = (__u64)rsp;
sg_io.max_response_len = sizeof(*rsp);
if (dir == BSG_IOCTL_DIR_FROM_DEV) {
sg_io.din_xfer_len = buf_len;
sg_io.din_xferp = (__u64)(buf);
} else {
sg_io.dout_xfer_len = buf_len;
sg_io.dout_xferp = (__u64)(buf);
}
ret = ioctl(fd, SG_IO, &sg_io);
if (ret)
ALOGE("%s: Error from sg_io ioctl (return value: %d, error no: %d, reply result from LLD: %d\n)",
__func__, ret, errno, rsp->result);
if (sg_io.info || rsp->result) {
ALOGE("%s: Error from sg_io info (check sg info: device_status: 0x%x, transport_status: 0x%x, driver_status: 0x%x, reply result from LLD: %d\n)",
__func__, sg_io.device_status, sg_io.transport_status,
sg_io.driver_status, rsp->result);
ret = -EAGAIN;
}
return ret;
}
static void compose_ufs_bsg_query_req(struct ufs_bsg_request *req, __u8 func,
__u8 opcode, __u8 idn, __u8 index, __u8 sel,
__u16 length)
{
struct utp_upiu_header *hdr = &req->upiu_req.header;
struct utp_upiu_query *qr = &req->upiu_req.qr;
req->msgcode = UTP_UPIU_QUERY_REQ;
hdr->dword_0 = DWORD(UTP_UPIU_QUERY_REQ, 0, 0, 0);
hdr->dword_1 = DWORD(0, func, 0, 0);
hdr->dword_2 = DWORD(0, 0, length >> 8, (__u8)length);
qr->opcode = opcode;
qr->idn = idn;
qr->index = index;
qr->selector = sel;
qr->length = htobe16(length);
}
static int ufs_query_attr(int fd, __u32 value,
__u8 func, __u8 opcode, __u8 idn,
__u8 index, __u8 sel)
{
struct ufs_bsg_request req{};
struct ufs_bsg_reply rsp{};
enum bsg_ioctl_dir dir = BSG_IOCTL_DIR_FROM_DEV;
int ret = 0;
if (opcode == QUERY_REQ_OP_WRITE_DESC || opcode == QUERY_REQ_OP_WRITE_ATTR)
dir = BSG_IOCTL_DIR_TO_DEV;
req.upiu_req.qr.value = htobe32(value);
compose_ufs_bsg_query_req(&req, func, opcode, idn, index, sel, 0);
ret = ufs_bsg_ioctl(fd, &req, &rsp, 0, 0, dir);
if (ret)
ALOGE("%s: Error from ufs_bsg_ioctl (return value: %d, error no: %d\n)",
__func__, ret, errno);
return ret;
}
int32_t set_boot_lun(char *sg_dev __unused,uint8_t lun_id)
{
int32_t ret;
__u32 boot_lun_id = lun_id;
ret = get_ufs_bsg_dev();
if (ret)
return ret;
ALOGV("Found the ufs bsg dev: %s\n", ufs_bsg_dev);
ret = ufs_bsg_dev_open();
if (ret)
return ret;
ALOGV("Opened ufs bsg dev: %s\n", ufs_bsg_dev);
ret = ufs_query_attr(fd_ufs_bsg, boot_lun_id, QUERY_REQ_FUNC_STD_WRITE,
QUERY_REQ_OP_WRITE_ATTR, QUERY_ATTR_IDN_BOOT_LU_EN, 0, 0);
if (ret) {
ALOGE("Error requesting ufs attr idn %d via query ioctl (return value: %d, error no: %d)",
QUERY_ATTR_IDN_BOOT_LU_EN, ret, errno);
goto out;
}
out:
ufs_bsg_dev_close();
return ret;
}
#endif
#ifndef _BSG_FRAMEWORK_KERNEL_HEADERS
int32_t set_boot_lun(char *sg_dev, uint8_t boot_lun_id)
{
#ifndef _GENERIC_KERNEL_HEADERS
int fd = -1;
int rc;
struct ufs_ioctl_query_data *data = NULL;
size_t ioctl_data_size = sizeof(struct ufs_ioctl_query_data) + UFS_ATTR_DATA_SIZE;
data = (struct ufs_ioctl_query_data*)malloc(ioctl_data_size);
if (!data) {
fprintf(stderr, "%s: Failed to alloc query data struct\n",
__func__);
goto error;
}
memset(data, 0, ioctl_data_size);
data->opcode = UPIU_QUERY_OPCODE_WRITE_ATTR;
data->idn = QUERY_ATTR_IDN_BOOT_LU_EN;
data->buf_size = UFS_ATTR_DATA_SIZE;
data->buffer[0] = boot_lun_id;
fd = open(sg_dev, O_RDWR);
if (fd < 0) {
fprintf(stderr, "%s: Failed to open %s(%s)\n",
__func__,
sg_dev,
strerror(errno));
goto error;
}
rc = ioctl(fd, UFS_IOCTL_QUERY, data);
if (rc) {
fprintf(stderr, "%s: UFS query ioctl failed(%s)\n",
__func__,
strerror(errno));
goto error;
}
close(fd);
free(data);
return 0;
error:
if (fd >= 0)
close(fd);
if (data)
free(data);
return -1;
#else
return 0;
#endif
}
#endif

View file

@ -1,131 +0,0 @@
#ifndef __RECOVERY_UFS_BSG_H__
#define __RECOVERY_UFS_BSG_H__
/*
* Copyright (c) 2020 The Linux Foundation. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following
* disclaimer in the documentation and/or other materials provided
* with the distribution.
* * Neither the name of The Linux Foundation nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include <linux/bsg.h>
#include <scsi/scsi_bsg_ufs.h>
#include <endian.h>
#include <dirent.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#ifdef ANDROID
#include "cutils/log.h"
#endif
#ifdef OE
#include <syslog.h>
#define LOGI(...) syslog(LOG_NOTICE, "INFO:" __VA_ARGS__)
#define LOGV(...) syslog(LOG_NOTICE,"VERB:" __VA_ARGS__)
#define LOGD(...) syslog(LOG_DEBUG,"DBG:" __VA_ARGS__)
#define LOGE(...) syslog(LOG_ERR,"ERR:" __VA_ARGS__)
#define LOGW(...) syslog(LOG_WARNING,"WRN:" __VA_ARGS__)
#define strlcat(d,s,l) snprintf(d+strlen(d),l,"%s",s)
#endif
#define FNAME_SZ 64
#define SG_IO 0x2285
#define DWORD(b3, b2, b1, b0) htobe32((b3 << 24) | (b2 << 16) |\
(b1 << 8) | b0)
/* UFS BSG device nodes */
char ufs_bsg_dev[FNAME_SZ] = "/dev/ufs-bsg";
int fd_ufs_bsg;
int32_t set_ufs_lun(uint8_t lun_id);
#ifdef _BSG_FRAMEWORK_KERNEL_HEADERS
/* UPIU Transaction Codes */
enum {
UTP_UPIU_NOP_OUT = 0x00,
UTP_UPIU_COMMAND = 0x01,
UTP_UPIU_DATA_OUT = 0x02,
UTP_UPIU_TASK_REQ = 0x04,
UTP_UPIU_QUERY_REQ = 0x16,
};
/* UPIU Query Function field */
enum {
QUERY_REQ_FUNC_STD_READ = 0x01,
QUERY_REQ_FUNC_STD_WRITE = 0x81,
};
enum query_req_opcode {
QUERY_REQ_OP_READ_DESC = 0x1,
QUERY_REQ_OP_WRITE_DESC = 0x2,
QUERY_REQ_OP_READ_ATTR = 0x3,
QUERY_REQ_OP_WRITE_ATTR = 0x4,
QUERY_REQ_OP_READ_FLAG = 0x5,
QUERY_REQ_OP_SET_FLAG = 0x6,
QUERY_REQ_OP_CLEAR_FLAG = 0x7,
QUERY_REQ_OP_TOGGLE_FLAG = 0x8,
};
enum query_desc_idn {
QUERY_DESC_IDN_DEVICE = 0x0,
QUERY_DESC_IDN_UNIT = 0x2,
QUERY_DESC_IDN_GEOMETRY = 0x7,
};
enum query_desc_size {
QUERY_DESC_SIZE_DEVICE = 0x40,
QUERY_DESC_SIZE_GEOMETRY = 0x48,
QUERY_DESC_SIZE_UNIT = 0x23,
};
enum bsg_ioctl_dir {
BSG_IOCTL_DIR_TO_DEV,
BSG_IOCTL_DIR_FROM_DEV,
};
enum query_attr_idn {
QUERY_ATTR_IDN_BOOT_LU_EN = 0x00,
QUERY_ATTR_IDN_RESERVED = 0x01,
QUERY_ATTR_IDN_POWER_MODE = 0x02,
QUERY_ATTR_IDN_ACTIVE_ICC_LVL = 0x03,
};
#endif /* _BSG_FRAMEWORK_KERNEL_HEADERS */
#endif /* __RECOVERY_UFS_BSG_H__ */

View file

@ -1,97 +0,0 @@
/*-
* COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or
* code or tables extracted from it, as desired without restriction.
*/
/*
* First, the polynomial itself and its table of feedback terms. The
* polynomial is
* X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0
*
* Note that we take it "backwards" and put the highest-order term in
* the lowest-order bit. The X^32 term is "implied"; the LSB is the
* X^31 term, etc. The X^0 term (usually shown as "+1") results in
* the MSB being 1
*
* Note that the usual hardware shift register implementation, which
* is what we're using (we're merely optimizing it by doing eight-bit
* chunks at a time) shifts bits into the lowest-order term. In our
* implementation, that means shifting towards the right. Why do we
* do it this way? Because the calculated CRC must be transmitted in
* order from highest-order term to lowest-order term. UARTs transmit
* characters in order from LSB to MSB. By storing the CRC this way
* we hand it to the UART in the order low-byte to high-byte; the UART
* sends each low-bit to hight-bit; and the result is transmission bit
* by bit from highest- to lowest-order term without requiring any bit
* shuffling on our part. Reception works similarly
*
* The feedback terms table consists of 256, 32-bit entries. Notes
*
* The table can be generated at runtime if desired; code to do so
* is shown later. It might not be obvious, but the feedback
* terms simply represent the results of eight shift/xor opera
* tions for all combinations of data and CRC register values
*
* The values must be right-shifted by eight bits by the "updcrc
* logic; the shift must be unsigned (bring in zeroes). On some
* hardware you could probably optimize the shift in assembler by
* using byte-swap instructions
* polynomial $edb88320
*
*
* CRC32 code derived from work by Gary S. Brown.
*/
/* Code taken from FreeBSD 8 */
#include <stdint.h>
#include <stdio.h>
static uint32_t crc32_tab[] = {
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91,
0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9, 0xfa0f3d63, 0x8d080df5,
0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599, 0xb8bda50f,
0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924, 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d,
0x76dc4190, 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457,
0x65b0d9c6, 0x12b7e950, 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb,
0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9,
0x5005713c, 0x270241aa, 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad,
0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683,
0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb, 0x196c3671, 0x6e6b06e7,
0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef, 0x4669be79,
0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236, 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f,
0xc5ba3bbe, 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21,
0x86d3d2d4, 0xf1d4e242, 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45,
0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db,
0xaed16a4a, 0xd9d65adc, 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693, 0x54de5729, 0x23d967bf,
0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d};
/*
* A function that calculates the CRC-32 based on the table above is
* given below for documentation purposes. An equivalent implementation
* of this function that's actually used in the kernel can be found
* in sys/libkern.h, where it can be inlined.
*/
uint32_t sparse_crc32(uint32_t crc_in, const void* buf, size_t size) {
const uint8_t* p = reinterpret_cast<const uint8_t*>(buf);
uint32_t crc;
crc = crc_in ^ ~0U;
while (size--) crc = crc32_tab[(crc ^ *p++) & 0xFF] ^ (crc >> 8);
return crc ^ ~0U;
}

View file

@ -1,24 +0,0 @@
/*
* 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.
*/
#ifndef _LIBSPARSE_SPARSE_CRC32_H_
#define _LIBSPARSE_SPARSE_CRC32_H_
#include <stdint.h>
uint32_t sparse_crc32(uint32_t crc, const void* buf, size_t size);
#endif

View file

@ -1,35 +1,39 @@
From cfd224560c7d76c9bc219eb2c12b099e1537956c Mon Sep 17 00:00:00 2001 From 0f3f402c9718d24a66d3a59b36c167de848fcff9 Mon Sep 17 00:00:00 2001
From: Erfan Abdi <erfangplus@gmail.com> From: Erfan Abdi <erfangplus@gmail.com>
Date: Sun, 26 Jan 2020 20:23:44 +0330 Date: Sun, 26 Jan 2020 20:23:44 +0330
Subject: [PATCH 1/3] ImsConfigImpl: Return 0 in getWfcMDN in any case Subject: [PATCH 1/5] ImsConfigImpl: Return 0 in getWfcMDN in any case
--- ---
smali/org/codeaurora/ims/ImsConfigImpl.smali | 14 -------------- smali/org/codeaurora/ims/ImsConfigImpl.smali | 13 -------------
1 file changed, 14 deletions(-) 1 file changed, 13 deletions(-)
diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali
index 8daf3342..b2ab6538 100644 index 644a553..c921038 100644
--- a/smali/org/codeaurora/ims/ImsConfigImpl.smali --- a/smali/org/codeaurora/ims/ImsConfigImpl.smali
+++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali +++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali
@@ -1385,22 +1385,8 @@ @@ -1471,22 +1471,9 @@
.param p1, "subid" # I .param p1, "subid" # I
.line 814 .line 849
- iget-object v0, p0, Lorg/codeaurora/ims/ImsConfigImpl;->mContext:Landroid/content/Context; - const-string v0, "wfc_ims_mdn"
- -
- const-string v1, "wfc_ims_mdn" - iget-object v1, p0, Lorg/codeaurora/ims/ImsConfigImpl;->mContext:Landroid/content/Context;
- -
- invoke-static {p1, v1, v0}, Landroid/telephony/SubscriptionManager;->getSubscriptionProperty(ILjava/lang/String;Landroid/content/Context;)Ljava/lang/String; - invoke-virtual {p0, p1, v0, v1}, Lorg/codeaurora/ims/ImsConfigImpl;->getSubscriptionProperty(ILjava/lang/String;Landroid/content/Context;)Ljava/lang/String;
- -
- move-result-object v0 - move-result-object v0
- -
- .line 816 - .line 851
- .local v0, "mdn":Ljava/lang/String; - .local v0, "mdn":Ljava/lang/String;
- if-nez v0, :cond_0 - if-nez v0, :cond_0
-
const-string v0, "0" const-string v0, "0"
- .line 817 - .line 852
- :cond_0 - :cond_0
return-object v0 return-object v0
.end method .end method
--
2.43.0

View file

@ -1,7 +1,7 @@
From ab173b9875550f2462b8ed80ada0dff9bd2804d0 Mon Sep 17 00:00:00 2001 From 9f41786278a80f4e8f8629ae13b1d5cc38c85fde Mon Sep 17 00:00:00 2001
From: Vachounet <vachounet@live.fr> From: Vachounet <vachounet@live.fr>
Date: Wed, 27 Jan 2021 23:28:48 +0100 Date: Wed, 27 Jan 2021 23:28:48 +0100
Subject: [PATCH 2/3] ImsConfigImpl: don't call setSubscriptionProperty for Subject: [PATCH 2/5] ImsConfigImpl: don't call setSubscriptionProperty for
wfc_ims_mdn wfc_ims_mdn
--- ---
@ -9,11 +9,11 @@ Subject: [PATCH 2/3] ImsConfigImpl: don't call setSubscriptionProperty for
1 file changed, 70 deletions(-) 1 file changed, 70 deletions(-)
diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali
index c921038c..c38fe206 100644 index c921038..c38fe20 100644
--- a/smali/org/codeaurora/ims/ImsConfigImpl.smali --- a/smali/org/codeaurora/ims/ImsConfigImpl.smali
+++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali +++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali
@@ -3070,76 +3070,6 @@ @@ -3070,76 +3070,6 @@
.line 790 .line 790
:cond_2 :cond_2
- if-ne p1, v2, :cond_3 - if-ne p1, v2, :cond_3
@ -87,5 +87,8 @@ index c921038c..c38fe206 100644
- :cond_3 - :cond_3
- :goto_1 - :goto_1
const/16 v3, 0x2c const/16 v3, 0x2c
const/4 v5, 0x1 const/4 v5, 0x1
--
2.43.0

View file

@ -1,7 +1,7 @@
From cadd5ec3e6f097bd5619e22bf827fb685e38c1d2 Mon Sep 17 00:00:00 2001 From 4dd42142e2fbb2afd60ca6d8b4ac497c8d978f74 Mon Sep 17 00:00:00 2001
From: Andrew Hexen <SyberHexen@gmail.com> From: Andrew Hexen <SyberHexen@gmail.com>
Date: Thu, 25 May 2023 11:51:44 -0700 Date: Thu, 25 May 2023 11:51:44 -0700
Subject: [PATCH 3/3] ims: remove uses-library for moto-ims-ext Subject: [PATCH 3/5] ims: remove uses-library for moto-ims-ext
* This was added in 13 which breaks ims: * This was added in 13 which breaks ims:
'java.lang.ClassNotFoundException org/codeaurora/ims/utils/QtiCarrierConfigHelper/ImsService.java' 'java.lang.ClassNotFoundException org/codeaurora/ims/utils/QtiCarrierConfigHelper/ImsService.java'
@ -13,7 +13,7 @@ Signed-off-by: Andrew Hexen <SyberHexen@gmail.com>
1 file changed, 1 insertion(+), 2 deletions(-) 1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 3b3dc516..6f4b3de4 100644 index 3b3dc51..6f4b3de 100644
--- a/AndroidManifest.xml --- a/AndroidManifest.xml
+++ b/AndroidManifest.xml +++ b/AndroidManifest.xml
@@ -48,9 +48,8 @@ @@ -48,9 +48,8 @@
@ -28,3 +28,6 @@ index 3b3dc516..6f4b3de4 100644
-</manifest> -</manifest>
\ No newline at end of file \ No newline at end of file
+</manifest> +</manifest>
--
2.43.0

View file

@ -1,7 +1,7 @@
From 789e1c4dace46b872198b5180ea77afb1b1a2c17 Mon Sep 17 00:00:00 2001 From 74cc53ffea595daf25e176fb1783641994fb794d Mon Sep 17 00:00:00 2001
From: SGCMarkus <markusornik@gmail.com> From: SGCMarkus <markusornik@gmail.com>
Date: Wed, 21 Feb 2024 19:18:49 +0100 Date: Wed, 21 Feb 2024 19:18:49 +0100
Subject: [PATCH] ims: globally set RECEIVER_EXPORTED for registerReceiver Subject: [PATCH 4/5] ims: globally set RECEIVER_EXPORTED for registerReceiver
E AndroidRuntime: FATAL EXCEPTION: main E AndroidRuntime: FATAL EXCEPTION: main
E AndroidRuntime: Process: org.codeaurora.ims, PID: 3692 E AndroidRuntime: Process: org.codeaurora.ims, PID: 3692
@ -15,7 +15,7 @@ E AndroidRuntime: java.lang.RuntimeException: Unable to create service org.codea
5 files changed, 18 insertions(+), 6 deletions(-) 5 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali diff --git a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
index d69a656b..deff6dba 100644 index d69a656..deff6db 100644
--- a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali --- a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
+++ b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali +++ b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
@@ -150,7 +150,9 @@ @@ -150,7 +150,9 @@
@ -30,7 +30,7 @@ index d69a656b..deff6dba 100644
.line 49 .line 49
return-void return-void
diff --git a/smali/org/codeaurora/ims/ImsCallModification.smali b/smali/org/codeaurora/ims/ImsCallModification.smali diff --git a/smali/org/codeaurora/ims/ImsCallModification.smali b/smali/org/codeaurora/ims/ImsCallModification.smali
index 3c209dfd..a18213bf 100644 index 3c209df..a18213b 100644
--- a/smali/org/codeaurora/ims/ImsCallModification.smali --- a/smali/org/codeaurora/ims/ImsCallModification.smali
+++ b/smali/org/codeaurora/ims/ImsCallModification.smali +++ b/smali/org/codeaurora/ims/ImsCallModification.smali
@@ -300,7 +300,9 @@ @@ -300,7 +300,9 @@
@ -45,7 +45,7 @@ index 3c209dfd..a18213bf 100644
.line 141 .line 141
const-string v0, "Registering car mode receiver" const-string v0, "Registering car mode receiver"
diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali
index c38fe206..4daeb745 100644 index c38fe20..4daeb74 100644
--- a/smali/org/codeaurora/ims/ImsConfigImpl.smali --- a/smali/org/codeaurora/ims/ImsConfigImpl.smali
+++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali +++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali
@@ -668,7 +668,9 @@ @@ -668,7 +668,9 @@
@ -60,7 +60,7 @@ index c38fe206..4daeb745 100644
.line 257 .line 257
new-instance v1, Landroid/os/HandlerThread; new-instance v1, Landroid/os/HandlerThread;
diff --git a/smali/org/codeaurora/ims/ImsServiceSub.smali b/smali/org/codeaurora/ims/ImsServiceSub.smali diff --git a/smali/org/codeaurora/ims/ImsServiceSub.smali b/smali/org/codeaurora/ims/ImsServiceSub.smali
index 4a4a489d..579abd88 100644 index 4a4a489..579abd8 100644
--- a/smali/org/codeaurora/ims/ImsServiceSub.smali --- a/smali/org/codeaurora/ims/ImsServiceSub.smali
+++ b/smali/org/codeaurora/ims/ImsServiceSub.smali +++ b/smali/org/codeaurora/ims/ImsServiceSub.smali
@@ -1074,7 +1074,9 @@ @@ -1074,7 +1074,9 @@
@ -75,7 +75,7 @@ index 4a4a489d..579abd88 100644
.line 312 .line 312
iget-object v2, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver; iget-object v2, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver;
diff --git a/smali/org/codeaurora/ims/ImsSubController.smali b/smali/org/codeaurora/ims/ImsSubController.smali diff --git a/smali/org/codeaurora/ims/ImsSubController.smali b/smali/org/codeaurora/ims/ImsSubController.smali
index 3f21add4..e0f6feb0 100644 index 3f21add..e0f6feb 100644
--- a/smali/org/codeaurora/ims/ImsSubController.smali --- a/smali/org/codeaurora/ims/ImsSubController.smali
+++ b/smali/org/codeaurora/ims/ImsSubController.smali +++ b/smali/org/codeaurora/ims/ImsSubController.smali
@@ -416,7 +416,9 @@ @@ -416,7 +416,9 @@
@ -100,3 +100,6 @@ index 3f21add4..e0f6feb0 100644
.line 752 .line 752
iput-boolean v3, p0, Lorg/codeaurora/ims/ImsSubController;->mIsReceiverRegistered:Z iput-boolean v3, p0, Lorg/codeaurora/ims/ImsSubController;->mIsReceiverRegistered:Z
--
2.43.0

View file

@ -1,8 +1,8 @@
From 9aa16907f82bd04629f8516b3c2ca082a6d73e67 Mon Sep 17 00:00:00 2001 From 799edb94515218e27a8d18e7ae1ce1aef379355a Mon Sep 17 00:00:00 2001
From: Cosmin Tanislav <demonsingur@gmail.com> From: Cosmin Tanislav <demonsingur@gmail.com>
Date: Fri, 9 Aug 2024 10:47:24 +0300 Date: Fri, 9 Aug 2024 10:47:24 +0300
Subject: [PATCH 5/5] fixup! ims: globally set RECEIVER_EXPORTED for Subject: [PATCH 5/5] [PATCH 5/5] fixup! ims: globally set RECEIVER_EXPORTED
registerReceiver for registerReceiver
Use new locals for the RECEIVER_EXPORTED parameter to avoid Use new locals for the RECEIVER_EXPORTED parameter to avoid
conflicts. conflicts.
@ -31,12 +31,12 @@ java.lang.Object (declaration of 'org.codeaurora.ims.ImsCallModification' appear
5 files changed, 16 insertions(+), 16 deletions(-) 5 files changed, 16 insertions(+), 16 deletions(-)
diff --git a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali diff --git a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
index deff6dba..6a7e841d 100644 index deff6db..6a7e841 100644
--- a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali --- a/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
+++ b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali +++ b/smali/com/qualcomm/ims/vt/LowBatteryHandler.smali
@@ -101,7 +101,7 @@ @@ -101,7 +101,7 @@
.end method .end method
.method private constructor <init>(Ljava/util/List;Landroid/content/Context;)V .method private constructor <init>(Ljava/util/List;Landroid/content/Context;)V
- .locals 3 - .locals 3
+ .locals 4 + .locals 4
@ -44,24 +44,24 @@ index deff6dba..6a7e841d 100644
.annotation system Ldalvik/annotation/Signature; .annotation system Ldalvik/annotation/Signature;
value = { value = {
@@ -150,9 +150,9 @@ @@ -150,9 +150,9 @@
invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
- const/4 v2, 0x2 - const/4 v2, 0x2
+ const/4 v3, 0x2 + const/4 v3, 0x2
- invoke-virtual {p2, v0, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; - invoke-virtual {p2, v0, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
+ invoke-virtual {p2, v0, v1, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; + invoke-virtual {p2, v0, v1, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
.line 49 .line 49
return-void return-void
diff --git a/smali/org/codeaurora/ims/ImsCallModification.smali b/smali/org/codeaurora/ims/ImsCallModification.smali diff --git a/smali/org/codeaurora/ims/ImsCallModification.smali b/smali/org/codeaurora/ims/ImsCallModification.smali
index a18213bf..cae0c88f 100644 index a18213b..cae0c88 100644
--- a/smali/org/codeaurora/ims/ImsCallModification.smali --- a/smali/org/codeaurora/ims/ImsCallModification.smali
+++ b/smali/org/codeaurora/ims/ImsCallModification.smali +++ b/smali/org/codeaurora/ims/ImsCallModification.smali
@@ -179,7 +179,7 @@ @@ -179,7 +179,7 @@
.end method .end method
.method public constructor <init>(Lorg/codeaurora/ims/ImsCallSessionImpl;Landroid/content/Context;Lorg/codeaurora/ims/ImsSenderRxr;Landroid/os/Looper;)V .method public constructor <init>(Lorg/codeaurora/ims/ImsCallSessionImpl;Landroid/content/Context;Lorg/codeaurora/ims/ImsSenderRxr;Landroid/os/Looper;)V
- .locals 3 - .locals 3
+ .locals 4 + .locals 4
@ -69,12 +69,12 @@ index a18213bf..cae0c88f 100644
.param p2, "context" # Landroid/content/Context; .param p2, "context" # Landroid/content/Context;
.param p3, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr; .param p3, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr;
diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali diff --git a/smali/org/codeaurora/ims/ImsConfigImpl.smali b/smali/org/codeaurora/ims/ImsConfigImpl.smali
index 4daeb745..d91ef4fb 100644 index 4daeb74..d91ef4f 100644
--- a/smali/org/codeaurora/ims/ImsConfigImpl.smali --- a/smali/org/codeaurora/ims/ImsConfigImpl.smali
+++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali +++ b/smali/org/codeaurora/ims/ImsConfigImpl.smali
@@ -414,7 +414,7 @@ @@ -414,7 +414,7 @@
.end method .end method
.method public constructor <init>(Lorg/codeaurora/ims/ImsServiceSub;Lorg/codeaurora/ims/ImsSenderRxr;Landroid/content/Context;)V .method public constructor <init>(Lorg/codeaurora/ims/ImsServiceSub;Lorg/codeaurora/ims/ImsSenderRxr;Landroid/content/Context;)V
- .locals 4 - .locals 4
+ .locals 5 + .locals 5
@ -82,24 +82,24 @@ index 4daeb745..d91ef4fb 100644
.param p2, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr; .param p2, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr;
.param p3, "context" # Landroid/content/Context; .param p3, "context" # Landroid/content/Context;
@@ -668,9 +668,9 @@ @@ -668,9 +668,9 @@
iget-object v2, p0, Lorg/codeaurora/ims/ImsConfigImpl;->mBroadcastReceiver:Landroid/content/BroadcastReceiver; iget-object v2, p0, Lorg/codeaurora/ims/ImsConfigImpl;->mBroadcastReceiver:Landroid/content/BroadcastReceiver;
- const/4 v3, 0x2 - const/4 v3, 0x2
+ const/4 v4, 0x2 + const/4 v4, 0x2
- invoke-virtual {v1, v2, v0, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; - invoke-virtual {v1, v2, v0, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
+ invoke-virtual {v1, v2, v0, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; + invoke-virtual {v1, v2, v0, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
.line 257 .line 257
new-instance v1, Landroid/os/HandlerThread; new-instance v1, Landroid/os/HandlerThread;
diff --git a/smali/org/codeaurora/ims/ImsServiceSub.smali b/smali/org/codeaurora/ims/ImsServiceSub.smali diff --git a/smali/org/codeaurora/ims/ImsServiceSub.smali b/smali/org/codeaurora/ims/ImsServiceSub.smali
index 579abd88..839b79d9 100644 index 579abd8..839b79d 100644
--- a/smali/org/codeaurora/ims/ImsServiceSub.smali --- a/smali/org/codeaurora/ims/ImsServiceSub.smali
+++ b/smali/org/codeaurora/ims/ImsServiceSub.smali +++ b/smali/org/codeaurora/ims/ImsServiceSub.smali
@@ -622,7 +622,7 @@ @@ -622,7 +622,7 @@
.end method .end method
.method public constructor <init>(Landroid/content/Context;ILorg/codeaurora/ims/ImsSenderRxr;Lorg/codeaurora/ims/ImsSubController;)V .method public constructor <init>(Landroid/content/Context;ILorg/codeaurora/ims/ImsSenderRxr;Lorg/codeaurora/ims/ImsSubController;)V
- .locals 5 - .locals 5
+ .locals 6 + .locals 6
@ -107,24 +107,24 @@ index 579abd88..839b79d9 100644
.param p2, "phoneId" # I .param p2, "phoneId" # I
.param p3, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr; .param p3, "senderRxr" # Lorg/codeaurora/ims/ImsSenderRxr;
@@ -1074,9 +1074,9 @@ @@ -1074,9 +1074,9 @@
iget-object v3, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver; iget-object v3, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver;
- const/4 v4, 0x2 - const/4 v4, 0x2
+ const/4 v5, 0x2 + const/4 v5, 0x2
- invoke-virtual {v2, v3, v0, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; - invoke-virtual {v2, v3, v0, v4}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
+ invoke-virtual {v2, v3, v0, v5}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; + invoke-virtual {v2, v3, v0, v5}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
.line 312 .line 312
iget-object v2, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver; iget-object v2, p0, Lorg/codeaurora/ims/ImsServiceSub;->mImsServiceStateReceiver:Lorg/codeaurora/ims/ImsServiceStateReceiver;
diff --git a/smali/org/codeaurora/ims/ImsSubController.smali b/smali/org/codeaurora/ims/ImsSubController.smali diff --git a/smali/org/codeaurora/ims/ImsSubController.smali b/smali/org/codeaurora/ims/ImsSubController.smali
index e0f6feb0..1cbc3a2f 100644 index e0f6feb..1cbc3a2 100644
--- a/smali/org/codeaurora/ims/ImsSubController.smali --- a/smali/org/codeaurora/ims/ImsSubController.smali
+++ b/smali/org/codeaurora/ims/ImsSubController.smali +++ b/smali/org/codeaurora/ims/ImsSubController.smali
@@ -301,7 +301,7 @@ @@ -301,7 +301,7 @@
.end method .end method
.method public constructor <init>(Landroid/content/Context;Ljava/util/List;Ljava/util/List;Landroid/os/Looper;)V .method public constructor <init>(Landroid/content/Context;Ljava/util/List;Ljava/util/List;Landroid/os/Looper;)V
- .locals 3 - .locals 3
+ .locals 4 + .locals 4
@ -132,35 +132,38 @@ index e0f6feb0..1cbc3a2f 100644
.param p4, "looper" # Landroid/os/Looper; .param p4, "looper" # Landroid/os/Looper;
.annotation system Ldalvik/annotation/Signature; .annotation system Ldalvik/annotation/Signature;
@@ -416,9 +416,9 @@ @@ -416,9 +416,9 @@
invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V invoke-direct {v1, v2}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
- const/4 v2, 0x2 - const/4 v2, 0x2
+ const/4 v3, 0x2 + const/4 v3, 0x2
- invoke-virtual {p1, v0, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; - invoke-virtual {p1, v0, v1, v2}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
+ invoke-virtual {p1, v0, v1, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; + invoke-virtual {p1, v0, v1, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
.line 217 .line 217
iput-object p2, p0, Lorg/codeaurora/ims/ImsSubController;->mSenderRxrs:Ljava/util/List; iput-object p2, p0, Lorg/codeaurora/ims/ImsSubController;->mSenderRxrs:Ljava/util/List;
@@ -1037,7 +1037,7 @@ @@ -1037,7 +1037,7 @@
.end method .end method
.method private handleRafInfo()V .method private handleRafInfo()V
- .locals 10 - .locals 10
+ .locals 11 + .locals 11
.line 705 .line 705
iget v0, p0, Lorg/codeaurora/ims/ImsSubController;->mNumMultiModeStacks:I iget v0, p0, Lorg/codeaurora/ims/ImsSubController;->mNumMultiModeStacks:I
@@ -1269,9 +1269,9 @@ @@ -1269,9 +1269,9 @@
invoke-direct {v5, v6}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V invoke-direct {v5, v6}, Landroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
- const/4 v3, 0x2 - const/4 v3, 0x2
+ const/4 v10, 0x2 + const/4 v10, 0x2
- invoke-virtual {v2, v4, v5, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; - invoke-virtual {v2, v4, v5, v3}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
+ invoke-virtual {v2, v4, v5, v10}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent; + invoke-virtual {v2, v4, v5, v10}, Landroid/content/Context;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;I)Landroid/content/Intent;
.line 752 .line 752
iput-boolean v3, p0, Lorg/codeaurora/ims/ImsSubController;->mIsReceiverRegistered:Z iput-boolean v3, p0, Lorg/codeaurora/ims/ImsSubController;->mIsReceiverRegistered:Z
--
2.43.0

View file

@ -1,4 +1,4 @@
<manifest version="2.0" type="device" target-level="5"> <manifest version="2.0" type="device" target-level="6">
<hal format="hidl"> <hal format="hidl">
<name>android.hardware.audio</name> <name>android.hardware.audio</name>
<transport>hwbinder</transport> <transport>hwbinder</transport>
@ -60,19 +60,6 @@
</interface> </interface>
<fqname>@4.1::IKeymasterDevice/default</fqname> <fqname>@4.1::IKeymasterDevice/default</fqname>
</hal> </hal>
<hal format="hidl">
<name>android.hardware.media.omx</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IOmx</name>
<instance>default</instance>
</interface>
<interface>
<name>IOmxStore</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl"> <hal format="hidl">
<name>android.hardware.nfc</name> <name>android.hardware.nfc</name>
<transport>hwbinder</transport> <transport>hwbinder</transport>
@ -90,15 +77,6 @@
<fqname>@1.5::IRadio/slot1</fqname> <fqname>@1.5::IRadio/slot1</fqname>
<fqname>@1.5::IRadio/slot2</fqname> <fqname>@1.5::IRadio/slot2</fqname>
</hal> </hal>
<hal format="hidl">
<name>android.hardware.radio.config</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IRadioConfig</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl"> <hal format="hidl">
<name>android.hardware.secure_element</name> <name>android.hardware.secure_element</name>
<transport>hwbinder</transport> <transport>hwbinder</transport>
@ -118,19 +96,10 @@
<instance>default</instance> <instance>default</instance>
</interface> </interface>
</hal> </hal>
<hal format="hidl">
<name>android.hardware.tetheroffload.config</name>
<transport>hwbinder</transport>
<version>1.0</version>
<interface>
<name>IOffloadConfig</name>
<instance>default</instance>
</interface>
</hal>
<hal format="hidl"> <hal format="hidl">
<name>android.hardware.tetheroffload.control</name> <name>android.hardware.tetheroffload.control</name>
<transport>hwbinder</transport> <transport>hwbinder</transport>
<version>1.0</version> <version>1.1</version>
<interface> <interface>
<name>IOffloadControl</name> <name>IOffloadControl</name>
<instance>default</instance> <instance>default</instance>
@ -588,15 +557,4 @@
<instance>imsrtpservice</instance> <instance>imsrtpservice</instance>
</interface> </interface>
</hal> </hal>
<hal format="hidl">
<name>vendor.qti.hardware.qccsyshal</name>
<transport>hwbinder</transport>
<version>1.2</version>
<interface>
<name>IQccsyshal</name>
<instance>qccsyshal</instance>
</interface>
<fqname>@1.2::IQccsyshal/qccsyshal</fqname>
</hal>
<kernel target-level="5"/>
</manifest> </manifest>

View file

@ -1,4 +1,10 @@
# All unpinned blobs are extracted from fogos_g-user 14 U1UGS34M.23-82-2-3 da6528 release-keys # All unpinned blobs are extracted from fogos_g-user 14 U1UGS34.23-82-2-6 e21904 release-keys
# Current blobs with ELF checks disabled:
# libcne, libwqe, lowi-server, mutualex depend on libwpa_client, which is a gnu makefile target
# libmdmcutback depends on libqsap_sdk, which is a gnu makefile target
# libmotext_inf, libril-qcril-hook-oem depend on libril, which is a gnu makefile target
# thermal-engine depends on libthermalclient, which is device specific
# ADSP # ADSP
vendor/bin/adsprpcd vendor/bin/adsprpcd
@ -34,10 +40,8 @@ vendor/lib/rfsa/adsp/libmctfengine_skel.so
vendor/lib/rfsa/adsp/libneat_1_1_skel.so vendor/lib/rfsa/adsp/libneat_1_1_skel.so
vendor/lib/rfsa/adsp/libscveObjectSegmentation_skel.so vendor/lib/rfsa/adsp/libscveObjectSegmentation_skel.so
vendor/lib/rfsa/adsp/libscveT2T_skel.so vendor/lib/rfsa/adsp/libscveT2T_skel.so
vendor/lib/rfsa/adsp/libsns_device_mode_skel.so vendor/lib/rfsa/adsp/libsns_device_mode_skel.so;SYMLINK=vendor/lib64/rfsa/adsp/libsns_device_mode_skel.so
vendor/lib/rfsa/adsp/libsns_low_lat_stream_skel.so vendor/lib/rfsa/adsp/libsns_low_lat_stream_skel.so;SYMLINK=vendor/lib64/rfsa/adsp/libsns_low_lat_stream_skel.so
vendor/lib64/rfsa/adsp/libsns_device_mode_skel.so
vendor/lib64/rfsa/adsp/libsns_low_lat_stream_skel.so
# ANT+ # ANT+
system_ext/lib/com.qualcomm.qti.ant@1.0.so system_ext/lib/com.qualcomm.qti.ant@1.0.so
@ -76,6 +80,9 @@ vendor/lib64/soundfx/libshoebox.so
# Bluetooth # Bluetooth
vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti
vendor/etc/init/android.hardware.bluetooth@1.0-service-qti.rc vendor/etc/init/android.hardware.bluetooth@1.0-service-qti.rc
vendor/lib/hw/android.hardware.bluetooth@1.0-impl-qti.so
vendor/lib/libbtnv.so
vendor/lib/libsoc_helper.so
vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so
vendor/lib64/libbtnv.so vendor/lib64/libbtnv.so
vendor/lib64/libsoc_helper.so vendor/lib64/libsoc_helper.so
@ -120,7 +127,7 @@ vendor/etc/charger_fstab.qti
vendor/etc/init/vendor.qti.hardware.charger_monitor@1.0-service.rc vendor/etc/init/vendor.qti.hardware.charger_monitor@1.0-service.rc
# CNE # CNE
-vendor/app/CneApp/CneApp.apk -vendor/app/CneApp/CneApp.apk;REQUIRED=CneApp.libvndfwk_detect_jni.qti_symlink
vendor/bin/cnd vendor/bin/cnd
vendor/etc/cne/mwqem.conf vendor/etc/cne/mwqem.conf
vendor/etc/cne/profileMwqem.xml vendor/etc/cne/profileMwqem.xml
@ -153,12 +160,13 @@ vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml
vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml
vendor/etc/default-permissions/com.qualcomm.qti.cne.xml vendor/etc/default-permissions/com.qualcomm.qti.cne.xml
vendor/etc/init/cnd.rc vendor/etc/init/cnd.rc
vendor/lib64/libcne.so vendor/lib/libxml.so
vendor/lib64/libcne.so;DISABLE_CHECKELF
vendor/lib64/libcneapiclient.so vendor/lib64/libcneapiclient.so
vendor/lib64/libcneoplookup.so vendor/lib64/libcneoplookup.so
vendor/lib64/libcneqmiutils.so vendor/lib64/libcneqmiutils.so
vendor/lib64/libwms.so vendor/lib64/libwms.so
vendor/lib64/libwqe.so vendor/lib64/libwqe.so;DISABLE_CHECKELF
vendor/lib64/libxml.so vendor/lib64/libxml.so
vendor/lib64/vendor.qti.data.factory@2.0.so vendor/lib64/vendor.qti.data.factory@2.0.so
vendor/lib64/vendor.qti.data.factory@2.1.so vendor/lib64/vendor.qti.data.factory@2.1.so
@ -189,8 +197,6 @@ vendor/lib64/hw/vendor.qti.hardware.capabilityconfigstore@1.0-impl.so
# CVP # CVP
vendor/lib/libcvp_common.so vendor/lib/libcvp_common.so
vendor/lib/libcvpcpuRev_skel.so
vendor/lib/vendor.qti.hardware.cvp@1.0.so
vendor/lib64/libcvp_common.so vendor/lib64/libcvp_common.so
vendor/lib64/libcvpcpuRev_skel.so vendor/lib64/libcvpcpuRev_skel.so
vendor/lib64/vendor.qti.hardware.cvp@1.0.so vendor/lib64/vendor.qti.hardware.cvp@1.0.so
@ -247,8 +253,8 @@ system_ext/lib64/vendor.qti.diaghal@1.0.so
vendor/bin/diag-router vendor/bin/diag-router
vendor/etc/init/vendor.qti.diag.rc vendor/etc/init/vendor.qti.diag.rc
-vendor/etc/vintf/manifest/vendor.qti.diag.hal.service.xml -vendor/etc/vintf/manifest/vendor.qti.diag.hal.service.xml
vendor/lib/vendor.qti.diaghal@1.0.so vendor/lib/vendor.qti.diaghal@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib64/vendor.qti.diaghal@1.0.so vendor/lib64/vendor.qti.diaghal@1.0.so;MODULE_SUFFIX=_vendor
# Display - HDR # Display - HDR
vendor/lib64/libhdr_stub.so vendor/lib64/libhdr_stub.so
@ -295,7 +301,7 @@ vendor/lib64/vendor.display.postproc@1.0.so
# DPM # DPM
system/framework/tcmclient.jar system/framework/tcmclient.jar
system_ext/bin/dpmd system_ext/bin/dpmd;DISABLE_CHECKELF
system_ext/etc/dpm/dpm.conf system_ext/etc/dpm/dpm.conf
system_ext/etc/init/dpmd.rc system_ext/etc/init/dpmd.rc
system_ext/etc/permissions/com.qti.dpmframework.xml system_ext/etc/permissions/com.qti.dpmframework.xml
@ -303,20 +309,20 @@ system_ext/etc/permissions/dpmapi.xml
system_ext/framework/com.qti.dpmframework.jar system_ext/framework/com.qti.dpmframework.jar
system_ext/framework/dpmapi.jar system_ext/framework/dpmapi.jar
system_ext/lib/com.qualcomm.qti.dpm.api@1.0.so system_ext/lib/com.qualcomm.qti.dpm.api@1.0.so
system_ext/lib/libdpmctmgr.so system_ext/lib/libdpmctmgr.so;DISABLE_CHECKELF
system_ext/lib/libdpmfdmgr.so system_ext/lib/libdpmfdmgr.so;DISABLE_CHECKELF
system_ext/lib/libdpmframework.so system_ext/lib/libdpmframework.so;DISABLE_CHECKELF
system_ext/lib/libdpmtcm.so system_ext/lib/libdpmtcm.so;DISABLE_CHECKELF
system_ext/lib64/com.qualcomm.qti.dpm.api@1.0.so system_ext/lib64/com.qualcomm.qti.dpm.api@1.0.so
system_ext/lib64/libdpmctmgr.so system_ext/lib64/libdpmctmgr.so;DISABLE_CHECKELF
system_ext/lib64/libdpmfdmgr.so system_ext/lib64/libdpmfdmgr.so;DISABLE_CHECKELF
system_ext/lib64/libdpmframework.so system_ext/lib64/libdpmframework.so;DISABLE_CHECKELF
system_ext/lib64/libdpmtcm.so system_ext/lib64/libdpmtcm.so;DISABLE_CHECKELF
system_ext/lib64/vendor.qti.hardware.dpmservice@1.0.so system_ext/lib64/vendor.qti.hardware.dpmservice@1.0.so
-system_ext/priv-app/dpmserviceapp/dpmserviceapp.apk -system_ext/priv-app/dpmserviceapp/dpmserviceapp.apk
vendor/bin/dpmQmiMgr vendor/bin/dpmQmiMgr
vendor/etc/init/dpmQmiMgr.rc vendor/etc/init/dpmQmiMgr.rc
vendor/lib64/com.qualcomm.qti.dpm.api@1.0.so vendor/lib64/com.qualcomm.qti.dpm.api@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib64/libdpmqmihal.so vendor/lib64/libdpmqmihal.so
# DRM # DRM
@ -343,7 +349,7 @@ vendor/lib64/vendor.qti.hardware.eid@1.0.so
# FM # FM
vendor/lib64/hw/vendor.qti.hardware.fm@1.0-impl.so vendor/lib64/hw/vendor.qti.hardware.fm@1.0-impl.so
vendor/lib64/vendor.qti.hardware.fm@1.0.so vendor/lib64/vendor.qti.hardware.fm@1.0.so;MODULE_SUFFIX=_vendor
# Gatekeeper # Gatekeeper
vendor/bin/hw/android.hardware.gatekeeper@1.0-service-qti vendor/bin/hw/android.hardware.gatekeeper@1.0-service-qti
@ -354,7 +360,7 @@ vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
-vendor/app/CACertService/CACertService.apk -vendor/app/CACertService/CACertService.apk
vendor/bin/hw/android.hardware.gnss@2.1-service-qti vendor/bin/hw/android.hardware.gnss@2.1-service-qti
vendor/bin/loc_launcher vendor/bin/loc_launcher
vendor/bin/lowi-server vendor/bin/lowi-server;DISABLE_CHECKELF
vendor/bin/mlid vendor/bin/mlid
vendor/bin/xtra-daemon vendor/bin/xtra-daemon
vendor/bin/xtwifi-client vendor/bin/xtwifi-client
@ -420,20 +426,19 @@ vendor/lib64/vendor.qti.gnss@3.0.so
vendor/lib64/vendor.qti.gnss@4.0-service.so vendor/lib64/vendor.qti.gnss@4.0-service.so
vendor/lib64/vendor.qti.gnss@4.0.so vendor/lib64/vendor.qti.gnss@4.0.so
vendor/lib64/vendor.qti.hardware.cacert@1.0.so vendor/lib64/vendor.qti.hardware.cacert@1.0.so
vendor/lib64/vendor.qti.hardware.qccsyshal@1.0.so
# Graphics - Adreno # Graphics - Adreno
vendor/lib/egl/eglSubDriverAndroid.so vendor/lib/egl/eglSubDriverAndroid.so
vendor/lib/egl/libEGL_adreno.so vendor/lib/egl/libEGL_adreno.so;SYMLINK=vendor/lib/libEGL_adreno.so
vendor/lib/egl/libGLESv1_CM_adreno.so vendor/lib/egl/libGLESv1_CM_adreno.so
vendor/lib/egl/libGLESv2_adreno.so vendor/lib/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib/libGLESv2_adreno.so
vendor/lib/egl/libq3dtools_adreno.so vendor/lib/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib/libq3dtools_adreno.so
vendor/lib/egl/libq3dtools_esx.so vendor/lib/egl/libq3dtools_esx.so
vendor/lib/libC2D2.so vendor/lib/libC2D2.so
vendor/lib/libCB.so vendor/lib/libCB.so
vendor/lib/libOpenCL.so vendor/lib/libOpenCL.so
vendor/lib/libVkLayer_q3dtools.so vendor/lib/libVkLayer_q3dtools.so
vendor/lib/libadreno_app_profiles.so vendor/lib/libadreno_app_profiles.so;DISABLE_CHECKELF
vendor/lib/libadreno_utils.so vendor/lib/libadreno_utils.so
vendor/lib/libc2d30_bltlib.so vendor/lib/libc2d30_bltlib.so
vendor/lib/libgpudataproducer.so vendor/lib/libgpudataproducer.so
@ -443,10 +448,10 @@ vendor/lib/libkernelmanager.so
vendor/lib/libllvm-glnext.so vendor/lib/libllvm-glnext.so
vendor/lib/libllvm-qcom.so vendor/lib/libllvm-qcom.so
vendor/lib64/egl/eglSubDriverAndroid.so vendor/lib64/egl/eglSubDriverAndroid.so
vendor/lib64/egl/libEGL_adreno.so vendor/lib64/egl/libEGL_adreno.so;SYMLINK=vendor/lib64/libEGL_adreno.so
vendor/lib64/egl/libGLESv1_CM_adreno.so vendor/lib64/egl/libGLESv1_CM_adreno.so
vendor/lib64/egl/libGLESv2_adreno.so vendor/lib64/egl/libGLESv2_adreno.so;SYMLINK=vendor/lib64/libGLESv2_adreno.so
vendor/lib64/egl/libq3dtools_adreno.so vendor/lib64/egl/libq3dtools_adreno.so;SYMLINK=vendor/lib64/libq3dtools_adreno.so
vendor/lib64/egl/libq3dtools_esx.so vendor/lib64/egl/libq3dtools_esx.so
vendor/lib64/libC2D2.so vendor/lib64/libC2D2.so
vendor/lib64/libCB.so vendor/lib64/libCB.so
@ -525,7 +530,7 @@ vendor/etc/seccomp_policy/codec2.vendor.base-arm.policy
vendor/etc/seccomp_policy/codec2.vendor.ext-arm.policy vendor/etc/seccomp_policy/codec2.vendor.ext-arm.policy
vendor/etc/video_system_specs.json vendor/etc/video_system_specs.json
-vendor/etc/vintf/manifest/vendor.dolby.media.c2@1.0-service.xml -vendor/etc/vintf/manifest/vendor.dolby.media.c2@1.0-service.xml
vendor/lib/libmmosal.so vendor/lib/libmmosal.so;MODULE_SUFFIX=_vendor
vendor/lib/libqcodec2_base.so vendor/lib/libqcodec2_base.so
vendor/lib/libqcodec2_basecodec.so vendor/lib/libqcodec2_basecodec.so
vendor/lib/libqcodec2_core.so vendor/lib/libqcodec2_core.so
@ -533,37 +538,14 @@ vendor/lib/libqcodec2_hooks.so
vendor/lib/libqcodec2_platform.so vendor/lib/libqcodec2_platform.so
vendor/lib/libqcodec2_utils.so vendor/lib/libqcodec2_utils.so
vendor/lib/libqcodec2_v4l2codec.so vendor/lib/libqcodec2_v4l2codec.so
vendor/lib64/libmmosal.so vendor/lib64/libmmosal.so;MODULE_SUFFIX=_vendor
# Media configs # Media configs
vendor/etc/media_blair/video_system_specs.json vendor/etc/media_blair/video_system_specs.json
vendor/etc/media_holi/video_system_specs.json vendor/etc/media_holi/video_system_specs.json
# OEM # OEM
vendor/bin/motobox vendor/bin/motobox;SYMLINK=vendor/bin/expat
# OMX
vendor/lib/libOmxAacDec.so
vendor/lib/libOmxAlacDec.so
vendor/lib/libOmxAmrDec.so
vendor/lib/libOmxAmrwbplusDec.so
vendor/lib/libOmxApeDec.so
vendor/lib/libOmxDsdDec.so
vendor/lib/libOmxEvrcDec.so
vendor/lib/libOmxG711Dec.so
vendor/lib/libOmxQcelp13Dec.so
vendor/lib/libOmxVideoDSMode.so
vendor/lib/libOmxWmaDec.so
vendor/lib/libdsd2pcm.so
vendor/lib64/libOmxAacDec.so
vendor/lib64/libOmxAlacDec.so
vendor/lib64/libOmxAmrDec.so
vendor/lib64/libOmxAmrwbplusDec.so
vendor/lib64/libOmxApeDec.so
vendor/lib64/libOmxEvrcDec.so
vendor/lib64/libOmxG711Dec.so
vendor/lib64/libOmxQcelp13Dec.so
vendor/lib64/libOmxWmaDec.so
# Peripheral manager # Peripheral manager
vendor/bin/pm-proxy vendor/bin/pm-proxy
@ -592,8 +574,8 @@ system_ext/lib64/vendor.qti.hardware.qccsyshal@1.0.so
system_ext/lib64/vendor.qti.hardware.qccsyshal@1.1.so system_ext/lib64/vendor.qti.hardware.qccsyshal@1.1.so
system_ext/lib64/vendor.qti.hardware.qccsyshal@1.2-halimpl.so system_ext/lib64/vendor.qti.hardware.qccsyshal@1.2-halimpl.so
system_ext/lib64/vendor.qti.hardware.qccsyshal@1.2.so system_ext/lib64/vendor.qti.hardware.qccsyshal@1.2.so
vendor/lib/vendor.qti.hardware.qccsyshal@1.0.so vendor/lib/vendor.qti.hardware.qccsyshal@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib64/vendor.qti.hardware.qccsyshal@1.0.so vendor/lib64/vendor.qti.hardware.qccsyshal@1.0.so;MODULE_SUFFIX=_vendor
# QMI # QMI
system/etc/permissions/privapp-permissions-qti.xml system/etc/permissions/privapp-permissions-qti.xml
@ -655,7 +637,6 @@ system_ext/etc/permissions/qti_permissions.xml
system_ext/framework/qcrilhook.jar system_ext/framework/qcrilhook.jar
-system_ext/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk -system_ext/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk
-vendor/app/IWlanService/IWlanService.apk -vendor/app/IWlanService/IWlanService.apk
vendor/bin/ATFWD-daemon
vendor/bin/adpl vendor/bin/adpl
vendor/bin/hw/qcrilNrd vendor/bin/hw/qcrilNrd
vendor/bin/ks vendor/bin/ks
@ -738,15 +719,17 @@ vendor/etc/qcril_database/upgrade/ecc/9_version_qcrildb.sql
vendor/etc/qcril_database/upgrade/other/2_version_add_wps_config_qcrilnr.sql vendor/etc/qcril_database/upgrade/other/2_version_add_wps_config_qcrilnr.sql
vendor/etc/qcril_database/upgrade/other/3_version_update_wps_config_qcrilnr.sql vendor/etc/qcril_database/upgrade/other/3_version_update_wps_config_qcrilnr.sql
vendor/etc/qcril_database/upgrade/other/6_version_change_property_table_qcrilnr.sql vendor/etc/qcril_database/upgrade/other/6_version_change_property_table_qcrilnr.sql
vendor/etc/seccomp_policy/atfwd@2.0.policy
vendor/etc/seccomp_policy/qcrilnr@2.0.policy vendor/etc/seccomp_policy/qcrilnr@2.0.policy
vendor/etc/ssg/ta_config.json vendor/etc/ssg/ta_config.json
vendor/etc/ssg/tz_whitelist.json vendor/etc/ssg/tz_whitelist.json
vendor/lib/libconfigdb.so
vendor/lib/libmdmdetect.so
vendor/lib/libnetmgr.so
vendor/lib64/deviceInfoServiceModuleNr.so vendor/lib64/deviceInfoServiceModuleNr.so
vendor/lib64/libconfigdb.so vendor/lib64/libconfigdb.so
vendor/lib64/liblog_vendor.so vendor/lib64/liblog_vendor.so
vendor/lib64/liblqe.so vendor/lib64/liblqe.so
vendor/lib64/libmdmcutback.so vendor/lib64/libmdmcutback.so;DISABLE_CHECKELF
vendor/lib64/libmdmdetect.so vendor/lib64/libmdmdetect.so
vendor/lib64/libminkdescriptor.so vendor/lib64/libminkdescriptor.so
vendor/lib64/libmotext_inf.so vendor/lib64/libmotext_inf.so
@ -781,7 +764,6 @@ vendor/lib64/qcrild_libqcrilnrutils.so
vendor/lib64/qtiril-utils.so vendor/lib64/qtiril-utils.so
vendor/lib64/qtiwakelock.so vendor/lib64/qtiwakelock.so
vendor/lib64/vendor.qti.hardware.radio.am@1.0.so vendor/lib64/vendor.qti.hardware.radio.am@1.0.so
vendor/lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so
vendor/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so vendor/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so
vendor/lib64/vendor.qti.hardware.radio.lpa@1.0.so vendor/lib64/vendor.qti.hardware.radio.lpa@1.0.so
vendor/lib64/vendor.qti.hardware.radio.lpa@1.1.so vendor/lib64/vendor.qti.hardware.radio.lpa@1.1.so
@ -807,7 +789,6 @@ vendor/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so
# Ril - IMS (APK) # Ril - IMS (APK)
system/etc/permissions/moto-telephony.xml:system_ext/etc/permissions/moto-telephony.xml system/etc/permissions/moto-telephony.xml:system_ext/etc/permissions/moto-telephony.xml
system/framework/moto-telephony.jar:system_ext/framework/moto-telephony.jar system/framework/moto-telephony.jar:system_ext/framework/moto-telephony.jar
system_ext/lib64/libimsmedia_jni.so
# RIL - IMS # RIL - IMS
-system_ext/app/ImsRcsService/ImsRcsService.apk -system_ext/app/ImsRcsService/ImsRcsService.apk
@ -825,13 +806,13 @@ system_ext/framework/vendor.qti.ims.rcssip-V1.2-java.jar
system_ext/framework/vendor.qti.ims.rcsuce-V1.0-java.jar system_ext/framework/vendor.qti.ims.rcsuce-V1.0-java.jar
system_ext/framework/vendor.qti.ims.rcsuce-V1.1-java.jar system_ext/framework/vendor.qti.ims.rcsuce-V1.1-java.jar
system_ext/framework/vendor.qti.ims.rcsuce-V1.2-java.jar system_ext/framework/vendor.qti.ims.rcsuce-V1.2-java.jar
system_ext/lib64/lib-imsvideocodec.so system_ext/lib64/lib-imsvideocodec.so;DISABLE_CHECKELF
system_ext/lib64/lib-imsvt.so system_ext/lib64/lib-imsvt.so;DISABLE_CHECKELF
system_ext/lib64/lib-imsvtextutils.so system_ext/lib64/lib-imsvtextutils.so;DISABLE_CHECKELF
system_ext/lib64/lib-imsvtutils.so system_ext/lib64/lib-imsvtutils.so;DISABLE_CHECKELF
system_ext/lib64/libdiag_system.so system_ext/lib64/libdiag_system.so;DISABLE_CHECKELF
system_ext/lib64/libimscamera_jni.so system_ext/lib64/libimscamera_jni.so;SYMLINK=system_ext/priv-app/ims/lib/arm64/libimscamera_jni.so
system_ext/lib64/libimsmedia_jni.so system_ext/lib64/libimsmedia_jni.so;SYMLINK=system_ext/priv-app/ims/lib/arm64/libimsmedia_jni.so
system_ext/lib64/vendor.qti.imsrtpservice@3.0.so system_ext/lib64/vendor.qti.imsrtpservice@3.0.so
system_ext/lib64/vendor.qti.imsrtpservice@3.1.so system_ext/lib64/vendor.qti.imsrtpservice@3.1.so
system_ext/lib64/vendor.qti.ImsRtpService-V1-ndk.so system_ext/lib64/vendor.qti.ImsRtpService-V1-ndk.so
@ -891,7 +872,7 @@ vendor/lib64/vendor.qti.ims.rcsuce@1.0.so
vendor/lib64/vendor.qti.ims.rcsuce@1.1.so vendor/lib64/vendor.qti.ims.rcsuce@1.1.so
vendor/lib64/vendor.qti.ims.rcsuce@1.2.so vendor/lib64/vendor.qti.ims.rcsuce@1.2.so
vendor/lib64/vendor.qti.imsrtpservice@3.0-service-Impl.so vendor/lib64/vendor.qti.imsrtpservice@3.0-service-Impl.so
vendor/lib64/vendor.qti.imsrtpservice@3.0.so vendor/lib64/vendor.qti.imsrtpservice@3.0.so;MODULE_SUFFIX=_vendor
# Sensors # Sensors
vendor/bin/hw/vendor.qti.hardware.sensorscalibrate@1.0-service vendor/bin/hw/vendor.qti.hardware.sensorscalibrate@1.0-service
@ -918,19 +899,17 @@ vendor/lib64/vendor.qti.hardware.sensorscalibrate@1.0.so
# Snapdragon Computer Vision Engine # Snapdragon Computer Vision Engine
vendor/lib/libfastcvdsp_stub.so vendor/lib/libfastcvdsp_stub.so
-vendor/lib/libfastcvopt.so vendor/lib/libfastcvopt.so
vendor/lib/libscveCommon.so vendor/lib/libscveCommon.so
vendor/lib/libscveCommon_stub.so vendor/lib/libscveCommon_stub.so
vendor/lib/libscveObjectSegmentation.so vendor/lib/libscveObjectSegmentation.so
vendor/lib/libscveObjectSegmentation_stub.so vendor/lib/libscveObjectSegmentation_stub.so
vendor/lib/libscveObjectTracker.so vendor/lib/libscveObjectTracker.so
vendor/lib/libscveObjectTracker_stub.so vendor/lib/libscveObjectTracker_stub.so
vendor/lib/rfsa/adsp/libscveObjectSegmentation_skel.so
vendor/lib/rfsa/adsp/libscveT2T_skel.so
vendor/lib/vendor.qti.hardware.scve.objecttracker@1.0.so vendor/lib/vendor.qti.hardware.scve.objecttracker@1.0.so
vendor/lib/vendor.qti.hardware.scve.panorama@1.0.so vendor/lib/vendor.qti.hardware.scve.panorama@1.0.so
vendor/lib64/libfastcvdsp_stub.so vendor/lib64/libfastcvdsp_stub.so
-vendor/lib64/libfastcvopt.so vendor/lib64/libfastcvopt.so
vendor/lib64/libscveCommon.so vendor/lib64/libscveCommon.so
vendor/lib64/libscveCommon_stub.so vendor/lib64/libscveCommon_stub.so
vendor/lib64/libscveObjectSegmentation.so vendor/lib64/libscveObjectSegmentation.so
@ -948,10 +927,10 @@ vendor/lib64/hw/vendor.qti.hardware.soter@1.0-impl.so
vendor/lib64/vendor.qti.hardware.soter@1.0.so vendor/lib64/vendor.qti.hardware.soter@1.0.so
# Thermal engine # Thermal engine
vendor/bin/thermal-engine vendor/bin/thermal-engine;DISABLE_CHECKELF
vendor/etc/init/init_thermal-engine.rc vendor/etc/init/init_thermal-engine.rc
-vendor/lib/libthermalclient.so vendor/lib/libthermalclient.so
-vendor/lib64/libthermalclient.so vendor/lib64/libthermalclient.so
# Time services # Time services
-vendor/app/TimeService/TimeService.apk -vendor/app/TimeService/TimeService.apk
@ -1053,7 +1032,6 @@ vendor/firmware/vpu20_4v_unsigned.mbn
vendor/bin/hw/android.hardware.drm@1.3-service.widevine vendor/bin/hw/android.hardware.drm@1.3-service.widevine
vendor/etc/init/android.hardware.drm@1.3-service.widevine.rc vendor/etc/init/android.hardware.drm@1.3-service.widevine.rc
-vendor/etc/vintf/manifest/manifest_android.hardware.drm@1.3-service.widevine.xml -vendor/etc/vintf/manifest/manifest_android.hardware.drm@1.3-service.widevine.xml
vendor/lib64/libtrustedapploader.so
vendor/lib64/libwvhidl.so vendor/lib64/libwvhidl.so
# WiFi # WiFi
@ -1107,6 +1085,7 @@ system_ext/lib64/libwfduibcsink.so
system_ext/lib64/libwfduibcsinkinterface.so system_ext/lib64/libwfduibcsinkinterface.so
system_ext/lib64/libwfduibcsrc.so system_ext/lib64/libwfduibcsrc.so
system_ext/lib64/libwfduibcsrcinterface.so system_ext/lib64/libwfduibcsrcinterface.so
system_ext/lib64/vendor.qti.hardware.wifidisplaysession@1.0.so
-system_ext/priv-app/WfdService/WfdService.apk -system_ext/priv-app/WfdService/WfdService.apk
vendor/bin/wfdhdcphalservice vendor/bin/wfdhdcphalservice
vendor/bin/wfdvndservice vendor/bin/wfdvndservice
@ -1144,5 +1123,6 @@ vendor/lib/libwfduibcsinkinterface_proprietary.so
vendor/lib/libwfduibcsrc_proprietary.so vendor/lib/libwfduibcsrc_proprietary.so
vendor/lib/libwfduibcsrcinterface_proprietary.so vendor/lib/libwfduibcsrcinterface_proprietary.so
vendor/lib/libwfdutils_proprietary.so vendor/lib/libwfdutils_proprietary.so
vendor/lib/vendor.qti.hardware.wifidisplaysession@1.0.so vendor/lib/vendor.qti.hardware.wifidisplaysession@1.0.so;MODULE_SUFFIX=_vendor
vendor/lib/vendor.qti.hardware.wifidisplaysessionl@1.0-halimpl.so vendor/lib/vendor.qti.hardware.wifidisplaysessionl@1.0-halimpl.so
vendor/lib64/vendor.qti.hardware.wifidisplaysession@1.0.so;MODULE_SUFFIX=_vendor

View file

@ -0,0 +1,30 @@
From 4ed8978b35fd6b6723f995d534b534c4c4071c49 Mon Sep 17 00:00:00 2001
From: SagarMakhar <sagarmakhar@gmail.com>
Date: Tue, 1 Oct 2024 23:59:30 +0530
Subject: [PATCH] sm6375-common: Fix persist.vendor.radio.poweron_opt to 0
* If this value 1 breaks SMS receiving
Change-Id: I6f045b67c4a84b246471fa9249fa883fc78c1ee1
---
.../vendor/etc/qcril_database/qcrilNr.db | Bin 106496 -> 106496 bytes
.../upgrade/config/6.0_config.sql | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/6.0_config.sql b/6.0_config.sql
index d178cf1..3a4c811 100644
--- a/6.0_config.sql
+++ b/6.0_config.sql
@@ -104,7 +104,7 @@ INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist
INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist.vendor.radio.csg_info_avlbl", "0");
INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist.vendor.radio.cs_srv_type", "0");
INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist.vendor.radio.limit_rac_change", "0");
-INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist.vendor.radio.poweron_opt", "1");
+INSERT OR REPLACE INTO qcril_properties_table(property, def_val) VALUES("persist.vendor.radio.poweron_opt", "0");
INSERT OR REPLACE INTO qcril_properties_table(property) VALUES("persist.vendor.radio.sglte_target");
INSERT OR REPLACE INTO qcril_properties_table(property) VALUES("persist.vendor.radio.nitz_plmn_0");
INSERT OR REPLACE INTO qcril_properties_table(property) VALUES("persist.vendor.radio.nitz_plmn_1");
--
GitLab

View file

@ -0,0 +1,41 @@
From 4ed8978b35fd6b6723f995d534b534c4c4071c49 Mon Sep 17 00:00:00 2001
From: SagarMakhar <sagarmakhar@gmail.com>
Date: Tue, 1 Oct 2024 23:59:30 +0530
Subject: [PATCH] sm6375-common: Fix persist.vendor.radio.poweron_opt to 0
* If this value 1 breaks SMS receiving
Change-Id: I6f045b67c4a84b246471fa9249fa883fc78c1ee1
---
.../vendor/etc/qcril_database/qcrilNr.db | Bin 106496 -> 106496 bytes
.../upgrade/config/6.0_config.sql | 2 +-
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/qcrilNr.db b/qcrilNr.db
index da4cbc60ddfefce5e42ca2b2512db4354c6dec0e..5e2ff97d7bafc4db15b9166b1be284e61508dac8 100644
GIT binary patch
delta 528
zcmYL^&r4KM9K}6zXB<R`Mj=yhG8$i_kA|-(xh*LdE&8!^5n36}R8WLUZ{ExslWCBY
ziI~x&W}r)5wFutAg|!c&KOoUn>-H`B-X1h?7x#0{x!><SOJCZT^nAvI7Z>Msl3zVs
zV!?xJF%jXRhapZEk${N=duLY>jt$|z<{EJ-meRaX)x@VFhE*!Jqzxb0giMR$w=@Xv
z`54lm*AltwBd5-HeUKD+H96@n@`n$HnGyyd;ms2Ipn;h(s_i1~)A$rmOX%U1O{CZr
zU@$I{De&|WdYKE*!TSL&8_CS^L7){60^Bw-Jj;_=4b*Em%S^=vvJZLjrAmjZIKzbs
zYP#%C1?RhsjHmc}OD$>Os*$!8UT<KK^#-y^HNLlW+<;>nwpBUORL(X3xyum+P3z`I
zO@VtWILD(VZWu9-BT8=|$?bXl%IG@wb??u0OxThG#7<0}^X{5%zf;!0FT#z<vq;g(
zV=;NcR9$V`HGH#)Bg7=l-7WNmGuyak$LxJTs8gqQaLeMmw;F$uN1Xk6bcWwP>Xg4{
C_@I;k
delta 540
zcmYL^%}Z2a6vpS7cRnCRoPxf@sqi{8&XC-LQCpR87e%yj)o2rqB^II4bv~<M5RIw0
z>Z4|$OKH<0xC^0=eGvTtfwOBBxNp&U8!&hm=lq`MJ?A|2FR{A5j~MqNl6n^BR}TXm
z^$_Kphm>W}4%_!I6qDNu%s&8O&mywc0ShuLEFxtjRkK}^=NdZWgE|yd{-gC0GEqCG
zbj0GksZed+5sGrBgkfFrU6r`FPbVgFPxzyR9EZy2<L?%FgIi^EK|T2j8ZmKm4<eIn
zmvM?0H;~}*Dh4CsIx}qF!5I!$(an4njuGb`r?lYvDy|vH7I;ulL#v5iIyIz?WTtuH
zv7-GI^l+huCM5V%!|4-7t|WN4sgmpCvXRgd$9$yu+PBF=O}??+fe*(<3^lAeprspn
z!M2Y<^*pyln)OxdDUO&K?k?dZKd<7d5p%cGCD#$>*1R4xvW7j~{&NlEHtKm|J1h@*
z<E7qky`nLH5!tZJc8CVQ6qfr;v{cr_$AabtJ|Qeg?rh?0kl(_n9kcru0hgy#pWeop
VC9jtC$D<-5>@T7#`1Vc*{RQMJrl$Y^
--
GitLab

View file

@ -1 +0,0 @@
include $(call all-subdir-makefiles)

View file

@ -1 +0,0 @@
include $(call all-subdir-makefiles)

View file

@ -0,0 +1,10 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "CarrierConfigResCommon_Sys",
aaptflags: ["--keep-raw-values"],
product_specific: true,
}

View file

@ -1,17 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := CarrierConfigResCommon_Sys
LOCAL_SDK_VERSION := current
LOCAL_AAPT_FLAGS := --keep-raw-values
include $(BUILD_RRO_PACKAGE)

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "FrameworksResCommon_Sys",
product_specific: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := FrameworksResCommon_Sys
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -119,8 +119,8 @@
<item>7</item> <item>7</item>
</integer-array> </integer-array>
<!-- Boolean indicating whether the wifi chipset has dual frequency band support --> <!-- Boolean indicating whether the wifi chipset has 5GHz frequency band support -->
<bool translatable="false" name="config_wifi_dual_band_support">true</bool> <bool translatable="false" name="config_wifi5ghzSupport">true</bool>
<!-- Boolean indicating whether the wifi chipset has background scan support --> <!-- Boolean indicating whether the wifi chipset has background scan support -->
<bool translatable="false" name="config_wifi_background_scan_support">true</bool> <bool translatable="false" name="config_wifi_background_scan_support">true</bool>
@ -359,7 +359,4 @@
<!-- Whether the new Auto Selection Network UI should be shown --> <!-- Whether the new Auto Selection Network UI should be shown -->
<bool name="config_enableNewAutoSelectNetworkUI">true</bool> <bool name="config_enableNewAutoSelectNetworkUI">true</bool>
<!-- Whether device supports double tap to wake -->
<bool name="config_supportDoubleTapWake">true</bool>
</resources> </resources>

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "SystemUIResCommon_Sys",
product_specific: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := SystemUIResCommon_Sys
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "TelecommResCommon_Sys",
product_specific: true,
}

View file

@ -1,16 +0,0 @@
ifeq ($(TARGET_FWK_SUPPORTS_FULL_VALUEADDS), true)
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := TelecommResCommon_Sys
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)
endif

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "TelephonyResCommon_Sys",
product_specific: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := TelephonyResCommon_Sys
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "WifiResCommon_Sys",
product_specific: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_PRODUCT_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := WifiResCommon_Sys
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -1 +0,0 @@
include $(call all-subdir-makefiles)

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "FrameworksResTarget",
vendor: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_VENDOR_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := FrameworksResTarget
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -0,0 +1,9 @@
//
// SPDX-FileCopyrightText: 2024-2025 The LineageOS Project
// SPDX-License-Identifier: Apache-2.0
//
runtime_resource_overlay {
name: "WifiResTarget",
vendor: true,
}

View file

@ -1,14 +0,0 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_VENDOR_MODULE := true
LOCAL_CERTIFICATE := platform
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
LOCAL_PACKAGE_NAME := WifiResTarget
LOCAL_SDK_VERSION := current
include $(BUILD_RRO_PACKAGE)

View file

@ -441,15 +441,6 @@ case "$target" in
;; ;;
esac esac
baseband=`getprop ro.baseband`
#enable atfwd daemon all targets except sda, apq, qcs
case "$baseband" in
"apq" | "sda" | "qcs" )
setprop persist.vendor.radio.atfwd.start false;;
*)
setprop persist.vendor.radio.atfwd.start true;;
esac
#set default lcd density #set default lcd density
#Since lcd density has read only #Since lcd density has read only
#property, it will not overwrite previous set #property, it will not overwrite previous set

View file

@ -1,33 +0,0 @@
#!/vendor/bin/sh
# Copyright (c) 2020 The Linux Foundation. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of The Linux Foundation nor
# the names of its contributors may be used to endorse or promote
# products derived from this software without specific prior written
# permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
#
# Function to start sensors for SSC enabled platforms
#
cp /vendor/etc/sensors/scripts/* /data/vendor/sensors/scripts/
chmod a+rw /data/vendor/sensors/scripts/*

View file

@ -258,6 +258,9 @@ on post-fs-data
mkdir /data/vendor/fpc 0700 system system mkdir /data/vendor/fpc 0700 system system
mkdir /data/vendor/.fps 0770 system vendor_fingerp mkdir /data/vendor/.fps 0770 system vendor_fingerp
mkdir /data/vendor/focaltech 0770 system system
restorecon /data/vendor/focaltech
# Required by touchRec for write the touch data # Required by touchRec for write the touch data
mkdir /data/vendor/touchrec 0770 input input mkdir /data/vendor/touchrec 0770 input input
chown input input /data/vendor/touchrec/bootindex chown input input /data/vendor/touchrec/bootindex

View file

@ -397,11 +397,15 @@ on property:sys.boot_completed=1
#Reinit lmkd to reconfigure lmkd properties #Reinit lmkd to reconfigure lmkd properties
setprop lmkd.reinit 1 setprop lmkd.reinit 1
on property:persist.vendor.radio.atfwd.start=false # Power hal
stop vendor.atfwd chown system system /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
chown system system /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
on property:vendor.radio.atfwd.start=false chown system system /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
stop vendor.atfwd chown system system /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
chmod 0664 /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us
chmod 0664 /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us
chmod 0664 /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us
chmod 0664 /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us
# corefile limit # corefile limit
on property:persist.debug.trace=1 on property:persist.debug.trace=1
@ -572,11 +576,6 @@ on property:sys.boot_completed=1
on property:ro.vendor.ril.mbn_copy_completed=1 on property:ro.vendor.ril.mbn_copy_completed=1
write /data/vendor/radio/copy_complete 1 write /data/vendor/radio/copy_complete 1
service vendor.atfwd /vendor/bin/ATFWD-daemon
class late_start
user system
group system radio
service hostapd_fst /vendor/bin/hw/hostapd -dd -g /data/vendor/wifi/hostapd/global service hostapd_fst /vendor/bin/hw/hostapd -dd -g /data/vendor/wifi/hostapd/global
class main class main
capabilities NET_ADMIN NET_RAW capabilities NET_ADMIN NET_RAW

View file

@ -342,6 +342,9 @@ firmware_directories /vendor/firmware_mnt/image/
/sys/class/fts/touch_aoi aoi_set 0660 root system /sys/class/fts/touch_aoi aoi_set 0660 root system
/sys/class/fts/touch_aoi power_set 0660 root system /sys/class/fts/touch_aoi power_set 0660 root system
#Focaltech FPS
/dev/focaltech_fp 0660 system system
# Goodix fingerprint device # Goodix fingerprint device
/dev/goodix_fp 0660 system system /dev/goodix_fp 0660 system system

View file

@ -1,6 +1,7 @@
# Fingerprint # Fingerprint
type egis_device, dev_type; type egis_device, dev_type;
type etsd_device, dev_type; type etsd_device, dev_type;
type focaltech_fp_device, dev_type;
type goodix_device, dev_type; type goodix_device, dev_type;
# Moto partitions # Moto partitions

View file

@ -56,11 +56,16 @@
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service-ets u:object_r:hal_fingerprint_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service-ets u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service-fpc u:object_r:hal_fingerprint_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service-fpc u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service\.fogos u:object_r:hal_fingerprint_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service\.fogos u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service\.rhodei u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-service\.rhodep u:object_r:hal_fingerprint_default_exec:s0
/data/vendor/.fps(/.*)? u:object_r:fingerprint_vendor_data_file:s0 /data/vendor/.fps(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/data/vendor/egis(/.*)? u:object_r:fingerprint_vendor_data_file:s0 /data/vendor/egis(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/data/vendor/fpc(/.*)? u:object_r:fingerprint_vendor_data_file:s0 /data/vendor/fpc(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/data/vendor/focal(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/data/vendor/focaltech(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/data/vendor/gf_data(/.*)? u:object_r:fingerprint_vendor_data_file:s0 /data/vendor/gf_data(/.*)? u:object_r:fingerprint_vendor_data_file:s0
/dev/esfp0 u:object_r:egis_device:s0 /dev/esfp0 u:object_r:egis_device:s0
/dev/focaltech_fp u:object_r:focaltech_fp_device:s0
/dev/goodix_fp u:object_r:goodix_device:s0 /dev/goodix_fp u:object_r:goodix_device:s0
/sys/devices/soc/0.et320(/.*)? u:object_r:vendor_sysfs_fingerprint:s0 /sys/devices/soc/0.et320(/.*)? u:object_r:vendor_sysfs_fingerprint:s0
@ -90,17 +95,19 @@
# Touch # Touch
/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.bangkk u:object_r:hal_lineage_touch_default_exec:s0 /(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.bangkk u:object_r:hal_lineage_touch_default_exec:s0
/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.fogos u:object_r:hal_lineage_touch_default_exec:s0 /(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.fogos u:object_r:hal_lineage_touch_default_exec:s0
/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.rhodei u:object_r:hal_lineage_touch_default_exec:s0
/(vendor|system/vendor)/bin/hw/vendor\.lineage\.touch@1\.0-service\.rhodep u:object_r:hal_lineage_touch_default_exec:s0
/sys/devices/platform/soc/4a80000\.spi/spi_master/spi0/spi0\.[01]/touchscreen/primary(/.*)? u:object_r:vendor_sysfs_touchpanel:s0 /sys/devices/platform/soc/4a80000\.spi/spi_master/spi0/spi0\.[01]/touchscreen/primary(/.*)? u:object_r:vendor_sysfs_touchpanel:s0
# Thermal # Thermal
/dev/mmi_sys_temp u:object_r:vendor_thermal_device:s0 /dev/mmi_sys_temp u:object_r:vendor_thermal_device:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.thermal@2\.0-service\.mock u:object_r:hal_thermal_default_exec:s0
# Vendor init scripts # Vendor init scripts
/(vendor|system/vendor)/bin/load_touch\.sh u:object_r:vendor_qti_init_shell_exec:s0 /(vendor|system/vendor)/bin/load_touch\.sh u:object_r:vendor_qti_init_shell_exec:s0
/(vendor|system/vendor)/bin/init\.mmi\.laser\.sh u:object_r:vendor_mmi_laser_exec:s0 /(vendor|system/vendor)/bin/init\.mmi\.laser\.sh u:object_r:vendor_mmi_laser_exec:s0
/(vendor|system/vendor)/bin/init\.mmi\.touch\.sh u:object_r:vendor_init_touch_exec:s0 /(vendor|system/vendor)/bin/init\.mmi\.touch\.sh u:object_r:vendor_init_touch_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-goodixservice u:object_r:hal_fingerprint_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-goodixservice u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/hw/android\.hardware\.biometrics\.fingerprint@2\.1-focalservice u:object_r:hal_fingerprint_default_exec:s0
/(vendor|system/vendor)/bin/init\.oem\.(fingerprint2|fingerprint\.overlay)\.sh u:object_r:vendor_init_fingerprint_exec:s0 /(vendor|system/vendor)/bin/init\.oem\.(fingerprint2|fingerprint\.overlay)\.sh u:object_r:vendor_init_fingerprint_exec:s0
/(vendor|system/vendor)/bin/init\.oem\.hw\.sh u:object_r:vendor_init_hw_exec:s0 /(vendor|system/vendor)/bin/init\.oem\.hw\.sh u:object_r:vendor_init_hw_exec:s0
@ -110,6 +117,7 @@
# Vibrator # Vibrator
/sys/devices/platform/soc/990000.i2c/i2c-1/1-005a/leds/vibrator(/.*)? u:object_r:vendor_sysfs_vibrator:s0 /sys/devices/platform/soc/990000.i2c/i2c-1/1-005a/leds/vibrator(/.*)? u:object_r:vendor_sysfs_vibrator:s0
/sys/devices/platform/soc/soc:ldo_vib/leds/vibrator(/.*)? u:object_r:vendor_sysfs_vibrator:s0
# Wakeups # Wakeups
/sys/devices/virtual/input/input[0-9]+/wakeup[0-9]+(/.*)? u:object_r:sysfs_wakeup:s0 /sys/devices/virtual/input/input[0-9]+/wakeup[0-9]+(/.*)? u:object_r:sysfs_wakeup:s0

View file

@ -69,12 +69,9 @@ genfscon sysfs /devices/virtual/touchscreen
genfscon sysfs /devices/platform/soc/a94000.i2c/i2c-2/2-0049/touchscreen u:object_r:vendor_sysfs_touchpanel:s0 genfscon sysfs /devices/platform/soc/a94000.i2c/i2c-2/2-0049/touchscreen u:object_r:vendor_sysfs_touchpanel:s0
genfscon sysfs /devices/platform/soc/4a80000.spi/spi_master/spi0/spi0.[01] u:object_r:vendor_sysfs_touchpanel:s0 genfscon sysfs /devices/platform/soc/4a80000.spi/spi_master/spi0/spi0.[01] u:object_r:vendor_sysfs_touchpanel:s0
# USB
genfscon sysfs /devices/platform/soc/4e00000.ssusb/mode u:object_r:vendor_sysfs_usb_device:s0
# Vibrator # Vibrator
genfscon sysfs /devices/platform/soc/984000.i2c/i2c-0/0-005a/leds/vibrator u:object_r:sysfs_vibrator:s0 genfscon sysfs /devices/platform/soc/984000.i2c/i2c-0/0-005a/leds/vibrator u:object_r:sysfs_vibrator:s0
genfscon sysfs /sys/devices/platform/soc/soc:ldo_vib/leds/vibrator(/.*)? u:object_r:vendor_sysfs_vibrator:s0 genfscon sysfs /devices/platform/soc/soc:ldo_vib/leds/vibrator u:object_r:vendor_sysfs_vibrator:s0
# Wakeup # Wakeup
genfscon sysfs /devices/platform/soc/984000.i2c/i2c-0/0-005a/wakeup/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/984000.i2c/i2c-0/0-005a/wakeup/wakeup u:object_r:sysfs_wakeup:s0
@ -86,10 +83,10 @@ genfscon sysfs /devices/platform/soc/soc:mmi,charger/wakeup
genfscon sysfs /devices/platform/soc/soc:mmi,charger/power/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/soc:mmi,charger/power/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/soc:mmi,charger/power_supply/mmi_battery/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/soc:mmi,charger/power_supply/mmi_battery/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/soc:mmi,charger/power_supply/mmi_battery/power/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/soc:mmi,charger/power_supply/mmi_battery/power/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/soc:mmi,discrete-charging/power_supply/battery/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5-mmi/power_supply/battery/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5-mmi/power_supply/battery/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5-mmi/power_supply/mmi_battery/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5-mmi/power_supply/mmi_battery/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5/power_supply/qcom_battery/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5/power_supply/qcom_battery/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/1c40000.qcom,spmi/spmi-0/spmi0-02/1c40000.qcom,spmi:qcom,pm7250b@2:qcom,qpnp-smb5/power_supply/usb/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/4c90000.i2c/i2c-2/2-006a/power_supply/bq25960-standalone/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/4c90000.i2c/i2c-2/2-006a/power_supply/bq25960-standalone/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/soc:mmi_chrg_manager/power_supply/mmi_chrg_manager/wakeup u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/soc:mmi_chrg_manager/power_supply/mmi_chrg_manager/wakeup u:object_r:sysfs_wakeup:s0
genfscon sysfs /devices/platform/soc/soc:qcom,msm-audio-apr/soc:qcom,msm-audio-apr:qcom,q6core-audio/soc:qcom,msm-audio-apr:qcom,q6core-audio:sound/Listen u:object_r:sysfs_wakeup:s0 genfscon sysfs /devices/platform/soc/soc:qcom,msm-audio-apr/soc:qcom,msm-audio-apr:qcom,q6core-audio/soc:qcom,msm-audio-apr:qcom,q6core-audio:sound/Listen u:object_r:sysfs_wakeup:s0

View file

@ -1,12 +1,14 @@
allow hal_fingerprint_default { allow hal_fingerprint_default {
etsd_device etsd_device
egis_device egis_device
focaltech_fp_device
goodix_device goodix_device
tee_device tee_device
graphics_device graphics_device
}: chr_file rw_file_perms; }: chr_file rw_file_perms;
allow hal_fingerprint_default self:binder { call transfer }; allow hal_fingerprint_default self:binder { call transfer };
allow hal_fingerprint_default self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
allow hal_fingerprint_default self:netlink_socket create_socket_perms_no_ioctl; allow hal_fingerprint_default self:netlink_socket create_socket_perms_no_ioctl;
r_dir_file(hal_fingerprint_default, firmware_file) r_dir_file(hal_fingerprint_default, firmware_file)
get_prop(hal_fingerprint_default, build_bootimage_prop) get_prop(hal_fingerprint_default, build_bootimage_prop)
@ -19,6 +21,9 @@ allow hal_fingerprint_default uhid_device:chr_file rw_file_perms;
allow hal_fingerprint_default vendor_sysfs_fingerprint:{ file lnk_file } read; allow hal_fingerprint_default vendor_sysfs_fingerprint:{ file lnk_file } read;
allow hal_fingerprint_default vendor_data_tzstorage_file:dir rw_dir_perms; allow hal_fingerprint_default vendor_data_tzstorage_file:dir rw_dir_perms;
allow hal_fingerprint_default vendor_data_tzstorage_file:file create_file_perms; allow hal_fingerprint_default vendor_data_tzstorage_file:file create_file_perms;
allow hal_fingerprint_default vndbinder_device:chr_file rw_file_perms;
binder_call(hal_fingerprint_default, vndservicemanager);
allow hal_fingerprint_default hal_fingerprint_vndservice:service_manager add;
binder_call(hal_fingerprint_default, hal_fingerprint_default) binder_call(hal_fingerprint_default, hal_fingerprint_default)
binder_call(hal_fingerprint_default, hal_health_default) binder_call(hal_fingerprint_default, hal_health_default)

View file

@ -1,8 +0,0 @@
allow hal_thermal_default sysfs_thermal:dir r_dir_perms;
allow hal_thermal_default sysfs_thermal:file rw_file_perms;
allow hal_thermal_default proc_stat:file r_file_perms;
allow hal_thermal_default self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
# read thermal config
get_prop(hal_thermal_default, vendor_thermal_prop)

View file

@ -5,6 +5,3 @@ vendor_internal_prop(vendor_mot_fingerprint_prop);
vendor_internal_prop(vendor_mot_hw_prop); vendor_internal_prop(vendor_mot_hw_prop);
vendor_internal_prop(vendor_mot_touch_prop); vendor_internal_prop(vendor_mot_touch_prop);
vendor_internal_prop(vendor_mot_nfc_prop); vendor_internal_prop(vendor_mot_nfc_prop);
# Thermal engine
vendor_internal_prop(vendor_thermal_prop)

View file

@ -21,6 +21,3 @@ vendor.nfc.fw_status u:object_r:vendor_mot_nfc_prop:s0
persist.vendor.hardware.fingerprint u:object_r:vendor_mot_fingerprint_prop:s0 persist.vendor.hardware.fingerprint u:object_r:vendor_mot_fingerprint_prop:s0
vendor.hw.fps.ident u:object_r:vendor_mot_fingerprint_prop:s0 vendor.hw.fps.ident u:object_r:vendor_mot_fingerprint_prop:s0
vendor.hw.fingerprint.status u:object_r:vendor_mot_fingerprint_prop:s0 vendor.hw.fingerprint.status u:object_r:vendor_mot_fingerprint_prop:s0
# Thermal engine
vendor.thermal.config u:object_r:vendor_thermal_prop:s0

View file

@ -1,7 +0,0 @@
allow vendor_thermal-engine { proc_stat proc_loadavg }:file r_file_perms;
allow vendor_thermal-engine vendor_thermal_device:chr_file rw_file_perms;
rw_dir_file(vendor_thermal-engine, vendor_sysfs_battery_supply)
rw_dir_file(vendor_thermal-engine, vendor_sysfs_usb_supply)
set_prop(vendor_thermal-engine, vendor_thermal_prop);
r_dir_file(vendor_thermal-engine, sysfs_thermal)

View file

@ -0,0 +1,4 @@
allow vendor_thermal-engine { proc_stat proc_loadavg }:file r_file_perms;
allow vendor_thermal-engine vendor_thermal_device:chr_file rw_file_perms;
r_dir_file(vendor_thermal-engine, vendor_sysfs_battery_supply)
r_dir_file(vendor_thermal-engine, vendor_sysfs_usb_supply)

1
sepolicy/vendor/vndservice.te vendored Normal file
View file

@ -0,0 +1 @@
type hal_fingerprint_vndservice, vndservice_manager_type;

1
sepolicy/vendor/vndservice_contexts vendored Normal file
View file

@ -0,0 +1 @@
FocalFingerprintService u:object_r:hal_fingerprint_vndservice:s0

1
setup-makefiles.py Executable file
View file

@ -0,0 +1 @@
#!./extract-files.py --regenerate_makefiles

View file

@ -1,52 +0,0 @@
#!/bin/bash
#
# SPDX-FileCopyrightText: 2016 The CyanogenMod Project
# SPDX-FileCopyrightText: 2017-2024 The LineageOS Project
#
# SPDX-License-Identifier: Apache-2.0
#
set -e
# Load extract_utils and do some sanity checks
MY_DIR="${BASH_SOURCE%/*}"
if [[ ! -d "${MY_DIR}" ]]; then MY_DIR="${PWD}"; fi
ANDROID_ROOT="${MY_DIR}/../../.."
HELPER="${ANDROID_ROOT}/tools/extract-utils/extract_utils.sh"
if [ ! -f "${HELPER}" ]; then
echo "Unable to find helper script at ${HELPER}"
exit 1
fi
source "${HELPER}"
# Initialize the helper for common
setup_vendor "${DEVICE_COMMON}" "${VENDOR_COMMON:-$VENDOR}" "${ANDROID_ROOT}" true
# Warning headers and guards
write_headers "bangkk fogos"
# The standard common blobs
write_makefiles "${MY_DIR}/proprietary-files.txt"
# Finish
write_footers
if [ -s "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-files.txt" ]; then
# Reinitialize the helper for device
setup_vendor "${DEVICE}" "${VENDOR}" "${ANDROID_ROOT}" false
# Warning headers and guards
write_headers
# The standard device blobs
write_makefiles "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-files.txt"
if [ -f "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-firmware.txt" ]; then
append_firmware_calls_to_makefiles "${MY_DIR}/../../${VENDOR}/${DEVICE}/proprietary-firmware.txt"
fi
# Finish
write_footers
fi

View file

@ -1,73 +0,0 @@
#!/usr/bin/env python
#
# Copyright (C) 2016 The CyanogenMod Project
# Copyright (C) 2017-2020 The LineageOS 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.
#
import os
import sys
from hashlib import sha1
device='sm6375-common'
vendor='motorola'
with open('proprietary-files.txt', 'r') as f:
lines = f.read().splitlines()
vendorPath = '../../../vendor/' + vendor + '/' + device + '/proprietary'
needSHA1 = False
def cleanup():
for index, line in enumerate(lines):
# Skip empty or commented lines
if len(line) == 0 or line[0] == '#' or '|' not in line:
continue
# Drop SHA1 hash, if existing
lines[index] = line.split('|')[0]
def update():
for index, line in enumerate(lines):
# Skip empty lines
if len(line) == 0:
continue
# Check if we need to set SHA1 hash for the next files
if line[0] == '#':
needSHA1 = (' - from' in line)
continue
if needSHA1:
# Remove existing SHA1 hash
line = line.split('|')[0]
filePath = line.split(';')[0].split(':')[-1]
if filePath[0] == '-':
filePath = filePath[1:]
with open(os.path.join(vendorPath, filePath), 'rb') as f:
hash = sha1(f.read()).hexdigest()
lines[index] = '%s|%s' % (line, hash)
if len(sys.argv) == 2 and sys.argv[1] == '-c':
cleanup()
else:
update()
with open('proprietary-files.txt', 'w') as file:
file.write('\n'.join(lines) + '\n')