13e176fd0SBen Skeggs /* SPDX-License-Identifier: MIT */
23e176fd0SBen Skeggs #ifndef __NVIF_PRINTF_H__
33e176fd0SBen Skeggs #define __NVIF_PRINTF_H__
43e176fd0SBen Skeggs #include <nvif/client.h>
53e176fd0SBen Skeggs #include <nvif/parent.h>
63e176fd0SBen Skeggs 
73e176fd0SBen Skeggs #define NVIF_PRINT(l,o,f,a...) do {                                                                \
83e176fd0SBen Skeggs 	struct nvif_object *_o = (o);                                                              \
93e176fd0SBen Skeggs 	struct nvif_parent *_p = _o->parent;                                                       \
103e176fd0SBen Skeggs 	_p->func->l(_o, "[%s/%08x:%s] "f"\n", _o->client->object.name, _o->handle, _o->name, ##a); \
113e176fd0SBen Skeggs } while(0)
123e176fd0SBen Skeggs 
133e176fd0SBen Skeggs #ifndef NVIF_DEBUG_PRINT_DISABLE
143e176fd0SBen Skeggs #define NVIF_DEBUG(o,f,a...) NVIF_PRINT(debugf, (o), f, ##a)
153e176fd0SBen Skeggs #else
163e176fd0SBen Skeggs #define NVIF_DEBUG(o,f,a...)
173e176fd0SBen Skeggs #endif
183e176fd0SBen Skeggs 
193e176fd0SBen Skeggs #define NVIF_ERROR(o,f,a...) NVIF_PRINT(errorf, (o), f, ##a)
20*168c0299SBen Skeggs #define NVIF_ERRON(c,o,f,a...) do {                            \
21*168c0299SBen Skeggs 	struct nvif_object *_object = (o);                     \
22*168c0299SBen Skeggs 	int _cond = (c);                                       \
23*168c0299SBen Skeggs 	if (_cond) {                                           \
24*168c0299SBen Skeggs 		NVIF_ERROR(_object, f" (ret:%d)", ##a, _cond); \
25*168c0299SBen Skeggs 	} else {                                               \
26*168c0299SBen Skeggs 		NVIF_DEBUG(_object, f, ##a);                   \
27*168c0299SBen Skeggs 	}                                                      \
28*168c0299SBen Skeggs } while(0)
293e176fd0SBen Skeggs #endif
30