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

Commit 7eb847f4 authored by qctecmdr's avatar qctecmdr Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipahal: add uC activation registers and ucp structs"

parents 8b688dbc e0084dfc
Loading
Loading
Loading
Loading
+55 −2
Original line number Diff line number Diff line
/* Copyright (c) 2018-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -142,11 +142,32 @@ static int ipa_nat_ipv4_stringify_entry_v_4_0(const void *entry,
	length = ipa_nat_ipv4_stringify_entry_v_3_0(entry, buff, buff_size);

	length += scnprintf(buff + length, buff_size - length,
		"\t\tPDN_Index=%d\n", nat_entry->pdn_index);
		"\t\tPDN_Index=%d\n",
		nat_entry->pdn_index);

	return length;
}


static int ipa_nat_ipv4_stringify_entry_v_4_5(const void *entry,
	char *buff, size_t buff_size)
{
	int length;
	const struct ipa_nat_hw_ipv4_entry *nat_entry =
		(const struct ipa_nat_hw_ipv4_entry *)entry;

	length = ipa_nat_ipv4_stringify_entry_v_4_0(entry, buff, buff_size);

	length += scnprintf(buff + length, buff_size - length,
		"\t\tucp=%s address=%s uc_activation_index=%d\n",
		(nat_entry->ucp) ? "Enabled" : "Disabled",
		(nat_entry->s) ? "System" : "Local",
		nat_entry->uc_activation_index);

	return length;
}


static int ipa_nat_ipv4_index_stringify_entry_v_3_0(const void *entry,
	char *buff, size_t buff_size)
{
@@ -224,6 +245,24 @@ static int ipa_nat_ipv6ct_stringify_entry_v_4_0(const void *entry,
	return length;
}

static int ipa_nat_ipv6ct_stringify_entry_v_4_5(const void *entry,
	char *buff, size_t buff_size)
{
	int length;
	const struct ipa_nat_hw_ipv4_entry *nat_entry =
		(const struct ipa_nat_hw_ipv4_entry *)entry;

	length = ipa_nat_ipv6ct_stringify_entry_v_4_0(entry, buff, buff_size);

	length += scnprintf(buff + length, buff_size - length,
		"\t\tucp=%s address=%s uc_activation_index=%d\n",
		(nat_entry->ucp) ? "Enabled" : "Disabled",
		(nat_entry->s) ? "System" : "Local",
		nat_entry->uc_activation_index);

	return length;
}

static void ipa_nat_ipv4_pdn_construct_entry_v_4_0(const void *fields,
	u32 *address)
{
@@ -318,6 +357,20 @@ static struct ipahal_nat_obj ipahal_nat_objs[IPA_HW_MAX][IPA_NAT_MAX] = {
			ipa_nat_ipv6ct_is_entry_zeroed_v_4_0,
			ipa_nat_ipv6ct_is_entry_valid_v_4_0,
			ipa_nat_ipv6ct_stringify_entry_v_4_0
		},

	/* IPAv4.5 */
	[IPA_HW_v4_5][IPAHAL_NAT_IPV4] = {
			ipa_nat_ipv4_entry_size_v_3_0,
			ipa_nat_ipv4_is_entry_zeroed_v_3_0,
			ipa_nat_ipv4_is_entry_valid_v_3_0,
			ipa_nat_ipv4_stringify_entry_v_4_5
		},
	[IPA_HW_v4_5][IPAHAL_NAT_IPV6CT] = {
			ipa_nat_ipv6ct_entry_size_v_4_0,
			ipa_nat_ipv6ct_is_entry_zeroed_v_4_0,
			ipa_nat_ipv6ct_is_entry_valid_v_4_0,
			ipa_nat_ipv6ct_stringify_entry_v_4_5
		}
};

