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

Commit 740bdf65 authored by Ghanim Fodi's avatar Ghanim Fodi Committed by Gerrit - the friendly Code Review server
Browse files

msm: ipa: Support IPA4.5 new time scheme



IPA 4.5 time scheme changed to the following:
* Time-stamps are now based on QTIME component.
It is chip level component and keeps ticking even
if IPA is power collapsed.
* Time Counters now works with different discrete
granularity configurable levels based on XO clock

CRs-Fixed: 2291180
Change-Id: Idb5d9d37156c0f1d1f6700baa928f78c30b0769d
Signed-off-by: default avatarGhanim Fodi <gfodi@codeaurora.org>
parent 51b768c5
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -57,7 +57,7 @@
		(BAM_DMA_MAX_PKT_NUMBER * (sizeof(struct sps_iovec)))
#define TX_TIMEOUT (5 * HZ)
#define MIN_TX_ERROR_SLEEP_PERIOD 500
#define DEFAULT_AGGR_TIME_LIMIT 1
#define DEFAULT_AGGR_TIME_LIMIT 1000 /* 1ms */
#define DEFAULT_AGGR_PKT_LIMIT 0

#define RNDIS_IPA_ERROR(fmt, args...) \
@@ -328,7 +328,7 @@ static struct ipa_ep_cfg ipa_to_usb_ep_cfg = {
		.aggr = IPA_GENERIC,
		.aggr_byte_limit = 4,
		.aggr_time_limit = DEFAULT_AGGR_TIME_LIMIT,
		.aggr_pkt_limit = DEFAULT_AGGR_PKT_LIMIT
		.aggr_pkt_limit = DEFAULT_AGGR_PKT_LIMIT,
	},
	.deaggr = {
		.deaggr_hdr_len = 0,
+0 −1
Original line number Diff line number Diff line
@@ -4094,7 +4094,6 @@ void ipa3_suspend_handler(enum ipa_irq_type interrupt,
	IPADBG("interrupt=%d, interrupt_data=%u\n",
		interrupt, suspend_data);
	memset(&holb_cfg, 0, sizeof(holb_cfg));
	holb_cfg.tmr_val = 0;

	for (i = 0; i < ipa3_ctx->ipa_num_pipes; i++, bmsk = bmsk << 1) {
		if ((suspend_data & bmsk) && (ipa3_ctx->ep[i].valid)) {
+0 −1
Original line number Diff line number Diff line
@@ -21,7 +21,6 @@
 */
#define IPA_HOLB_TMR_EN 0x1
#define IPA_HOLB_TMR_DIS 0x0
#define IPA_HOLB_TMR_DEFAULT_VAL 0x1ff
#define IPA_POLL_AGGR_STATE_RETRIES_NUM 3
#define IPA_POLL_AGGR_STATE_SLEEP_MSEC 1

+8 −2
Original line number Diff line number Diff line
@@ -117,12 +117,18 @@ static ssize_t ipa3_read_gen_reg(struct file *file, char __user *ubuf,
			"IPA_COMP_HW_VERSION=0x%x\n"
			"IPA_ROUTE=0x%x\n"
			"IPA_SHARED_MEM_RESTRICTED=0x%x\n"
			"IPA_SHARED_MEM_SIZE=0x%x\n",
			"IPA_SHARED_MEM_SIZE=0x%x\n"
			"IPA_QTIME_TIMESTAMP_CFG=0x%x\n"
			"IPA_TIMERS_PULSE_GRAN_CFG=0x%x\n"
			"IPA_TIMERS_XO_CLK_DIV_CFG=0x%x\n",
			ipahal_read_reg(IPA_VERSION),
			ipahal_read_reg(IPA_COMP_HW_VERSION),
			ipahal_read_reg(IPA_ROUTE),
			smem_sz.shared_mem_baddr,
			smem_sz.shared_mem_sz);
			smem_sz.shared_mem_sz,
			ipahal_read_reg(IPA_QTIME_TIMESTAMP_CFG),
			ipahal_read_reg(IPA_TIMERS_PULSE_GRAN_CFG),
			ipahal_read_reg(IPA_TIMERS_XO_CLK_DIV_CFG));

	IPA_ACTIVE_CLIENTS_DEC_SIMPLE();

+3 −2
Original line number Diff line number Diff line
@@ -244,9 +244,10 @@ int ipa3_dma_init(void)

	ipa_dma_ctx_t = kzalloc(sizeof(*(ipa3_dma_ctx)), GFP_KERNEL);

	if (!ipa_dma_ctx_t)
	if (!ipa_dma_ctx_t) {
		res = -ENOMEM;
		goto init_unlock;
	}

	ipa_dma_ctx_t->ipa_dma_xfer_wrapper_cache =
		kmem_cache_create("IPA DMA XFER WRAPPER",
@@ -821,7 +822,7 @@ int ipa3_dma_async_memcpy(u64 dest, u64 src, int len,
	ep_idx = ipa3_get_ep_mapping(IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD);
	if (-1 == ep_idx) {
		IPADMA_ERR("Client %u is not mapped\n",
			IPA_CLIENT_MEMCPY_DMA_SYNC_PROD);
			IPA_CLIENT_MEMCPY_DMA_ASYNC_PROD);
		return -EFAULT;
	}
	prod_sys = ipa3_ctx->ep[ep_idx].sys;
Loading