device.h 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. #ifndef __NVIF_DEVICE_H__
  2. #define __NVIF_DEVICE_H__
  3. #include "object.h"
  4. #include "class.h"
  5. struct nvif_device {
  6. struct nvif_object base;
  7. struct nvif_object *object; /*XXX: hack for nvif_object() */
  8. struct nv_device_info_v0 info;
  9. };
  10. static inline struct nvif_device *
  11. nvif_device(struct nvif_object *object)
  12. {
  13. while (object && object->oclass != 0x0080 /*XXX: NV_DEVICE_CLASS*/ )
  14. object = object->parent;
  15. return (void *)object;
  16. }
  17. int nvif_device_init(struct nvif_object *, void (*dtor)(struct nvif_device *),
  18. u32 handle, u32 oclass, void *, u32,
  19. struct nvif_device *);
  20. void nvif_device_fini(struct nvif_device *);
  21. int nvif_device_new(struct nvif_object *, u32 handle, u32 oclass,
  22. void *, u32, struct nvif_device **);
  23. void nvif_device_ref(struct nvif_device *, struct nvif_device **);
  24. /*XXX*/
  25. #include <subdev/bios.h>
  26. #include <subdev/fb.h>
  27. #include <subdev/vm.h>
  28. #include <subdev/bar.h>
  29. #include <subdev/gpio.h>
  30. #include <subdev/clock.h>
  31. #include <subdev/i2c.h>
  32. #include <subdev/timer.h>
  33. #include <subdev/therm.h>
  34. #define nvkm_device(a) nv_device(nvkm_object((a)))
  35. #define nvkm_bios(a) nouveau_bios(nvkm_device(a))
  36. #define nvkm_fb(a) nouveau_fb(nvkm_device(a))
  37. #define nvkm_vmmgr(a) nouveau_vmmgr(nvkm_device(a))
  38. #define nvkm_bar(a) nouveau_bar(nvkm_device(a))
  39. #define nvkm_gpio(a) nouveau_gpio(nvkm_device(a))
  40. #define nvkm_clock(a) nouveau_clock(nvkm_device(a))
  41. #define nvkm_i2c(a) nouveau_i2c(nvkm_device(a))
  42. #define nvkm_timer(a) nouveau_timer(nvkm_device(a))
  43. #define nvkm_wait(a,b,c,d) nv_wait(nvkm_timer(a), (b), (c), (d))
  44. #define nvkm_wait_cb(a,b,c) nv_wait_cb(nvkm_timer(a), (b), (c))
  45. #define nvkm_therm(a) nouveau_therm(nvkm_device(a))
  46. #include <engine/device.h>
  47. #include <engine/fifo.h>
  48. #include <engine/graph.h>
  49. #include <engine/software.h>
  50. #define nvkm_fifo(a) nouveau_fifo(nvkm_device(a))
  51. #define nvkm_fifo_chan(a) ((struct nouveau_fifo_chan *)nvkm_object(a))
  52. #define nvkm_gr(a) ((struct nouveau_graph *)nouveau_engine(nvkm_object(a), NVDEV_ENGINE_GR))
  53. #endif