gf108.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * Copyright 2015 Samuel Pitoiset
  3. *
  4. * Permission is hereby granted, free of charge, to any person obtaining a
  5. * copy of this software and associated documentation files (the "Software"),
  6. * to deal in the Software without restriction, including without limitation
  7. * the rights to use, copy, modify, merge, publish, distribute, sublicense,
  8. * and/or sell copies of the Software, and to permit persons to whom the
  9. * Software is furnished to do so, subject to the following conditions:
  10. *
  11. * The above copyright notice and this permission notice shall be included in
  12. * all copies or substantial portions of the Software.
  13. *
  14. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
  17. * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
  18. * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
  19. * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  20. * OTHER DEALINGS IN THE SOFTWARE.
  21. *
  22. * Authors: Samuel Pitoiset
  23. */
  24. #include "gf100.h"
  25. static const struct nvkm_specdom
  26. gf108_pm_hub[] = {
  27. {}
  28. };
  29. static const struct nvkm_specdom
  30. gf108_pm_part[] = {
  31. { 0xe0, (const struct nvkm_specsig[]) {
  32. { 0x14, "part00_pbfb_00", gf100_pbfb_sources },
  33. { 0x15, "part00_pbfb_01", gf100_pbfb_sources },
  34. { 0x20, "part00_pbfb_02", gf100_pbfb_sources },
  35. { 0x21, "part00_pbfb_03", gf100_pbfb_sources },
  36. { 0x01, "part00_pmfb_00", gf100_pmfb_sources },
  37. { 0x04, "part00_pmfb_01", gf100_pmfb_sources },
  38. { 0x05, "part00_pmfb_02", gf100_pmfb_sources},
  39. { 0x07, "part00_pmfb_03", gf100_pmfb_sources },
  40. { 0x0d, "part00_pmfb_04", gf100_pmfb_sources },
  41. { 0x12, "part00_pmfb_05", gf100_pmfb_sources },
  42. { 0x13, "part00_pmfb_06", gf100_pmfb_sources },
  43. { 0x2c, "part00_pmfb_07", gf100_pmfb_sources },
  44. { 0x2d, "part00_pmfb_08", gf100_pmfb_sources },
  45. { 0x2e, "part00_pmfb_09", gf100_pmfb_sources },
  46. { 0x2f, "part00_pmfb_0a", gf100_pmfb_sources },
  47. { 0x30, "part00_pmfb_0b", gf100_pmfb_sources },
  48. {}
  49. }, &gf100_perfctr_func },
  50. {}
  51. };
  52. static const struct gf100_pm_func
  53. gf108_pm = {
  54. .doms_gpc = gf100_pm_gpc,
  55. .doms_hub = gf108_pm_hub,
  56. .doms_part = gf108_pm_part,
  57. };
  58. int
  59. gf108_pm_new(struct nvkm_device *device, int index, struct nvkm_pm **ppm)
  60. {
  61. return gf100_pm_new_(&gf108_pm, device, index, ppm);
  62. }