[Feature][T8TSK-251] add get security boot flag API in misc

Only Configure:No
Affected branch:GSW3.0-No-Connman
Affected module:misc
Is it affected on both ZXIC and MTK: only MTK
Self-test: Yes
Doc Update: Need

Change-Id: I873d746ab817a5f88fb27372aeb60b79cdfd2b66
diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-misc/liblynq-misc.bb b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-misc/liblynq-misc.bb
new file mode 100755
index 0000000..cc0b881
--- /dev/null
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/liblynq-misc/liblynq-misc.bb
@@ -0,0 +1,55 @@
+inherit externalsrc package

+

+DESCRIPTION = "liblynq-misc.so"

+LICENSE = "MobileTekProprietary"

+LIC_FILES_CHKSUM = "file://LICENSE;md5=b1e07e8d88e26263e71d3a9e2aa9a2ff"

+DEPENDS += "platform-libs"

+inherit workonsrc

+WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-misc/"

+

+TARGET_CC_ARCH += "${LDFLAGS}"

+BB_INCLUDE_ADD = "--sysroot=${STAGING_DIR_HOST}"

+BB_LDFLAGS_ADD = "--sysroot=${STAGING_DIR_HOST} -Wl,--hash-style=gnu"

+

+

+FILES_${PN} = "${base_libdir}/*.so "

+

+FILES_${PN}-dev = "/test \

+                   ${includedir}"

+

+FILES_${PN}-doc = "/doc"

+

+FILES_${PN}-dbg ="${base_bindir}/.debug \

+                  ${base_libdir}/.debug \

+                  ${base_sbindir}/.debug"

+

+INSANE_SKIP_${PN} += "already-stripped"

+INSANE_SKIP_${PN} += "installed-vs-shipped"

+

+

+#INHIBIT_PACKAGE_STRIP = "1"

+do_compile () {

+	if [ "${PACKAGE_ARCH}" = "cortexa7hf-vfp-vfpv4-neon" ]; then

+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"

+	elif [ "${PACKAGE_ARCH}" = "cortexa7hf-neon-vfpv4" ]; then

+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE"

+	elif [ "${PACKAGE_ARCH}" = "cortexa53hf-neon-fp-armv8" ]; then

+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -mhard-float -Wl,--hash-style=gnu -DTELEPHONYWARE -mhard-float -mfpu=neon-fp-armv8 -mfloat-abi=hard -mcpu=cortex-a53 -mtune=cortex-a53"

+	else

+		oe_runmake all ROOT=${STAGING_DIR_HOST} OFLAGS="--sysroot=${STAGING_DIR_HOST} -Os -Wl,--hash-style=gnu -DTELEPHONYWARE"

+	fi

+}

+

