Skip to content

Commit

Permalink
ALSA: hda - Re-add tracepoints to HD-audio core driver
Browse files Browse the repository at this point in the history
Now let's take the basic tracepoints back to the HD-audio driver.
The three bus tracepoints, hda_send_cmd, hda_get_response and
hda_unsol_event are revived but in a slightly different form.
Since we don't assign the card number there, print the bus device name
instead.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
  • Loading branch information
Takashi Iwai committed Mar 23, 2015
1 parent c4c2533 commit e311782
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 121 deletions.
3 changes: 3 additions & 0 deletions sound/hda/Makefile
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
snd-hda-core-objs := hda_bus_type.o hdac_bus.o hdac_device.o hdac_sysfs.o

snd-hda-core-objs += trace.o
CFLAGS_trace.o := -I$(src)

obj-$(CONFIG_SND_HDA_CORE) += snd-hda-core.o
7 changes: 6 additions & 1 deletion sound/hda/hdac_bus.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include <linux/module.h>
#include <linux/export.h>
#include <sound/hdaudio.h>
#include "trace.h"

static void process_unsol_events(struct work_struct *work);

Expand Down Expand Up @@ -82,6 +83,7 @@ int snd_hdac_bus_exec_verb_unlocked(struct hdac_bus *bus, unsigned int addr,
else if (bus->sync_write)
res = &tmp;
for (;;) {
trace_hda_send_cmd(bus, cmd);
err = bus->ops->command(bus, cmd);
if (err != -EAGAIN)
break;
Expand All @@ -90,8 +92,10 @@ int snd_hdac_bus_exec_verb_unlocked(struct hdac_bus *bus, unsigned int addr,
if (err)
break;
}
if (!err && res)
if (!err && res) {
err = bus->ops->get_response(bus, addr, res);
trace_hda_get_response(bus, addr, *res);
}
return err;
}
EXPORT_SYMBOL_GPL(snd_hdac_bus_exec_verb_unlocked);
Expand All @@ -113,6 +117,7 @@ void snd_hdac_bus_queue_event(struct hdac_bus *bus, u32 res, u32 res_ex)
if (!bus)
return;

trace_hda_unsol_event(bus, res, res_ex);
wp = (bus->unsol_wp + 1) % HDA_UNSOL_QUEUE_SIZE;
bus->unsol_wp = wp;

Expand Down
6 changes: 6 additions & 0 deletions sound/hda/trace.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
/*
* tracepoint definitions for HD-audio core drivers
*/

#define CREATE_TRACE_POINTS
#include "trace.h"
62 changes: 62 additions & 0 deletions sound/hda/trace.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#undef TRACE_SYSTEM
#define TRACE_SYSTEM hda

#if !defined(__HDAC_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
#define __HDAC_TRACE_H

#include <linux/tracepoint.h>
#include <linux/device.h>
#include <sound/hdaudio.h>

#ifndef HDAC_MSG_MAX
#define HDAC_MSG_MAX 500
#endif

struct hdac_bus;
struct hdac_codec;

TRACE_EVENT(hda_send_cmd,
TP_PROTO(struct hdac_bus *bus, unsigned int cmd),
TP_ARGS(bus, cmd),
TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
TP_fast_assign(
snprintf(__get_str(msg), HDAC_MSG_MAX,
"[%s:%d] val=0x%08x",
dev_name((bus)->dev), (cmd) >> 28, cmd);
),
TP_printk("%s", __get_str(msg))
);

TRACE_EVENT(hda_get_response,
TP_PROTO(struct hdac_bus *bus, unsigned int addr, unsigned int res),
TP_ARGS(bus, addr, res),
TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
TP_fast_assign(
snprintf(__get_str(msg), HDAC_MSG_MAX,
"[%s:%d] val=0x%08x",
dev_name((bus)->dev), addr, res);
),
TP_printk("%s", __get_str(msg))
);

TRACE_EVENT(hda_unsol_event,
TP_PROTO(struct hdac_bus *bus, u32 res, u32 res_ex),
TP_ARGS(bus, res, res_ex),
TP_STRUCT__entry(__dynamic_array(char, msg, HDAC_MSG_MAX)),
TP_fast_assign(
snprintf(__get_str(msg), HDAC_MSG_MAX,
"[%s:%d] res=0x%08x, res_ex=0x%08x",
dev_name((bus)->dev), res_ex & 0x0f, res, res_ex);
),
TP_printk("%s", __get_str(msg))
);
#endif /* __HDAC_TRACE_H */

/* This part must be outside protection */
#undef TRACE_INCLUDE_PATH
#define TRACE_INCLUDE_PATH .

#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE trace

#include <trace/define_trace.h>
1 change: 0 additions & 1 deletion sound/pci/hda/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ snd-hda-codec-$(CONFIG_SND_HDA_HWDEP) += hda_hwdep.o
snd-hda-codec-$(CONFIG_SND_HDA_INPUT_BEEP) += hda_beep.o

# for trace-points
CFLAGS_hda_codec.o := -I$(src)
CFLAGS_hda_controller.o := -I$(src)

snd-hda-codec-generic-objs := hda_generic.o
Expand Down
119 changes: 0 additions & 119 deletions sound/pci/hda/hda_trace.h

This file was deleted.

0 comments on commit e311782

Please sign in to comment.