+48 −11
Original line number Diff line number Diff line
/* Copyright (c) 2018, The Linux Foundation. All rights reserved.
/* Copyright (c) 2018, 2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -25,7 +25,7 @@
 * |Target Port(2B) |Private Port(2B)| Public Port(2B) | Next Index(2B)  |
 * -----------------------------------------------------------------------
 * |Proto|      TimeStamp(3B)        |     Flags(2B)   |IP check sum Diff|
 * |(1B) |                           |EN|Redirect|Resv |        (2B)     |
 * |(1B) |                           |                 |        (2B)     |
 * -----------------------------------------------------------------------
 * |TCP/UDP checksum|  PDN info(2B)  |    SW Specific Parameters(4B)     |
 * |    diff (2B)   |Info|Resv       |index table entry|  prev index     |
@@ -42,17 +42,45 @@ struct ipa_nat_hw_ipv4_entry {
	u32 target_port : 16;
	u32 ip_chksum : 16;

	u32 rsvd1 : 14;
	/*---------------------------------------------------
	 *IPA NAT Flag is interpreted as follows
	 *---------------------------------------------------
	 *|  EN   |FIN/RST|  S   | IPv4 uC activation index |
	 *| [15]  | [14]  | [13] |          [12:0]          |
	 *---------------------------------------------------
	 */
	u32 uc_activation_index: 13;
	u32 s : 1;
	u32 redirect : 1;
	u32 enable : 1;

	u32 time_stamp : 24;
	u32 protocol : 8;

	/*--------------------------------------------------
	 *32 bit sw_spec_params is interpreted as follows
	 *------------------------------------
	 *|     16 bits     |     16 bits    |
	 *------------------------------------
	 *|  index table    |  prev index    |
	 *|     entry       |                |
	 *------------------------------------
	 */
	u32 prev_index : 16;
	u32 indx_tbl_entry : 16;

	u32 rsvd2 : 12;
	u32 rsvd2 : 11; //including next 3 reserved buts

	/*-----------------------------------------
	 *8 bit PDN info is interpreted as following
	 *-----------------------------------------------------
	 *|     4 bits      |     1 bit      |     3 bits     |
	 *-----------------------------------------------------
	 *|  PDN index      |  uC processing |     Reserved   |
	 *|      [7:4]      |       [3]      |      [2:0]     |
	 *-----------------------------------------------------
	 */
	u32 ucp : 1; /* IPA 4.0 and greater */
	u32 pdn_index : 4; /* IPA 4.0 and greater */

	u32 tcp_udp_chksum : 16;
