From f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 31 Jan 2024 01:04:47 +0000
Subject: [PATCH] add driver 5G
---
kernel/include/soc/rockchip/rockchip_dmc.h | 78 ++++++++++++++++++++++++++++++++------
1 files changed, 65 insertions(+), 13 deletions(-)
diff --git a/kernel/include/soc/rockchip/rockchip_dmc.h b/kernel/include/soc/rockchip/rockchip_dmc.h
index 0fcaaef..f115cdc 100644
--- a/kernel/include/soc/rockchip/rockchip_dmc.h
+++ b/kernel/include/soc/rockchip/rockchip_dmc.h
@@ -31,17 +31,53 @@
#define SCREEN_DUAL_LVDS_10BIT 12
#define SCREEN_DP 13
-#ifdef CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ
+#define DMCFREQ_TABLE_END ~1u
+
+struct freq_map_table {
+ unsigned int min;
+ unsigned int max;
+ unsigned long freq;
+};
+
+struct rl_map_table {
+ unsigned int pn; /* panel number */
+ unsigned int rl; /* readlatency */
+};
+
+struct dmcfreq_common_info {
+ struct device *dev;
+ struct devfreq *devfreq;
+ struct freq_map_table *vop_bw_tbl;
+ struct freq_map_table *vop_frame_bw_tbl;
+ struct rl_map_table *vop_pn_rl_tbl;
+ struct delayed_work msch_rl_work;
+ unsigned long vop_4k_rate;
+ unsigned long vop_req_rate;
+ unsigned int read_latency;
+ unsigned int auto_freq_en;
+ unsigned int stall_time_ns;
+ bool is_msch_rl_work_started;
+ int (*set_msch_readlatency)(unsigned int rl);
+};
+
+struct dmcfreq_vop_info {
+ unsigned int line_bw_mbyte;
+ unsigned int frame_bw_mbyte;
+ unsigned int plane_num;
+ unsigned int plane_num_4k;
+};
+
+#if IS_REACHABLE(CONFIG_ARM_ROCKCHIP_DMC_DEVFREQ)
void rockchip_dmcfreq_lock(void);
void rockchip_dmcfreq_lock_nested(void);
void rockchip_dmcfreq_unlock(void);
+int rockchip_dmcfreq_write_trylock(void);
+void rockchip_dmcfreq_write_unlock(void);
int rockchip_dmcfreq_wait_complete(void);
-int rockchip_dmcfreq_vop_bandwidth_request(struct devfreq *devfreq,
- unsigned int bw_mbyte);
-void rockchip_dmcfreq_vop_bandwidth_update(struct devfreq *devfreq,
- unsigned int line_bw_mbyte,
- unsigned int frame_bw_mbyte,
- unsigned int plane_num);
+int rockchip_dmcfreq_vop_bandwidth_init(struct dmcfreq_common_info *info);
+int rockchip_dmcfreq_vop_bandwidth_request(struct dmcfreq_vop_info *vop_info);
+void rockchip_dmcfreq_vop_bandwidth_update(struct dmcfreq_vop_info *vop_info);
+unsigned int rockchip_dmcfreq_get_stall_time_ns(void);
#else
static inline void rockchip_dmcfreq_lock(void)
{
@@ -55,25 +91,41 @@
{
}
+static inline int rockchip_dmcfreq_write_trylock(void)
+{
+ return 0;
+}
+
+static inline void rockchip_dmcfreq_write_unlock(void)
+{
+}
+
static inline int rockchip_dmcfreq_wait_complete(void)
{
return 0;
}
static inline int
-rockchip_dmcfreq_vop_bandwidth_request(struct devfreq *devfreq,
- unsigned int bw_mbyte)
+rockchip_dmcfreq_vop_bandwidth_request(struct dmcfreq_vop_info *vop_info)
{
return 0;
}
static inline void
-rockchip_dmcfreq_vop_bandwidth_update(struct devfreq *devfreq,
- unsigned int line_bw_mbyte,
- unsigned int frame_bw_mbyte,
- unsigned int plane_num)
+rockchip_dmcfreq_vop_bandwidth_update(struct dmcfreq_vop_info *vop_info)
{
}
+
+static inline void
+rockchip_dmcfreq_vop_bandwidth_init(struct dmcfreq_common_info *info)
+{
+}
+
+static inline unsigned int
+rockchip_dmcfreq_get_stall_time_ns(void)
+{
+ return 0;
+}
#endif
#endif
--
Gitblit v1.6.2