Merge "[Bugfix][T106BUG-350][T106BUG-336]fix status on api"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-autosuspend/liblynq-qser-autosuspend.bb b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-autosuspend/liblynq-qser-autosuspend.bb
old mode 100644
new mode 100755
index 375742d..2f48049
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-autosuspend/liblynq-qser-autosuspend.bb
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/liblynq-qser-autosuspend/liblynq-qser-autosuspend.bb
@@ -4,7 +4,7 @@
LICENSE = "CLOSED"
LIC_FILES_CHKSUM = "file://LICENSE;md5=e1696b147d49d491bcb4da1a57173fff"
-DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} liblynq-autosuspend liblynq-log"
+DEPENDS += "${@bb.utils.contains('TARGET_PLATFORM', 'mt2735', 'audio-mixer-ctrl streamer1.0', '', d)} liblynq-autosuspend liblynq-log at-ctl libsctel"
#inherit workonsrc
WORKONSRC = "${TOPDIR}/../src/lynq/lib/liblynq-qser-autosuspend/"
FILESEXTRAPATHS_prepend :="${TOPDIR}/../src/lynq/lib/:"
diff --git a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
index 4c661e0..fdeb548 100755
--- a/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
+++ b/cap/zx297520v3/sources/meta-zxic-custom/recipes-lynq/lynq-qser-autosuspend-demo/files/lynq-qser-autosuspend-demo.cpp
@@ -74,6 +74,10 @@
printf(" -dl [wakelock num] --qser_wakelock_destroy\n");
printf(" -ccl --check created locks\n");
printf(" -cll --check lockup locks\n");
+ printf(" -wla [id] --qser_whitelist_add\n");
+ printf(" -wld [id] --qser_whitelist_del\n");
+ printf(" -wlg --qser_whitelist_get\n");
+ printf(" -wlc --qser_whitelist_clear\n");
}
else if(strcmp(argv[1],"-d") == 0)
{
@@ -202,6 +206,39 @@
printf("check created lock fail\n");
}
}
+ else if(strcmp(argv[1],"-wla") == 0)
+ {
+ num = atoi(argv[2]);
+ ret = qser_whitelist_add(num);
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_add ret %d.\n", ret);
+ }
+
+ }
+ else if(strcmp(argv[1],"-wld") == 0)
+ {
+ num = atoi(argv[2]);
+ ret = qser_whitelist_del(num);
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_del ret %d.\n", ret);
+ }
+ }
+ else if(strcmp(argv[1],"-wlg") == 0)
+ {
+ char* whitelist;
+ qser_whitelist_get(whitelist);
+ printf("mnet_whitelist_get :%s\n",whitelist);
+ }
+ else if(strcmp(argv[1],"-wlc") == 0)
+ {
+ ret = qser_whitelist_clear();
+ if(ret != 0)
+ {
+ printf("mnet_whitelist_clear ret %d.\n", ret);
+ }
+ }
else
{
printf("wrong input format, please -h \n");
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
index a48090e..c77fb2c 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-irq/lynq-irq.cpp
@@ -81,7 +81,7 @@
return -1;
}
ret = sc_irq_set_type(line, trig_type);
- if (ret < 0)
+ if (ret != 0)
{
LYINFLOG("set_type failed, ret:%d\n", ret);
return ret;
@@ -118,7 +118,7 @@
* @brief:lynq_irq_set_wake
* @param count [IN]:2
* @param sum [OUT]:NA
-* @return :success >0, failed <0
+* @return :success 0, failed other
* @todo:NA
* @see:NA
* @warning:NA
@@ -126,8 +126,13 @@
int lynq_irq_set_wake(int line, int en)
{
int ret;
+ if((en != 0) && (en != 1))
+ {
+ LYINFLOG("wake_state is not 0 or 1\n");
+ return -1;
+ }
ret = sc_irq_set_wake(line, en);
- if (ret < 0)
+ if (ret != 0)
{
LYINFLOG("set_wake failed, ret:%d\n", ret);
return ret;
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/include/lynq-qser-autosuspend.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/include/lynq-qser-autosuspend.h
old mode 100644
new mode 100755
index 8ea9c01..dc769e1
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/include/lynq-qser-autosuspend.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/include/lynq-qser-autosuspend.h
@@ -64,6 +64,10 @@
int qser_wakelock_unlock(int fd);
int qser_wakelock_destroy(int fd);
+int qser_whitelist_add(int id);
+int qser_whitelist_del(int id);
+int qser_whitelist_get(char* whitelist);
+int qser_whitelist_clear(void);
#ifdef __cplusplus
}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
index 04b2ad0..e82e2c0 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/lynq-qser-autosuspend.cpp
@@ -11,6 +11,7 @@
#include <lynq_autosuspend.h>
#include "lynq-qser-autosuspend.h"
#include "liblog/lynq_deflog.h"
+#include "sc_mnet_whitelist.h"
#ifdef __cplusplus
extern "C" {
@@ -351,10 +352,84 @@
return ret;
}
- ret = delete_lock(fd);
+ ret = delete_lock(fd);
return ret;
}
+int qser_whitelist_add(int id)
+{
+ int ret;
+ if(sc_mnet_whitelist_init() != 0)
+ {
+ LYINFLOG("sc_mnet_whitelist_init failed.\n");
+ return -1;
+ }
+
+ ret = sc_mnet_whitelist_add(id);
+ LYINFLOG("sc_mnet_whitelist_add ret %d.\n", ret);
+
+ sc_mnet_whitelist_deinit();
+ return ret;
+
+}
+
+int qser_whitelist_del(int id)
+{
+ int ret;
+ if(sc_mnet_whitelist_init() != 0)
+ {
+ LYINFLOG("sc_mnet_whitelist_init failed.\n");
+ return -1;
+ }
+
+ ret = sc_mnet_whitelist_del(id);
+ LYINFLOG("qser_whitelist_del ret %d.\n", ret);
+
+ sc_mnet_whitelist_deinit();
+ return ret;
+
+}
+
+int qser_whitelist_get(char* whitelist)
+{
+ int ret;
+ if(sc_mnet_whitelist_init() != 0)
+ {
+ LYINFLOG("sc_mnet_whitelist_init failed.\n");
+ return -1;
+ }
+
+ whitelist = sc_mnet_whitelist_get();
+ if(NULL != whitelist)
+ {
+ LYINFLOG("sc_mnet_whitelist_get :%s\n",whitelist);
+ ret = 0;
+ }
+ else
+ {
+ LYINFLOG("sc_mnet_whitelist_get empty\n");
+ ret = -1;
+ }
+ sc_mnet_whitelist_deinit();
+ return ret;
+}
+
+int qser_whitelist_clear(void)
+{
+ int ret;
+ if(sc_mnet_whitelist_init() != 0)
+ {
+ LYINFLOG("sc_mnet_whitelist_init failed.\n");
+ return -1;
+ }
+ ret = sc_mnet_whitelist_clear();
+ LYINFLOG("sc_mnet_whitelist_clear ret %d\n", ret);
+ sc_mnet_whitelist_deinit();
+ return ret;
+
+}
+
+
DEFINE_LYNQ_LIB_LOG(LYNQ_QSER_AUTOSUSPEND)
#ifdef __cplusplus
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/makefile b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/makefile
old mode 100644
new mode 100755
index 510b40e..4027a6d
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/makefile
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-autosuspend/makefile
@@ -31,6 +31,7 @@
-lpthread \
-llynq-autosuspend \
-llynq-log \
+ -lsctel \
SOURCES = $(wildcard *.cpp)
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
index 47b5562..2928d8d 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-data/lynq-qser-data.cpp
@@ -990,6 +990,10 @@
if (NULL == data_call || NULL == err)
{
LYERRLOG("call start incoming paramters error");
+ if(err != NULL)
+ {
+ *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
+ }
return ret;
}
if (data_call->profile_idx == 0)
@@ -1004,12 +1008,13 @@
if (ret != 0)
{
LYERRLOG("qser_apn_get error");
+ *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
return ret;
}
judge_pdp_type(apn_info.pdp_type,pdptype);
ret = lynq_setup_data_call_sp(&handle,apn_info.apn_name,apn_info.apn_type,apn_info.username,apn_info.password,NULL,pdptype,pdptype);
}
- if (ret < 0)
+ if (ret != 0)
{
*err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
}
@@ -1026,12 +1031,18 @@
LYERRLOG("call stop incoming paramters error");
return ret;
}
- data_call_handle_get(profile_idx,&handle);
+ ret = data_call_handle_get(profile_idx,&handle);
+ if(ret != 0)
+ {
+ LYERRLOG("datacall handle get error");
+ *err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
+ return ret;
+ }
ret = lynq_deactive_data_call(&handle);
- if (ret < 0)
+ if (ret != 0)
{
*err = QSER_DATA_CALL_ERROR_INVALID_PARAMS;
- return *err;
+ return ret;
}
return ret;
}
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
index e02832b..b98377e 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/include/lynq_qser_gnss.h
@@ -112,6 +112,7 @@
int qser_Set_Indications(uint32_t h_gnss,e_msg_id_t type);
int qser_Gnss_Start(uint32_t h_gnss);
int qser_Gnss_Stop(uint32_t h_gnss);
+int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency);
int qser_Gnss_Delete_Aiding_Data(uint32_t h_gnss,DELETE_AIDING_DATA_TYPE_T flags);
int qser_Gnss_InjectTime(uint32_t h_gnss,LYNQ_INJECT_TIME_INTO_T *time_info);
int qser_firmware_update(uint32_t h_gnss);
diff --git a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
index c66aafd..52241a9 100755
--- a/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
+++ b/cap/zx297520v3/src/lynq/lib/liblynq-qser-gnss/src/lynq_qser_gnss.cpp
@@ -168,7 +168,53 @@
return 0;
}
-
+static unsigned char save_configuration[] = {0xF1,0xD9,0x06,0x09,0x08,0x00,0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,0x26,0x37};
+static unsigned char one_frequency[] = {0xF1,0xD9,0x06,0x42,0x14,0x00,0x00,0x01,0x00,0x00,0xE8,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0xF6};
+static unsigned char two_frequency[] = {0xF1,0xD9,0x06,0x42,0x14,0x00,0x00,0x02,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC4,0x88};
+static unsigned char three_frequency[] = {0xF1,0xD9,0x06,0x42,0x14,0x00,0x00,0x05,0x66,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC7,0xC1};
+int qser_Gnss_Set_Frequency(uint32_t h_gnss, int frequency)
+{
+ int ret;
+ int buf_lenth;
+ unsigned char *send_buf;
+ struct mbtk_gnss_handle_t *gnss_handle = (struct mbtk_gnss_handle_t *)h_gnss;
+ switch(frequency)
+ {
+ case 1:
+ {
+ send_buf = one_frequency;
+ buf_lenth = sizeof(one_frequency);
+ break;
+ }
+ case 2:
+ {
+ send_buf = two_frequency;
+ buf_lenth = sizeof(two_frequency);
+ break;
+ }
+ case 5:
+ {
+ send_buf = three_frequency;
+ buf_lenth = sizeof(three_frequency);
+ break;
+ }
+ default:
+ return 0;
+ }
+ ret = write(gnss_handle->dev_fd, send_buf, buf_lenth);
+ if(ret < 0)
+ {
+ printf("send faild");
+ return -1;
+ }
+ ret = write(gnss_handle->dev_fd, save_configuration, sizeof(save_configuration));
+ if(ret < 0)
+ {
+ printf("send faild");
+ return -1;
+ }
+ return 0;
+}
/*清除辅助数据
bit0 - 清除星历
diff --git a/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/data.cpp b/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/data.cpp
index b3d1971..01ba78e 100755
--- a/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/data.cpp
+++ b/cap/zx297520v3/src/lynq/packages/apps/Mobiletek_Tester_RDIT/data.cpp
@@ -167,6 +167,7 @@
memcpy(datacall.cdma_password, argv[5], QSER_APN_PASSWORD_SIZE);
ret = qser_data_call_start(&datacall, &err);
+ printf("LYNQ_QSER_SETUP_DATA_CALL err = %d\n", err);
printf("%s%d\n",TEST_RESULT,ret);
return ret;
}
@@ -197,6 +198,7 @@
}
ret = qser_data_call_stop(profile_idx_int, ip_family, &err);
+ printf("LYNQ_QSER_DEACTIVATE_DATA_CALL err = %d\n", err);
printf("%s%d\n",TEST_RESULT,ret);
return ret;
}
diff --git a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/tlv320aic3x.c b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/tlv320aic3x.c
index 09ef085..c1fd5d4 100755
--- a/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/tlv320aic3x.c
+++ b/cap/zx297520v3/zxic_code/zxic_source/linux-5.10/sound/soc/codecs/tlv320aic3x.c
@@ -1018,15 +1018,6 @@
struct aic3x_priv *info = dev_get_drvdata(dev);
struct device_node *np = dev->of_node;
- #if 1
- unsigned tmp;
- void __iomem *reg_base;
- reg_base = ioremap(0x13B000+0x94 ,4);
- tmp = ioread32(reg_base);
- tmp |= (1<<0)|(1<<2);
- iowrite32(tmp,reg_base);
- #endif
-
dev_info(dev, "%s:start!\n", __func__);
if(dev == NULL){
@@ -2068,6 +2059,39 @@
return 0;
}
+static int component_open(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
+{
+ int ret = 0;
+ struct aic3x_priv *info = snd_soc_component_get_drvdata(component);
+ printk("Enter into %s()\n", __func__);
+
+ if(info->clk != NULL) {
+ ret = clk_enable(info->clk);
+ if(ret) {
+ pr_err("failed to enable clkout");
+ }
+ }
+ pr_info("%s:clk en end!\n", __func__);
+
+ return ret;
+}
+
+static int component_close(struct snd_soc_component *component,
+ struct snd_pcm_substream *substream)
+{
+ int ret = 0;
+ struct aic3x_priv *info = snd_soc_component_get_drvdata(component);
+ printk("Enter into %s()\n", __func__);
+
+ if(info->clk != NULL) {
+ clk_disable(info->clk);
+ }
+ pr_info("%s:clk dis end!\n", __func__);
+
+ return ret;
+}
+
static const struct snd_soc_component_driver soc_component_dev_aic3x = {
.set_bias_level = aic3x_set_bias_level,
.probe = aic3x_probe,
@@ -2080,6 +2104,8 @@
.use_pmdown_time = 1,
.endianness = 1,
.non_legacy_dai_naming = 1,
+ .open = component_open,
+ .close = component_close,
};
static void aic3x_configure_ocmv(struct i2c_client *client)