@@ -107,17 +135,23 @@ struct ipa_nat_hw_pdn_entry {
 *-----------------------------------------------------------------------------
 *|                   Outbound Dest IPv6 Address (8 MSB Bytes)                |
 *-----------------------------------------------------------------------------
 *|Protocol|      TimeStamp (3B)      |       Flags (2B)       |Reserved (2B) |
 *|  (1B)  |                          |Enable|Redirect|Resv    |              |
 *|Protocol|      TimeStamp (3B)      |       Flags (2B)    |Rsvd   |S |uC ACT|
 *|  (1B)  |                          |Enable|Redirect|Resv |[15:14]|13|[12:0]|
 *-----------------------------------------------------------------------------
 *|Reserved|Direction(1B)|Src Port(2B)|     Dest Port (2B)     |Next Index(2B)|
 *|  (1B)  |IN|OUT|Resv  |            |                        |              |
 *|Reserved|Settings|    Src Port(2B) |   Dest Port (2B)    |  Next Index(2B) |
 *|  (1B)  |  (1B)  |                 |                     |                 |
 *-----------------------------------------------------------------------------
 *|    SW Specific Parameters(4B)     |                Reserved (4B)          |
 *|    Prev Index (2B)   |Reserved(2B)|                                       |
 *-----------------------------------------------------------------------------
 *|                            Reserved (8B)                                  |
 *-----------------------------------------------------------------------------
 *
 * Settings
 *-----------------------------------------------
 *|IN Allowed|OUT Allowed|Reserved|uC processing|
 *|[7:7]     |[6:6]      |[5:1]   |[0:0]        |
 *-----------------------------------------------
 */
struct ipa_nat_hw_ipv6ct_entry {
	/* An IP address can't be bit-field, because its address is used */
@@ -126,7 +160,9 @@ struct ipa_nat_hw_ipv6ct_entry {
	u64 dest_ipv6_lsb;
	u64 dest_ipv6_msb;

	u64 rsvd1 : 30;
	u64 uc_activation_index : 13;
	u64 s : 1;
	u64 rsvd1 : 16;
	u64 redirect : 1;
	u64 enable : 1;

@@ -136,7 +172,8 @@ struct ipa_nat_hw_ipv6ct_entry {
	u64 next_index : 16;
	u64 dest_port : 16;
	u64 src_port : 16;
	u64 rsvd2 : 6;
	u64 ucp : 1;
	u64 rsvd2 : 5;
	u64 out_allowed : 1;
	u64 in_allowed : 1;
	u64 rsvd3 : 8;
+202 −2
Original line number Diff line number Diff line
/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -147,7 +147,13 @@ static const char *ipareg_name_to_str[IPA_REG_MAX] = {
	__stringify(IPA_ENDP_GSI_CFG_AOS_n),
	__stringify(IPA_ENDP_GSI_CFG_TLV_n),
	__stringify(IPA_COAL_EVICT_LRU),
	__stringify(IPA_COAL_QMAP_CFG)
	__stringify(IPA_COAL_QMAP_CFG),
	__stringify(IPA_NAT_UC_EXTERNAL_CFG),
	__stringify(IPA_NAT_UC_LOCAL_CFG),
	__stringify(IPA_NAT_UC_SHARED_CFG),
	__stringify(IPA_CONN_TRACK_UC_EXTERNAL_CFG),
	__stringify(IPA_CONN_TRACK_UC_LOCAL_CFG),
	__stringify(IPA_CONN_TRACK_UC_SHARED_CFG)
};

static void ipareg_construct_dummy(enum ipahal_reg_name reg,
@@ -2451,6 +2457,176 @@ static void ipareg_parse_coal_qmap_cfg(enum ipahal_reg_name reg,
		IPA_COAL_QMAP_CFG_SHFT, IPA_COAL_QMAP_CFG_BMSK);
}

static void ipareg_construct_nat_uc_external_cfg(enum ipahal_reg_name reg,
	const void *fields, u32 *val)
{
	struct ipahal_reg_nat_uc_external_cfg *nat_uc_external_cfg =
		(struct ipahal_reg_nat_uc_external_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val,
		nat_uc_external_cfg->nat_uc_external_table_addr_lsb,
		IPA_NAT_UC_EXTERNAL_CFG_SHFT, IPA_NAT_UC_EXTERNAL_CFG_BMSK);
}

static void ipareg_parse_nat_uc_external_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_nat_uc_external_cfg *nat_uc_external_cfg =
		(struct ipahal_reg_nat_uc_external_cfg *)fields;

	memset(nat_uc_external_cfg, 0, sizeof(*nat_uc_external_cfg));

	nat_uc_external_cfg->nat_uc_external_table_addr_lsb =
		IPA_GETFIELD_FROM_REG(val, IPA_NAT_UC_EXTERNAL_CFG_SHFT,
			IPA_NAT_UC_EXTERNAL_CFG_BMSK);
}

static void ipareg_construct_nat_uc_local_cfg(enum ipahal_reg_name reg,
	const void *fields, u32 *val)
{
	struct ipahal_reg_nat_uc_local_cfg *nat_uc_local_cfg =
		(struct ipahal_reg_nat_uc_local_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val, nat_uc_local_cfg->nat_uc_local_table_addr_lsb,
		IPA_NAT_UC_LOCAL_CFG_SHFT, IPA_NAT_UC_LOCAL_CFG_BMSK);
}

static void ipareg_parse_nat_uc_local_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_nat_uc_local_cfg *nat_uc_local_cfg =
		(struct ipahal_reg_nat_uc_local_cfg *)fields;

	memset(nat_uc_local_cfg, 0, sizeof(*nat_uc_local_cfg));

	nat_uc_local_cfg->nat_uc_local_table_addr_lsb =
		IPA_GETFIELD_FROM_REG(val, IPA_NAT_UC_LOCAL_CFG_SHFT,
			IPA_NAT_UC_LOCAL_CFG_BMSK);
}

static void ipareg_construct_nat_uc_shared_cfg(enum ipahal_reg_name reg,
	const void *fields, u32 *val)
{
	struct ipahal_reg_nat_uc_shared_cfg *nat_uc_shared_cfg =
		(struct ipahal_reg_nat_uc_shared_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val,
		nat_uc_shared_cfg->nat_uc_local_table_addr_msb,
		IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT,
		IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK);

	IPA_SETFIELD_IN_REG(*val,
		nat_uc_shared_cfg->nat_uc_external_table_addr_msb,
		IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT,
		IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK);
}

static void ipareg_parse_nat_uc_shared_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_nat_uc_shared_cfg *nat_uc_shared_cfg =
		(struct ipahal_reg_nat_uc_shared_cfg *)fields;

	memset(nat_uc_shared_cfg, 0, sizeof(*nat_uc_shared_cfg));

	nat_uc_shared_cfg->nat_uc_local_table_addr_msb =
		IPA_GETFIELD_FROM_REG(val,
			IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT,
			IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK);

	nat_uc_shared_cfg->nat_uc_external_table_addr_msb =
		IPA_GETFIELD_FROM_REG(val,
			IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT,
			IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK);
}

static void ipareg_construct_conn_track_uc_external_cfg
	(enum ipahal_reg_name reg, const void *fields, u32 *val)
{
	struct ipahal_reg_conn_track_uc_external_cfg *conn_track_uc_external_cfg
		= (struct ipahal_reg_conn_track_uc_external_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val,
	conn_track_uc_external_cfg->conn_track_uc_external_table_addr_lsb,
		IPA_CONN_TRACK_UC_EXTERNAL_CFG_SHFT,
		IPA_CONN_TRACK_UC_EXTERNAL_CFG_BMSK);
}

static void ipareg_parse_conn_track_uc_external_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_conn_track_uc_external_cfg *conn_track_uc_external_cfg
		= (struct ipahal_reg_conn_track_uc_external_cfg *)fields;

	memset(conn_track_uc_external_cfg, 0,
		sizeof(*conn_track_uc_external_cfg));

	conn_track_uc_external_cfg->conn_track_uc_external_table_addr_lsb =
		IPA_GETFIELD_FROM_REG(val, IPA_CONN_TRACK_UC_EXTERNAL_CFG_SHFT,
			IPA_CONN_TRACK_UC_EXTERNAL_CFG_BMSK);
}

