pci.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #ifndef __NVKM_PCI_H__
  2. #define __NVKM_PCI_H__
  3. #include <core/subdev.h>
  4. enum nvkm_pcie_speed {
  5. NVKM_PCIE_SPEED_2_5,
  6. NVKM_PCIE_SPEED_5_0,
  7. NVKM_PCIE_SPEED_8_0,
  8. };
  9. struct nvkm_pci {
  10. const struct nvkm_pci_func *func;
  11. struct nvkm_subdev subdev;
  12. struct pci_dev *pdev;
  13. int irq;
  14. struct {
  15. struct agp_bridge_data *bridge;
  16. u32 mode;
  17. u64 base;
  18. u64 size;
  19. int mtrr;
  20. bool cma;
  21. bool acquired;
  22. } agp;
  23. struct {
  24. enum nvkm_pcie_speed speed;
  25. u8 width;
  26. } pcie;
  27. bool msi;
  28. };
  29. u32 nvkm_pci_rd32(struct nvkm_pci *, u16 addr);
  30. void nvkm_pci_wr08(struct nvkm_pci *, u16 addr, u8 data);
  31. void nvkm_pci_wr32(struct nvkm_pci *, u16 addr, u32 data);
  32. u32 nvkm_pci_mask(struct nvkm_pci *, u16 addr, u32 mask, u32 value);
  33. void nvkm_pci_rom_shadow(struct nvkm_pci *, bool shadow);
  34. int nv04_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  35. int nv40_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  36. int nv46_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  37. int nv4c_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  38. int g84_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  39. int g92_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  40. int g94_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  41. int gf100_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  42. int gf106_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  43. int gk104_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  44. int gp100_pci_new(struct nvkm_device *, int, struct nvkm_pci **);
  45. /* pcie functions */
  46. int nvkm_pcie_set_link(struct nvkm_pci *, enum nvkm_pcie_speed, u8 width);
  47. #endif