pci.h 1.6 KB

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