nouveau_pm.h revision f3fbaf34e2b1459eab248c5f0180928e7861120b
1330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs/*
2330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * Copyright 2010 Red Hat Inc.
3330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs *
4330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * Permission is hereby granted, free of charge, to any person obtaining a
5330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * copy of this software and associated documentation files (the "Software"),
6330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * to deal in the Software without restriction, including without limitation
7330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * the rights to use, copy, modify, merge, publish, distribute, sublicense,
8330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * and/or sell copies of the Software, and to permit persons to whom the
9330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * Software is furnished to do so, subject to the following conditions:
10330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs *
11330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * The above copyright notice and this permission notice shall be included in
12330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * all copies or substantial portions of the Software.
13330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs *
14330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
17330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
18330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * OTHER DEALINGS IN THE SOFTWARE.
21330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs *
22330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs * Authors: Ben Skeggs
23330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs */
24330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs
25330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs#ifndef __NOUVEAU_PM_H__
26330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs#define __NOUVEAU_PM_H__
27330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs
28330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs/* nouveau_pm.c */
29330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsint  nouveau_pm_init(struct drm_device *dev);
30330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsvoid nouveau_pm_fini(struct drm_device *dev);
3164f1c11a477cb76e1572ee0793234739e045b3d5Ben Skeggsvoid nouveau_pm_resume(struct drm_device *dev);
32330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs
33330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs/* nouveau_volt.c */
34330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsvoid nouveau_volt_init(struct drm_device *);
35330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsvoid nouveau_volt_fini(struct drm_device *);
36330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsint  nouveau_volt_vid_lookup(struct drm_device *, int voltage);
37330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsint  nouveau_volt_lvl_lookup(struct drm_device *, int vid);
38330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsint  nouveau_voltage_gpio_get(struct drm_device *);
39330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsint  nouveau_voltage_gpio_set(struct drm_device *, int voltage);
40330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs
41330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs/* nouveau_perf.c */
42330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsvoid nouveau_perf_init(struct drm_device *);
43330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggsvoid nouveau_perf_fini(struct drm_device *);
44330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs
457760fcb020b41352af4e675ce65a6aa0e93c170fRoy Spliet/* nouveau_mem.c */
467760fcb020b41352af4e675ce65a6aa0e93c170fRoy Splietvoid nouveau_mem_timing_init(struct drm_device *);
477760fcb020b41352af4e675ce65a6aa0e93c170fRoy Splietvoid nouveau_mem_timing_fini(struct drm_device *);
487760fcb020b41352af4e675ce65a6aa0e93c170fRoy Spliet
49442b626ece6fbbe7f52c03a09f85ae5755f29eabBen Skeggs/* nv04_pm.c */
50442b626ece6fbbe7f52c03a09f85ae5755f29eabBen Skeggsint nv04_pm_clock_get(struct drm_device *, u32 id);
515c6dc6575460a0afe56d8cae7666e769e08ef942Ben Skeggsvoid *nv04_pm_clock_pre(struct drm_device *, struct nouveau_pm_level *,
525c6dc6575460a0afe56d8cae7666e769e08ef942Ben Skeggs			u32 id, int khz);
53442b626ece6fbbe7f52c03a09f85ae5755f29eabBen Skeggsvoid nv04_pm_clock_set(struct drm_device *, void *);
54442b626ece6fbbe7f52c03a09f85ae5755f29eabBen Skeggs
551262a206da7d28340dfce954e31bd5fe5ae9e2ddBen Skeggs/* nv40_pm.c */
561262a206da7d28340dfce954e31bd5fe5ae9e2ddBen Skeggsint nv40_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
571262a206da7d28340dfce954e31bd5fe5ae9e2ddBen Skeggsvoid *nv40_pm_clocks_pre(struct drm_device *, struct nouveau_pm_level *);
58dd1da8de172057b36860f427777ecfa293bb8f6cMartin Peresint nv40_pm_clocks_set(struct drm_device *, void *);
59693461801464eb65eb779261b3d9d80dc9131f81Ben Skeggsint nv40_pm_pwm_get(struct drm_device *, struct dcb_gpio_entry *, u32*, u32*);
60693461801464eb65eb779261b3d9d80dc9131f81Ben Skeggsint nv40_pm_pwm_set(struct drm_device *, struct dcb_gpio_entry *, u32, u32);
611262a206da7d28340dfce954e31bd5fe5ae9e2ddBen Skeggs
6202c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggs/* nv50_pm.c */
63f3fbaf34e2b1459eab248c5f0180928e7861120bBen Skeggsint nv50_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
64f3fbaf34e2b1459eab248c5f0180928e7861120bBen Skeggsvoid *nv50_pm_clocks_pre(struct drm_device *, struct nouveau_pm_level *);
65f3fbaf34e2b1459eab248c5f0180928e7861120bBen Skeggsint nv50_pm_clocks_set(struct drm_device *, void *);
665a4267ab14b392bdf43893c6175b045b5f85d53dBen Skeggsint nv50_pm_pwm_get(struct drm_device *, struct dcb_gpio_entry *, u32*, u32*);
675a4267ab14b392bdf43893c6175b045b5f85d53dBen Skeggsint nv50_pm_pwm_set(struct drm_device *, struct dcb_gpio_entry *, u32, u32);
6802c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggs
69fade7ad56d929e168ead0f75e591468afa2fe97cBen Skeggs/* nva3_pm.c */
70ca94a71fc4d99c99871dfca528a88aab1557641cBen Skeggsint nva3_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
71ca94a71fc4d99c99871dfca528a88aab1557641cBen Skeggsvoid *nva3_pm_clocks_pre(struct drm_device *, struct nouveau_pm_level *);
72dd1da8de172057b36860f427777ecfa293bb8f6cMartin Peresint nva3_pm_clocks_set(struct drm_device *, void *);
73fade7ad56d929e168ead0f75e591468afa2fe97cBen Skeggs
74354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggs/* nvc0_pm.c */
75354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggsint nvc0_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
76354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggs
7734e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peres/* nouveau_temp.c */
7834e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_init(struct drm_device *dev);
7934e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_fini(struct drm_device *dev);
8034e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_safety_checks(struct drm_device *dev);
818155cac489eb8cc6fd96b9bdefacdf5a56e6ea32Francisco Jerezint nv40_temp_get(struct drm_device *dev);
828155cac489eb8cc6fd96b9bdefacdf5a56e6ea32Francisco Jerezint nv84_temp_get(struct drm_device *dev);
8334e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peres
84330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs#endif
85