static void ipareg_construct_conn_track_uc_local_cfg(enum ipahal_reg_name reg,
	const void *fields, u32 *val)
{
	struct ipahal_reg_conn_track_uc_local_cfg *conn_track_uc_local_cfg =
		(struct ipahal_reg_conn_track_uc_local_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val,
		conn_track_uc_local_cfg->conn_track_uc_local_table_addr_lsb,
		IPA_CONN_TRACK_UC_LOCAL_CFG_SHFT,
		IPA_CONN_TRACK_UC_LOCAL_CFG_BMSK);
}

static void ipareg_parse_conn_track_uc_local_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_conn_track_uc_local_cfg *conn_track_uc_local_cfg =
		(struct ipahal_reg_conn_track_uc_local_cfg *)fields;

	memset(conn_track_uc_local_cfg, 0, sizeof(*conn_track_uc_local_cfg));

	conn_track_uc_local_cfg->conn_track_uc_local_table_addr_lsb =
		IPA_GETFIELD_FROM_REG(val, IPA_CONN_TRACK_UC_LOCAL_CFG_SHFT,
			IPA_CONN_TRACK_UC_LOCAL_CFG_BMSK);
}

static void ipareg_construct_conn_track_uc_shared_cfg(enum ipahal_reg_name reg,
	const void *fields, u32 *val)
{
	struct ipahal_reg_conn_track_uc_shared_cfg *conn_track_uc_shared_cfg =
		(struct ipahal_reg_conn_track_uc_shared_cfg *)fields;

	IPA_SETFIELD_IN_REG(*val,
		conn_track_uc_shared_cfg->conn_track_uc_local_table_addr_msb,
		IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT,
		IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK);

	IPA_SETFIELD_IN_REG(*val,
		conn_track_uc_shared_cfg->conn_track_uc_external_table_addr_msb,
		IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT,
		IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK);
}

