amd_nb.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #ifndef _ASM_X86_AMD_NB_H
  2. #define _ASM_X86_AMD_NB_H
  3. #include <linux/ioport.h>
  4. #include <linux/pci.h>
  5. struct amd_nb_bus_dev_range {
  6. u8 bus;
  7. u8 dev_base;
  8. u8 dev_limit;
  9. };
  10. extern const struct pci_device_id amd_nb_misc_ids[];
  11. extern const struct amd_nb_bus_dev_range amd_nb_bus_dev_ranges[];
  12. extern bool early_is_amd_nb(u32 value);
  13. extern struct resource *amd_get_mmconfig_range(struct resource *res);
  14. extern int amd_cache_northbridges(void);
  15. extern void amd_flush_garts(void);
  16. extern int amd_numa_init(void);
  17. extern int amd_get_subcaches(int);
  18. extern int amd_set_subcaches(int, int);
  19. struct amd_l3_cache {
  20. unsigned indices;
  21. u8 subcaches[4];
  22. };
  23. struct amd_northbridge {
  24. struct pci_dev *misc;
  25. struct pci_dev *link;
  26. struct amd_l3_cache l3_cache;
  27. };
  28. struct amd_northbridge_info {
  29. u16 num;
  30. u64 flags;
  31. struct amd_northbridge *nb;
  32. };
  33. extern struct amd_northbridge_info amd_northbridges;
  34. #define AMD_NB_GART BIT(0)
  35. #define AMD_NB_L3_INDEX_DISABLE BIT(1)
  36. #define AMD_NB_L3_PARTITIONING BIT(2)
  37. #ifdef CONFIG_AMD_NB
  38. static inline u16 amd_nb_num(void)
  39. {
  40. return amd_northbridges.num;
  41. }
  42. static inline bool amd_nb_has_feature(unsigned feature)
  43. {
  44. return ((amd_northbridges.flags & feature) == feature);
  45. }
  46. static inline struct amd_northbridge *node_to_amd_nb(int node)
  47. {
  48. return (node < amd_northbridges.num) ? &amd_northbridges.nb[node] : NULL;
  49. }
  50. #else
  51. #define amd_nb_num(x) 0
  52. #define amd_nb_has_feature(x) false
  53. #define node_to_amd_nb(x) NULL
  54. #endif
  55. #endif /* _ASM_X86_AMD_NB_H */