nouveau_pm.h revision 354d0781e5cef1f227ee3064cb65053365177d3b
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
5502c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggs/* nv50_pm.c */
5602c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggsint nv50_pm_clock_get(struct drm_device *, u32 id);
575c6dc6575460a0afe56d8cae7666e769e08ef942Ben Skeggsvoid *nv50_pm_clock_pre(struct drm_device *, struct nouveau_pm_level *,
585c6dc6575460a0afe56d8cae7666e769e08ef942Ben Skeggs			u32 id, int khz);
5902c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggsvoid nv50_pm_clock_set(struct drm_device *, void *);
6002c30ca0a1d6d8b878fc32f47b3b25192ef4a8efBen Skeggs
61fade7ad56d929e168ead0f75e591468afa2fe97cBen Skeggs/* nva3_pm.c */
62ca94a71fc4d99c99871dfca528a88aab1557641cBen Skeggsint nva3_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
63ca94a71fc4d99c99871dfca528a88aab1557641cBen Skeggsvoid *nva3_pm_clocks_pre(struct drm_device *, struct nouveau_pm_level *);
64ca94a71fc4d99c99871dfca528a88aab1557641cBen Skeggsvoid nva3_pm_clocks_set(struct drm_device *, void *);
65fade7ad56d929e168ead0f75e591468afa2fe97cBen Skeggs
66354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggs/* nvc0_pm.c */
67354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggsint nvc0_pm_clocks_get(struct drm_device *, struct nouveau_pm_level *);
68354d0781e5cef1f227ee3064cb65053365177d3bBen Skeggs
6934e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peres/* nouveau_temp.c */
7034e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_init(struct drm_device *dev);
7134e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_fini(struct drm_device *dev);
7234e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peresvoid nouveau_temp_safety_checks(struct drm_device *dev);
738155cac489eb8cc6fd96b9bdefacdf5a56e6ea32Francisco Jerezint nv40_temp_get(struct drm_device *dev);
748155cac489eb8cc6fd96b9bdefacdf5a56e6ea32Francisco Jerezint nv84_temp_get(struct drm_device *dev);
7534e9d85a1aae28b090ec4e72a0f98a5483c198c4Martin Peres
76330c5988ee78045e6a731c3693251aaa5b0d14e3Ben Skeggs#endif
77