Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) /* SPDX-License-Identifier: GPL-2.0-only */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  * governor.h - internal header for devfreq governors.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Copyright (C) 2011 Samsung Electronics
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  *	MyungJoo Ham <myungjoo.ham@samsung.com>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8)  * This header is for devfreq governors in drivers/devfreq/
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #ifndef _GOVERNOR_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define _GOVERNOR_H
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #include <linux/devfreq.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) #define to_devfreq(DEV)	container_of((DEV), struct devfreq, dev)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) /* Devfreq events */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) #define DEVFREQ_GOV_START			0x1
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) #define DEVFREQ_GOV_STOP			0x2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) #define DEVFREQ_GOV_UPDATE_INTERVAL		0x3
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) #define DEVFREQ_GOV_SUSPEND			0x4
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) #define DEVFREQ_GOV_RESUME			0x5
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) #define DEVFREQ_MIN_FREQ			0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) #define DEVFREQ_MAX_FREQ			ULONG_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) /**
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)  * struct devfreq_governor - Devfreq policy governor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)  * @node:		list node - contains registered devfreq governors
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31)  * @name:		Governor's name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32)  * @immutable:		Immutable flag for governor. If the value is 1,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)  *			this governor is never changeable to other governor.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)  * @interrupt_driven:	Devfreq core won't schedule polling work for this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)  *			governor if value is set to 1.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36)  * @get_target_freq:	Returns desired operating frequency for the device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)  *			Basically, get_target_freq will run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)  *			devfreq_dev_profile.get_dev_status() to get the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)  *			status of the device (load = busy_time / total_time).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40)  *			If no_central_polling is set, this callback is called
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)  *			only with update_devfreq() notified by OPP.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42)  * @event_handler:      Callback for devfreq core framework to notify events
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)  *                      to governors. Events include per device governor
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)  *                      init and exit, opp changes out of devfreq, suspend
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45)  *                      and resume of per device devfreq during device idle.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)  * Note that the callbacks are called with devfreq->lock locked by devfreq.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) struct devfreq_governor {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) 	struct list_head node;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) 	const char name[DEVFREQ_NAME_LEN];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 	const unsigned int immutable;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) 	const unsigned int interrupt_driven;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) 	int (*get_target_freq)(struct devfreq *this, unsigned long *freq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) 	int (*event_handler)(struct devfreq *devfreq,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 				unsigned int event, void *data);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) void devfreq_monitor_start(struct devfreq *devfreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) void devfreq_monitor_stop(struct devfreq *devfreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) void devfreq_monitor_suspend(struct devfreq *devfreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) void devfreq_monitor_resume(struct devfreq *devfreq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) void devfreq_update_interval(struct devfreq *devfreq, unsigned int *delay);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) int devfreq_add_governor(struct devfreq_governor *governor);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) int devfreq_remove_governor(struct devfreq_governor *governor);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) int devfreq_update_status(struct devfreq *devfreq, unsigned long freq);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) static inline int devfreq_update_stats(struct devfreq *df)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 	return df->profile->get_dev_status(df->dev.parent, &df->last_status);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) }
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) #endif /* _GOVERNOR_H */