From 081b293967cde2610ae326c13645b3afeb4b9d19 Mon Sep 17 00:00:00 2001 From: Tim Zimmermann Date: Sun, 29 Oct 2023 12:42:50 +0100 Subject: [PATCH] sm7125-common: Switch to hardware/samsung camera provider HAL * This allows us to get rid of TARGET_SPECIFIC_HEADER_PATH and our custom camera provider for extra camera IDs Change-Id: If7630fc11b117273cae78f26a3ba337823ac58b4 --- BoardConfigCommon.mk | 7 -- common.mk | 11 +-- configs/manifest.xml | 20 ------ hidl/camera/provider/Android.bp | 64 ----------------- .../camera/provider/SamsungCameraProvider.cpp | 69 ------------------- hidl/camera/provider/SamsungCameraProvider.h | 35 ---------- ...ware.camera.provider@2.6-service.sm7125.rc | 10 --- hidl/camera/provider/service.cpp | 48 ------------- proprietary-files.txt | 11 --- sepolicy/vendor/file_contexts | 2 +- 10 files changed, 2 insertions(+), 275 deletions(-) delete mode 100644 hidl/camera/provider/Android.bp delete mode 100644 hidl/camera/provider/SamsungCameraProvider.cpp delete mode 100644 hidl/camera/provider/SamsungCameraProvider.h delete mode 100644 hidl/camera/provider/android.hardware.camera.provider@2.6-service.sm7125.rc delete mode 100644 hidl/camera/provider/service.cpp diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk index 4d4f098..0f05232 100644 --- a/BoardConfigCommon.mk +++ b/BoardConfigCommon.mk @@ -147,13 +147,6 @@ BOARD_SUPPORTS_SOUND_TRIGGER := true # Bluetooth BOARD_BLUETOOTH_BDROID_BUILDCFG_INCLUDE_DIR := $(COMMON_PATH)/bluetooth/include -# Camera -SOONG_CONFIG_NAMESPACES += samsung_sm7125CameraVars -SOONG_CONFIG_samsung_sm7125CameraVars += \ - samsung_sm7125_model - -SOONG_CONFIG_samsung_sm7125CameraVars_samsung_sm7125_model := $(TARGET_DEVICE) - # Keymaster TARGET_KEYMASTER_VARIANT := samsung diff --git a/common.mk b/common.mk index cfc70f2..276c9a9 100644 --- a/common.mk +++ b/common.mk @@ -106,18 +106,9 @@ PRODUCT_PACKAGES += \ # Camera PRODUCT_PACKAGES += \ - android.hardware.camera.provider@2.6-service.sm7125 \ - android.hardware.camera.provider@2.4-legacy \ - android.hardware.camera.provider@2.5-legacy \ - camera.device@1.0-impl \ - camera.device@3.2-impl \ - camera.device@3.3-impl \ - camera.device@3.4-impl \ - camera.device@3.5-impl \ + android.hardware.camera.provider@2.5-service.samsung \ libgrallocusage.vendor \ vendor.qti.hardware.camera.device@1.0.vendor \ - android.hardware.camera.device@3.6.vendor \ - android.hardware.camera.provider@2.6.vendor # CAS PRODUCT_PACKAGES += \ diff --git a/configs/manifest.xml b/configs/manifest.xml index eac115e..75bd429 100644 --- a/configs/manifest.xml +++ b/configs/manifest.xml @@ -39,16 +39,6 @@ - android.hardware.camera.provider - hwbinder - 2.6 - - ICameraProvider - legacy/0 - - @2.6::ICameraProvider/legacy/0 - - android.hardware.gatekeeper hwbinder 1.0 @@ -409,16 +399,6 @@ @1.0::ISehBluetoothAudioOffload/default - - vendor.samsung.hardware.camera.provider - hwbinder - 4.0 - - ISehCameraProvider - legacy/0 - - @4.0::ISehCameraProvider/legacy/0 - vendor.samsung.hardware.gnss hwbinder diff --git a/hidl/camera/provider/Android.bp b/hidl/camera/provider/Android.bp deleted file mode 100644 index 26847b2..0000000 --- a/hidl/camera/provider/Android.bp +++ /dev/null @@ -1,64 +0,0 @@ -// -// Copyright (C) 2022 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. - -soong_config_module_type { - name: "samsung_sm7125_model", - module_type: "cc_defaults", - config_namespace: "samsung_sm7125CameraVars", - value_variables: ["samsung_sm7125_model"], - properties: ["cppflags"], -} - -samsung_sm7125_model { - name: "samsung_sm7125_model_defaults", - soong_config_variables: { - samsung_sm7125_model: { - cppflags: ["-DSAMSUNG_SM7125_MODEL_%s"], - }, - }, -} - -cc_binary { - name: "android.hardware.camera.provider@2.6-service.sm7125", - defaults: [ - "hidl_defaults", - "samsung_sm7125_model_defaults", - ], - compile_multilib: "both", - proprietary: true, - relative_install_path: "hw", - srcs: [ - "SamsungCameraProvider.cpp", - "service.cpp" - ], - init_rc: ["android.hardware.camera.provider@2.6-service.sm7125.rc"], - shared_libs: [ - "android.hardware.camera.provider@2.4", - "android.hardware.camera.provider@2.4-legacy", - "android.hardware.camera.provider@2.5", - "android.hardware.camera.provider@2.5-legacy", - "android.hardware.camera.provider@2.6", - "libbinder", - "libcamera_metadata", - "libcutils", - "libhardware", - "libhidlbase", - "liblog", - "libutils", - ], - static_libs: [ - "android.hardware.camera.common@1.0-helper", - ], -} diff --git a/hidl/camera/provider/SamsungCameraProvider.cpp b/hidl/camera/provider/SamsungCameraProvider.cpp deleted file mode 100644 index a6537ff..0000000 --- a/hidl/camera/provider/SamsungCameraProvider.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2021 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. - */ - -#define LOG_TAG "SamsungCameraProvider@2.6" - -#include "SamsungCameraProvider.h" - -#include - -using ::android::NO_ERROR; -using ::android::OK; - -const int kMaxCameraIdLen = 16; - -SamsungCameraProvider::SamsungCameraProvider() : LegacyCameraProviderImpl_2_5() { - -#ifdef SAMSUNG_SM7125_MODEL_a72q - // tele - mExtraIDs.push_back(52); -#endif - - // macro - mExtraIDs.push_back(54); - - if (!mInitFailed) { - for (int i : mExtraIDs) { - struct camera_info info; - auto rc = mModule->getCameraInfo(i, &info); - - if (rc != NO_ERROR) { - continue; - } - - if (checkCameraVersion(i, info) != OK) { - ALOGE("Camera version check failed!"); - mModule.clear(); - mInitFailed = true; - return; - } - -#ifdef SAMSUNG_CAMERA_DEBUG - ALOGI("ID=%d is at index %d", i, mNumberOfLegacyCameras); -#endif - - char cameraId[kMaxCameraIdLen]; - snprintf(cameraId, sizeof(cameraId), "%d", i); - std::string cameraIdStr(cameraId); - mCameraStatusMap[cameraIdStr] = CAMERA_DEVICE_STATUS_PRESENT; - - addDeviceNames(i); - mNumberOfLegacyCameras++; - } - } -} - -SamsungCameraProvider::~SamsungCameraProvider() {} diff --git a/hidl/camera/provider/SamsungCameraProvider.h b/hidl/camera/provider/SamsungCameraProvider.h deleted file mode 100644 index bb7f2e1..0000000 --- a/hidl/camera/provider/SamsungCameraProvider.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright (C) 2021 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. - */ - -#ifndef SAMSUNG_CAMERA_PROVIDER_H - -#include "LegacyCameraProviderImpl_2_5.h" - -#define SAMSUNG_CAMERA_DEBUG - -using ::android::hardware::camera::provider::V2_5::implementation::LegacyCameraProviderImpl_2_5; -using ::android::hardware::Return; - -class SamsungCameraProvider : public LegacyCameraProviderImpl_2_5 { -public: - SamsungCameraProvider(); - ~SamsungCameraProvider(); - -private: - std::vector mExtraIDs; -}; - -#endif // SAMSUNG_CAMERA_PROVIDER_H diff --git a/hidl/camera/provider/android.hardware.camera.provider@2.6-service.sm7125.rc b/hidl/camera/provider/android.hardware.camera.provider@2.6-service.sm7125.rc deleted file mode 100644 index f04d1d6..0000000 --- a/hidl/camera/provider/android.hardware.camera.provider@2.6-service.sm7125.rc +++ /dev/null @@ -1,10 +0,0 @@ -service vendor.camera-provider-2-6 /vendor/bin/hw/android.hardware.camera.provider@2.6-service.sm7125 - interface android.hardware.camera.provider@2.6::ICameraProvider legacy/0 - interface android.hardware.camera.provider@2.5::ICameraProvider legacy/0 - interface android.hardware.camera.provider@2.4::ICameraProvider legacy/0 - class hal - user cameraserver - group audio camera input drmrpc system media_rw sdcard_rw media - ioprio rt 4 - capabilities SYS_NICE - task_profiles CameraServiceCapacity MaxPerformance diff --git a/hidl/camera/provider/service.cpp b/hidl/camera/provider/service.cpp deleted file mode 100644 index 0841a1f..0000000 --- a/hidl/camera/provider/service.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright 2019 The Android Open Source Project - * Copyright 2021 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. - */ - -#define LOG_TAG "android.hardware.camera.provider@2.6-service.samsung" - -#include -#include -#include -#include - -#include "CameraProvider_2_5.h" -#include "SamsungCameraProvider.h" - -using android::status_t; -using android::hardware::camera::provider::V2_5::ICameraProvider; - -int main() -{ - using namespace android::hardware::camera::provider::V2_5::implementation; - - ALOGI("CameraProvider@2.5 legacy service is starting."); - - ::android::hardware::configureRpcThreadpool(/*threads*/ HWBINDER_THREAD_COUNT, /*willJoin*/ true); - - ::android::sp provider = new CameraProvider(); - - status_t status = provider->registerAsService("legacy/0"); - LOG_ALWAYS_FATAL_IF(status != android::OK, "Error while registering provider service: %d", - status); - - ::android::hardware::joinRpcThreadpool(); - - return 0; -} diff --git a/proprietary-files.txt b/proprietary-files.txt index 801ff32..312e43d 100644 --- a/proprietary-files.txt +++ b/proprietary-files.txt @@ -164,17 +164,6 @@ vendor/firmware/crnv21.bin vendor/firmware/apnv11.bin # Camera -vendor/lib/camera.device@1.0-impl.so -vendor/lib/camera.device@3.2-impl.so -vendor/lib/camera.device@3.3-impl.so -vendor/lib/camera.device@3.4-impl.so -vendor/lib/camera.device@3.5-impl.so -vendor/lib/vendor.samsung.hardware.camera.device@5.0-impl.so -vendor/lib/vendor.samsung.hardware.camera.device@5.0.so -vendor/lib/vendor.samsung.hardware.camera.provider@4.0-legacy.so -vendor/lib/vendor.samsung.hardware.camera.provider@4.0.so -vendor/lib64/camera.device@1.0-impl.so -vendor/lib64/camera.device@3.2-impl.so vendor/lib/libsensorndkbridge.so vendor/lib64/libsensorndkbridge.so vendor/lib/libsuper_night_interface.so diff --git a/sepolicy/vendor/file_contexts b/sepolicy/vendor/file_contexts index b9dae92..c1b8e59 100644 --- a/sepolicy/vendor/file_contexts +++ b/sepolicy/vendor/file_contexts @@ -50,7 +50,7 @@ # VENDOR /(vendor|system/vendor)/bin/factory\.ssc u:object_r:factory_ssc_exec:s0 /(vendor|system/vendor)/bin/hw/macloader u:object_r:macloader_exec:s0 -/(vendor|system/vendor)/bin/hw/android\.hardware\.camera\.provider@2\.6-service\.sm7125 u:object_r:hal_camera_default_exec:s0 +/(vendor|system/vendor)/bin/hw/android\.hardware\.camera\.provider@2\.5-service\.samsung u:object_r:hal_camera_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.drm@[0-9]\.[0-9]-service\.widevine u:object_r:hal_drm_widevine_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.keymaster@[0-9]\.[0-9]-service\.samsung u:object_r:hal_keymaster_default_exec:s0 /(vendor|system/vendor)/bin/hw/android\.hardware\.power(@[0-9]\.[0-9])?-service\.samsung-libperfmgr u:object_r:hal_power_default_exec:s0