static void ipareg_parse_conn_track_uc_shared_cfg(enum ipahal_reg_name reg,
	void *fields, u32 val)
{
	struct ipahal_reg_conn_track_uc_shared_cfg *conn_track_uc_shared_cfg =
		(struct ipahal_reg_conn_track_uc_shared_cfg *)fields;

	memset(conn_track_uc_shared_cfg, 0, sizeof(*conn_track_uc_shared_cfg));

	conn_track_uc_shared_cfg->conn_track_uc_local_table_addr_msb =
		IPA_GETFIELD_FROM_REG(val,
			IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT,
			IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK);

	conn_track_uc_shared_cfg->conn_track_uc_external_table_addr_msb =
		IPA_GETFIELD_FROM_REG(val,
		IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT,
		IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK);
}

/*
 * struct ipahal_reg_obj - Register H/W information for specific IPA version
 * @construct - CB to construct register value from abstracted structure
@@ -3244,6 +3420,30 @@ static struct ipahal_reg_obj ipahal_reg_objs[IPA_HW_MAX][IPA_REG_MAX] = {
	[IPA_HW_v4_5][IPA_COAL_QMAP_CFG] = {
		ipareg_construct_coal_qmap_cfg, ipareg_parse_coal_qmap_cfg,
		0x00001810, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_NAT_UC_EXTERNAL_CFG] = {
		ipareg_construct_nat_uc_external_cfg,
		ipareg_parse_nat_uc_external_cfg,
		0x00000200, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_NAT_UC_LOCAL_CFG] = {
		ipareg_construct_nat_uc_local_cfg,
		ipareg_parse_nat_uc_local_cfg,
		0x00000204, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_NAT_UC_SHARED_CFG] = {
		ipareg_construct_nat_uc_shared_cfg,
		ipareg_parse_nat_uc_shared_cfg,
		0x00000208, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_CONN_TRACK_UC_EXTERNAL_CFG] = {
		ipareg_construct_conn_track_uc_external_cfg,
		ipareg_parse_conn_track_uc_external_cfg,
		0x00000230, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_CONN_TRACK_UC_LOCAL_CFG] = {
		ipareg_construct_conn_track_uc_local_cfg,
		ipareg_parse_conn_track_uc_local_cfg,
		0x00000234, 0, 0, 0, 0},
	[IPA_HW_v4_5][IPA_CONN_TRACK_UC_SHARED_CFG] = {
		ipareg_construct_conn_track_uc_shared_cfg,
		ipareg_parse_conn_track_uc_shared_cfg,
		0x00000238, 0, 0, 0, 0},
};

/*
+70 −1
Original line number Diff line number Diff line
/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -149,6 +149,12 @@ enum ipahal_reg_name {
	IPA_ENDP_GSI_CFG_TLV_n,
	IPA_COAL_EVICT_LRU,
	IPA_COAL_QMAP_CFG,
	IPA_NAT_UC_EXTERNAL_CFG,
	IPA_NAT_UC_LOCAL_CFG,
	IPA_NAT_UC_SHARED_CFG,
	IPA_CONN_TRACK_UC_EXTERNAL_CFG,
	IPA_CONN_TRACK_UC_LOCAL_CFG,
	IPA_CONN_TRACK_UC_SHARED_CFG,
	IPA_REG_MAX,
};

@@ -693,6 +699,69 @@ struct ipahal_reg_coal_qmap_cfg {
	u32 mux_id_byte_sel;
};

/*
 * struct ipahal_reg_nat_uc_local_cfg -  IPA_NAT_UC_EXTERNAL_CFG register
 * @nat_uc_external_table_addr_lsb: 32 LSb bits of system-memory address of
 * external UC-activation entry table.
 */
struct ipahal_reg_nat_uc_external_cfg {
	u32 nat_uc_external_table_addr_lsb;
};

/*
 * struct ipahal_reg_nat_uc_local_cfg - IPA_NAT_UC_LOCAL_CFG register
 * @nat_uc_local_table_addr_lsb: 32 LSb bits of local address of local
 * UC-activation entry table. Address is memory-map based,
 * i.e. includes IPA address from chip level.
 */
struct ipahal_reg_nat_uc_local_cfg {
	u32 nat_uc_local_table_addr_lsb;
};

