Hi Krzysztof,
> -----Original Message-----
> From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> Sent: Wednesday, February 21, 2024 12:44 PM
> To: Alim Akhtar <alim.akhtar@samsung.com>; 'Georgi Djakov'
> <djakov@kernel.org>; 'Bjorn Andersson' <andersson@kernel.org>; 'Konrad
> Dybcio' <konrad.dybcio@linaro.org>; 'Sylwester Nawrocki'
> <s.nawrocki@samsung.com>; 'Artur Świgoń' <a.swigon@samsung.com>;
> 'Thierry Reding' <thierry.reding@gmail.com>; 'Jonathan Hunter'
> <jonathanh@nvidia.com>; linux-pm@vger.kernel.org; linux-
> kernel@vger.kernel.org; linux-arm-msm@vger.kernel.org; linux-samsung-
> soc@vger.kernel.org; linux-arm-kernel@lists.infradead.org; linux-
> tegra@vger.kernel.org
> Cc: 'Thierry Reding' <treding@nvidia.com>
> Subject: Re: [PATCH v2] interconnect: constify of_phandle_args in xlate
>
> On 20/02/2024 13:18, Alim Akhtar wrote:
> >
> >
> >> -----Original Message-----
> >> From: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> >> Sent: Tuesday, February 20, 2024 12:52 PM
> >> To: Georgi Djakov <djakov@kernel.org>; Bjorn Andersson
> >> <andersson@kernel.org>; Konrad Dybcio <konrad.dybcio@linaro.org>;
> >> Sylwester Nawrocki <s.nawrocki@samsung.com>; Artur Świgoń
> >> <a.swigon@samsung.com>; Krzysztof Kozlowski
> >> <krzysztof.kozlowski@linaro.org>; Alim Akhtar
> >> <alim.akhtar@samsung.com>; Thierry Reding
> <thierry.reding@gmail.com>;
> >> Jonathan Hunter <jonathanh@nvidia.com>; linux-pm@vger.kernel.org;
> >> linux-kernel@vger.kernel.org; linux-arm-msm@vger.kernel.org; linux-
> >> samsung-soc@vger.kernel.org; linux-arm-kernel@lists.infradeadorg;
> >> linux- tegra@vger.kernel.org
> >> Cc: Thierry Reding <treding@nvidia.com>
> >> Subject: [PATCH v2] interconnect: constify of_phandle_args in xlate
> >>
> >> The xlate callbacks are supposed to translate of_phandle_args to
> >> proper provider without modifying the of_phandle_args. Make the
> >> argument pointer to const for code safety and readability.
> >>
> >> Acked-by: Konrad Dybcio <konrad.dybcio@linaro.org>
> >> Acked-by: Thierry Reding <treding@nvidia.com> # Tegra
> >> Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
> >>
> >> ---
> >>
> >> Changes in v2:
> >> 1. Drop unrelated gpiolib changes (Konrad, Thierry).
> >> 2. Add tags.
> >> ---
> >> drivers/interconnect/core.c | 4 ++--
> >> drivers/interconnect/qcom/icc-common.c | 3 ++-
> >> drivers/interconnect/qcom/icc-common.h | 3 ++-
> >> drivers/interconnect/samsung/exynos.c | 2 +-
> >> drivers/memory/tegra/mc.c | 2 +-
> >> drivers/memory/tegra/tegra124-emc.c | 2 +-
> >> drivers/memory/tegra/tegra124.c | 2 +-
> >> drivers/memory/tegra/tegra186-emc.c | 2 +-
> >> drivers/memory/tegra/tegra20-emc.c | 2 +-
> >> drivers/memory/tegra/tegra20.c | 2 +-
> >> drivers/memory/tegra/tegra30-emc.c | 2 +-
> >> drivers/memory/tegra/tegra30.c | 2 +-
> >> include/linux/interconnect-provider.h | 11 ++++++-----
> >> include/soc/tegra/mc.h | 7 ++++---
> >> 14 files changed, 25 insertions(+), 21 deletions(-)
> >>
> >
> > For Samsung/Exynos
> > Reviewed-by: Alim Akhtar <alim.akhtar@samsung.com>
>
> Review tags are per patch. You probably meant Acked-by.
if that is more appropriate in this case, feel free to add
Acked-by: Alim Akhtar <alim.akhtar@samsung.com>
> https://protect2.fireeye.com/v1/url?k=bc64ffdb-ddefeaed-bc657494-
> 74fe485cbff1-62590d464cd6269e&q=1&e=ec8047f9-eeac-446c-8ba5-
> 476f581d9cfa&u=https%3A%2F%2Felixir.bootlin.com%2Flinux%2Fv6.8-
> rc5%2Fsource%2FDocumentation%2Fprocess%2Fsubmitting-
> patches.rst%23L544
>
> What is there anyway to review in Samsung? Adding one const in one driver?
>
I my opinion, any changes coming in, has to be reviewed to see if there is/are any side effect because of the change,
even though the changes looks trivial.
>
> Best regards,
> Krzysztof
@@ -343,7 +343,7 @@ EXPORT_SYMBOL_GPL(icc_std_aggregate);
* an array of icc nodes specified in the icc_onecell_data struct when
* registering the provider.
*/
-struct icc_node *of_icc_xlate_onecell(struct of_phandle_args *spec,
+struct icc_node *of_icc_xlate_onecell(const struct of_phandle_args *spec,
void *data)
{
struct icc_onecell_data *icc_data = data;
@@ -368,7 +368,7 @@ EXPORT_SYMBOL_GPL(of_icc_xlate_onecell);
* Returns a valid pointer to struct icc_node_data on success or ERR_PTR()
* on failure.
*/
-struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec)
+struct icc_node_data *of_icc_get_from_provider(const struct of_phandle_args *spec)
{
struct icc_node *node = ERR_PTR(-EPROBE_DEFER);
struct icc_node_data *data = NULL;
@@ -9,7 +9,8 @@
#include "icc-common.h"
-struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+struct icc_node_data *qcom_icc_xlate_extended(const struct of_phandle_args *spec,
+ void *data)
{
struct icc_node_data *ndata;
struct icc_node *node;
@@ -8,6 +8,7 @@
#include <linux/interconnect-provider.h>
-struct icc_node_data *qcom_icc_xlate_extended(struct of_phandle_args *spec, void *data);
+struct icc_node_data *qcom_icc_xlate_extended(const struct of_phandle_args *spec,
+ void *data);
#endif
@@ -82,7 +82,7 @@ static int exynos_generic_icc_set(struct icc_node *src, struct icc_node *dst)
return 0;
}
-static struct icc_node *exynos_generic_icc_xlate(struct of_phandle_args *spec,
+static struct icc_node *exynos_generic_icc_xlate(const struct of_phandle_args *spec,
void *data)
{
struct exynos_icc_priv *priv = data;
@@ -755,7 +755,7 @@ const char *const tegra_mc_error_names[8] = {
[6] = "SMMU translation error",
};
-struct icc_node *tegra_mc_icc_xlate(struct of_phandle_args *spec, void *data)
+struct icc_node *tegra_mc_icc_xlate(const struct of_phandle_args *spec, void *data)
{
struct tegra_mc *mc = icc_provider_to_tegra_mc(data);
struct icc_node *node;
@@ -1285,7 +1285,7 @@ to_tegra_emc_provider(struct icc_provider *provider)
}
static struct icc_node_data *
-emc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+emc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct icc_provider *provider = data;
struct icc_node_data *ndata;
@@ -1170,7 +1170,7 @@ static int tegra124_mc_icc_aggreate(struct icc_node *node, u32 tag, u32 avg_bw,
}
static struct icc_node_data *
-tegra124_mc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+tegra124_mc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct tegra_mc *mc = icc_provider_to_tegra_mc(data);
const struct tegra_mc_client *client;
@@ -236,7 +236,7 @@ static int tegra_emc_icc_set_bw(struct icc_node *src, struct icc_node *dst)
}
static struct icc_node *
-tegra_emc_of_icc_xlate(struct of_phandle_args *spec, void *data)
+tegra_emc_of_icc_xlate(const struct of_phandle_args *spec, void *data)
{
struct icc_provider *provider = data;
struct icc_node *node;
@@ -950,7 +950,7 @@ to_tegra_emc_provider(struct icc_provider *provider)
}
static struct icc_node_data *
-emc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+emc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct icc_provider *provider = data;
struct icc_node_data *ndata;
@@ -390,7 +390,7 @@ static int tegra20_mc_icc_aggreate(struct icc_node *node, u32 tag, u32 avg_bw,
}
static struct icc_node_data *
-tegra20_mc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+tegra20_mc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct tegra_mc *mc = icc_provider_to_tegra_mc(data);
unsigned int i, idx = spec->args[0];
@@ -1468,7 +1468,7 @@ to_tegra_emc_provider(struct icc_provider *provider)
}
static struct icc_node_data *
-emc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+emc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct icc_provider *provider = data;
struct icc_node_data *ndata;
@@ -1332,7 +1332,7 @@ static int tegra30_mc_icc_aggreate(struct icc_node *node, u32 tag, u32 avg_bw,
}
static struct icc_node_data *
-tegra30_mc_of_icc_xlate_extended(struct of_phandle_args *spec, void *data)
+tegra30_mc_of_icc_xlate_extended(const struct of_phandle_args *spec, void *data)
{
struct tegra_mc *mc = icc_provider_to_tegra_mc(data);
const struct tegra_mc_client *client;
@@ -36,7 +36,7 @@ struct icc_onecell_data {
struct icc_node *nodes[] __counted_by(num_nodes);
};
-struct icc_node *of_icc_xlate_onecell(struct of_phandle_args *spec,
+struct icc_node *of_icc_xlate_onecell(const struct of_phandle_args *spec,
void *data);
/**
@@ -65,8 +65,9 @@ struct icc_provider {
u32 peak_bw, u32 *agg_avg, u32 *agg_peak);
void (*pre_aggregate)(struct icc_node *node);
int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak);
- struct icc_node* (*xlate)(struct of_phandle_args *spec, void *data);
- struct icc_node_data* (*xlate_extended)(struct of_phandle_args *spec, void *data);
+ struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data);
+ struct icc_node_data* (*xlate_extended)(const struct of_phandle_args *spec,
+ void *data);
struct device *dev;
int users;
bool inter_set;
@@ -124,7 +125,7 @@ int icc_nodes_remove(struct icc_provider *provider);
void icc_provider_init(struct icc_provider *provider);
int icc_provider_register(struct icc_provider *provider);
void icc_provider_deregister(struct icc_provider *provider);
-struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec);
+struct icc_node_data *of_icc_get_from_provider(const struct of_phandle_args *spec);
void icc_sync_state(struct device *dev);
#else
@@ -171,7 +172,7 @@ static inline int icc_provider_register(struct icc_provider *provider)
static inline void icc_provider_deregister(struct icc_provider *provider) { }
-static inline struct icc_node_data *of_icc_get_from_provider(struct of_phandle_args *spec)
+static inline struct icc_node_data *of_icc_get_from_provider(const struct of_phandle_args *spec)
{
return ERR_PTR(-ENOTSUPP);
}
@@ -146,13 +146,14 @@ struct tegra_mc_icc_ops {
int (*set)(struct icc_node *src, struct icc_node *dst);
int (*aggregate)(struct icc_node *node, u32 tag, u32 avg_bw,
u32 peak_bw, u32 *agg_avg, u32 *agg_peak);
- struct icc_node* (*xlate)(struct of_phandle_args *spec, void *data);
- struct icc_node_data *(*xlate_extended)(struct of_phandle_args *spec,
+ struct icc_node* (*xlate)(const struct of_phandle_args *spec, void *data);
+ struct icc_node_data *(*xlate_extended)(const struct of_phandle_args *spec,
void *data);
int (*get_bw)(struct icc_node *node, u32 *avg, u32 *peak);
};
-struct icc_node *tegra_mc_icc_xlate(struct of_phandle_args *spec, void *data);
+struct icc_node *tegra_mc_icc_xlate(const struct of_phandle_args *spec,
+ void *data);
extern const struct tegra_mc_icc_ops tegra_mc_icc_ops;
struct tegra_mc_ops {