cregit-Linux how code gets into the kernel

Release 4.10 include/linux/pm_opp.h

Directory: include/linux
/*
 * Generic OPP Interface
 *
 * Copyright (C) 2009-2010 Texas Instruments Incorporated.
 *      Nishanth Menon
 *      Romit Dasgupta
 *      Kevin Hilman
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#ifndef __LINUX_OPP_H__

#define __LINUX_OPP_H__

#include <linux/err.h>
#include <linux/notifier.h>

struct clk;
struct regulator;
struct dev_pm_opp;
struct device;
struct opp_table;


enum dev_pm_opp_event {
	



OPP_EVENT_ADD, OPP_EVENT_REMOVE, OPP_EVENT_ENABLE, OPP_EVENT_DISABLE,
};

/**
 * struct dev_pm_opp_supply - Power supply voltage/current values
 * @u_volt:     Target voltage in microvolts corresponding to this OPP
 * @u_volt_min: Minimum voltage in microvolts corresponding to this OPP
 * @u_volt_max: Maximum voltage in microvolts corresponding to this OPP
 * @u_amp:      Maximum current drawn by the device in microamperes
 *
 * This structure stores the voltage/current values for a single power supply.
 */

struct dev_pm_opp_supply {
	
unsigned long u_volt;
	
unsigned long u_volt_min;
	
unsigned long u_volt_max;
	
unsigned long u_amp;
};

/**
 * struct dev_pm_opp_info - OPP freq/voltage/current values
 * @rate:       Target clk rate in hz
 * @supplies:   Array of voltage/current values for all power supplies
 *
 * This structure stores the freq/voltage/current values for a single OPP.
 */

struct dev_pm_opp_info {
	
unsigned long rate;
	
struct dev_pm_opp_supply *supplies;
};

/**
 * struct dev_pm_set_opp_data - Set OPP data
 * @old_opp:    Old OPP info
 * @new_opp:    New OPP info
 * @regulators: Array of regulator pointers
 * @regulator_count: Number of regulators
 * @clk:        Pointer to clk
 * @dev:        Pointer to the struct device
 *
 * This structure contains all information required for setting an OPP.
 */

struct dev_pm_set_opp_data {
	
struct dev_pm_opp_info old_opp;
	
struct dev_pm_opp_info new_opp;

	
struct regulator **regulators;
	
unsigned int regulator_count;
	
struct clk *clk;
	
struct device *dev;
};

#if defined(CONFIG_PM_OPP)

unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp);

unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp);

bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp);

int dev_pm_opp_get_opp_count(struct device *dev);
unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev);
unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev);
unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev);
struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev);

struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev,
					      unsigned long freq,
					      bool available);

struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev,
					      unsigned long *freq);

struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev,
					     unsigned long *freq);

int dev_pm_opp_add(struct device *dev, unsigned long freq,
		   unsigned long u_volt);
void dev_pm_opp_remove(struct device *dev, unsigned long freq);

int dev_pm_opp_enable(struct device *dev, unsigned long freq);

int dev_pm_opp_disable(struct device *dev, unsigned long freq);

struct srcu_notifier_head *dev_pm_opp_get_notifier(struct device *dev);
int dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions,
				unsigned int count);
void dev_pm_opp_put_supported_hw(struct device *dev);
int dev_pm_opp_set_prop_name(struct device *dev, const char *name);
void dev_pm_opp_put_prop_name(struct device *dev);
struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count);
void dev_pm_opp_put_regulators(struct opp_table *opp_table);
int dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data));
void dev_pm_opp_register_put_opp_helper(struct device *dev);
int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq);
int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask);
int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask);
void dev_pm_opp_remove_table(struct device *dev);
void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask);
#else

static inline unsigned long dev_pm_opp_get_voltage(struct dev_pm_opp *opp) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon16100.00%3100.00%
Total16100.00%3100.00%


static inline unsigned long dev_pm_opp_get_freq(struct dev_pm_opp *opp) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon16100.00%3100.00%
Total16100.00%3100.00%


static inline bool dev_pm_opp_is_turbo(struct dev_pm_opp *opp) { return false; }

Contributors

PersonTokensPropCommitsCommitProp
bartlomiej zolnierkiewiczbartlomiej zolnierkiewicz15100.00%1100.00%
Total15100.00%1100.00%


static inline int dev_pm_opp_get_opp_count(struct device *dev) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon15100.00%2100.00%
Total15100.00%2100.00%


static inline unsigned long dev_pm_opp_get_max_clock_latency(struct device *dev) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar16100.00%1100.00%
Total16100.00%1100.00%


static inline unsigned long dev_pm_opp_get_max_volt_latency(struct device *dev) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar16100.00%1100.00%
Total16100.00%1100.00%


static inline unsigned long dev_pm_opp_get_max_transition_latency(struct device *dev) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar16100.00%1100.00%
Total16100.00%1100.00%


static inline struct dev_pm_opp *dev_pm_opp_get_suspend_opp(struct device *dev) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
bartlomiej zolnierkiewiczbartlomiej zolnierkiewicz17100.00%1100.00%
Total17100.00%1100.00%


static inline struct dev_pm_opp *dev_pm_opp_find_freq_exact(struct device *dev, unsigned long freq, bool available) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon2796.43%375.00%
viresh kumarviresh kumar13.57%125.00%
Total28100.00%4100.00%


static inline struct dev_pm_opp *dev_pm_opp_find_freq_floor(struct device *dev, unsigned long *freq) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon2596.15%375.00%
viresh kumarviresh kumar13.85%125.00%
Total26100.00%4100.00%


