Message ID | 20200504175859.22606-3-elder@linaro.org (mailing list archive) |
---|---|
State | Accepted |
Commit | 3128aae8c439af18048167e3cd5e31680cd190b9 |
Headers | show |
Series | net: ipa: I/O map SMEM and IMEM | expand |
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@linaro.org> Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org> 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 >
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_ */
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@linaro.org> --- 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(-)