Skip to content

Commit d0fbf1c

Browse files
ranj063plbossart
authored andcommitted
ASoC: SOF: separate snd_sof_debugfs_create_item into 2 flavours
debugfs entries can be used to expose two different types of memories: 1. DSP memory and registers 2. kernel buffers We should use type struct snd_sof_dfsentry_io for the first one and type struct snd_sof_dfsentry_buf for the second type. So split the snd_sof_debugfs_create_item() into two flavours based on the memory pointed to. snd_sof_debugfs_io_create_item() should be used for io memory and snd_sof_debugfs_buf_create_item() should beused for kernel buffers, for example, the fw_version member of snd_sof_dev. Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
1 parent 59464fd commit d0fbf1c

File tree

7 files changed

+178
-133
lines changed

7 files changed

+178
-133
lines changed

sound/soc/sof/debug.c

Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -89,9 +89,10 @@ static const struct file_operations sof_dfs_fops = {
8989
.llseek = default_llseek,
9090
};
9191

92-
int snd_sof_debugfs_create_item(struct snd_sof_dev *sdev,
93-
void __iomem *base, size_t size,
94-
const char *name)
92+
/* create FS entry for debug files that can expose DSP memories, registers */
93+
int snd_sof_debugfs_io_create_item(struct snd_sof_dev *sdev,
94+
void __iomem *base, size_t size,
95+
const char *name)
9596
{
9697
struct snd_sof_dfsentry_io *dfse;
9798

@@ -115,7 +116,36 @@ int snd_sof_debugfs_create_item(struct snd_sof_dev *sdev,
115116

116117
return 0;
117118
}
118-
EXPORT_SYMBOL(snd_sof_debugfs_create_item);
119+
EXPORT_SYMBOL(snd_sof_debugfs_io_create_item);
120+
121+
/* create FS entry for debug files to expose kernel memory */
122+
int snd_sof_debugfs_buf_create_item(struct snd_sof_dev *sdev,
123+
void *base, size_t size,
124+
const char *name)
125+
{
126+
struct snd_sof_dfsentry_buf *dfse;
127+
128+
if (!sdev)
129+
return -EINVAL;
130+
131+
dfse = devm_kzalloc(sdev->dev, sizeof(*dfse), GFP_KERNEL);
132+
if (!dfse)
133+
return -ENOMEM;
134+
135+
dfse->buf = base;
136+
dfse->size = size;
137+
dfse->sdev = sdev;
138+
139+
dfse->dfsentry = debugfs_create_file(name, 0444, sdev->debugfs_root,
140+
dfse, &sof_dfs_fops);
141+
if (!dfse->dfsentry) {
142+
dev_err(sdev->dev, "cannot create debugfs entry.\n");
143+
return -ENODEV;
144+
}
145+
146+
return 0;
147+
}
148+
EXPORT_SYMBOL(snd_sof_debugfs_buf_create_item);
119149

120150
int snd_sof_dbg_init(struct snd_sof_dev *sdev)
121151
{
@@ -134,7 +164,7 @@ int snd_sof_dbg_init(struct snd_sof_dev *sdev)
134164
for (i = 0; i < ops->debug_map_count; i++) {
135165
map = &ops->debug_map[i];
136166

137-
err = snd_sof_debugfs_create_item(sdev, sdev->bar[map->bar] +
167+
err = snd_sof_debugfs_io_create_item(sdev, sdev->bar[map->bar] +
138168
map->offset, map->size,
139169
map->name);
140170
if (err < 0)

sound/soc/sof/intel/bdw.c

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -426,51 +426,55 @@ static void bdw_get_windows(struct snd_sof_dev *sdev)
426426
case SOF_IPC_REGION_UPBOX:
427427
inbox_offset = elem->offset + MBOX_OFFSET;
428428
inbox_size = elem->size;
429-
snd_sof_debugfs_create_item(sdev,
430-
sdev->bar[BDW_DSP_BAR] +
431-
inbox_offset,
432-
elem->size, "inbox");
429+
snd_sof_debugfs_io_create_item(sdev,
430+
sdev->bar[BDW_DSP_BAR] +
431+
inbox_offset,
432+
elem->size, "inbox");
433433
break;
434434
case SOF_IPC_REGION_DOWNBOX:
435435
outbox_offset = elem->offset + MBOX_OFFSET;
436436
outbox_size = elem->size;
437-
snd_sof_debugfs_create_item(sdev,
438-
sdev->bar[BDW_DSP_BAR] +
439-
outbox_offset,
440-
elem->size, "outbox");
437+
snd_sof_debugfs_io_create_item(sdev,
438+
sdev->bar[BDW_DSP_BAR] +
439+
outbox_offset,
440+
elem->size, "outbox");
441441
break;
442442
case SOF_IPC_REGION_TRACE:
443-
snd_sof_debugfs_create_item(sdev,
444-
sdev->bar[BDW_DSP_BAR] +
445-
elem->offset + MBOX_OFFSET,
446-
elem->size, "etrace");
443+
snd_sof_debugfs_io_create_item(sdev,
444+
sdev->bar[BDW_DSP_BAR] +
445+
elem->offset +
446+
MBOX_OFFSET,
447+
elem->size, "etrace");
447448
break;
448449
case SOF_IPC_REGION_DEBUG:
449-
snd_sof_debugfs_create_item(sdev,
450-
sdev->bar[BDW_DSP_BAR] +
451-
elem->offset + MBOX_OFFSET,
452-
elem->size, "debug");
450+
snd_sof_debugfs_io_create_item(sdev,
451+
sdev->bar[BDW_DSP_BAR] +
452+
elem->offset +
453+
MBOX_OFFSET,
454+
elem->size, "debug");
453455
break;
454456
case SOF_IPC_REGION_STREAM:
455457
stream_offset = elem->offset + MBOX_OFFSET;
456458
stream_size = elem->size;
457-
snd_sof_debugfs_create_item(sdev,
458-
sdev->bar[BDW_DSP_BAR] +
459-
stream_offset,
460-
elem->size, "stream");
459+
snd_sof_debugfs_io_create_item(sdev,
460+
sdev->bar[BDW_DSP_BAR] +
461+
stream_offset,
462+
elem->size, "stream");
461463
break;
462464
case SOF_IPC_REGION_REGS:
463-
snd_sof_debugfs_create_item(sdev,
464-
sdev->bar[BDW_DSP_BAR] +
465-
elem->offset + MBOX_OFFSET,
466-
elem->size, "regs");
465+
snd_sof_debugfs_io_create_item(sdev,
466+
sdev->bar[BDW_DSP_BAR] +
467+
elem->offset +
468+
MBOX_OFFSET,
469+
elem->size, "regs");
467470
break;
468471
case SOF_IPC_REGION_EXCEPTION:
469472
sdev->dsp_oops_offset = elem->offset + MBOX_OFFSET;
470-
snd_sof_debugfs_create_item(sdev,
471-
sdev->bar[BDW_DSP_BAR] +
472-
elem->offset + MBOX_OFFSET,
473-
elem->size, "exception");
473+
snd_sof_debugfs_io_create_item(sdev,
474+
sdev->bar[BDW_DSP_BAR] +
475+
elem->offset +
476+
MBOX_OFFSET,
477+
elem->size, "exception");
474478
break;
475479
default:
476480
dev_err(sdev->dev, "error: get illegal window info\n");

sound/soc/sof/intel/byt.c

Lines changed: 32 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -186,51 +186,55 @@ static void byt_get_windows(struct snd_sof_dev *sdev)
186186
case SOF_IPC_REGION_UPBOX:
187187
inbox_offset = elem->offset + MBOX_OFFSET;
188188
inbox_size = elem->size;
189-
snd_sof_debugfs_create_item(sdev,
190-
sdev->bar[BYT_DSP_BAR] +
191-
inbox_offset,
192-
elem->size, "inbox");
189+
snd_sof_debugfs_io_create_item(sdev,
190+
sdev->bar[BYT_DSP_BAR] +
191+
inbox_offset,
192+
elem->size, "inbox");
193193
break;
194194
case SOF_IPC_REGION_DOWNBOX:
195195
outbox_offset = elem->offset + MBOX_OFFSET;
196196
outbox_size = elem->size;
197-
snd_sof_debugfs_create_item(sdev,
198-
sdev->bar[BYT_DSP_BAR] +
199-
outbox_offset,
200-
elem->size, "outbox");
197+
snd_sof_debugfs_io_create_item(sdev,
198+
sdev->bar[BYT_DSP_BAR] +
199+
outbox_offset,
200+
elem->size, "outbox");
201201
break;
202202
case SOF_IPC_REGION_TRACE:
203-
snd_sof_debugfs_create_item(sdev,
204-
sdev->bar[BYT_DSP_BAR] +
205-
elem->offset + MBOX_OFFSET,
206-
elem->size, "etrace");
203+
snd_sof_debugfs_io_create_item(sdev,
204+
sdev->bar[BYT_DSP_BAR] +
205+
elem->offset +
206+
MBOX_OFFSET,
207+
elem->size, "etrace");
207208
break;
208209
case SOF_IPC_REGION_DEBUG:
209-
snd_sof_debugfs_create_item(sdev,
210-
sdev->bar[BYT_DSP_BAR] +
211-
elem->offset + MBOX_OFFSET,
212-
elem->size, "debug");
210+
snd_sof_debugfs_io_create_item(sdev,
211+
sdev->bar[BYT_DSP_BAR] +
212+
elem->offset +
213+
MBOX_OFFSET,
214+
elem->size, "debug");
213215
break;
214216
case SOF_IPC_REGION_STREAM:
215217
stream_offset = elem->offset + MBOX_OFFSET;
216218
stream_size = elem->size;
217-
snd_sof_debugfs_create_item(sdev,
218-
sdev->bar[BYT_DSP_BAR] +
219-
stream_offset,
220-
elem->size, "stream");
219+
snd_sof_debugfs_io_create_item(sdev,
220+
sdev->bar[BYT_DSP_BAR] +
221+
stream_offset,
222+
elem->size, "stream");
221223
break;
222224
case SOF_IPC_REGION_REGS:
223-
snd_sof_debugfs_create_item(sdev,
224-
sdev->bar[BYT_DSP_BAR] +
225-
elem->offset + MBOX_OFFSET,
226-
elem->size, "regs");
225+
snd_sof_debugfs_io_create_item(sdev,
226+
sdev->bar[BYT_DSP_BAR] +
227+
elem->offset +
228+
MBOX_OFFSET,
229+
elem->size, "regs");
227230
break;
228231
case SOF_IPC_REGION_EXCEPTION:
229232
sdev->dsp_oops_offset = elem->offset + MBOX_OFFSET;
230-
snd_sof_debugfs_create_item(sdev,
231-
sdev->bar[BYT_DSP_BAR] +
232-
elem->offset + MBOX_OFFSET,
233-
elem->size, "exception");
233+
snd_sof_debugfs_io_create_item(sdev,
234+
sdev->bar[BYT_DSP_BAR] +
235+
elem->offset +
236+
MBOX_OFFSET,
237+
elem->size, "exception");
234238
break;
235239
default:
236240
dev_err(sdev->dev, "error: get illegal window info\n");

sound/soc/sof/intel/hda-ipc.c

Lines changed: 38 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -285,64 +285,64 @@ static void ipc_get_windows(struct snd_sof_dev *sdev)
285285
inbox_offset =
286286
elem->offset + SRAM_WINDOW_OFFSET(elem->id);
287287
inbox_size = elem->size;
288-
snd_sof_debugfs_create_item(sdev,
289-
sdev->bar[HDA_DSP_BAR] +
290-
inbox_offset,
291-
elem->size, "inbox");
288+
snd_sof_debugfs_io_create_item(sdev,
289+
sdev->bar[HDA_DSP_BAR] +
290+
inbox_offset,
291+
elem->size, "inbox");
292292
break;
293293
case SOF_IPC_REGION_DOWNBOX:
294294
outbox_offset =
295295
elem->offset + SRAM_WINDOW_OFFSET(elem->id);
296296
outbox_size = elem->size;
297-
snd_sof_debugfs_create_item(sdev,
298-
sdev->bar[HDA_DSP_BAR] +
299-
outbox_offset,
300-
elem->size, "outbox");
297+
snd_sof_debugfs_io_create_item(sdev,
298+
sdev->bar[HDA_DSP_BAR] +
299+
outbox_offset,
300+
elem->size, "outbox");
301301
break;
302302
case SOF_IPC_REGION_TRACE:
303-
snd_sof_debugfs_create_item(sdev,
304-
sdev->bar[HDA_DSP_BAR] +
305-
elem->offset +
306-
SRAM_WINDOW_OFFSET
307-
(elem->id),
308-
elem->size, "etrace");
303+
snd_sof_debugfs_io_create_item(sdev,
304+
sdev->bar[HDA_DSP_BAR] +
305+
elem->offset +
306+
SRAM_WINDOW_OFFSET
307+
(elem->id),
308+
elem->size, "etrace");
309309
break;
310310
case SOF_IPC_REGION_DEBUG:
311-
snd_sof_debugfs_create_item(sdev,
312-
sdev->bar[HDA_DSP_BAR] +
313-
elem->offset +
314-
SRAM_WINDOW_OFFSET
315-
(elem->id),
316-
elem->size, "debug");
311+
snd_sof_debugfs_io_create_item(sdev,
312+
sdev->bar[HDA_DSP_BAR] +
313+
elem->offset +
314+
SRAM_WINDOW_OFFSET
315+
(elem->id),
316+
elem->size, "debug");
317317
break;
318318
case SOF_IPC_REGION_STREAM:
319319
stream_offset =
320320
elem->offset + SRAM_WINDOW_OFFSET(elem->id);
321321
stream_size = elem->size;
322-
snd_sof_debugfs_create_item(sdev,
323-
sdev->bar[HDA_DSP_BAR] +
324-
elem->offset +
325-
SRAM_WINDOW_OFFSET
326-
(elem->id),
327-
elem->size, "stream");
322+
snd_sof_debugfs_io_create_item(sdev,
323+
sdev->bar[HDA_DSP_BAR] +
324+
elem->offset +
325+
SRAM_WINDOW_OFFSET
326+
(elem->id),
327+
elem->size, "stream");
328328
break;
329329
case SOF_IPC_REGION_REGS:
330-
snd_sof_debugfs_create_item(sdev,
331-
sdev->bar[HDA_DSP_BAR] +
332-
elem->offset +
333-
SRAM_WINDOW_OFFSET
334-
(elem->id),
335-
elem->size, "regs");
330+
snd_sof_debugfs_io_create_item(sdev,
331+
sdev->bar[HDA_DSP_BAR] +
332+
elem->offset +
333+
SRAM_WINDOW_OFFSET
334+
(elem->id),
335+
elem->size, "regs");
336336
break;
337337
case SOF_IPC_REGION_EXCEPTION:
338338
sdev->dsp_oops_offset = elem->offset +
339339
SRAM_WINDOW_OFFSET(elem->id);
340-
snd_sof_debugfs_create_item(sdev,
341-
sdev->bar[HDA_DSP_BAR] +
342-
elem->offset +
343-
SRAM_WINDOW_OFFSET
344-
(elem->id),
345-
elem->size, "exception");
340+
snd_sof_debugfs_io_create_item(sdev,
341+
sdev->bar[HDA_DSP_BAR] +
342+
elem->offset +
343+
SRAM_WINDOW_OFFSET
344+
(elem->id),
345+
elem->size, "exception");
346346
break;
347347
default:
348348
dev_err(sdev->dev, "error: get illegal window info\n");

0 commit comments

Comments
 (0)