hardware: samsung_slsi: libcamera2: Correct front and rear camera info

This patch corrects AF, AE and Scene mode parameters
for front and rear camera each.

BUG: 7287905
Change-Id: I95c16293530903f3d83170bdb172e67f9adcbaff
Signed-off-by: Sungjoong Kang <sj3.kang@samsung.com>
diff --git a/libcamera2/ExynosCamera2.cpp b/libcamera2/ExynosCamera2.cpp
index 49ba590..68d9702 100644
--- a/libcamera2/ExynosCamera2.cpp
+++ b/libcamera2/ExynosCamera2.cpp
@@ -147,6 +147,42 @@
      320,  240,
 };
 
+const uint8_t availableAfModesS5K4E5[] =
+{
+    ANDROID_CONTROL_AF_OFF,
+    ANDROID_CONTROL_AF_AUTO,
+    ANDROID_CONTROL_AF_MACRO,
+    ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
+    ANDROID_CONTROL_AF_CONTINUOUS_VIDEO
+};
+
+const uint8_t sceneModeOverridesS5K4E5[] =
+{
+    // ANDROID_CONTROL_SCENE_MODE_ACTION
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
+    // ANDROID_CONTROL_SCENE_MODE_NIGHT
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
+    // ANDROID_CONTROL_SCENE_MODE_SUNSET
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_DAYLIGHT,
+    ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
+    // ANDROID_CONTROL_SCENE_MODE_PARTY
+    ANDROID_CONTROL_AE_ON_AUTO_FLASH,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_CONTINUOUS_PICTURE
+};
+
+const uint8_t availableAeModesS5K4E5[] =
+{
+    ANDROID_CONTROL_AE_OFF,
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AE_ON_AUTO_FLASH
+};
+
 ExynosCamera2InfoS5K4E5::ExynosCamera2InfoS5K4E5()
 {
     sensorW             = 2560;
@@ -161,6 +197,12 @@
     focalLength         = 3.43f;
     aperture            = 2.7f;
     fnumber             = 2.7f;
+    availableAfModes    = availableAfModesS5K4E5;
+    numAvailableAfModes = ARRAY_SIZE(availableAfModesS5K4E5);
+    sceneModeOverrides  = sceneModeOverridesS5K4E5;
+    numSceneModeOverrides = ARRAY_SIZE(sceneModeOverridesS5K4E5);
+    availableAeModes    = availableAeModesS5K4E5;
+    numAvailableAeModes = ARRAY_SIZE(availableAeModesS5K4E5);
 }
 
 ExynosCamera2InfoS5K4E5::~ExynosCamera2InfoS5K4E5()
@@ -201,6 +243,37 @@
      320,  240,
 };
 
+const uint8_t availableAfModesS5K6A3[] =
+{
+    ANDROID_CONTROL_AF_OFF
+};
+
+const uint8_t sceneModeOverridesS5K6A3[] =
+{
+    // ANDROID_CONTROL_SCENE_MODE_ACTION
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_OFF,
+    // ANDROID_CONTROL_SCENE_MODE_NIGHT
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_OFF,
+    // ANDROID_CONTROL_SCENE_MODE_SUNSET
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_DAYLIGHT,
+    ANDROID_CONTROL_AF_OFF,
+    // ANDROID_CONTROL_SCENE_MODE_PARTY
+    ANDROID_CONTROL_AE_ON,
+    ANDROID_CONTROL_AWB_AUTO,
+    ANDROID_CONTROL_AF_OFF
+};
+
+const uint8_t availableAeModesS5K6A3[] =
+{
+    ANDROID_CONTROL_AE_OFF,
+    ANDROID_CONTROL_AE_ON
+};
+
 ExynosCamera2InfoS5K6A3::ExynosCamera2InfoS5K6A3()
 {
     sensorW     = 1392;
@@ -215,6 +288,12 @@
     focalLength         = 2.73f;
     aperture            = 2.8f;
     fnumber             = 2.8f;
+    availableAfModes    = availableAfModesS5K6A3;
+    numAvailableAfModes = ARRAY_SIZE(availableAfModesS5K6A3);
+    sceneModeOverrides  = sceneModeOverridesS5K6A3;
+    numSceneModeOverrides = ARRAY_SIZE(sceneModeOverridesS5K6A3);
+    availableAeModes    = availableAeModesS5K6A3;
+    numAvailableAeModes = ARRAY_SIZE(availableAeModesS5K6A3);
 }
 
 ExynosCamera2InfoS5K6A3::~ExynosCamera2InfoS5K6A3()
