cregit-Linux how code gets into the kernel

Release 4.12 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)

struct opp_table *dev_pm_opp_get_opp_table(struct device *dev);
void dev_pm_opp_put_opp_table(struct opp_table *opp_table);

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);
unsigned long dev_pm_opp_get_suspend_opp_freq(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);
void dev_pm_opp_put(struct dev_pm_opp *opp);

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);

int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb);
int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb);

struct opp_table *dev_pm_opp_set_supported_hw(struct device *dev, const u32 *versions, unsigned int count);
void dev_pm_opp_put_supported_hw(struct opp_table *opp_table);
struct opp_table *dev_pm_opp_set_prop_name(struct device *dev, const char *name);
void dev_pm_opp_put_prop_name(struct opp_table *opp_table);
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);
struct opp_table *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 opp_table *opp_table);
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 struct opp_table *dev_pm_opp_get_opp_table(struct device *dev) { return ERR_PTR(-ENOTSUPP); }

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar21100.00%1100.00%
Total21100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar11100.00%1100.00%
Total11100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Nishanth 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 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 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 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 Kumar1593.75%150.00%
Bartlomiej Zolnierkiewicz16.25%150.00%
Total16100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh 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 Kumar16100.00%1100.00%
Total16100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Bartlomiej Zolnierkiewicz1168.75%133.33%
Viresh Kumar531.25%266.67%
Total16100.00%3100.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 Menon2796.43%375.00%
Viresh 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 Menon2596.15%375.00%
Viresh 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 Menon2596.15%375.00%
Viresh Kumar13.85%125.00%
Total26100.00%4100.00%


static inline void dev_pm_opp_put(struct dev_pm_opp *opp) {}

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar11100.00%1100.00%
Total11100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Nishanth Menon2395.83%266.67%
Viresh Kumar14.17%133.33%
Total24100.00%3100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh 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 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 Menon19100.00%2100.00%
Total19100.00%2100.00%


static inline int dev_pm_opp_register_notifier(struct device *dev, struct notifier_block *nb) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar1780.95%133.33%
Tony Lindgren29.52%133.33%
MyungJoo Ham29.52%133.33%
Total21100.00%3100.00%


static inline int dev_pm_opp_unregister_notifier(struct device *dev, struct notifier_block *nb) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
MyungJoo Ham1152.38%133.33%
Viresh Kumar1047.62%266.67%
Total21100.00%3100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar30100.00%3100.00%
Total30100.00%3100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar11100.00%2100.00%
Total11100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar33100.00%2100.00%
Total33100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar11100.00%2100.00%
Total11100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar26100.00%3100.00%
Total26100.00%3100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar11100.00%2100.00%
Total11100.00%2100.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 Kumar2681.25%375.00%
Stephen Boyd618.75%125.00%
Total32100.00%4100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar981.82%266.67%
Stephen 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 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 Kumar1986.36%375.00%
Arnd 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 Kumar1885.71%150.00%
Arnd Bergmann314.29%150.00%
Total21100.00%2100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Sudeep Holla11100.00%1100.00%
Total11100.00%1100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Sudeep 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); struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev); #else
static inline int dev_pm_opp_of_add_table(struct device *dev) { return -ENOTSUPP; }

Contributors

PersonTokensPropCommitsCommitProp
Shawn Guo1487.50%133.33%
Viresh Kumar212.50%266.67%
Total16100.00%3100.00%


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

Contributors

PersonTokensPropCommitsCommitProp
Viresh 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 Kumar1376.47%375.00%
Arnd 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 Kumar866.67%266.67%
Arnd 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 Kumar1885.71%375.00%
Arnd Bergmann314.29%125.00%
Total21100.00%4100.00%


static inline struct device_node *dev_pm_opp_of_get_opp_desc_node(struct device *dev) { return NULL; }

Contributors

PersonTokensPropCommitsCommitProp
Dave Gerlach17100.00%1100.00%
Total17100.00%1100.00%

#endif #endif /* __LINUX_OPP_H__ */

Overall Contributors

PersonTokensPropCommitsCommitProp
Viresh Kumar76157.00%2363.89%
Nishanth Menon33725.24%38.33%
Bartlomiej Zolnierkiewicz463.45%25.56%
Sudeep Holla423.15%12.78%
Arnd Bergmann342.55%12.78%
Shawn Guo332.47%12.78%
MyungJoo Ham322.40%12.78%
Dave Gerlach282.10%12.78%
Stephen Boyd161.20%12.78%
Paul Gortmaker30.22%12.78%
Tony Lindgren30.22%12.78%
Total1335100.00%36100.00%
Directory: include/linux
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.