+do_install () {

+    oe_runmake install ROOT=${D}

+	

+    if [ -d "${WORKONSRC}" ] ; then

+        install -d ${D}${includedir}/lynq_misc

+        cp -arf ${S}/include/* ${D}${includedir}/lynq_misc/	    	

+    fi 

+}

+

+addtask bachclean

+do_bachclean () {

+    oe_runmake clean

+}

diff --git a/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb b/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
index 60fe23a..7c3b8a5 100755
--- a/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
+++ b/meta/meta-mediatek-mt2735/recipes-lynq/packagegroups/packagegroup-lync-mt2735.bb
@@ -56,4 +56,5 @@
     tzdata \
     lynq-tester-service \
     liblynq-shm \
+    liblynq-misc \
     "
diff --git a/src/lynq/lib/liblynq-misc/LICENSE b/src/lynq/lib/liblynq-misc/LICENSE
new file mode 100755
index 0000000..605b7ea
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/LICENSE
@@ -0,0 +1,31 @@
+Copyright Statement:
+
+This software/firmware and related documentation ("MobileTek Software") are
+protected under relevant copyright laws. The information contained herein is
+confidential and proprietary to MobileTek Inc. and/or its licensors. Without
+the prior written permission of MobileTek inc. and/or its licensors, any
+reproduction, modification, use or disclosure of MobileTek Software, and
+information contained herein, in whole or in part, shall be strictly
+prohibited.
+
+MobileTek Inc. (C) 2015. All rights reserved.
+
+BY OPENING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
+THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MobileTek SOFTWARE")
+RECEIVED FROM MobileTek AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER
+ON AN "AS-IS" BASIS ONLY. MobileTek EXPRESSLY DISCLAIMS ANY AND ALL
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
+WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR
+NONINFRINGEMENT. NEITHER DOES MobileTek PROVIDE ANY WARRANTY WHATSOEVER WITH
+RESPECT TO THE SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY,
+INCORPORATED IN, OR SUPPLIED WITH THE MobileTek SOFTWARE, AND RECEIVER AGREES
+TO LOOK ONLY TO SUCH THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO.
+RECEIVER EXPRESSLY ACKNOWLEDGES THAT IT IS RECEIVER'S SOLE RESPONSIBILITY TO
+OBTAIN FROM ANY THIRD PARTY ALL PROPER LICENSES CONTAINED IN MobileTek
+SOFTWARE. MobileTek SHALL ALSO NOT BE RESPONSIBLE FOR ANY MobileTek SOFTWARE
+RELEASES MADE TO RECEIVER'S SPECIFICATION OR TO CONFORM TO A PARTICULAR
+STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND MobileTek'S
+ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE MobileTek SOFTWARE
+RELEASED HEREUNDER WILL BE, AT MobileTek'S OPTION, TO REVISE OR REPLACE THE
+MobileTek SOFTWARE AT ISSUE, OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE
+CHARGE PAID BY RECEIVER TO MobileTek FOR SUCH MobileTek SOFTWARE AT ISSUE.
diff --git a/src/lynq/lib/liblynq-misc/include/lynq_misc.h b/src/lynq/lib/liblynq-misc/include/lynq_misc.h
new file mode 100755
index 0000000..4207191
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/include/lynq_misc.h
@@ -0,0 +1,28 @@
+/**

+ * @file misc.h

+ * @author you.chen

+ * @brief 

+ * @version 1.0

+ * @date 2023-08-21

+ * 

+ * @copyright Copyright (c) 2023

+ * 

+ */

+#ifndef __LYNQ_MISC_H__

+#define __LYNQ_MISC_H__

+

+#ifdef __cplusplus

+extern "C" {

+#endif

+

+/**

+ * @brief lynq_get_security_boot_flag get the flag in efuse

+ * @param enable_flag (output param, 1 for enabled)

+ * @return 0 success, -1 some error occur

+ */

+int lynq_get_security_boot_flag(int * enabled_flag);

+

+#ifdef __cplusplus

+}

+#endif 

+#endif //#ifndef __LYNQ_MISC_H__

diff --git a/src/lynq/lib/liblynq-misc/lynq_misc.cpp b/src/lynq/lib/liblynq-misc/lynq_misc.cpp
new file mode 100755
index 0000000..1bada46
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/lynq_misc.cpp
@@ -0,0 +1,42 @@
+#include <stdio.h>

+#include "lynq_misc.h"

+#include "log/log.h"

+

+#undef LOG_TAG

+#define LOG_TAG "MISC"

+

+int lynq_get_security_boot_flag(int * enabled_flag)

+{

+    int value, ret;

+    if (enabled_flag == NULL)

+    {

+        RLOGE("input param is null ptr");

+        return -1;

+    }

+    *enabled_flag = 0;

+    FILE *pfile=fopen("/proc/device-tree/chosen/atag,devinfo", "r");

+    if (pfile == NULL)

+    {

+        RLOGE("open devinfo fail");

+        return -1;

+    }

+    ret = fseek(pfile, 0x428, 0);

+    if (ret != 0)

+    {

+        RLOGE("seek file fail");

+        fclose(pfile);

+        return -1;

+    }

+    ret = fread(&value, sizeof (value), 1, pfile);

+    if (ret != 1)

+    {

+        RLOGE("read file fail");

+        fclose(pfile);

+        return -1;

+    }

+    fclose(pfile);

+

+    // the third bit of 32bits at 0x428 (big endian?), 1 for enabled, 0 not enabled

+    *enabled_flag = (value & 0x20) == 0 ? 0 : 1;

+    return 0;

+}

diff --git a/src/lynq/lib/liblynq-misc/makefile b/src/lynq/lib/liblynq-misc/makefile
new file mode 100755
index 0000000..b7d636b
--- /dev/null
+++ b/src/lynq/lib/liblynq-misc/makefile
@@ -0,0 +1,58 @@
+SHELL = /bin/sh
+RM = rm -f
+
+LOCAL_CFLAGS := -Wall \
+                -g -Os \
+                -flto \
+                -fPIC       
+
+PWD := $(shell pwd)
+
+$(warning ################# lynq msic ROOT: $(ROOT),includedir:$(includedir), PWD :$(PWD))
+LOCAL_PATH   = .
+
+LOCAL_C_INCLUDES = \
+  -I. \
+  -I$(LOCAL_PATH)/include \
+  -I$(ROOT)$(includedir) \
+
+LOCAL_LIBS := \
+    -L. \
+    -ldl \
+    -llog \
+
+SOURCES = $(wildcard *.cpp)
+
+EXECUTABLE = liblynq-msic.so
+
+OBJECTS=$(SOURCES:.c=.o)
+all: $(EXECUTABLE)
+
+$(EXECUTABLE): $(OBJECTS)
+	$(CXX) -shared -Wl,--no-undefined $(OBJECTS) $(LOCAL_LIBS) $(LOCAL_CFLAGS) $(LOCAL_C_INCLUDES) -o $@
+
+%.o : %.c
+	$(CC) $(LOCAL_C_INCLUDES) $(LOCAL_CFLAGS) $(LOCAL_LIBS) -o $@ -c $<
+
+build:  $(EXECUTABLE)
+	$(warning ########## build $(EXECUTABLE)  ##########)
+
+install:
+	$(warning ################# lynq msic EXECUTABLE: $(EXECUTABLE),base:$(base_libdir))
+	mkdir -p $(ROOT)$(base_libdir)/
+	install $(EXECUTABLE) $(ROOT)$(base_libdir)/
+
+pack_rootfs:
+	$(warning ################# lynq msic PACK: $(PACK_INITRAMFS_TO),base:$(base_libdir))
+	mkdir -p $(PACK_INITRAMFS_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_INITRAMFS_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_INITRAMFS_TO)$(base_libdir)/$(EXECUTABLE)
+	mkdir -p $(PACK_TO)$(base_libdir)/
+	cp -af $(EXECUTABLE) $(PACK_TO)$(base_libdir)/
+	$(CROSS)strip $(PACK_TO)$(base_libdir)/$(EXECUTABLE)
+
+.PHONY: clean
+clean:
+	$(RM) $(OBJECTS) $(EXECUTABLE)
+
+