188763a5cSDaniel Lezcano /* SPDX-License-Identifier: GPL-2.0 */ 288763a5cSDaniel Lezcano /* 388763a5cSDaniel Lezcano * Copyright (C) 2018 Linaro Ltd 488763a5cSDaniel Lezcano * 588763a5cSDaniel Lezcano * Author: Daniel Lezcano <[email protected]> 688763a5cSDaniel Lezcano * 788763a5cSDaniel Lezcano */ 888763a5cSDaniel Lezcano #ifndef __IDLE_INJECT_H__ 988763a5cSDaniel Lezcano #define __IDLE_INJECT_H__ 1088763a5cSDaniel Lezcano 1188763a5cSDaniel Lezcano /* private idle injection device structure */ 1288763a5cSDaniel Lezcano struct idle_inject_device; 1388763a5cSDaniel Lezcano 1488763a5cSDaniel Lezcano struct idle_inject_device *idle_inject_register(struct cpumask *cpumask); 1588763a5cSDaniel Lezcano 16*acbc6610SSrinivas Pandruvada struct idle_inject_device *idle_inject_register_full(struct cpumask *cpumask, 17*acbc6610SSrinivas Pandruvada bool (*update)(void)); 18*acbc6610SSrinivas Pandruvada 1988763a5cSDaniel Lezcano void idle_inject_unregister(struct idle_inject_device *ii_dev); 2088763a5cSDaniel Lezcano 2188763a5cSDaniel Lezcano int idle_inject_start(struct idle_inject_device *ii_dev); 2288763a5cSDaniel Lezcano 2388763a5cSDaniel Lezcano void idle_inject_stop(struct idle_inject_device *ii_dev); 2488763a5cSDaniel Lezcano 2588763a5cSDaniel Lezcano void idle_inject_set_duration(struct idle_inject_device *ii_dev, 26cd4c0763SDaniel Lezcano unsigned int run_duration_us, 27cd4c0763SDaniel Lezcano unsigned int idle_duration_us); 2888763a5cSDaniel Lezcano 2988763a5cSDaniel Lezcano void idle_inject_get_duration(struct idle_inject_device *ii_dev, 30cd4c0763SDaniel Lezcano unsigned int *run_duration_us, 31cd4c0763SDaniel Lezcano unsigned int *idle_duration_us); 32333cff6cSDaniel Lezcano 33333cff6cSDaniel Lezcano void idle_inject_set_latency(struct idle_inject_device *ii_dev, 34585834a5Szhuguangqing unsigned int latency_us); 35333cff6cSDaniel Lezcano 3688763a5cSDaniel Lezcano #endif /* __IDLE_INJECT_H__ */ 37