xref: /openbmc/linux/include/soc/tegra/common.h (revision 9131c633)
1d2912cb1SThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-only */
2a2686766SThierry Reding /*
3a2686766SThierry Reding  * Copyright (C) 2014 NVIDIA Corporation
4a2686766SThierry Reding  */
5a2686766SThierry Reding 
6a2686766SThierry Reding #ifndef __SOC_TEGRA_COMMON_H__
7a2686766SThierry Reding #define __SOC_TEGRA_COMMON_H__
8a2686766SThierry Reding 
9b8818de9SDmitry Osipenko #include <linux/errno.h>
104333e030SDmitry Osipenko #include <linux/types.h>
114333e030SDmitry Osipenko 
12b8818de9SDmitry Osipenko struct device;
13b8818de9SDmitry Osipenko 
14b8818de9SDmitry Osipenko /**
15b8818de9SDmitry Osipenko  * Tegra SoC core device OPP table configuration
16b8818de9SDmitry Osipenko  *
17b8818de9SDmitry Osipenko  * @init_state: pre-initialize OPP state of a device
18b8818de9SDmitry Osipenko  */
19b8818de9SDmitry Osipenko struct tegra_core_opp_params {
20b8818de9SDmitry Osipenko 	bool init_state;
21b8818de9SDmitry Osipenko };
22b8818de9SDmitry Osipenko 
234333e030SDmitry Osipenko #ifdef CONFIG_ARCH_TEGRA
24a2686766SThierry Reding bool soc_is_tegra(void);
25b8818de9SDmitry Osipenko 
26b8818de9SDmitry Osipenko int devm_tegra_core_dev_init_opp_table(struct device *dev,
27b8818de9SDmitry Osipenko 				       struct tegra_core_opp_params *params);
284333e030SDmitry Osipenko #else
soc_is_tegra(void)294333e030SDmitry Osipenko static inline bool soc_is_tegra(void)
304333e030SDmitry Osipenko {
314333e030SDmitry Osipenko 	return false;
324333e030SDmitry Osipenko }
33b8818de9SDmitry Osipenko 
34b8818de9SDmitry Osipenko static inline int
devm_tegra_core_dev_init_opp_table(struct device * dev,struct tegra_core_opp_params * params)35b8818de9SDmitry Osipenko devm_tegra_core_dev_init_opp_table(struct device *dev,
36b8818de9SDmitry Osipenko 				   struct tegra_core_opp_params *params)
37b8818de9SDmitry Osipenko {
38b8818de9SDmitry Osipenko 	return -ENODEV;
39b8818de9SDmitry Osipenko }
404333e030SDmitry Osipenko #endif
41a2686766SThierry Reding 
42*9131c633SDmitry Osipenko static inline int
devm_tegra_core_dev_init_opp_table_common(struct device * dev)43*9131c633SDmitry Osipenko devm_tegra_core_dev_init_opp_table_common(struct device *dev)
44*9131c633SDmitry Osipenko {
45*9131c633SDmitry Osipenko 	struct tegra_core_opp_params opp_params = {};
46*9131c633SDmitry Osipenko 	int err;
47*9131c633SDmitry Osipenko 
48*9131c633SDmitry Osipenko 	opp_params.init_state = true;
49*9131c633SDmitry Osipenko 
50*9131c633SDmitry Osipenko 	err = devm_tegra_core_dev_init_opp_table(dev, &opp_params);
51*9131c633SDmitry Osipenko 	if (err != -ENODEV)
52*9131c633SDmitry Osipenko 		return err;
53*9131c633SDmitry Osipenko 
54*9131c633SDmitry Osipenko 	return 0;
55*9131c633SDmitry Osipenko }
56*9131c633SDmitry Osipenko 
57a2686766SThierry Reding #endif /* __SOC_TEGRA_COMMON_H__ */
58