/* SPDX-License-Identifier: GPL-2.0 */
/*
 *  Copyright (C) Linaro Ltd 2020
 *  Author: Daniel Lezcano <daniel.lezcano@linaro.org>
 */

struct thermal_genl_cpu_caps {
	int cpu;
	int performance;
	int efficiency;
};

/* Netlink notification function */
#ifdef CONFIG_THERMAL_NETLINK
int __init thermal_netlink_init(void);
void __init thermal_netlink_exit(void);
int thermal_notify_tz_create(int tz_id, const char *name);
int thermal_notify_tz_delete(int tz_id);
int thermal_notify_tz_enable(int tz_id);
int thermal_notify_tz_disable(int tz_id);
int thermal_notify_tz_trip_down(int tz_id, int id, int temp);
int thermal_notify_tz_trip_up(int tz_id, int id, int temp);
int thermal_notify_tz_trip_delete(int tz_id, int id);
int thermal_notify_tz_trip_add(int tz_id, int id, int type,
			       int temp, int hyst);
int thermal_notify_tz_trip_change(int tz_id, int id, int type,
				  int temp, int hyst);
int thermal_notify_cdev_state_update(int cdev_id, int state);
int thermal_notify_cdev_add(int cdev_id, const char *name, int max_state);
int thermal_notify_cdev_delete(int cdev_id);
int thermal_notify_tz_gov_change(int tz_id, const char *name);
int thermal_genl_sampling_temp(int id, int temp);
int thermal_genl_cpu_capability_event(int count,
				      struct thermal_genl_cpu_caps *caps);
#else
static inline int thermal_netlink_init(void)
{
	return 0;
}

static inline int thermal_notify_tz_create(int tz_id, const char *name)
{
	return 0;
}

static inline int thermal_notify_tz_delete(int tz_id)
{
	return 0;
}

static inline int thermal_notify_tz_enable(int tz_id)
{
	return 0;
}

static inline int thermal_notify_tz_disable(int tz_id)
{
	return 0;
}

static inline int thermal_notify_tz_trip_down(int tz_id, int id, int temp)
{
	return 0;
}

static inline int thermal_notify_tz_trip_up(int tz_id, int id, int temp)
{
	return 0;
}

static inline int thermal_notify_tz_trip_delete(int tz_id, int id)
{
	return 0;
}

static inline int thermal_notify_tz_trip_add(int tz_id, int id, int type,
					     int temp, int hyst)
{
	return 0;
}

static inline int thermal_notify_tz_trip_change(int tz_id, int id, int type,
						int temp, int hyst)
{
	return 0;
}

static inline int thermal_notify_cdev_state_update(int cdev_id, int state)
{
	return 0;
}

static inline int thermal_notify_cdev_add(int cdev_id, const char *name,
					  int max_state)
{
	return 0;
}

static inline int thermal_notify_cdev_delete(int cdev_id)
{
	return 0;
}

static inline int thermal_notify_tz_gov_change(int tz_id, const char *name)
{
	return 0;
}

static inline int thermal_genl_sampling_temp(int id, int temp)
{
	return 0;
}

static inline int thermal_genl_cpu_capability_event(int count, struct thermal_genl_cpu_caps *caps)
{
	return 0;
}

static inline void __init thermal_netlink_exit(void) {}

#endif /* CONFIG_THERMAL_NETLINK */
