Files
BPI-CM9-Linux/aml-comp/kernel/aml-6.12/common_drivers/drivers/thermal/ddr_control.h
T
2026-08-24 10:03:24 +08:00

68 lines
1.1 KiB
C

/* SPDX-License-Identifier: (GPL-2.0+ OR MIT) */
/*
* Copyright (c) 2019 Amlogic, Inc. All rights reserved.
*/
#ifndef __DDR_CONTROL_H__
#define __DDR_CONTROL_H__
#include <linux/thermal.h>
#include <linux/device.h>
#define DDR_DEFAULT_POLLING_MS 500
struct ddr_caddr {
void __iomem *wr_addr;
u32 wr_mask;
u32 wr_offset;
u32 *table;
u32 tab_cnt;
};
struct ddr_cstep {
int temp;
struct ddr_caddr *caddr_tab;
u32 caddr_cnt;
};
struct init_tab {
void __iomem *vaddr;
u32 val;
};
struct ddr_thermal {
struct thermal_zone_device *tzd;
u32 hyst_temp;
};
struct ddr_dmc {
void __iomem *rd_addr;
u32 mask;
u32 offset;
};
struct ddr_control {
u32 init_cnt;
struct init_tab *init_tab;
u32 cd_type;
int con_cnt;
void *condition;
u32 cstep_cnt;
struct ddr_cstep *ddr_cstep;
};
struct control_device {
struct device *dev;
struct ddr_control *ddr_control;
u32 last_idx;
struct delayed_work poll_dwork;
u32 poll_time_ms;
};
extern struct platform_driver ddr_control_platdrv;
int ddr_control_device(struct control_device *control_dev);
void control_poll_work(struct work_struct *work);
void ddr_control_disable(void);
#endif