blob: c70c1d3b837169801077c1f8145f901ef68fbd5f [file] [log] [blame]
/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __DDR_COOLING_H__
#define __DDR_COOLING_H__
#include <linux/thermal.h>
#include <linux/amlogic/meson_cooldev.h>
struct ddr_cooling_device {
int id;
struct thermal_cooling_device *cool_dev;
u32 ddr_reg;
u32 ddr_status;
u32 ddr_bits[2];
u32 ddr_data[16];
u32 ddr_bits_keep; /*for keep ddr reg val excepts change bits*/
struct list_head node;
};
#ifdef CONFIG_AMLOGIC_DDR_THERMAL
struct thermal_cooling_device *ddr_cooling_register(struct device_node *np,
struct cool_dev *cool);
/**
* ddr_cooling_unregister - function to remove ddr cooling device.
* @cdev: thermal cooling device pointer.
*/
void ddr_cooling_unregister(struct thermal_cooling_device *cdev);
#else
static inline struct thermal_cooling_device *
ddr_cooling_register(struct device_node *np,
struct cool_dev *cool)
{
return NULL;
}
static inline
void ddr_cooling_unregister(struct thermal_cooling_device *cdev)
{
}
#endif
#endif /* __DDR_COOLING_H__ */