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

consumer.h (1896B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*
      3 * mux/consumer.h - definitions for the multiplexer consumer interface
      4 *
      5 * Copyright (C) 2017 Axentia Technologies AB
      6 *
      7 * Author: Peter Rosin <peda@axentia.se>
      8 */
      9
     10#ifndef _LINUX_MUX_CONSUMER_H
     11#define _LINUX_MUX_CONSUMER_H
     12
     13#include <linux/compiler.h>
     14
     15struct device;
     16struct mux_control;
     17struct mux_state;
     18
     19unsigned int mux_control_states(struct mux_control *mux);
     20int __must_check mux_control_select_delay(struct mux_control *mux,
     21					  unsigned int state,
     22					  unsigned int delay_us);
     23int __must_check mux_state_select_delay(struct mux_state *mstate,
     24					unsigned int delay_us);
     25int __must_check mux_control_try_select_delay(struct mux_control *mux,
     26					      unsigned int state,
     27					      unsigned int delay_us);
     28int __must_check mux_state_try_select_delay(struct mux_state *mstate,
     29					    unsigned int delay_us);
     30
     31static inline int __must_check mux_control_select(struct mux_control *mux,
     32						  unsigned int state)
     33{
     34	return mux_control_select_delay(mux, state, 0);
     35}
     36
     37static inline int __must_check mux_state_select(struct mux_state *mstate)
     38{
     39	return mux_state_select_delay(mstate, 0);
     40}
     41
     42static inline int __must_check mux_control_try_select(struct mux_control *mux,
     43						      unsigned int state)
     44{
     45	return mux_control_try_select_delay(mux, state, 0);
     46}
     47
     48static inline int __must_check mux_state_try_select(struct mux_state *mstate)
     49{
     50	return mux_state_try_select_delay(mstate, 0);
     51}
     52
     53int mux_control_deselect(struct mux_control *mux);
     54int mux_state_deselect(struct mux_state *mstate);
     55
     56struct mux_control *mux_control_get(struct device *dev, const char *mux_name);
     57void mux_control_put(struct mux_control *mux);
     58
     59struct mux_control *devm_mux_control_get(struct device *dev,
     60					 const char *mux_name);
     61struct mux_state *devm_mux_state_get(struct device *dev,
     62				     const char *mux_name);
     63
     64#endif /* _LINUX_MUX_CONSUMER_H */