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.
Signed-off-by: Krzysztof Kozlowski <[email protected]>
---
drivers/gpio/gpiolib-of.c | 2 +-
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 ++++---
15 files changed, 26 insertions(+), 22 deletions(-)
diff --git a/drivers/gpio/gpiolib-of.c b/drivers/gpio/gpiolib-of.c
index 35d717fd393f..708b0d51f4b7 100644
--- a/drivers/gpio/gpiolib-of.c
+++ b/drivers/gpio/gpiolib-of.c
@@ -129,7 +129,7 @@ static int of_gpiochip_match_node_and_xlate(struct gpio_chip *chip,
}
static struct gpio_device *
-of_find_gpio_device_by_xlate(struct of_phandle_args *gpiospec)
+of_find_gpio_device_by_xlate(const struct of_phandle_args *gpiospec)
{
return gpio_device_find(gpiospec, of_gpiochip_match_node_and_xlate);
}
diff --git a/drivers/interconnect/core.c b/drivers/interconnect/core.c
index 50bac2d79d9b..5d1010cafed8 100644
--- a/drivers/interconnect/core.c
+++ b/drivers/interconnect/core.c
@@ -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;
diff --git a/drivers/interconnect/qcom/icc-common.c b/drivers/interconnect/qcom/icc-common.c
index f27f4fdc4531..9b9ee113f172 100644
--- a/drivers/interconnect/qcom/icc-common.c
+++ b/drivers/interconnect/qcom/icc-common.c
@@ -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;
diff --git a/drivers/interconnect/qcom/icc-common.h b/drivers/interconnect/qcom/icc-common.h
index 33bb2c38dff3..21c39b163948 100644
--- a/drivers/interconnect/qcom/icc-common.h
+++ b/drivers/interconnect/qcom/icc-common.h
@@ -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
diff --git a/drivers/interconnect/samsung/exynos.c b/drivers/interconnect/samsung/exynos.c
index 1ba14cb45d5a..c9e5361e17c5 100644
--- a/drivers/interconnect/samsung/exynos.c
+++ b/drivers/interconnect/samsung/exynos.c
@@ -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;
diff --git a/drivers/memory/tegra/mc.c b/drivers/memory/tegra/mc.c
index a083921a8968..224b488794e5 100644
--- a/drivers/memory/tegra/mc.c
+++ b/drivers/memory/tegra/mc.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra124-emc.c b/drivers/memory/tegra/tegra124-emc.c
index 00ed2b6a0d1b..47c0c19e13fd 100644
--- a/drivers/memory/tegra/tegra124-emc.c
+++ b/drivers/memory/tegra/tegra124-emc.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra124.c b/drivers/memory/tegra/tegra124.c
index 470b7dbab2c2..9d7393e19f12 100644
--- a/drivers/memory/tegra/tegra124.c
+++ b/drivers/memory/tegra/tegra124.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra186-emc.c b/drivers/memory/tegra/tegra186-emc.c
index fcd4aea48bda..57d9ae12fcfe 100644
--- a/drivers/memory/tegra/tegra186-emc.c
+++ b/drivers/memory/tegra/tegra186-emc.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra20-emc.c b/drivers/memory/tegra/tegra20-emc.c
index fd595c851a27..97cf59523b0b 100644
--- a/drivers/memory/tegra/tegra20-emc.c
+++ b/drivers/memory/tegra/tegra20-emc.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra20.c b/drivers/memory/tegra/tegra20.c
index aa4b97d5e732..a3022e715dee 100644
--- a/drivers/memory/tegra/tegra20.c
+++ b/drivers/memory/tegra/tegra20.c
@@ -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];
diff --git a/drivers/memory/tegra/tegra30-emc.c b/drivers/memory/tegra/tegra30-emc.c
index 9eae25c57ec6..d7b0a23c2d7d 100644
--- a/drivers/memory/tegra/tegra30-emc.c
+++ b/drivers/memory/tegra/tegra30-emc.c
@@ -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;
diff --git a/drivers/memory/tegra/tegra30.c b/drivers/memory/tegra/tegra30.c
index 06f8b35e0a14..d3e685c8431f 100644
--- a/drivers/memory/tegra/tegra30.c
+++ b/drivers/memory/tegra/tegra30.c
@@ -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;
diff --git a/include/linux/interconnect-provider.h b/include/linux/interconnect-provider.h
index 7ba183f221f1..f5aef8784692 100644
--- a/include/linux/interconnect-provider.h
+++ b/include/linux/interconnect-provider.h
@@ -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);
}
diff --git a/include/soc/tegra/mc.h b/include/soc/tegra/mc.h
index af1d73a7f0cd..6ee4c59db620 100644
--- a/include/soc/tegra/mc.h
+++ b/include/soc/tegra/mc.h
@@ -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 {
--
2.34.1
On 16.02.2024 14:52, Krzysztof Kozlowski wrote:
> 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.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
> drivers/gpio/gpiolib-of.c | 2 +-
> 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 ++++---
Ended up being a bit wider than just icc..
Looks sane apart from that
Konrad
On 16.02.2024 14:52, Krzysztof Kozlowski wrote:
> 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.
>
> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> ---
Acked-by: Konrad Dybcio <[email protected]>
Konrad
On 16/02/2024 14:55, Konrad Dybcio wrote:
> On 16.02.2024 14:52, Krzysztof Kozlowski wrote:
>> 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.
>>
>> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>> ---
>> drivers/gpio/gpiolib-of.c | 2 +-
>> 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 ++++---
>
> Ended up being a bit wider than just icc..
>
> Looks sane apart from that
Tegra memory controllers are also interconnect providers, so two subsystems.
This patch should go via interconnect tree.
Best regards,
Krzysztof
On Fri Feb 16, 2024 at 2:59 PM CET, Krzysztof Kozlowski wrote:
> On 16/02/2024 14:55, Konrad Dybcio wrote:
> > On 16.02.2024 14:52, Krzysztof Kozlowski wrote:
> >> 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.
> >>
> >> Signed-off-by: Krzysztof Kozlowski <[email protected]>
> >> ---
> >> drivers/gpio/gpiolib-of.c | 2 +-
> >> 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 ++++---
> >
> > Ended up being a bit wider than just icc..
> >
> > Looks sane apart from that
>
> Tegra memory controllers are also interconnect providers, so two subsystems.
>
> This patch should go via interconnect tree.
I think Konrad might have been referring to the GPIO hunk, which seems
out of place. For the Tegra parts, though:
Acked-by: Thierry Reding <[email protected]>
On 19/02/2024 17:27, Thierry Reding wrote:
> On Fri Feb 16, 2024 at 2:59 PM CET, Krzysztof Kozlowski wrote:
>> On 16/02/2024 14:55, Konrad Dybcio wrote:
>>> On 16.02.2024 14:52, Krzysztof Kozlowski wrote:
>>>> 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.
>>>>
>>>> Signed-off-by: Krzysztof Kozlowski <[email protected]>
>>>> ---
>>>> drivers/gpio/gpiolib-of.c | 2 +-
>>>> 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 ++++---
>>>
>>> Ended up being a bit wider than just icc..
>>>
>>> Looks sane apart from that
>>
>> Tegra memory controllers are also interconnect providers, so two subsystems.
>>
>> This patch should go via interconnect tree.
>
> I think Konrad might have been referring to the GPIO hunk, which seems
> out of place. For the Tegra parts, though:
Oh, that's right. I mixed up patches.
Best regards,
Krzysztof