Lines Matching refs:rd
97 static void rd_write(struct msm_rd_state *rd, const void *buf, int sz) in rd_write() argument
99 struct circ_buf *fifo = &rd->fifo; in rd_write()
106 wait_event(rd->fifo_event, circ_space(&rd->fifo) > 0); in rd_write()
108 n = min(sz, circ_space_to_end(&rd->fifo)); in rd_write()
115 wake_up_all(&rd->fifo_event); in rd_write()
119 static void rd_write_section(struct msm_rd_state *rd, in rd_write_section() argument
122 rd_write(rd, &type, 4); in rd_write_section()
123 rd_write(rd, &sz, 4); in rd_write_section()
124 rd_write(rd, buf, sz); in rd_write_section()
130 struct msm_rd_state *rd = file->private_data; in rd_read() local
131 struct circ_buf *fifo = &rd->fifo; in rd_read()
135 mutex_lock(&rd->read_lock); in rd_read()
137 ret = wait_event_interruptible(rd->fifo_event, in rd_read()
138 circ_count(&rd->fifo) > 0); in rd_read()
142 n = min_t(int, sz, circ_count_to_end(&rd->fifo)); in rd_read()
150 wake_up_all(&rd->fifo_event); in rd_read()
153 mutex_unlock(&rd->read_lock); in rd_read()
161 struct msm_rd_state *rd = inode->i_private; in rd_open() local
162 struct drm_device *dev = rd->dev; in rd_open()
171 if (rd->open || !gpu) { in rd_open()
176 file->private_data = rd; in rd_open()
177 rd->open = true; in rd_open()
185 rd_write_section(rd, RD_GPU_ID, &gpu_id, sizeof(gpu_id)); in rd_open()
194 struct msm_rd_state *rd = inode->i_private; in rd_release() local
195 rd->open = false; in rd_release()
211 struct msm_rd_state *rd; in msm_rd_debugfs_init() local
214 if (priv->rd) in msm_rd_debugfs_init()
217 rd = kzalloc(sizeof(*rd), GFP_KERNEL); in msm_rd_debugfs_init()
218 if (!rd) in msm_rd_debugfs_init()
221 rd->dev = minor->dev; in msm_rd_debugfs_init()
222 rd->fifo.buf = rd->buf; in msm_rd_debugfs_init()
224 mutex_init(&rd->read_lock); in msm_rd_debugfs_init()
225 priv->rd = rd; in msm_rd_debugfs_init()
227 init_waitqueue_head(&rd->fifo_event); in msm_rd_debugfs_init()
229 rd->node = kzalloc(sizeof(*rd->node), GFP_KERNEL); in msm_rd_debugfs_init()
230 if (!rd->node) in msm_rd_debugfs_init()
233 rd->ent = debugfs_create_file("rd", S_IFREG | S_IRUGO, in msm_rd_debugfs_init()
234 minor->debugfs_root, rd, &rd_debugfs_fops); in msm_rd_debugfs_init()
235 if (!rd->ent) { in msm_rd_debugfs_init()
241 rd->node->minor = minor; in msm_rd_debugfs_init()
242 rd->node->dent = rd->ent; in msm_rd_debugfs_init()
243 rd->node->info_ent = NULL; in msm_rd_debugfs_init()
246 list_add(&rd->node->list, &minor->debugfs_list); in msm_rd_debugfs_init()
259 struct msm_rd_state *rd = priv->rd; in msm_rd_debugfs_cleanup() local
261 if (!rd) in msm_rd_debugfs_cleanup()
264 priv->rd = NULL; in msm_rd_debugfs_cleanup()
266 debugfs_remove(rd->ent); in msm_rd_debugfs_cleanup()
268 if (rd->node) { in msm_rd_debugfs_cleanup()
270 list_del(&rd->node->list); in msm_rd_debugfs_cleanup()
272 kfree(rd->node); in msm_rd_debugfs_cleanup()
275 mutex_destroy(&rd->read_lock); in msm_rd_debugfs_cleanup()
277 kfree(rd); in msm_rd_debugfs_cleanup()
285 struct msm_rd_state *rd = priv->rd; in msm_rd_dump_submit() local
289 if (!rd->open) in msm_rd_dump_submit()
301 rd_write_section(rd, RD_CMD, msg, ALIGN(n, 4)); in msm_rd_dump_submit()
317 rd_write_section(rd, RD_GPUADDR, in msm_rd_dump_submit()
319 rd_write_section(rd, RD_BUFFER_CONTENTS, in msm_rd_dump_submit()
331 rd_write_section(rd, RD_CMDSTREAM_ADDR, in msm_rd_dump_submit()