cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

internal.h (3118B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * internal.h  --  Voltage/Current Regulator framework internal code
      4 *
      5 * Copyright 2007, 2008 Wolfson Microelectronics PLC.
      6 * Copyright 2008 SlimLogic Ltd.
      7 *
      8 * Author: Liam Girdwood <lrg@slimlogic.co.uk>
      9 */
     10
     11#ifndef __REGULATOR_INTERNAL_H
     12#define __REGULATOR_INTERNAL_H
     13
     14#include <linux/suspend.h>
     15
     16#define REGULATOR_STATES_NUM	(PM_SUSPEND_MAX + 1)
     17
     18#define rdev_crit(rdev, fmt, ...)					\
     19	pr_crit("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
     20#define rdev_err(rdev, fmt, ...)					\
     21	pr_err("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
     22#define rdev_warn(rdev, fmt, ...)					\
     23	pr_warn("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
     24#define rdev_info(rdev, fmt, ...)					\
     25	pr_info("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
     26#define rdev_dbg(rdev, fmt, ...)					\
     27	pr_debug("%s: " fmt, rdev_get_name(rdev), ##__VA_ARGS__)
     28
     29struct regulator_voltage {
     30	int min_uV;
     31	int max_uV;
     32};
     33
     34/*
     35 * struct regulator
     36 *
     37 * One for each consumer device.
     38 * @voltage - a voltage array for each state of runtime, i.e.:
     39 *            PM_SUSPEND_ON
     40 *            PM_SUSPEND_TO_IDLE
     41 *            PM_SUSPEND_STANDBY
     42 *            PM_SUSPEND_MEM
     43 *            PM_SUSPEND_MAX
     44 */
     45struct regulator {
     46	struct device *dev;
     47	struct list_head list;
     48	unsigned int always_on:1;
     49	unsigned int bypass:1;
     50	unsigned int device_link:1;
     51	int uA_load;
     52	unsigned int enable_count;
     53	unsigned int deferred_disables;
     54	struct regulator_voltage voltage[REGULATOR_STATES_NUM];
     55	const char *supply_name;
     56	struct device_attribute dev_attr;
     57	struct regulator_dev *rdev;
     58	struct dentry *debugfs;
     59};
     60
     61extern struct class regulator_class;
     62
     63static inline struct regulator_dev *dev_to_rdev(struct device *dev)
     64{
     65	return container_of(dev, struct regulator_dev, dev);
     66}
     67
     68#ifdef CONFIG_OF
     69struct regulator_dev *of_find_regulator_by_node(struct device_node *np);
     70struct regulator_init_data *regulator_of_get_init_data(struct device *dev,
     71			         const struct regulator_desc *desc,
     72				 struct regulator_config *config,
     73				 struct device_node **node);
     74
     75struct regulator_dev *of_parse_coupled_regulator(struct regulator_dev *rdev,
     76						 int index);
     77
     78int of_get_n_coupled(struct regulator_dev *rdev);
     79
     80bool of_check_coupling_data(struct regulator_dev *rdev);
     81
     82#else
     83static inline struct regulator_dev *
     84of_find_regulator_by_node(struct device_node *np)
     85{
     86	return NULL;
     87}
     88
     89static inline struct regulator_init_data *
     90regulator_of_get_init_data(struct device *dev,
     91			   const struct regulator_desc *desc,
     92			   struct regulator_config *config,
     93			   struct device_node **node)
     94{
     95	return NULL;
     96}
     97
     98static inline struct regulator_dev *
     99of_parse_coupled_regulator(struct regulator_dev *rdev,
    100			   int index)
    101{
    102	return NULL;
    103}
    104
    105static inline int of_get_n_coupled(struct regulator_dev *rdev)
    106{
    107	return 0;
    108}
    109
    110static inline bool of_check_coupling_data(struct regulator_dev *rdev)
    111{
    112	return false;
    113}
    114
    115#endif
    116enum regulator_get_type {
    117	NORMAL_GET,
    118	EXCLUSIVE_GET,
    119	OPTIONAL_GET,
    120	MAX_GET_TYPE
    121};
    122
    123struct regulator *_regulator_get(struct device *dev, const char *id,
    124				 enum regulator_get_type get_type);
    125#endif