On Mon 04 May 10:58 PDT 2020, Alex Elder wrote: > The ipa_mem_data structure type was never actually used. Instead, > the IPA memory regions were defined using the ipa_mem structure. > > Redefine struct ipa_mem_data so it encapsulates the array of IPA-local > memory region descriptors along with the count of entries in that > array. Pass just an ipa_mem structure pointer to ipa_mem_init(). > > Rename the ipa_mem_data[] array ipa_mem_local_data[] to emphasize > that the memory regions it defines are IPA-local memory. > > Signed-off-by: Alex Elder <elder@xxxxxxxxxx> Reviewed-by: Bjorn Andersson <bjorn.andersson@xxxxxxxxxx> Regards, Bjorn > --- > drivers/net/ipa/ipa_data-sc7180.c | 10 +++++++--- > drivers/net/ipa/ipa_data-sdm845.c | 10 +++++++--- > drivers/net/ipa/ipa_data.h | 13 +++++-------- > drivers/net/ipa/ipa_main.c | 2 +- > drivers/net/ipa/ipa_mem.c | 9 +++++---- > drivers/net/ipa/ipa_mem.h | 3 ++- > 6 files changed, 27 insertions(+), 20 deletions(-) > > diff --git a/drivers/net/ipa/ipa_data-sc7180.c b/drivers/net/ipa/ipa_data-sc7180.c > index 042b5fc3c135..f97e7e4e61c1 100644 > --- a/drivers/net/ipa/ipa_data-sc7180.c > +++ b/drivers/net/ipa/ipa_data-sc7180.c > @@ -193,7 +193,7 @@ static const struct ipa_resource_data ipa_resource_data = { > }; > > /* IPA-resident memory region configuration for the SC7180 SoC. */ > -static const struct ipa_mem ipa_mem_data[] = { > +static const struct ipa_mem ipa_mem_local_data[] = { > [IPA_MEM_UC_SHARED] = { > .offset = 0x0000, > .size = 0x0080, > @@ -296,12 +296,16 @@ static const struct ipa_mem ipa_mem_data[] = { > }, > }; > > +static struct ipa_mem_data ipa_mem_data = { > + .local_count = ARRAY_SIZE(ipa_mem_local_data), > + .local = ipa_mem_local_data, > +}; > + > /* Configuration data for the SC7180 SoC. */ > const struct ipa_data ipa_data_sc7180 = { > .version = IPA_VERSION_4_2, > .endpoint_count = ARRAY_SIZE(ipa_gsi_endpoint_data), > .endpoint_data = ipa_gsi_endpoint_data, > .resource_data = &ipa_resource_data, > - .mem_count = ARRAY_SIZE(ipa_mem_data), > - .mem_data = ipa_mem_data, > + .mem_data = &ipa_mem_data, > }; > diff --git a/drivers/net/ipa/ipa_data-sdm845.c b/drivers/net/ipa/ipa_data-sdm845.c > index 0d9c36e1e806..c55507e94559 100644 > --- a/drivers/net/ipa/ipa_data-sdm845.c > +++ b/drivers/net/ipa/ipa_data-sdm845.c > @@ -235,7 +235,7 @@ static const struct ipa_resource_data ipa_resource_data = { > }; > > /* IPA-resident memory region configuration for the SDM845 SoC. */ > -static const struct ipa_mem ipa_mem_data[] = { > +static const struct ipa_mem ipa_mem_local_data[] = { > [IPA_MEM_UC_SHARED] = { > .offset = 0x0000, > .size = 0x0080, > @@ -318,12 +318,16 @@ static const struct ipa_mem ipa_mem_data[] = { > }, > }; > > +static struct ipa_mem_data ipa_mem_data = { > + .local_count = ARRAY_SIZE(ipa_mem_local_data), > + .local = ipa_mem_local_data, > +}; > + > /* Configuration data for the SDM845 SoC. */ > const struct ipa_data ipa_data_sdm845 = { > .version = IPA_VERSION_3_5_1, > .endpoint_count = ARRAY_SIZE(ipa_gsi_endpoint_data), > .endpoint_data = ipa_gsi_endpoint_data, > .resource_data = &ipa_resource_data, > - .mem_count = ARRAY_SIZE(ipa_mem_data), > - .mem_data = ipa_mem_data, > + .mem_data = &ipa_mem_data, > }; > diff --git a/drivers/net/ipa/ipa_data.h b/drivers/net/ipa/ipa_data.h > index 7110de2de817..51d8e5a6f23a 100644 > --- a/drivers/net/ipa/ipa_data.h > +++ b/drivers/net/ipa/ipa_data.h > @@ -246,14 +246,12 @@ struct ipa_resource_data { > > /** > * struct ipa_mem - IPA-local memory region description > - * @offset: offset in IPA memory space to base of the region > - * @size: size in bytes base of the region > - * @canary_count: number of 32-bit "canary" values that precede region > + * @local_count: number of regions defined in the local[] array > + * @local: array of IPA-local memory region descriptors > */ > struct ipa_mem_data { > - u32 offset; > - u16 size; > - u16 canary_count; > + u32 local_count; > + const struct ipa_mem *local; > }; > > /** > @@ -270,8 +268,7 @@ struct ipa_data { > u32 endpoint_count; /* # entries in endpoint_data[] */ > const struct ipa_gsi_endpoint_data *endpoint_data; > const struct ipa_resource_data *resource_data; > - u32 mem_count; /* # entries in mem_data[] */ > - const struct ipa_mem *mem_data; > + const struct ipa_mem_data *mem_data; > }; > > extern const struct ipa_data ipa_data_sdm845; > diff --git a/drivers/net/ipa/ipa_main.c b/drivers/net/ipa/ipa_main.c > index 28998dcce3d2..9295a9122e8e 100644 > --- a/drivers/net/ipa/ipa_main.c > +++ b/drivers/net/ipa/ipa_main.c > @@ -778,7 +778,7 @@ static int ipa_probe(struct platform_device *pdev) > if (ret) > goto err_kfree_ipa; > > - ret = ipa_mem_init(ipa, data->mem_count, data->mem_data); > + ret = ipa_mem_init(ipa, data->mem_data); > if (ret) > goto err_reg_exit; > > diff --git a/drivers/net/ipa/ipa_mem.c b/drivers/net/ipa/ipa_mem.c > index 42d2c29d9f0c..fb4de2a12796 100644 > --- a/drivers/net/ipa/ipa_mem.c > +++ b/drivers/net/ipa/ipa_mem.c > @@ -12,6 +12,7 @@ > > #include "ipa.h" > #include "ipa_reg.h" > +#include "ipa_data.h" > #include "ipa_cmd.h" > #include "ipa_mem.h" > #include "ipa_data.h" > @@ -266,15 +267,15 @@ int ipa_mem_zero_modem(struct ipa *ipa) > } > > /* Perform memory region-related initialization */ > -int ipa_mem_init(struct ipa *ipa, u32 count, const struct ipa_mem *mem) > +int ipa_mem_init(struct ipa *ipa, const struct ipa_mem_data *mem_data) > { > struct device *dev = &ipa->pdev->dev; > struct resource *res; > int ret; > > - if (count > IPA_MEM_COUNT) { > + if (mem_data->local_count > IPA_MEM_COUNT) { > dev_err(dev, "to many memory regions (%u > %u)\n", > - count, IPA_MEM_COUNT); > + mem_data->local_count, IPA_MEM_COUNT); > return -EINVAL; > } > > @@ -302,7 +303,7 @@ int ipa_mem_init(struct ipa *ipa, u32 count, const struct ipa_mem *mem) > ipa->mem_size = resource_size(res); > > /* The ipa->mem[] array is indexed by enum ipa_mem_id values */ > - ipa->mem = mem; > + ipa->mem = mem_data->local; > > return 0; > } > diff --git a/drivers/net/ipa/ipa_mem.h b/drivers/net/ipa/ipa_mem.h > index 065cb499ebe5..f99180f84f0d 100644 > --- a/drivers/net/ipa/ipa_mem.h > +++ b/drivers/net/ipa/ipa_mem.h > @@ -7,6 +7,7 @@ > #define _IPA_MEM_H_ > > struct ipa; > +struct ipa_mem_data; > > /** > * DOC: IPA Local Memory > @@ -84,7 +85,7 @@ void ipa_mem_teardown(struct ipa *ipa); > > int ipa_mem_zero_modem(struct ipa *ipa); > > -int ipa_mem_init(struct ipa *ipa, u32 count, const struct ipa_mem *mem); > +int ipa_mem_init(struct ipa *ipa, const struct ipa_mem_data *mem_data); > void ipa_mem_exit(struct ipa *ipa); > > #endif /* _IPA_MEM_H_ */ > -- > 2.20.1 >