static inline struct dev_pm_opp *dev_pm_opp_find_freq_ceil(struct device *dev, unsigned long *freq) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon2596.15%375.00%
viresh kumarviresh kumar13.85%125.00%
Total26100.00%4100.00%


static inline int dev_pm_opp_add(struct device *dev, unsigned long freq, unsigned long u_volt) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon2395.83%266.67%
viresh kumarviresh kumar14.17%133.33%
Total24100.00%3100.00%


static inline void dev_pm_opp_remove(struct device *dev, unsigned long freq) { }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar15100.00%1100.00%
Total15100.00%1100.00%


static inline int dev_pm_opp_enable(struct device *dev, unsigned long freq) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon19100.00%2100.00%
Total19100.00%2100.00%


static inline int dev_pm_opp_disable(struct device *dev, unsigned long freq) { return 0; }

Contributors

PersonTokensPropCommitsCommitProp
nishanth menonnishanth menon19100.00%2100.00%
Total19100.00%2100.00%


static inline struct srcu_notifier_head *dev_pm_opp_get_notifier( struct device *dev) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
myungjoo hammyungjoo ham1780.95%125.00%
tony lindgrentony lindgren29.52%125.00%
viresh kumarviresh kumar14.76%125.00%
nishanth menonnishanth menon14.76%125.00%
Total21100.00%4100.00%


static inline int dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions, unsigned int count) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar25100.00%2100.00%
Total25100.00%2100.00%


static inline void dev_pm_opp_put_supported_hw(struct device *dev) {}

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar11100.00%1100.00%
Total11100.00%1100.00%


static inline int dev_pm_opp_register_set_opp_helper(struct device *dev, int (*set_opp)(struct dev_pm_set_opp_data *data)) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar28100.00%1100.00%
Total28100.00%1100.00%


static inline void dev_pm_opp_register_put_opp_helper(struct device *dev) {}

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar11100.00%1100.00%
Total11100.00%1100.00%


static inline int dev_pm_opp_set_prop_name(struct device *dev, const char *name) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar21100.00%2100.00%
Total21100.00%2100.00%


static inline void dev_pm_opp_put_prop_name(struct device *dev) {}

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar11100.00%1100.00%
Total11100.00%1100.00%


static inline struct opp_table *dev_pm_opp_set_regulators(struct device *dev, const char * const names[], unsigned int count) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar2681.25%375.00%
stephen boydstephen boyd618.75%125.00%
Total32100.00%4100.00%


static inline void dev_pm_opp_put_regulators(struct opp_table *opp_table) {}

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar981.82%266.67%
stephen boydstephen boyd218.18%133.33%
Total11100.00%3100.00%


static inline int dev_pm_opp_set_rate(struct device *dev, unsigned long target_freq) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar20100.00%2100.00%
Total20100.00%2100.00%


static inline int dev_pm_opp_set_sharing_cpus(struct device *cpu_dev, const struct cpumask *cpumask) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar1986.36%375.00%
arnd bergmannarnd bergmann313.64%125.00%
Total22100.00%4100.00%


static inline int dev_pm_opp_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask) { return -EINVAL; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar1885.71%150.00%
arnd bergmannarnd bergmann314.29%150.00%
Total21100.00%2100.00%


static inline void dev_pm_opp_remove_table(struct device *dev) { }

Contributors

PersonTokensPropCommitsCommitProp
sudeep hollasudeep holla11100.00%1100.00%
Total11100.00%1100.00%


static inline void dev_pm_opp_cpumask_remove_table(const struct cpumask *cpumask) { }

Contributors

PersonTokensPropCommitsCommitProp
sudeep hollasudeep holla12100.00%1100.00%
Total12100.00%1100.00%

#endif /* CONFIG_PM_OPP */ #if defined(CONFIG_PM_OPP) && defined(CONFIG_OF) int dev_pm_opp_of_add_table(struct device *dev); void dev_pm_opp_of_remove_table(struct device *dev); int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask); void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask); int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask); #else
static inline int dev_pm_opp_of_add_table(struct device *dev) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
shawn guoshawn guo1487.50%133.33%
viresh kumarviresh kumar212.50%266.67%
Total16100.00%3100.00%


static inline void dev_pm_opp_of_remove_table(struct device *dev) { }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar11100.00%2100.00%
Total11100.00%2100.00%


static inline int dev_pm_opp_of_cpumask_add_table(const struct cpumask *cpumask) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar1376.47%375.00%
arnd bergmannarnd bergmann423.53%125.00%
Total17100.00%4100.00%


static inline void dev_pm_opp_of_cpumask_remove_table(const struct cpumask *cpumask) { }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar866.67%266.67%
arnd bergmannarnd bergmann433.33%133.33%
Total12100.00%3100.00%


static inline int dev_pm_opp_of_get_sharing_cpus(struct device *cpu_dev, struct cpumask *cpumask) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar1885.71%375.00%
arnd bergmannarnd bergmann314.29%125.00%
Total21100.00%4100.00%

#endif #endif /* __LINUX_OPP_H__ */

Overall Contributors

PersonTokensPropCommitsCommitProp
viresh kumarviresh kumar61652.29%1860.00%
nishanth menonnishanth menon34229.03%310.00%
bartlomiej zolnierkiewiczbartlomiej zolnierkiewicz524.41%26.67%
sudeep hollasudeep holla423.57%13.33%
myungjoo hammyungjoo ham373.14%13.33%
arnd bergmannarnd bergmann342.89%13.33%
shawn guoshawn guo332.80%13.33%
stephen boydstephen boyd161.36%13.33%
paul gortmakerpaul gortmaker30.25%13.33%
tony lindgrentony lindgren30.25%13.33%
Total1178100.00%30100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.