Skip to content

Commit 9653624

Browse files
lumagrobclark
authored andcommitted
drm/msm/dpu: move disable_danger out of plane subdir
The disable_danger debugfs file is not related to a single plane. Instead it is used by all registered planes. Move it from plane subtree to the global subtree next to danger_status and safe_status files, so that the new file supplements them. Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Reviewed-by: Abhinav Kumar <quic_abhinavk@quicinc.com> Link: https://lore.kernel.org/r/20211201222633.2476780-2-dmitry.baryshkov@linaro.org Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> Signed-off-by: Rob Clark <robdclark@chromium.org>
1 parent 08c4aa3 commit 9653624

3 files changed

Lines changed: 77 additions & 73 deletions

File tree

drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,73 @@ static int dpu_debugfs_safe_stats_show(struct seq_file *s, void *v)
101101
}
102102
DEFINE_SHOW_ATTRIBUTE(dpu_debugfs_safe_stats);
103103

104+
static ssize_t _dpu_plane_danger_read(struct file *file,
105+
char __user *buff, size_t count, loff_t *ppos)
106+
{
107+
struct dpu_kms *kms = file->private_data;
108+
int len;
109+
char buf[40];
110+
111+
len = scnprintf(buf, sizeof(buf), "%d\n", !kms->has_danger_ctrl);
112+
113+
return simple_read_from_buffer(buff, count, ppos, buf, len);
114+
}
115+
116+
static void _dpu_plane_set_danger_state(struct dpu_kms *kms, bool enable)
117+
{
118+
struct drm_plane *plane;
119+
120+
drm_for_each_plane(plane, kms->dev) {
121+
if (plane->fb && plane->state) {
122+
dpu_plane_danger_signal_ctrl(plane, enable);
123+
DPU_DEBUG("plane:%d img:%dx%d ",
124+
plane->base.id, plane->fb->width,
125+
plane->fb->height);
126+
DPU_DEBUG("src[%d,%d,%d,%d] dst[%d,%d,%d,%d]\n",
127+
plane->state->src_x >> 16,
128+
plane->state->src_y >> 16,
129+
plane->state->src_w >> 16,
130+
plane->state->src_h >> 16,
131+
plane->state->crtc_x, plane->state->crtc_y,
132+
plane->state->crtc_w, plane->state->crtc_h);
133+
} else {
134+
DPU_DEBUG("Inactive plane:%d\n", plane->base.id);
135+
}
136+
}
137+
}
138+
139+
static ssize_t _dpu_plane_danger_write(struct file *file,
140+
const char __user *user_buf, size_t count, loff_t *ppos)
141+
{
142+
struct dpu_kms *kms = file->private_data;
143+
int disable_panic;
144+
int ret;
145+
146+
ret = kstrtouint_from_user(user_buf, count, 0, &disable_panic);
147+
if (ret)
148+
return ret;
149+
150+
if (disable_panic) {
151+
/* Disable panic signal for all active pipes */
152+
DPU_DEBUG("Disabling danger:\n");
153+
_dpu_plane_set_danger_state(kms, false);
154+
kms->has_danger_ctrl = false;
155+
} else {
156+
/* Enable panic signal for all active pipes */
157+
DPU_DEBUG("Enabling danger:\n");
158+
kms->has_danger_ctrl = true;
159+
_dpu_plane_set_danger_state(kms, true);
160+
}
161+
162+
return count;
163+
}
164+
165+
static const struct file_operations dpu_plane_danger_enable = {
166+
.open = simple_open,
167+
.read = _dpu_plane_danger_read,
168+
.write = _dpu_plane_danger_write,
169+
};
170+
104171
static void dpu_debugfs_danger_init(struct dpu_kms *dpu_kms,
105172
struct dentry *parent)
106173
{
@@ -110,6 +177,9 @@ static void dpu_debugfs_danger_init(struct dpu_kms *dpu_kms,
110177
dpu_kms, &dpu_debugfs_danger_stats_fops);
111178
debugfs_create_file("safe_status", 0600, entry,
112179
dpu_kms, &dpu_debugfs_safe_stats_fops);
180+
debugfs_create_file("disable_danger", 0600, entry,
181+
dpu_kms, &dpu_plane_danger_enable);
182+
113183
}
114184

115185
static int _dpu_debugfs_show_regset32(struct seq_file *s, void *data)

drivers/gpu/drm/msm/disp/dpu1/dpu_plane.c

Lines changed: 1 addition & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1342,7 +1342,7 @@ static void dpu_plane_reset(struct drm_plane *plane)
13421342
}
13431343

