~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/linux/clk/tegra.h

Version: ~ [ linux-5.10-rc1 ] ~ [ linux-5.9.1 ] ~ [ linux-5.8.16 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.72 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.152 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.202 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.240 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.240 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.19.8 ] ~ [ linux-3.18.140 ] ~ [ linux-3.17.8 ] ~ [ linux-3.16.85 ] ~ [ linux-3.15.10 ] ~ [ linux-3.14.79 ] ~ [ linux-3.13.11 ] ~ [ linux-3.12.74 ] ~ [ linux-3.11.10 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.5 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /*
  2  * Copyright (c) 2012, NVIDIA CORPORATION.  All rights reserved.
  3  *
  4  * This program is free software; you can redistribute it and/or modify it
  5  * under the terms and conditions of the GNU General Public License,
  6  * version 2, as published by the Free Software Foundation.
  7  *
  8  * This program is distributed in the hope it will be useful, but WITHOUT
  9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 10  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 11  * more details.
 12  *
 13  * You should have received a copy of the GNU General Public License
 14  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 15  */
 16 
 17 #ifndef __LINUX_CLK_TEGRA_H_
 18 #define __LINUX_CLK_TEGRA_H_
 19 
 20 #include <linux/clk.h>
 21 
 22 /*
 23  * Tegra CPU clock and reset control ops
 24  *
 25  * wait_for_reset:
 26  *      keep waiting until the CPU in reset state
 27  * put_in_reset:
 28  *      put the CPU in reset state
 29  * out_of_reset:
 30  *      release the CPU from reset state
 31  * enable_clock:
 32  *      CPU clock un-gate
 33  * disable_clock:
 34  *      CPU clock gate
 35  * rail_off_ready:
 36  *      CPU is ready for rail off
 37  * suspend:
 38  *      save the clock settings when CPU go into low-power state
 39  * resume:
 40  *      restore the clock settings when CPU exit low-power state
 41  */
 42 struct tegra_cpu_car_ops {
 43         void (*wait_for_reset)(u32 cpu);
 44         void (*put_in_reset)(u32 cpu);
 45         void (*out_of_reset)(u32 cpu);
 46         void (*enable_clock)(u32 cpu);
 47         void (*disable_clock)(u32 cpu);
 48 #ifdef CONFIG_PM_SLEEP
 49         bool (*rail_off_ready)(void);
 50         void (*suspend)(void);
 51         void (*resume)(void);
 52 #endif
 53 };
 54 
 55 extern struct tegra_cpu_car_ops *tegra_cpu_car_ops;
 56 
 57 static inline void tegra_wait_cpu_in_reset(u32 cpu)
 58 {
 59         if (WARN_ON(!tegra_cpu_car_ops->wait_for_reset))
 60                 return;
 61 
 62         tegra_cpu_car_ops->wait_for_reset(cpu);
 63 }
 64 
 65 static inline void tegra_put_cpu_in_reset(u32 cpu)
 66 {
 67         if (WARN_ON(!tegra_cpu_car_ops->put_in_reset))
 68                 return;
 69 
 70         tegra_cpu_car_ops->put_in_reset(cpu);
 71 }
 72 
 73 static inline void tegra_cpu_out_of_reset(u32 cpu)
 74 {
 75         if (WARN_ON(!tegra_cpu_car_ops->out_of_reset))
 76                 return;
 77 
 78         tegra_cpu_car_ops->out_of_reset(cpu);
 79 }
 80 
 81 static inline void tegra_enable_cpu_clock(u32 cpu)
 82 {
 83         if (WARN_ON(!tegra_cpu_car_ops->enable_clock))
 84                 return;
 85 
 86         tegra_cpu_car_ops->enable_clock(cpu);
 87 }
 88 
 89 static inline void tegra_disable_cpu_clock(u32 cpu)
 90 {
 91         if (WARN_ON(!tegra_cpu_car_ops->disable_clock))
 92                 return;
 93 
 94         tegra_cpu_car_ops->disable_clock(cpu);
 95 }
 96 
 97 #ifdef CONFIG_PM_SLEEP
 98 static inline bool tegra_cpu_rail_off_ready(void)
 99 {
100         if (WARN_ON(!tegra_cpu_car_ops->rail_off_ready))
101                 return false;
102 
103         return tegra_cpu_car_ops->rail_off_ready();
104 }
105 
106 static inline void tegra_cpu_clock_suspend(void)
107 {
108         if (WARN_ON(!tegra_cpu_car_ops->suspend))
109                 return;
110 
111         tegra_cpu_car_ops->suspend();
112 }
113 
114 static inline void tegra_cpu_clock_resume(void)
115 {
116         if (WARN_ON(!tegra_cpu_car_ops->resume))
117                 return;
118 
119         tegra_cpu_car_ops->resume();
120 }
121 #endif
122 
123 void tegra_periph_reset_deassert(struct clk *c);
124 void tegra_periph_reset_assert(struct clk *c);
125 void tegra_clocks_init(void);
126 void tegra_clocks_apply_init_table(void);
127 
128 #endif /* __LINUX_CLK_TEGRA_H_ */
129 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp