linux/include/linux/interconnect.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * Copyright (c) 2018-2019, Linaro Ltd.
   4 * Author: Georgi Djakov <georgi.djakov@linaro.org>
   5 */
   6
   7#ifndef __LINUX_INTERCONNECT_H
   8#define __LINUX_INTERCONNECT_H
   9
  10#include <linux/mutex.h>
  11#include <linux/types.h>
  12
  13/* macros for converting to icc units */
  14#define Bps_to_icc(x)   ((x) / 1000)
  15#define kBps_to_icc(x)  (x)
  16#define MBps_to_icc(x)  ((x) * 1000)
  17#define GBps_to_icc(x)  ((x) * 1000 * 1000)
  18#define bps_to_icc(x)   (1)
  19#define kbps_to_icc(x)  ((x) / 8 + ((x) % 8 ? 1 : 0))
  20#define Mbps_to_icc(x)  ((x) * 1000 / 8)
  21#define Gbps_to_icc(x)  ((x) * 1000 * 1000 / 8)
  22
  23struct icc_path;
  24struct device;
  25
  26#if IS_ENABLED(CONFIG_INTERCONNECT)
  27
  28struct icc_path *icc_get(struct device *dev, const int src_id,
  29                         const int dst_id);
  30struct icc_path *of_icc_get(struct device *dev, const char *name);
  31void icc_put(struct icc_path *path);
  32int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw);
  33
  34#else
  35
  36static inline struct icc_path *icc_get(struct device *dev, const int src_id,
  37                                       const int dst_id)
  38{
  39        return NULL;
  40}
  41
  42static inline struct icc_path *of_icc_get(struct device *dev,
  43                                          const char *name)
  44{
  45        return NULL;
  46}
  47
  48static inline void icc_put(struct icc_path *path)
  49{
  50}
  51
  52static inline int icc_set_bw(struct icc_path *path, u32 avg_bw, u32 peak_bw)
  53{
  54        return 0;
  55}
  56
  57#endif /* CONFIG_INTERCONNECT */
  58
  59#endif /* __LINUX_INTERCONNECT_H */
  60