1*4882a593Smuzhiyun // SPDX-License-Identifier: ISC
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun * Copyright (c) 2012 Broadcom Corporation
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun #include <linux/device.h>
7*4882a593Smuzhiyun #include <linux/module.h> /* bug in tracepoint.h, it should include this */
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun #ifndef __CHECKER__
10*4882a593Smuzhiyun #define CREATE_TRACE_POINTS
11*4882a593Smuzhiyun #include "bus.h"
12*4882a593Smuzhiyun #include "tracepoint.h"
13*4882a593Smuzhiyun #include "debug.h"
14*4882a593Smuzhiyun
__brcmf_err(struct brcmf_bus * bus,const char * func,const char * fmt,...)15*4882a593Smuzhiyun void __brcmf_err(struct brcmf_bus *bus, const char *func, const char *fmt, ...)
16*4882a593Smuzhiyun {
17*4882a593Smuzhiyun struct va_format vaf = {
18*4882a593Smuzhiyun .fmt = fmt,
19*4882a593Smuzhiyun };
20*4882a593Smuzhiyun va_list args;
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun va_start(args, fmt);
23*4882a593Smuzhiyun vaf.va = &args;
24*4882a593Smuzhiyun if (bus)
25*4882a593Smuzhiyun dev_err(bus->dev, "%s: %pV", func, &vaf);
26*4882a593Smuzhiyun else
27*4882a593Smuzhiyun pr_err("%s: %pV", func, &vaf);
28*4882a593Smuzhiyun trace_brcmf_err(func, &vaf);
29*4882a593Smuzhiyun va_end(args);
30*4882a593Smuzhiyun }
31*4882a593Smuzhiyun
32*4882a593Smuzhiyun #endif
33