~ubuntu-branches/ubuntu/precise/mesa/precise-updates

« back to all changes in this revision

Viewing changes to src/gallium/targets/xorg-r600/xorg.c

  • Committer: Package Import Robot
  • Author(s): Robert Hooker
  • Date: 2012-02-02 12:05:48 UTC
  • mfrom: (1.7.1) (3.3.27 sid)
  • Revision ID: package-import@ubuntu.com-20120202120548-nvkma85jq0h4coix
Tags: 8.0~rc2-0ubuntu4
Drop drisearchdir handling, it is no longer needed with multiarch
and dri-alternates being removed.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2008 Tungsten Graphics, Inc., Cedar Park, Texas.
 
3
 * All Rights Reserved.
 
4
 *
 
5
 * Permission is hereby granted, free of charge, to any person obtaining a
 
6
 * copy of this software and associated documentation files (the
 
7
 * "Software"), to deal in the Software without restriction, including
 
8
 * without limitation the rights to use, copy, modify, merge, publish,
 
9
 * distribute, sub license, and/or sell copies of the Software, and to
 
10
 * permit persons to whom the Software is furnished to do so, subject to
 
11
 * the following conditions:
 
12
 *
 
13
 * The above copyright notice and this permission notice (including the
 
14
 * next paragraph) shall be included in all copies or substantial portions
 
15
 * of the Software.
 
16
 *
 
17
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
 
18
 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 
19
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
 
20
 * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
 
21
 * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
 
22
 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
 
23
 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
24
 *
 
25
 *
 
26
 * Author: Alan Hourihane <alanh@tungstengraphics.com>
 
27
 * Author: Jakob Bornecrantz <wallbraker@gmail.com>
 
28
 * Author: Corbin Simpson <MostAwesomedude@gmail.com>
 
29
 *
 
30
 */
 
31
 
 
32
#include "../../state_trackers/xorg/xorg_winsys.h"
 
33
 
 
34
static void r600_xorg_identify(int flags);
 
35
static Bool r600_xorg_pci_probe(DriverPtr driver,
 
36
                                 int entity_num,
 
37
                                 struct pci_device *device,
 
38
                                 intptr_t match_data);
 
39
 
 
40
static const struct pci_id_match r600_xorg_device_match[] = {
 
41
    {0x1002, PCI_MATCH_ANY, PCI_MATCH_ANY, PCI_MATCH_ANY, 0, 0, 0},
 
42
    {0, 0, 0},
 
43
};
 
44
 
 
45
static SymTabRec r600_xorg_chipsets[] = {
 
46
    {PCI_MATCH_ANY, "AMD R6xx Graphics Chipset"},
 
47
    {-1, NULL}
 
48
};
 
49
 
 
50
static PciChipsets r600_xorg_pci_devices[] = {
 
51
    {PCI_MATCH_ANY, PCI_MATCH_ANY, NULL},
 
52
    {-1, -1, NULL}
 
53
};
 
54
 
 
55
static XF86ModuleVersionInfo r600_xorg_version = {
 
56
    "r600g",
 
57
    MODULEVENDORSTRING,
 
58
    MODINFOSTRING1,
 
59
    MODINFOSTRING2,
 
60
    XORG_VERSION_CURRENT,
 
61
    0, 1, 0, /* major, minor, patch */
 
62
    ABI_CLASS_VIDEODRV,
 
63
    ABI_VIDEODRV_VERSION,
 
64
    MOD_CLASS_VIDEODRV,
 
65
    {0, 0, 0, 0}
 
66
};
 
67
 
 
68
/*
 
69
 * Xorg driver exported structures
 
70
 */
 
71
 
 
72
_X_EXPORT DriverRec r600_driver = {
 
73
    1,
 
74
    "r600g",
 
75
    r600_xorg_identify,
 
76
    NULL,
 
77
    xorg_tracker_available_options,
 
78
    NULL,
 
79
    0,
 
80
    NULL,
 
81
    r600_xorg_device_match,
 
82
    r600_xorg_pci_probe
 
83
};
 
84
 
 
85
static MODULESETUPPROTO(r600_xorg_setup);
 
86
 
 
87
_X_EXPORT XF86ModuleData r600gModuleData = {
 
88
    &r600_xorg_version,
 
89
    r600_xorg_setup,
 
90
    NULL
 
91
};
 
92
 
 
93
/*
 
94
 * Xorg driver functions
 
95
 */
 
96
 
 
97
static pointer
 
98
r600_xorg_setup(pointer module, pointer opts, int *errmaj, int *errmin)
 
99
{
 
100
    static Bool setupDone = 0;
 
101
 
 
102
    /* This module should be loaded only once, but check to be sure.
 
103
     */
 
104
    if (!setupDone) {
 
105
        setupDone = 1;
 
106
        xf86AddDriver(&r600_driver, module, HaveDriverFuncs);
 
107
 
 
108
        /*
 
109
         * The return value must be non-NULL on success even though there
 
110
         * is no TearDownProc.
 
111
         */
 
112
        return (pointer) 1;
 
113
    } else {
 
114
        if (errmaj)
 
115
            *errmaj = LDR_ONCEONLY;
 
116
        return NULL;
 
117
    }
 
118
}
 
119
 
 
120
static void
 
121
r600_xorg_identify(int flags)
 
122
{
 
123
    xf86PrintChipsets("r600", "Driver for R6xx Gallium with KMS",
 
124
                      r600_xorg_chipsets);
 
125
}
 
126
 
 
127
static Bool
 
128
r600_xorg_pci_probe(DriverPtr driver,
 
129
          int entity_num, struct pci_device *device, intptr_t match_data)
 
130
{
 
131
    ScrnInfoPtr scrn = NULL;
 
132
    EntityInfoPtr entity;
 
133
 
 
134
    scrn = xf86ConfigPciEntity(scrn, 0, entity_num, r600_xorg_pci_devices,
 
135
                               NULL, NULL, NULL, NULL, NULL);
 
136
    if (scrn != NULL) {
 
137
        scrn->driverVersion = 1;
 
138
        scrn->driverName = "r600";
 
139
        scrn->name = "R600G";
 
140
        scrn->Probe = NULL;
 
141
 
 
142
        entity = xf86GetEntityInfo(entity_num);
 
143
 
 
144
        /* Use all the functions from the xorg tracker */
 
145
        xorg_tracker_set_functions(scrn);
 
146
    }
 
147
    return scrn != NULL;
 
148
}