Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 985ce714 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: wan-transport driver dts pltform support"

parents 2ac6702b 9b1dae76
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@ Required properties:

Optional:
- qcom,rmnet-ipa-ssr: determine if modem SSR is supported
- qcom,ipa-loaduC: indicate that ipa uC should be loaded

Example:
	qcom,rmnet-ipa {
+1 −0
Original line number Diff line number Diff line
@@ -631,6 +631,7 @@
	qcom,rmnet-ipa {
		compatible = "qcom,rmnet-ipa";
		qcom,rmnet-ipa-ssr;
		qcom,ipa-loaduC;
	};

	qcom,ipc-spinlock@fd484000 {
+5 −3
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ static void *curr_conn;
static bool qmi_modem_init_fin, qmi_indication_fin;
static struct work_struct ipa_qmi_service_init_work;
static bool is_load_uc;
static uint32_t ipa_wan_platform;


/* QMI A5 service */
@@ -336,7 +337,7 @@ static int qmi_init_modem_send_sync_msg(void)
	memset(&req, 0, sizeof(struct ipa_init_modem_driver_req_msg_v01));
	memset(&resp, 0, sizeof(struct ipa_init_modem_driver_resp_msg_v01));
	req.platform_type_valid = true;
	req.platform_type = QMI_IPA_PLATFORM_TYPE_LE_V01;
	req.platform_type = ipa_wan_platform;
	req.hdr_tbl_info_valid = true;
	req.hdr_tbl_info.modem_offset_start = IPA_v2_RAM_MODEM_HDR_OFST + 256;
	req.hdr_tbl_info.modem_offset_end = IPA_v2_RAM_MODEM_HDR_OFST + 256
@@ -454,7 +455,7 @@ int qmi_filter_notify_send(struct ipa_fltr_installed_notif_req_msg_v01 *req)

	/* check if the filter rules from IPACM is valid */
	if (req->filter_index_list_len == 0) {
		IPAERR(" delete UL filter rule for pipe %d\n",
		IPAWANERR(" delete UL filter rule for pipe %d\n",
		req->source_pipe_index);
		return -EINVAL;
	}
@@ -651,8 +652,9 @@ static void ipa_qmi_service_init_worker(struct work_struct *work)
	return;
}

int ipa_qmi_service_init(bool load_uc)
int ipa_qmi_service_init(bool load_uc, uint32_t wan_platform_type)
{
	ipa_wan_platform = wan_platform_type;
	is_load_uc = load_uc;
	if (!ipa_svc_handle) {
		INIT_WORK(&ipa_qmi_service_init_work,
+1 −1
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ struct rmnet_mux_val {
	bool mux_hdr_set;
};

int ipa_qmi_service_init(bool load_uc);
int ipa_qmi_service_init(bool load_uc, uint32_t wan_platform_type);
void ipa_qmi_service_exit(void);

/* sending filter-install-request to modem*/
+24 −9
Original line number Diff line number Diff line
@@ -70,6 +70,7 @@ enum wwan_device_status {

struct ipa_rmnet_plat_drv_res {
	bool ipa_rmnet_ssr;
	bool ipa_loaduC;
};

/**
@@ -768,6 +769,8 @@ int wwan_update_mux_channel_prop(void)
				i);
			return -ENODEV;
		}
		IPAWANERR("dev(%s) has registered to IPA\n",
		mux_channel[i].vchannel_name);
		mux_channel[i].ul_flt_reg = true;
	}
	return ret;
@@ -1194,7 +1197,7 @@ static int ipa_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
				mux_channel[rmnet_index].mux_channel_set = true;
				mux_channel[rmnet_index].ul_flt_reg = true;
			} else {
				IPAWANERR("dev(%s) not register to IPA\n",
				IPAWANDBG("dev(%s) haven't registered to IPA\n",
					extend_ioctl_data.u.
					rmnet_mux_val.vchannel_name);
				mux_channel[rmnet_index].mux_channel_set = true;
@@ -1379,7 +1382,7 @@ static void q6_prod_rm_request_resource(struct work_struct *work)

	ret = ipa_rm_request_resource(IPA_RM_RESOURCE_Q6_PROD);
	if (ret < 0 && ret != -EINPROGRESS) {
		IPAERR("%s: ipa_rm_request_resource failed %d\n", __func__,
		IPAWANERR("%s: ipa_rm_request_resource failed %d\n", __func__,
		       ret);
		return;
	}
@@ -1397,7 +1400,7 @@ static void q6_prod_rm_release_resource(struct work_struct *work)
	int ret = 0;
	ret = ipa_rm_release_resource(IPA_RM_RESOURCE_Q6_PROD);
	if (ret < 0 && ret != -EINPROGRESS) {
		IPAERR("%s: ipa_rm_release_resource failed %d\n", __func__,
		IPAWANERR("%s: ipa_rm_release_resource failed %d\n", __func__,
		      ret);
		return;
	}
@@ -1418,10 +1421,10 @@ static void q6_rm_notify_cb(void *user_data,
{
	switch (event) {
	case IPA_RM_RESOURCE_GRANTED:
		IPADBG("%s: Q6_PROD GRANTED CB\n", __func__);
		IPAWANDBG("%s: Q6_PROD GRANTED CB\n", __func__);
		break;
	case IPA_RM_RESOURCE_RELEASED:
		IPADBG("%s: Q6_PROD RELEASED CB\n", __func__);
		IPAWANDBG("%s: Q6_PROD RELEASED CB\n", __func__);
		break;
	default:
		return;
@@ -1579,8 +1582,13 @@ static int get_ipa_rmnet_dts_configuration(struct platform_device *pdev,
	ipa_rmnet_drv_res->ipa_rmnet_ssr =
			of_property_read_bool(pdev->dev.of_node,
			"qcom,rmnet-ipa-ssr");
	IPADBG(": IPA SSR support = %s",
	IPAWANERR(": IPA SSR support = %s",
		ipa_rmnet_drv_res->ipa_rmnet_ssr ? "True" : "False");
	ipa_rmnet_drv_res->ipa_loaduC =
			of_property_read_bool(pdev->dev.of_node,
			"qcom,ipa-loaduC");
	IPAWANERR(": IPA ipa-loaduC = %s",
		ipa_rmnet_drv_res->ipa_loaduC ? "True" : "False");

	return 0;
}
@@ -1622,8 +1630,15 @@ static int ipa_wwan_probe(struct platform_device *pdev)
	}

	/* start A7 QMI service/client */
	ipa_qmi_service_init(atomic_read(&is_ssr) ? false : true);

	if (ipa_rmnet_res.ipa_loaduC) {
		/* Android platform loads uC */
		ipa_qmi_service_init(atomic_read(&is_ssr) ? false : true,
			QMI_IPA_PLATFORM_TYPE_MSM_ANDROID_V01);
	} else {
		/* LE platform not loads uC */
		ipa_qmi_service_init(atomic_read(&is_ssr) ? false : true,
			QMI_IPA_PLATFORM_TYPE_LE_V01);
	}
	/* construct default WAN RT tbl for IPACM */
	ret = ipa_setup_a7_qmap_hdr();
	if (ret)
@@ -1673,7 +1688,7 @@ static int ipa_wwan_probe(struct platform_device *pdev)
		/* IPA_RM configuration starts */
		ret = q6_initialize_rm();
		if (ret) {
			IPAERR("%s: q6_initialize_rm failed, ret: %d\n",
			IPAWANERR("%s: q6_initialize_rm failed, ret: %d\n",
				__func__, ret);
			goto q6_init_err;
		}