xref: /openbsd-src/sys/dev/pci/drm/include/linux/device.h (revision 462b0080adf84c5ddae8fd0cdba5e604fdde1771)
17f4dd379Sjsg /* Public domain. */
27f4dd379Sjsg 
37f4dd379Sjsg #ifndef _LINUX_DEVICE_H
47f4dd379Sjsg #define _LINUX_DEVICE_H
57f4dd379Sjsg 
67f4dd379Sjsg #include <sys/types.h>
77f4dd379Sjsg #include <sys/systm.h>
87f4dd379Sjsg #include <sys/device.h>
97f4dd379Sjsg #include <sys/param.h>
107f4dd379Sjsg #include <sys/proc.h>
117f4dd379Sjsg #include <linux/ioport.h>
127f4dd379Sjsg #include <linux/lockdep.h>
137f4dd379Sjsg #include <linux/pm.h>
14c349dbc7Sjsg #include <linux/kobject.h>
15c349dbc7Sjsg #include <linux/ratelimit.h> /* dev_printk.h -> ratelimit.h */
16f005ef32Sjsg #include <linux/module.h> /* via device/driver.h */
17*462b0080Sjsg #include <linux/device/bus.h>
187f4dd379Sjsg 
197f4dd379Sjsg struct device_node;
207f4dd379Sjsg 
217f4dd379Sjsg struct device_driver {
227f4dd379Sjsg 	struct device *dev;
237f4dd379Sjsg };
247f4dd379Sjsg 
257f4dd379Sjsg struct device_attribute {
26c349dbc7Sjsg 	struct attribute attr;
27c349dbc7Sjsg 	ssize_t (*show)(struct device *, struct device_attribute *, char *);
287f4dd379Sjsg };
297f4dd379Sjsg 
307f4dd379Sjsg #define DEVICE_ATTR(_name, _mode, _show, _store) \
317f4dd379Sjsg 	struct device_attribute dev_attr_##_name
325ca02815Sjsg #define DEVICE_ATTR_RO(_name) \
335ca02815Sjsg 	struct device_attribute dev_attr_##_name
347f4dd379Sjsg 
357f4dd379Sjsg #define device_create_file(a, b)	0
367f4dd379Sjsg #define device_remove_file(a, b)
377f4dd379Sjsg 
389342ba5eSkettenis void	*dev_get_drvdata(struct device *);
399342ba5eSkettenis void	dev_set_drvdata(struct device *, void *);
407f4dd379Sjsg 
417f4dd379Sjsg #define dev_pm_set_driver_flags(x, y)
427f4dd379Sjsg 
437f4dd379Sjsg #define devm_kzalloc(x, y, z)	kzalloc(y, z)
449342ba5eSkettenis #define devm_kfree(x, y)	kfree(y)
457f4dd379Sjsg 
46f005ef32Sjsg static inline int
47f005ef32Sjsg devm_device_add_group(struct device *dev, const struct attribute_group *g)
48f005ef32Sjsg {
49f005ef32Sjsg 	return 0;
50f005ef32Sjsg }
51f005ef32Sjsg 
527f4dd379Sjsg #define dev_warn(dev, fmt, arg...)				\
537f4dd379Sjsg 	printf("drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid,	\
547f4dd379Sjsg 	    __func__ , ## arg)
551bb76ff1Sjsg #define dev_WARN(dev, fmt, arg...)					\
56f005ef32Sjsg 	WARN(1, "drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid,	\
571bb76ff1Sjsg 	    __func__ , ## arg)
587f4dd379Sjsg #define dev_notice(dev, fmt, arg...)				\
597f4dd379Sjsg 	printf("drm:pid%d:%s *NOTICE* " fmt, curproc->p_p->ps_pid,	\
607f4dd379Sjsg 	    __func__ , ## arg)
617f4dd379Sjsg #define dev_crit(dev, fmt, arg...)				\
627f4dd379Sjsg 	printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid,	\
637f4dd379Sjsg 	    __func__ , ## arg)
647f4dd379Sjsg #define dev_err(dev, fmt, arg...)				\
657f4dd379Sjsg 	printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid,	\
667f4dd379Sjsg 	    __func__ , ## arg)
67ad8b1aafSjsg #define dev_emerg(dev, fmt, arg...)				\
68ad8b1aafSjsg 	printf("drm:pid%d:%s *EMERGENCY* " fmt, curproc->p_p->ps_pid,	\
69ad8b1aafSjsg 	    __func__ , ## arg)
707f4dd379Sjsg #define dev_printk(level, dev, fmt, arg...)				\
717f4dd379Sjsg 	printf("drm:pid%d:%s *PRINTK* " fmt, curproc->p_p->ps_pid,	\
727f4dd379Sjsg 	    __func__ , ## arg)
737f4dd379Sjsg 
74c349dbc7Sjsg #define dev_warn_ratelimited(dev, fmt, arg...)				\
75c349dbc7Sjsg 	printf("drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid,	\
76c349dbc7Sjsg 	    __func__ , ## arg)
77c349dbc7Sjsg #define dev_notice_ratelimited(dev, fmt, arg...)			\
78c349dbc7Sjsg 	printf("drm:pid%d:%s *NOTICE* " fmt, curproc->p_p->ps_pid,	\
79c349dbc7Sjsg 	    __func__ , ## arg)
805ca02815Sjsg #define dev_err_ratelimited(dev, fmt, arg...)				\
815ca02815Sjsg 	printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid,	\
825ca02815Sjsg 	    __func__ , ## arg)
83c349dbc7Sjsg 
845ca02815Sjsg #define dev_warn_once(dev, fmt, arg...)				\
855ca02815Sjsg 	printf("drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid,	\
865ca02815Sjsg 	    __func__ , ## arg)
87f005ef32Sjsg #define dev_WARN_ONCE(dev, cond, fmt, arg...)					\
88f005ef32Sjsg 	WARN_ONCE(cond, "drm:pid%d:%s *WARNING* " fmt, curproc->p_p->ps_pid,	\
89f005ef32Sjsg 	    __func__ , ## arg)
90c349dbc7Sjsg #define dev_err_once(dev, fmt, arg...)				\
91c349dbc7Sjsg 	printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid,	\
92c349dbc7Sjsg 	    __func__ , ## arg)
93c349dbc7Sjsg 
949342ba5eSkettenis #define dev_err_probe(dev, err, fmt, arg...)				\
959342ba5eSkettenis 	printf("drm:pid%d:%s *ERROR* " fmt, curproc->p_p->ps_pid,	\
969342ba5eSkettenis 	       __func__ , ## arg), err
979342ba5eSkettenis 
987f4dd379Sjsg #ifdef DRMDEBUG
997f4dd379Sjsg #define dev_info(dev, fmt, arg...)				\
1007f4dd379Sjsg 	printf("drm: " fmt, ## arg)
101ad8b1aafSjsg #define dev_info_once(dev, fmt, arg...)				\
102ad8b1aafSjsg 	printf("drm: " fmt, ## arg)
1037f4dd379Sjsg #define dev_dbg(dev, fmt, arg...)				\
1047f4dd379Sjsg 	printf("drm:pid%d:%s *DEBUG* " fmt, curproc->p_p->ps_pid,	\
1057f4dd379Sjsg 	    __func__ , ## arg)
1061bb76ff1Sjsg #define dev_dbg_once(dev, fmt, arg...)				\
1071bb76ff1Sjsg 	printf("drm:pid%d:%s *DEBUG* " fmt, curproc->p_p->ps_pid,	\
1081bb76ff1Sjsg 	    __func__ , ## arg)
1095ca02815Sjsg #define dev_dbg_ratelimited(dev, fmt, arg...)			\
1105ca02815Sjsg 	printf("drm:pid%d:%s *DEBUG* " fmt, curproc->p_p->ps_pid,	\
1115ca02815Sjsg 	    __func__ , ## arg)
1127f4dd379Sjsg #else
1133f7c134fSjsg 
1143f7c134fSjsg static inline void
1153f7c134fSjsg dev_info(struct device *dev, const char *fmt, ...)
1163f7c134fSjsg {
1173f7c134fSjsg }
1183f7c134fSjsg 
1193f7c134fSjsg static inline void
1203f7c134fSjsg dev_info_once(struct device *dev, const char *fmt, ...)
1213f7c134fSjsg {
1223f7c134fSjsg }
1233f7c134fSjsg 
1243f7c134fSjsg static inline void
1253f7c134fSjsg dev_dbg(struct device *dev, const char *fmt, ...)
1263f7c134fSjsg {
1273f7c134fSjsg }
1283f7c134fSjsg 
1293f7c134fSjsg static inline void
1303f7c134fSjsg dev_dbg_once(struct device *dev, const char *fmt, ...)
1313f7c134fSjsg {
1323f7c134fSjsg }
1333f7c134fSjsg 
1343f7c134fSjsg static inline void
1353f7c134fSjsg dev_dbg_ratelimited(struct device *dev, const char *fmt, ...)
1363f7c134fSjsg {
1373f7c134fSjsg }
1383f7c134fSjsg 
1397f4dd379Sjsg #endif
1407f4dd379Sjsg 
141c349dbc7Sjsg static inline const char *
142c349dbc7Sjsg dev_driver_string(struct device *dev)
143c349dbc7Sjsg {
144c349dbc7Sjsg 	return dev->dv_cfdata->cf_driver->cd_name;
145c349dbc7Sjsg }
146c349dbc7Sjsg 
14749e599b8Sjsg /* XXX return true for thunderbolt/USB4 */
14849e599b8Sjsg #define dev_is_removable(x)	false
14949e599b8Sjsg 
150c349dbc7Sjsg /* should be bus id as string, ie 0000:00:02.0 */
151c349dbc7Sjsg #define dev_name(dev)		""
152c349dbc7Sjsg 
153667382c7Skettenis static inline void
154667382c7Skettenis device_set_wakeup_path(struct device *dev)
155667382c7Skettenis {
156667382c7Skettenis }
157667382c7Skettenis 
1587f4dd379Sjsg #endif
159