net: ipa: don't index mem data array by ID
authorAlex Elder <elder@linaro.org>
Thu, 10 Jun 2021 19:23:08 +0000 (14:23 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 10 Jun 2021 21:50:08 +0000 (14:50 -0700)
Finally the code handles the IPA memory region array in the
configuration data without assuming it is indexed by region ID.
Get rid of the array index designators where these arrays are
initialized.  As a result, there's no more need to define an
explicitly undefined memory region ID, so get rid of that.

Change ipa_mem_find() so it no longer assumes the ipa->mem[] array
is indexed by memory region ID.  Instead, have it search the array
for the entry having the requested memory ID, and return the address
of the descriptor if found.  Otherwise return NULL.

Stop allowing memory regions to be defined with zero size and zero
canary value.  Check for this condition in ipa_mem_valid_one().
As a result, it is not necessary to check for this case in
ipa_mem_config().

Finally, there is no need for IPA_MEM_UNDEFINED to be defined any
more, so get rid of it.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ipa/ipa_data-v3.5.1.c
drivers/net/ipa/ipa_data-v4.11.c
drivers/net/ipa/ipa_data-v4.2.c
drivers/net/ipa/ipa_data-v4.5.c
drivers/net/ipa/ipa_data-v4.9.c
drivers/net/ipa/ipa_mem.c
drivers/net/ipa/ipa_mem.h

index 945d45b72b247b5349f0a070288d672ecf7fed4c..af536ef8c1209791cf781c83c20000e87ac3733a 100644 (file)
@@ -271,91 +271,91 @@ static const struct ipa_resource_data ipa_resource_data = {
 
 /* IPA-resident memory region data for an SoC having IPA v3.5.1 */
 static const struct ipa_mem ipa_mem_local_data[] = {
-       [IPA_MEM_UC_SHARED] = {
+       {
                .id             = IPA_MEM_UC_SHARED,
                .offset         = 0x0000,
                .size           = 0x0080,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_INFO] = {
+       {
                .id             = IPA_MEM_UC_INFO,
                .offset         = 0x0080,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_V4_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V4_FILTER_HASHED,
                .offset         = 0x0288,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_FILTER] = {
+       {
                .id             = IPA_MEM_V4_FILTER,
                .offset         = 0x0308,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V6_FILTER_HASHED,
                .offset         = 0x0388,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER] = {
+       {
                .id             = IPA_MEM_V6_FILTER,
                .offset         = 0x0408,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V4_ROUTE_HASHED,
                .offset         = 0x0488,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE] = {
+       {
                .id             = IPA_MEM_V4_ROUTE,
                .offset         = 0x0508,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V6_ROUTE_HASHED,
                .offset         = 0x0588,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE] = {
+       {
                .id             = IPA_MEM_V6_ROUTE,
                .offset         = 0x0608,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_HEADER] = {
+       {
                .id             = IPA_MEM_MODEM_HEADER,
                .offset         = 0x0688,
                .size           = 0x0140,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_PROC_CTX] = {
+       {
                .id             = IPA_MEM_MODEM_PROC_CTX,
                .offset         = 0x07d0,
                .size           = 0x0200,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_PROC_CTX] = {
+       {
                .id             = IPA_MEM_AP_PROC_CTX,
                .offset         = 0x09d0,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM] = {
+       {
                .id             = IPA_MEM_MODEM,
                .offset         = 0x0bd8,
                .size           = 0x1024,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_EVENT_RING] = {
+       {
                .id             = IPA_MEM_UC_EVENT_RING,
                .offset         = 0x1c00,
                .size           = 0x0400,
index 2ff3fcf4e21faa938cac53a7c42b7f9ee8287e01..9353efbd504fb5befe992ccd957d12b87cda650f 100644 (file)
@@ -220,133 +220,133 @@ static const struct ipa_resource_data ipa_resource_data = {
 
 /* IPA-resident memory region data for an SoC having IPA v4.11 */
 static const struct ipa_mem ipa_mem_local_data[] = {
-       [IPA_MEM_UC_SHARED] = {
+       {
                .id             = IPA_MEM_UC_SHARED,
                .offset         = 0x0000,
                .size           = 0x0080,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_INFO] = {
+       {
                .id             = IPA_MEM_UC_INFO,
                .offset         = 0x0080,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_V4_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V4_FILTER_HASHED,
                .offset         = 0x0288,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_FILTER] = {
+       {
                .id             = IPA_MEM_V4_FILTER,
                .offset         = 0x0308,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V6_FILTER_HASHED,
                .offset         = 0x0388,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER] = {
+       {
                .id             = IPA_MEM_V6_FILTER,
                .offset         = 0x0408,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V4_ROUTE_HASHED,
                .offset         = 0x0488,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE] = {
+       {
                .id             = IPA_MEM_V4_ROUTE,
                .offset         = 0x0508,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V6_ROUTE_HASHED,
                .offset         = 0x0588,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE] = {
+       {
                .id             = IPA_MEM_V6_ROUTE,
                .offset         = 0x0608,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_HEADER] = {
+       {
                .id             = IPA_MEM_MODEM_HEADER,
                .offset         = 0x0688,
                .size           = 0x0240,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_HEADER] = {
+       {
                .id             = IPA_MEM_AP_HEADER,
                .offset         = 0x08c8,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM_PROC_CTX] = {
+       {
                .id             = IPA_MEM_MODEM_PROC_CTX,
                .offset         = 0x0ad0,
                .size           = 0x0200,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_PROC_CTX] = {
+       {
                .id             = IPA_MEM_AP_PROC_CTX,
                .offset         = 0x0cd0,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_NAT_TABLE] = {
+       {
                .id             = IPA_MEM_NAT_TABLE,
                .offset         = 0x0ee0,
                .size           = 0x0d00,
                .canary_count   = 4,
        },
-       [IPA_MEM_PDN_CONFIG] = {
+       {
                .id             = IPA_MEM_PDN_CONFIG,
                .offset         = 0x1be8,
                .size           = 0x0050,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_QUOTA_MODEM] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_MODEM,
                .offset         = 0x1c40,
                .size           = 0x0030,
                .canary_count   = 4,
        },
-       [IPA_MEM_STATS_QUOTA_AP] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_AP,
                .offset         = 0x1c70,
                .size           = 0x0048,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_TETHERING] = {
+       {
                .id             = IPA_MEM_STATS_TETHERING,
                .offset         = 0x1cb8,
                .size           = 0x0238,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_DROP] = {
+       {
                .id             = IPA_MEM_STATS_DROP,
                .offset         = 0x1ef0,
                .size           = 0x0020,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM] = {
+       {
                .id             = IPA_MEM_MODEM,
                .offset         = 0x1f18,
                .size           = 0x100c,
                .canary_count   = 2,
        },
-       [IPA_MEM_END_MARKER] = {
+       {
                .id             = IPA_MEM_END_MARKER,
                .offset         = 0x3000,
                .size           = 0x0000,
index f06eb07a7895df66c7ce9dec9e4c49b33d77e774..3b09b7baa95f443f9e169cc1363706ca8b6b2493 100644 (file)
@@ -219,109 +219,109 @@ static const struct ipa_resource_data ipa_resource_data = {
 
 /* IPA-resident memory region data for an SoC having IPA v4.2 */
 static const struct ipa_mem ipa_mem_local_data[] = {
-       [IPA_MEM_UC_SHARED] = {
+       {
                .id             = IPA_MEM_UC_SHARED,
                .offset         = 0x0000,
                .size           = 0x0080,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_INFO] = {
+       {
                .id             = IPA_MEM_UC_INFO,
                .offset         = 0x0080,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_V4_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V4_FILTER_HASHED,
                .offset         = 0x0288,
                .size           = 0,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_FILTER] = {
+       {
                .id             = IPA_MEM_V4_FILTER,
                .offset         = 0x0290,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V6_FILTER_HASHED,
                .offset         = 0x0310,
                .size           = 0,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER] = {
+       {
                .id             = IPA_MEM_V6_FILTER,
                .offset         = 0x0318,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V4_ROUTE_HASHED,
                .offset         = 0x0398,
                .size           = 0,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE] = {
+       {
                .id             = IPA_MEM_V4_ROUTE,
                .offset         = 0x03a0,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V6_ROUTE_HASHED,
                .offset         = 0x0420,
                .size           = 0,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE] = {
+       {
                .id             = IPA_MEM_V6_ROUTE,
                .offset         = 0x0428,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_HEADER] = {
+       {
                .id             = IPA_MEM_MODEM_HEADER,
                .offset         = 0x04a8,
                .size           = 0x0140,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_PROC_CTX] = {
+       {
                .id             = IPA_MEM_MODEM_PROC_CTX,
                .offset         = 0x05f0,
                .size           = 0x0200,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_PROC_CTX] = {
+       {
                .id             = IPA_MEM_AP_PROC_CTX,
                .offset         = 0x07f0,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_PDN_CONFIG] = {
+       {
                .id             = IPA_MEM_PDN_CONFIG,
                .offset         = 0x09f8,
                .size           = 0x0050,
                .canary_count   = 2,
        },
-       [IPA_MEM_STATS_QUOTA_MODEM] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_MODEM,
                .offset         = 0x0a50,
                .size           = 0x0060,
                .canary_count   = 2,
        },
-       [IPA_MEM_STATS_TETHERING] = {
+       {
                .id             = IPA_MEM_STATS_TETHERING,
                .offset         = 0x0ab0,
                .size           = 0x0140,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM] = {
+       {
                .id             = IPA_MEM_MODEM,
                .offset         = 0x0bf0,
                .size           = 0x140c,
                .canary_count   = 0,
        },
-       [IPA_MEM_END_MARKER] = {
+       {
                .id             = IPA_MEM_END_MARKER,
                .offset         = 0x2000,
                .size           = 0,
index 1c8a9099639ab2df20e6363b43f38368f5f53c05..a99b6478fa3a53de8869d88f6ff7874a22b4ce7a 100644 (file)
@@ -265,139 +265,139 @@ static const struct ipa_resource_data ipa_resource_data = {
 
 /* IPA-resident memory region data for an SoC having IPA v4.5 */
 static const struct ipa_mem ipa_mem_local_data[] = {
-       [IPA_MEM_UC_SHARED] = {
+       {
                .id             = IPA_MEM_UC_SHARED,
                .offset         = 0x0000,
                .size           = 0x0080,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_INFO] = {
+       {
                .id             = IPA_MEM_UC_INFO,
                .offset         = 0x0080,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_V4_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V4_FILTER_HASHED,
                .offset         = 0x0288,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_FILTER] = {
+       {
                .id             = IPA_MEM_V4_FILTER,
                .offset         = 0x0308,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V6_FILTER_HASHED,
                .offset         = 0x0388,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER] = {
+       {
                .id             = IPA_MEM_V6_FILTER,
                .offset         = 0x0408,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V4_ROUTE_HASHED,
                .offset         = 0x0488,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE] = {
+       {
                .id             = IPA_MEM_V4_ROUTE,
                .offset         = 0x0508,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V6_ROUTE_HASHED,
                .offset         = 0x0588,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE] = {
+       {
                .id             = IPA_MEM_V6_ROUTE,
                .offset         = 0x0608,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_HEADER] = {
+       {
                .id             = IPA_MEM_MODEM_HEADER,
                .offset         = 0x0688,
                .size           = 0x0240,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_HEADER] = {
+       {
                .id             = IPA_MEM_AP_HEADER,
                .offset         = 0x08c8,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM_PROC_CTX] = {
+       {
                .id             = IPA_MEM_MODEM_PROC_CTX,
                .offset         = 0x0ad0,
                .size           = 0x0b20,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_PROC_CTX] = {
+       {
                .id             = IPA_MEM_AP_PROC_CTX,
                .offset         = 0x15f0,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_NAT_TABLE] = {
+       {
                .id             = IPA_MEM_NAT_TABLE,
                .offset         = 0x1800,
                .size           = 0x0d00,
                .canary_count   = 4,
        },
-       [IPA_MEM_STATS_QUOTA_MODEM] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_MODEM,
                .offset         = 0x2510,
                .size           = 0x0030,
                .canary_count   = 4,
        },
-       [IPA_MEM_STATS_QUOTA_AP] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_AP,
                .offset         = 0x2540,
                .size           = 0x0048,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_TETHERING] = {
+       {
                .id             = IPA_MEM_STATS_TETHERING,
                .offset         = 0x2588,
                .size           = 0x0238,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_FILTER_ROUTE] = {
+       {
                .id             = IPA_MEM_STATS_FILTER_ROUTE,
                .offset         = 0x27c0,
                .size           = 0x0800,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_DROP] = {
+       {
                .id             = IPA_MEM_STATS_DROP,
                .offset         = 0x2fc0,
                .size           = 0x0020,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM] = {
+       {
                .id             = IPA_MEM_MODEM,
                .offset         = 0x2fe8,
                .size           = 0x0800,
                .canary_count   = 2,
        },
-       [IPA_MEM_UC_EVENT_RING] = {
+       {
                .id             = IPA_MEM_UC_EVENT_RING,
                .offset         = 0x3800,
                .size           = 0x1000,
                .canary_count   = 1,
        },
-       [IPA_MEM_PDN_CONFIG] = {
+       {
                .id             = IPA_MEM_PDN_CONFIG,
                .offset         = 0x4800,
                .size           = 0x0050,
index f77169709eb2a3b00311badb036266e6c90469b1..798d43e1eb13357b60e4bb0ba78d6f5c8340f8bc 100644 (file)
@@ -263,139 +263,139 @@ static const struct ipa_resource_data ipa_resource_data = {
 
 /* IPA-resident memory region data for an SoC having IPA v4.9 */
 static const struct ipa_mem ipa_mem_local_data[] = {
-       [IPA_MEM_UC_SHARED] = {
+       {
                .id             = IPA_MEM_UC_SHARED,
                .offset         = 0x0000,
                .size           = 0x0080,
                .canary_count   = 0,
        },
-       [IPA_MEM_UC_INFO] = {
+       {
                .id             = IPA_MEM_UC_INFO,
                .offset         = 0x0080,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_V4_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V4_FILTER_HASHED,
                .offset         = 0x0288,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_FILTER] = {
+       {
                .id             = IPA_MEM_V4_FILTER,
                .offset         = 0x0308,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER_HASHED] = {
+       {
                .id             = IPA_MEM_V6_FILTER_HASHED,
                .offset         = 0x0388,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_FILTER] = {
+       {
                .id             = IPA_MEM_V6_FILTER,
                .offset         = 0x0408,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V4_ROUTE_HASHED,
                .offset         = 0x0488,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V4_ROUTE] = {
+       {
                .id             = IPA_MEM_V4_ROUTE,
                .offset         = 0x0508,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE_HASHED] = {
+       {
                .id             = IPA_MEM_V6_ROUTE_HASHED,
                .offset         = 0x0588,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_V6_ROUTE] = {
+       {
                .id             = IPA_MEM_V6_ROUTE,
                .offset         = 0x0608,
                .size           = 0x0078,
                .canary_count   = 2,
        },
-       [IPA_MEM_MODEM_HEADER] = {
+       {
                .id             = IPA_MEM_MODEM_HEADER,
                .offset         = 0x0688,
                .size           = 0x0240,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_HEADER] = {
+       {
                .id             = IPA_MEM_AP_HEADER,
                .offset         = 0x08c8,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM_PROC_CTX] = {
+       {
                .id             = IPA_MEM_MODEM_PROC_CTX,
                .offset         = 0x0ad0,
                .size           = 0x0b20,
                .canary_count   = 2,
        },
-       [IPA_MEM_AP_PROC_CTX] = {
+       {
                .id             = IPA_MEM_AP_PROC_CTX,
                .offset         = 0x15f0,
                .size           = 0x0200,
                .canary_count   = 0,
        },
-       [IPA_MEM_NAT_TABLE] = {
+       {
                .id             = IPA_MEM_NAT_TABLE,
                .offset         = 0x1800,
                .size           = 0x0d00,
                .canary_count   = 4,
        },
-       [IPA_MEM_STATS_QUOTA_MODEM] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_MODEM,
                .offset         = 0x2510,
                .size           = 0x0030,
                .canary_count   = 4,
        },
-       [IPA_MEM_STATS_QUOTA_AP] = {
+       {
                .id             = IPA_MEM_STATS_QUOTA_AP,
                .offset         = 0x2540,
                .size           = 0x0048,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_TETHERING] = {
+       {
                .id             = IPA_MEM_STATS_TETHERING,
                .offset         = 0x2588,
                .size           = 0x0238,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_FILTER_ROUTE] = {
+       {
                .id             = IPA_MEM_STATS_FILTER_ROUTE,
                .offset         = 0x27c0,
                .size           = 0x0800,
                .canary_count   = 0,
        },
-       [IPA_MEM_STATS_DROP] = {
+       {
                .id             = IPA_MEM_STATS_DROP,
                .offset         = 0x2fc0,
                .size           = 0x0020,
                .canary_count   = 0,
        },
-       [IPA_MEM_MODEM] = {
+       {
                .id             = IPA_MEM_MODEM,
                .offset         = 0x2fe8,
                .size           = 0x0800,
                .canary_count   = 2,
        },
-       [IPA_MEM_UC_EVENT_RING] = {
+       {
                .id             = IPA_MEM_UC_EVENT_RING,
                .offset         = 0x3800,
                .size           = 0x1000,
                .canary_count   = 1,
        },
-       [IPA_MEM_PDN_CONFIG] = {
+       {
                .id             = IPA_MEM_PDN_CONFIG,
                .offset         = 0x4800,
                .size           = 0x0050,
index 633895fc67b666f5598335024a7cb80a20c60cc3..4337b0920d3d738af11bee1e165ff839e292c5db 100644 (file)
 
 const struct ipa_mem *ipa_mem_find(struct ipa *ipa, enum ipa_mem_id mem_id)
 {
-       if (mem_id < IPA_MEM_COUNT)
-               return &ipa->mem[mem_id];
+       u32 i;
+
+       for (i = 0; i < ipa->mem_count; i++) {
+               const struct ipa_mem *mem = &ipa->mem[i];
+
+               if (mem->id == mem_id)
+                       return mem;
+       }
 
        return NULL;
 }
@@ -209,6 +215,11 @@ static bool ipa_mem_valid_one(struct ipa *ipa, const struct ipa_mem *mem)
                return false;
        }
 
+       if (!mem->size && !mem->canary_count) {
+               dev_err(dev, "empty memory region %u\n", mem_id);
+               return false;
+       }
+
        /* Other than modem memory, sizes must be a multiple of 8 */
        size_multiple = mem_id == IPA_MEM_MODEM ? 4 : 8;
        if (mem->size % size_multiple)
@@ -244,25 +255,14 @@ static bool ipa_mem_valid(struct ipa *ipa, const struct ipa_mem_data *mem_data)
        for (i = 0; i < mem_data->local_count; i++) {
                const struct ipa_mem *mem = &mem_data->local[i];
 
-               if (mem->id == IPA_MEM_UNDEFINED)
-                       continue;
-
                if (__test_and_set_bit(mem->id, regions)) {
                        dev_err(dev, "duplicate memory region %u\n", mem->id);
                        return false;
                }
 
                /* Defined regions have non-zero size and/or canary count */
-               if (mem->size || mem->canary_count) {
-                       if (ipa_mem_valid_one(ipa, mem))
-                               continue;
+               if (!ipa_mem_valid_one(ipa, mem))
                        return false;
-               }
-
-               /* It's harmless, but warn if an offset is provided */
-               if (mem->offset)
-                       dev_warn(dev, "empty region %u has non-zero offset\n",
-                                mem->id);
        }
 
        /* Now see if any required regions are not defined */
@@ -349,20 +349,14 @@ int ipa_mem_config(struct ipa *ipa)
         * space prior to the region's base address if indicated.
         */
        for (i = 0; i < ipa->mem_count; i++) {
-               u16 canary_count;
+               u16 canary_count = ipa->mem[i].canary_count;
                __le32 *canary;
 
-               /* Skip over undefined regions */
-               mem = &ipa->mem[i];
-               if (!mem->offset && !mem->size)
-                       continue;
-
-               canary_count = mem->canary_count;
                if (!canary_count)
                        continue;
 
                /* Write canary values in the space before the region */
-               canary = ipa->mem_virt + ipa->mem_offset + mem->offset;
+               canary = ipa->mem_virt + ipa->mem_offset + ipa->mem[i].offset;
                do
                        *--canary = IPA_MEM_CANARY_VAL;
                while (--canary_count);
index 712b2881be0c294434775fbf4b1b773ec9939d9e..570bfdd99bffb4787305d36aef94c2d175effd23 100644 (file)
@@ -43,7 +43,6 @@ struct ipa_mem_data;
 
 /* IPA-resident memory region ids */
 enum ipa_mem_id {
-       IPA_MEM_UNDEFINED = 0,          /* undefined region */
        IPA_MEM_UC_SHARED,              /* 0 canaries */
        IPA_MEM_UC_INFO,                /* 0 canaries */
        IPA_MEM_V4_FILTER_HASHED,       /* 2 canaries */