13441344
#ifdef CONFIG_DEBUG_FS
1345-
static void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable)
1345+
void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable)
13461346
{
13471347
struct dpu_plane *pdpu = to_dpu_plane(plane);
13481348
struct dpu_kms *dpu_kms = _dpu_plane_get_kms(plane);
@@ -1355,73 +1355,6 @@ static void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable)
13551355
pm_runtime_put_sync(&dpu_kms->pdev->dev);
13561356
}
13571357

1358-
static ssize_t _dpu_plane_danger_read(struct file *file,
1359-
char __user *buff, size_t count, loff_t *ppos)
1360-
{
1361-
struct dpu_kms *kms = file->private_data;
1362-
int len;
1363-
char buf[40];
1364-
1365-
len = scnprintf(buf, sizeof(buf), "%d\n", !kms->has_danger_ctrl);
1366-
1367-
return simple_read_from_buffer(buff, count, ppos, buf, len);
1368-
}
1369-
1370-
static void _dpu_plane_set_danger_state(struct dpu_kms *kms, bool enable)
1371-
{
1372-
struct drm_plane *plane;
1373-
1374-
drm_for_each_plane(plane, kms->dev) {
1375-
if (plane->fb && plane->state) {
1376-
dpu_plane_danger_signal_ctrl(plane, enable);
1377-
DPU_DEBUG("plane:%d img:%dx%d ",
1378-
plane->base.id, plane->fb->width,
1379-
plane->fb->height);
1380-
DPU_DEBUG("src[%d,%d,%d,%d] dst[%d,%d,%d,%d]\n",
1381-
plane->state->src_x >> 16,
1382-
plane->state->src_y >> 16,
1383-
plane->state->src_w >> 16,
1384-
plane->state->src_h >> 16,
1385-
plane->state->crtc_x, plane->state->crtc_y,
1386-
plane->state->crtc_w, plane->state->crtc_h);
1387-
} else {
1388-
DPU_DEBUG("Inactive plane:%d\n", plane->base.id);
1389-
}
1390-
}
1391-
}
1392-
1393-
static ssize_t _dpu_plane_danger_write(struct file *file,
1394-
const char __user *user_buf, size_t count, loff_t *ppos)
1395-
{
1396-
struct dpu_kms *kms = file->private_data;
1397-
int disable_panic;
1398-
int ret;
1399-
1400-
ret = kstrtouint_from_user(user_buf, count, 0, &disable_panic);
1401-
if (ret)
1402-
return ret;
1403-
1404-
if (disable_panic) {
1405-
/* Disable panic signal for all active pipes */
1406-
DPU_DEBUG("Disabling danger:\n");
1407-
_dpu_plane_set_danger_state(kms, false);
1408-
kms->has_danger_ctrl = false;
1409-
} else {
1410-
/* Enable panic signal for all active pipes */
1411-
DPU_DEBUG("Enabling danger:\n");
1412-
kms->has_danger_ctrl = true;
1413-
_dpu_plane_set_danger_state(kms, true);
1414-
}
1415-
1416-
return count;
1417-
}
1418-
1419-
static const struct file_operations dpu_plane_danger_enable = {
1420-
.open = simple_open,
1421-
.read = _dpu_plane_danger_read,
1422-
.write = _dpu_plane_danger_write,
1423-
};
1424-
14251358
static int _dpu_plane_init_debugfs(struct drm_plane *plane)
14261359
{
14271360
struct dpu_plane *pdpu = to_dpu_plane(plane);
@@ -1490,11 +1423,6 @@ static int _dpu_plane_init_debugfs(struct drm_plane *plane)
14901423
pdpu->debugfs_root,
14911424
(u32 *) &sblk->danger_vblank);
14921425

1493-
debugfs_create_file("disable_danger",
1494-
0600,
1495-
pdpu->debugfs_root,
1496-
kms, &dpu_plane_danger_enable);
1497-
14981426
return 0;
14991427
}
15001428
#else

drivers/gpu/drm/msm/disp/dpu1/dpu_plane.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,10 @@ void dpu_plane_clear_multirect(const struct drm_plane_state *drm_state);
126126
int dpu_plane_color_fill(struct drm_plane *plane,
127127
uint32_t color, uint32_t alpha);
128128

129+
#ifdef CONFIG_DEBUG_FS
130+
void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable);
131+
#else
132+
static inline void dpu_plane_danger_signal_ctrl(struct drm_plane *plane, bool enable) {}
133+
#endif
134+
129135
#endif /* _DPU_PLANE_H_ */

0 commit comments

Comments
 (0)