Merge "[Bugfix][API-789][network] lynq_set_prefferred_networktype sometimes return 8004" into MR3.0-merge
diff --git a/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-main.conf b/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-main.conf
index e6d3f7b..0d37d9c 100755
--- a/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-main.conf
+++ b/meta/meta-mediatek-mt2735/conf/machine/auto2735evb-ivt-main.conf
@@ -87,3 +87,6 @@
#MOBILETEK_RTK_CFG:"enable","disable"
MOBILETEK_RTK_CFG = "disable"
+
+#MOBILETEK_QSER_CFG:"enable","disable"
+MOBILETEK_QSER_CFG = "enable"
\ No newline at end of file
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 1adce6a..202527b 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
@@ -68,4 +68,8 @@
RDEPENDS_packagegroup-lync-mt2735 += "\
${@bb.utils.contains('MOBILETEK_RTK_CFG', 'enable', ' liblynq-rtk', '', d)} \
"
+
+RDEPENDS_packagegroup-lync-mt2735 += "\
+ ${@bb.utils.contains('MOBILETEK_QSER_CFG', 'enable', ' liblynq-qser-data liblynq-qser-sms liblynq-qser-sim liblynq-qser-voice', '', d)} \
+"
diff --git a/meta/meta-mediatek-mt2735/recipes-telephonyware/atcid/atci_1.0.0.bb b/meta/meta-mediatek-mt2735/recipes-telephonyware/atcid/atci_1.0.0.bb
index c614084..9022fdd 100755
--- a/meta/meta-mediatek-mt2735/recipes-telephonyware/atcid/atci_1.0.0.bb
+++ b/meta/meta-mediatek-mt2735/recipes-telephonyware/atcid/atci_1.0.0.bb
@@ -21,8 +21,8 @@
-I${STAGING_DIR_HOST}/${libdir}\
-DENABLE_TRM \
"
-
-EXTRA_OEMAKE = "'LYNQ_ATSVC_SUPPORT = ${LYNQ_ATSVC_SUPPORT}'"
+EXTRA_OEMAKE = "'LYNQ_ATSVC_SUPPORT = ${LYNQ_ATSVC_SUPPORT}'\
+ 'MOBILETEK_ATCID_CFG = ${MOBILETEK_ATCID_CFG}'"
CFLAGS_append = "${ATCID_CFLAGS_ADD}"
CXXFLAGS_append = "${ATCID_CFLAGS_ADD}"
diff --git a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 6dd83e1..af2d73f 100755
--- a/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/src/kernel/linux/v4.19/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -486,7 +486,8 @@
regmap_write(eth->ethsys, ETHSYS_SYSCFG0, val);
/* couple phydev to net_device */
- if (mtk_phy_connect_node(eth, mac, np))
+ err = mtk_phy_connect_node(eth, mac, np);
+ if (err)
goto err_phy;
dev->phydev->autoneg = AUTONEG_ENABLE;
@@ -519,11 +520,72 @@
{
struct mtk_mac *mac = netdev_priv(dev);
- phy_disconnect(dev->phydev);
+ if (dev->phydev)
+ phy_disconnect(dev->phydev);
if (of_phy_is_fixed_link(mac->of_node))
of_phy_deregister_fixed_link(mac->of_node);
}
+static void mtk_phy_start(struct net_device *dev) {
+
+ struct mtk_mac *mac = netdev_priv(dev);
+ u32 mcr;
+
+ if (dev->phydev)
+ if (dev->phydev->link)
+ phy_start(dev->phydev);
+ else {
+#if defined(CONFIG_HW_NAT)
+ int i = 0;
+
+ for (i = 0; i < MAX_IF_NUM; i++)
+ if (mtk_fast_path[i])
+ break;
+
+ if (i < MAX_IF_NUM) {
+ mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ mcr |= MAC_MCR_FORCE_LINK;
+ mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ netif_carrier_on(dev);
+ }
+
+ pr_notice("%s: no PHY link, enable sw-fast-path\n", __func__);
+#endif
+ }
+ else
+ pr_notice("%s: no PHY device\n", __func__);
+}
+
+static void mtk_phy_stop(struct net_device *dev) {
+
+ struct mtk_mac *mac = netdev_priv(dev);
+ u32 mcr;
+
+ if (dev->phydev)
+ if (dev->phydev->link)
+ phy_stop(dev->phydev);
+ else {
+#if defined(CONFIG_HW_NAT)
+ int i = 0;
+
+ for (i = 0; i < MAX_IF_NUM; i++)
+ if (mtk_fast_path[i])
+ break;
+
+ if (i < MAX_IF_NUM) {
+ mcr = mtk_r32(mac->hw, MTK_MAC_MCR(mac->id));
+ mcr &= ~MAC_MCR_FORCE_LINK;
+ mtk_w32(mac->hw, mcr, MTK_MAC_MCR(mac->id));
+ netif_carrier_off(dev);
+ }
+
+ pr_notice("%s: no PHY link, disable sw-fast-path\n", __func__);
+#endif
+ }
+ else
+ pr_notice("%s: no PHY device\n", __func__);
+}
+
static int mtk_mdio_init(struct mtk_eth *eth)
{
struct device_node *mii_np;
@@ -3246,7 +3308,7 @@
refcount_inc(ð->dma_refcnt);
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_DISABLE_PHY))
- phy_start(dev->phydev);
+ mtk_phy_start(dev);
netif_start_queue(dev);
@@ -3284,7 +3346,7 @@
netif_tx_disable(dev);
if (!MTK_HAS_CAPS(eth->soc->caps, MTK_DISABLE_PHY))
- phy_stop(dev->phydev);
+ mtk_phy_stop(dev);
/* only shutdown DMA if this is the last user */
if (!refcount_dec_and_test(ð->dma_refcnt))
@@ -4553,7 +4615,7 @@
if (!eth->netdev[i])
continue;
- phy_stop(eth->netdev[i]->phydev);
+ mtk_phy_stop(eth->netdev[i]);
}
}
pr_notice("ethernet suspend time kerenel stop = %lx\n", jiffies);
@@ -4757,7 +4819,7 @@
if (!eth->netdev[i])
continue;
- phy_start(eth->netdev[i]->phydev);
+ mtk_phy_start(eth->netdev[i]);
}
}
diff --git a/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
index 277f4da..a54a7b4 100755
--- a/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
+++ b/src/lynq/lib/liblynq-data/include/libdata/lynq_data.h
@@ -1,5 +1,5 @@
#ifndef LYNQ_DATA_H
-#define LYNQ_DATA_H 1
+#define LYNQ_DATA_H
#ifdef __cplusplus
extern "C" {
#endif
@@ -48,6 +48,14 @@
Value <= 0 means network has either not sent a value or
sent an invalid value */
} lynq_data_call_response_v11_t;
+
+typedef struct
+{
+ int index;
+ char apn[LYNQ_APN_MAX_LEN];
+ char apnType[LYNQ_APN_TYPE_MAX_LEN];
+}lynq_apn_info;
+
int lynq_init_data(int uToken);
int lynq_deinit_data();
int lynq_setup_data_call(int *handle);
@@ -58,6 +66,7 @@
int lynq_wait_data_call_state_change(int *handle);
int lynq_modify_apn_db(const int cmd,char *id,char *mcc,char *mnc,char *apn,char *apntype,char *user,char *password,char *normalprotocol,char *roamingprotocol,char *carrier,char *out);
int lynq_reset_apn(char *result);
+int lynq_get_apn_table(int *size,lynq_apn_info **list);
#ifdef __cplusplus
}
diff --git a/src/lynq/lib/liblynq-data/lynq_data.cpp b/src/lynq/lib/liblynq-data/lynq_data.cpp
index 27f0849..4bf04f0 100755
--- a/src/lynq/lib/liblynq-data/lynq_data.cpp
+++ b/src/lynq/lib/liblynq-data/lynq_data.cpp
@@ -145,7 +145,7 @@
lynq_apn_table[apnId].hasTimeout = 0;
lynq_apn_table[apnId].hasUsed = 0;
bzero(lynq_apn_table[apnId].apn,LYNQ_APN_MAX_LEN);
- //bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
+ bzero(lynq_apn_table[apnId].apnType,LYNQ_APN_TYPE_MAX_LEN);
bzero(lynq_apn_table[apnId].ifaceName,LYNQ_IFACE_NAME_MAX_LEN);
return;
}
@@ -1409,4 +1409,31 @@
return 0;
}
+int lynq_get_apn_table(int *size,lynq_apn_info **list)
+{
+ if (NULL == size || NULL == list)
+ {
+ LYERRLOG("size or list is NULL");
+ return LYNQ_E_NULL_ANONALY;
+ }
+ int count = 0;
+ int i = 0;
+ for (i = 0;i < LYNQ_APN_CHANNEL_MAX;i++)
+ {
+ if (lynq_apn_table[i].hasUsed == 1)
+ {
+ if (NULL == list[count])
+ {
+ LYERRLOG("list[%d] is NULL",count);
+ return LYNQ_E_NULL_ANONALY;
+ }
+ list[count]->index = i;
+ memcpy(list[count]->apn,lynq_apn_table[i].apn,strlen(lynq_apn_table[i].apn)+1);
+ memcpy(list[count]->apnType,lynq_apn_table[i].apnType,strlen(lynq_apn_table[i].apnType)+1);
+ count++;
+ }
+ }
+ *size = count;
+ return 0;
+}
/*Typethree add for T800 platform 2022/04/21 end*/
diff --git a/src/telephonyware/3.0/atcid/atci/src/Makefile b/src/telephonyware/3.0/atcid/atci/src/Makefile
index 77f997a..36e2eae 100755
--- a/src/telephonyware/3.0/atcid/atci/src/Makefile
+++ b/src/telephonyware/3.0/atcid/atci/src/Makefile
@@ -7,6 +7,10 @@
FLAGS += -DLYNQ_ATSVC
endif
+ifeq ($(strip $(MOBILETEK_ATCID_CFG)), WOM)
+ FLAGS += -DCONFIG_WOM_ATCID
+endif
+
INCLUDES := -I. \
-I./platform \
-I./lynq-private \
@@ -55,4 +59,4 @@
.PHONY: clean
clean:
$(warning "makefile atcid clean")
- rm -rf $(OBJS) $(CXXOBJS) $(TARGET)
\ No newline at end of file
+ rm -rf $(OBJS) $(CXXOBJS) $(TARGET)
diff --git a/src/telephonyware/3.0/atcid/atci/src/atcid.c b/src/telephonyware/3.0/atcid/atci/src/atcid.c
index 0eaff4f..54f1c5e 100755
--- a/src/telephonyware/3.0/atcid/atci/src/atcid.c
+++ b/src/telephonyware/3.0/atcid/atci/src/atcid.c
@@ -94,6 +94,27 @@
listenVCOM = 1;
}
#else
+#ifdef CONFIG_WOM_ATCID
+ /*dongyu@2023.5.2 VCOM port as AT port in WOM platform meta mode, ELT port as AT port in normal mode start*/
+ snprintf(serial.devicename[0], strlen(TTY_GS0) + 1, "%s", TTY_GS0);
+ int listenVCOM = 1;
+ int bootMode = readSys_int(BOOTMODE_PATH);
+
+ LOGATCI(LOG_INFO, "bootMode = %d", bootMode);
+
+ if(bootMode == META_BOOT)
+ {
+ LOGATCI(LOG_INFO, "meta mode for CPE/ IVT, listen VCOM");
+ listenVCOM = 0;
+ }
+ else if(bootMode == NORMAL_BOOT)
+ {
+ LOGATCI(LOG_INFO, "normal mode for CPE/ IVT, listen ELT");
+ snprintf(serial.devicename[0], strlen(TTY_GS3) + 1, "%s", TTY_GS3);
+ listenVCOM = 1;
+ }
+ /*dongyu@2023.4.2 VCOM port as AT port in WOM platform meta mode, ELT port as AT port in normal mode end*/
+#else
//for CPE / IVT listen TTYGS0
snprintf(serial.devicename[0], strlen(TTY_GS0) + 1, "%s", TTY_GS0);
int listenVCOM = 1; //listen ETS port as default
@@ -106,6 +127,7 @@
listenVCOM = 0;
}
#endif
+#endif
if (listenVCOM == 1) {
for (i = 0; i < MAX_DEVICE_VCOM_NUM; i++) {