1 /* SPDX-License-Identifier: GPL-2.0-only */
2 /*
3  * Copyright (C) 2014 NVIDIA Corporation
4  */
5 
6 #ifndef __SOC_TEGRA_COMMON_H__
7 #define __SOC_TEGRA_COMMON_H__
8 
9 #include <linux/errno.h>
10 #include <linux/types.h>
11 
12 struct device;
13 
14 /**
15  * Tegra SoC core device OPP table configuration
16  *
17  * @init_state: pre-initialize OPP state of a device
18  */
19 struct tegra_core_opp_params {
20 	bool init_state;
21 };
22 
23 #ifdef CONFIG_ARCH_TEGRA
24 bool soc_is_tegra(void);
25 
26 int devm_tegra_core_dev_init_opp_table(struct device *dev,
27 				       struct tegra_core_opp_params *params);
28 #else
soc_is_tegra(void)29 static inline bool soc_is_tegra(void)
30 {
31 	return false;
32 }
33 
34 static inline int
devm_tegra_core_dev_init_opp_table(struct device * dev,struct tegra_core_opp_params * params)35 devm_tegra_core_dev_init_opp_table(struct device *dev,
36 				   struct tegra_core_opp_params *params)
37 {
38 	return -ENODEV;
39 }
40 #endif
41 
42 static inline int
devm_tegra_core_dev_init_opp_table_common(struct device * dev)43 devm_tegra_core_dev_init_opp_table_common(struct device *dev)
44 {
45 	struct tegra_core_opp_params opp_params = {};
46 	int err;
47 
48 	opp_params.init_state = true;
49 
50 	err = devm_tegra_core_dev_init_opp_table(dev, &opp_params);
51 	if (err != -ENODEV)
52 		return err;
53 
54 	return 0;
55 }
56 
57 #endif /* __SOC_TEGRA_COMMON_H__ */
58