/*
 * struct ipahal_reg_nat_uc_shared_cfg -  IPA_NAT_UC_SHARED_CFG register
 * @nat_uc_external_table_addr_msb: 16 MSb of external UC-ativation entry table.
 * @nat_uc_local_table_addr_msb: 16 MSb bits of local UC-ativation entry table.
 */
struct ipahal_reg_nat_uc_shared_cfg {
	u32 nat_uc_local_table_addr_msb;
	u32 nat_uc_external_table_addr_msb;
};

/*
 * struct ipahal_reg_conn_track_uc_local_cfg - IPA_conn_track_UC_EXTERNAL_CFG
 * register
 * @conn_track_uc_external_table_addr_lsb: 32 LSb bits of system-memory address
 * of external UC-activation entry table.
 */
struct ipahal_reg_conn_track_uc_external_cfg {
	u32 conn_track_uc_external_table_addr_lsb;
};

/*
 * struct ipahal_reg_conn_track_uc_local_cfg - IPA_conn_track_UC_LOCAL_CFG
 * register
 * @conn_track_uc_local_table_addr_lsb: 32 LSb bits of local address of local
 * UC-activation entry table. Address is memory-map based,
 * i.e. includes IPA address from chip level.
 */
struct ipahal_reg_conn_track_uc_local_cfg {
	u32 conn_track_uc_local_table_addr_lsb;
};

/*
 * struct ipahal_reg_conn_track_uc_shared_cfg -  IPA_conn_track_UC_SHARED_CFG
 * register
 * @conn_track_uc_external_table_addr_msb: 16 MSb of external UC-ativation
 * entry table.
 * @conn_track_uc_local_table_addr_msb: 16 MSb bits of local UC-ativation
 * entry table.
 */
struct ipahal_reg_conn_track_uc_shared_cfg {
	u16 conn_track_uc_local_table_addr_msb;
	u16 conn_track_uc_external_table_addr_msb;
};

/*
 * ipahal_print_all_regs() - Loop and read and print all the valid registers
 *  Parameterized registers are also printed for all the valid ranges.
+17 −2
Original line number Diff line number Diff line
/* Copyright (c) 2012-2019, The Linux Foundation. All rights reserved.
/* Copyright (c) 2012-2020, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -632,7 +632,22 @@ int ipahal_reg_init(enum ipa_hw_type ipa_hw_type);
#define IPA_COAL_EVICTION_EN_SHFT 0
#define IPA_COAL_QMAP_CFG_BMSK 0x1
#define IPA_COAL_QMAP_CFG_SHFT 0

#define IPA_NAT_UC_EXTERNAL_CFG_BMSK 0xFFFFFFFF
#define IPA_NAT_UC_EXTERNAL_CFG_SHFT 0
#define IPA_NAT_UC_LOCAL_CFG_BMSK 0xFFFFFFFF
#define IPA_NAT_UC_LOCAL_CFG_SHFT 0
#define IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK 0xFFFF0000
#define IPA_NAT_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT 16
#define IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK 0x0000FFFF
#define IPA_NAT_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT 0
#define IPA_CONN_TRACK_UC_EXTERNAL_CFG_BMSK 0xFFFFFFFF
#define IPA_CONN_TRACK_UC_EXTERNAL_CFG_SHFT 0
#define IPA_CONN_TRACK_UC_LOCAL_CFG_BMSK 0xFFFFFFFF
#define IPA_CONN_TRACK_UC_LOCAL_CFG_SHFT 0
#define IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_BMSK 0xFFFF0000
#define IPA_CONN_TRACK_UC_SHARED_CFG_LOCAL_TABLE_ADDR_MSB_SHFT 16
#define IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_BMSK 0x0000FFFF
#define IPA_CONN_TRACK_UC_SHARED_CFG_EXTERNAL_TABLE_ADDR_MSB_SHFT 0
#define IPA_STATE_TX_WRAPPER_COAL_SLAVE_OPEN_FRAME_BMSK 0xf0000000
#define IPA_STATE_TX_WRAPPER_COAL_SLAVE_OPEN_FRAME_SHFT 0x1f
#define IPA_STATE_TX_WRAPPER_COAL_SLAVE_CTX_IDLE_BMSK 0x100000