@@ -501,13 +580,8 @@
     ADD_OR_SIZE(ANDROID_CONTROL_MAX_REGIONS,
             &max3aRegions, 1);
 
-    static const uint8_t availableAeModes[] = {
-            ANDROID_CONTROL_AE_OFF,
-            ANDROID_CONTROL_AE_ON,
-            ANDROID_CONTROL_AE_ON_AUTO_FLASH
-    };
     ADD_OR_SIZE(ANDROID_CONTROL_AE_AVAILABLE_MODES,
-            availableAeModes, sizeof(availableAeModes));
+            m_curCameraInfo->availableAeModes, m_curCameraInfo->numAvailableAeModes);
 
     static const camera_metadata_rational exposureCompensationStep = {
             1, 1
@@ -545,15 +619,8 @@
     ADD_OR_SIZE(ANDROID_CONTROL_AWB_AVAILABLE_MODES,
             availableAwbModes, sizeof(availableAwbModes));
 
-    static const uint8_t availableAfModes[] = {
-            ANDROID_CONTROL_AF_OFF,
-            ANDROID_CONTROL_AF_AUTO,
-            ANDROID_CONTROL_AF_MACRO,
-            ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
-            ANDROID_CONTROL_AF_CONTINUOUS_VIDEO
-    };
     ADD_OR_SIZE(ANDROID_CONTROL_AF_AVAILABLE_MODES,
-            availableAfModes, sizeof(availableAfModes));
+                m_curCameraInfo->availableAfModes, m_curCameraInfo->numAvailableAfModes);
 
     static const uint8_t availableVstabModes[] = {
             ANDROID_CONTROL_VIDEO_STABILIZATION_OFF,
@@ -562,26 +629,8 @@
     ADD_OR_SIZE(ANDROID_CONTROL_AVAILABLE_VIDEO_STABILIZATION_MODES,
             availableVstabModes, sizeof(availableVstabModes));
 
-    static const uint8_t sceneModeOverrides[] = {
-        // ANDROID_CONTROL_SCENE_MODE_ACTION
-            ANDROID_CONTROL_AE_ON,
-            ANDROID_CONTROL_AWB_AUTO,
-            ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
-        // ANDROID_CONTROL_SCENE_MODE_NIGHT
-            ANDROID_CONTROL_AE_ON,
-            ANDROID_CONTROL_AWB_AUTO,
-            ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
-        // ANDROID_CONTROL_SCENE_MODE_SUNSET
-            ANDROID_CONTROL_AE_ON,
-            ANDROID_CONTROL_AWB_DAYLIGHT,
-            ANDROID_CONTROL_AF_CONTINUOUS_PICTURE,
-        // ANDROID_CONTROL_SCENE_MODE_PARTY
-            ANDROID_CONTROL_AE_ON_AUTO_FLASH,
-            ANDROID_CONTROL_AWB_AUTO,
-            ANDROID_CONTROL_AF_CONTINUOUS_PICTURE
-    };
     ADD_OR_SIZE(ANDROID_CONTROL_SCENE_MODE_OVERRIDES,
-            sceneModeOverrides, sizeof(sceneModeOverrides));
+            m_curCameraInfo->sceneModeOverrides, m_curCameraInfo->numSceneModeOverrides);
 
     static const uint8_t quirkTriggerAuto = 1;
     ADD_OR_SIZE(ANDROID_QUIRKS_TRIGGER_AF_WITH_AUTO,
diff --git a/libcamera2/ExynosCamera2.h b/libcamera2/ExynosCamera2.h
index 5d98a75..e9973b4 100644
--- a/libcamera2/ExynosCamera2.h
+++ b/libcamera2/ExynosCamera2.h
@@ -51,6 +51,12 @@
     float       focalLength;
     float       aperture;
     float       fnumber;
+    const uint8_t       *availableAfModes;
+    const uint8_t       *sceneModeOverrides;
+    const uint8_t       *availableAeModes;
+    int         numAvailableAfModes;
+    int         numSceneModeOverrides;
+    int         numAvailableAeModes;
 
     /* FD information */
     int32_t    maxFaceCount;