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 Osipenkostatic 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 Osipenkodevm_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 Osipenkodevm_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