Subversion Repositories Kolibri OS

Rev

Rev 6084 | Rev 6103 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6084 Rev 6088
Line 32... Line 32...
32
 
32
 
Line 33... Line 33...
33
void disable_mouse(void)
33
void disable_mouse(void)
34
{};
34
{};
Line -... Line 35...
-
 
35
 
Line 35... Line 36...
35
 
36
struct mutex cursor_lock;
36
 
37
 
37
static char *manufacturer_name(unsigned char *x)
38
static char *manufacturer_name(unsigned char *x)
Line 45... Line 46...
45
 
46
 
Line 46... Line 47...
46
    return name;
47
    return name;
47
}
48
}
Line -... Line 49...
-
 
49
 
-
 
50
static int count_connector_modes(struct drm_connector* connector)
-
 
51
{
-
 
52
    struct drm_display_mode  *mode;
-
 
53
    int count = 0;
-
 
54
 
-
 
55
    list_for_each_entry(mode, &connector->modes, head)
-
 
56
        count++;
-
 
57
 
-
 
58
    return count;
-
 
59
};
48
 
60
 
49
static int set_mode(struct drm_device *dev, struct drm_connector *connector,
61
static int set_mode(struct drm_device *dev, struct drm_connector *connector,
50
                    struct drm_crtc *crtc, videomode_t *reqmode, bool strict)
62
                    struct drm_crtc *crtc, videomode_t *reqmode, bool strict)
51
{
63
{
Line 52... Line 64...
52
    struct drm_i915_private *dev_priv   = dev->dev_private;
64
    struct drm_i915_private *dev_priv   = dev->dev_private;
53
 
65
 
-
 
66
    struct drm_mode_config  *config     = &dev->mode_config;
54
    struct drm_mode_config  *config     = &dev->mode_config;
67
    struct drm_display_mode *mode       = NULL, *tmpmode;
55
    struct drm_display_mode *mode       = NULL, *tmpmode;
68
    struct drm_connector    *tmpc;
56
    struct drm_framebuffer  *fb         = NULL;
69
    struct drm_framebuffer  *fb         = NULL;
57
    struct drm_mode_set     set;
70
    struct drm_mode_set     set;
58
    const char *con_name;
71
    const char *con_name;
Line 63... Line 76...
63
ENTER();
76
ENTER();
Line 64... Line 77...
64
 
77
 
Line -... Line 78...
-
 
78
    drm_modeset_lock_all(dev);
-
 
79
 
-
 
80
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
-
 
81
    {
-
 
82
        const struct drm_connector_funcs *f = tmpc->funcs;
-
 
83
        if(tmpc == connector)
-
 
84
            continue;
-
 
85
        f->dpms(tmpc, DRM_MODE_DPMS_OFF);
65
    drm_modeset_lock_all(dev);
86
    };
66
 
87
 
67
    list_for_each_entry(tmpmode, &connector->modes, head)
88
    list_for_each_entry(tmpmode, &connector->modes, head)
68
    {
89
    {
69
        if( (tmpmode->hdisplay == reqmode->width)  &&
90
        if( (tmpmode->hdisplay == reqmode->width)  &&
Line 93... Line 114...
93
    return -1;
114
    return -1;
Line 94... Line 115...
94
 
115
 
Line -... Line 116...
-
 
116
do_set:
95
do_set:
117
 
Line -... Line 118...
-
 
118
 
-
 
119
    con_name = connector->name;
-
 
120
 
-
 
121
    char  con_edid[128];
-
 
122
 
-
 
123
    memcpy(con_edid, connector->edid_blob_ptr->data, 128);
-
 
124
    DRM_DEBUG_KMS("Manufacturer: %s Model %x Serial Number %u\n",
-
 
125
            manufacturer_name(con_edid + 0x08),
-
 
126
            (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
96
 
127
            (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
97
    con_name = connector->name;
128
            + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
98
 
129
 
Line 99... Line 130...
99
    DRM_DEBUG_KMS("set mode %d %d: crtc %d connector %s\n",
130
    DRM_DEBUG_KMS("set mode %d %d: crtc %d connector %s\n",
Line 178... Line 209...
178
 
209
 
Line 179... Line 210...
179
    return ret;
210
    return ret;
180
}
211
}
Line 181... Line 212...
181
 
212
 
-
 
213
static int set_mode_ex(struct drm_device *dev,
182
static int count_connector_modes(struct drm_connector* connector)
214
                       struct drm_connector *connector, struct drm_display_mode *mode)
-
 
215
{
183
{
216
    struct drm_i915_private *dev_priv = dev->dev_private;
-
 
217
    struct drm_connector    *tmpc;
-
 
218
    struct drm_mode_config  *config   = &dev->mode_config;
-
 
219
    struct drm_framebuffer  *fb       = NULL;
-
 
220
    struct drm_mode_set     set;
184
    struct drm_display_mode  *mode;
221
    char  con_edid[128];
-
 
222
    int stride;
Line -... Line 223...
-
 
223
    int ret;
-
 
224
 
-
 
225
ENTER();
-
 
226
 
185
    int count = 0;
227
    drm_modeset_lock_all(dev);
186
 
228
 
-
 
229
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
-
 
230
    {
187
    list_for_each_entry(mode, &connector->modes, head)
231
        const struct drm_connector_funcs *f = tmpc->funcs;
-
 
232
        if(tmpc == connector)
188
    {
233
            continue;
-
 
234
        f->dpms(tmpc, DRM_MODE_DPMS_OFF);
-
 
235
    };
-
 
236
 
-
 
237
    drm_mode_set_crtcinfo(mode, CRTC_INTERLACE_HALVE_V);
-
 
238
 
-
 
239
    fb = connector->encoder->crtc->primary->fb;
-
 
240
    if(fb == NULL)
-
 
241
        fb = main_framebuffer;
-
 
242
 
-
 
243
    fb->width  = mode->hdisplay;
-
 
244
    fb->height = mode->vdisplay;;
-
 
245
 
-
 
246
    main_fb_obj->tiling_mode = I915_TILING_X;
-
 
247
 
-
 
248
    if( main_fb_obj->tiling_mode == I915_TILING_X)
-
 
249
    {
-
 
250
        if(IS_GEN3(dev))
-
 
251
            for (stride = 512; stride < mode->hdisplay * 4; stride <<= 1);
-
 
252
        else
-
 
253
            stride = ALIGN(mode->hdisplay * 4, 512);
-
 
254
    }
-
 
255
    else
-
 
256
    {
-
 
257
        stride = ALIGN(mode->hdisplay * 4, 64);
-
 
258
    }
-
 
259
 
-
 
260
    fb->pitches[0]  =
-
 
261
    fb->pitches[1]  =
-
 
262
    fb->pitches[2]  =
-
 
263
    fb->pitches[3]  = stride;
-
 
264
 
-
 
265
    main_fb_obj->stride  = stride;
-
 
266
 
-
 
267
    fb->bits_per_pixel = 32;
-
 
268
    fb->depth = 24;
-
 
269
 
-
 
270
    connector->encoder->crtc->enabled = true;
-
 
271
 
-
 
272
    i915_gem_object_put_fence(main_fb_obj);
-
 
273
 
-
 
274
    memcpy(con_edid, connector->edid_blob_ptr->data, 128);
-
 
275
    DRM_DEBUG_KMS("set mode %dx%d: crtc %d connector %s\n"
-
 
276
                  "monitor: %s model %x serial number %u\n",
-
 
277
                fb->width, fb->height,
-
 
278
                connector->encoder->crtc->base.id, connector->name,
-
 
279
                manufacturer_name(con_edid + 0x08),
-
 
280
                (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
-
 
281
                (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
-
 
282
                + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
-
 
283
 
-
 
284
    DRM_DEBUG_KMS("use framebuffer %p %dx%d pitch %d format %x\n",
-
 
285
            fb,fb->width,fb->height,fb->pitches[0],fb->pixel_format);
-
 
286
 
-
 
287
    set.crtc = connector->encoder->crtc;
-
 
288
    set.x = 0;
-
 
289
    set.y = 0;
-
 
290
    set.mode = mode;
-
 
291
    set.connectors = &connector;
-
 
292
    set.num_connectors = 1;
-
 
293
    set.fb = fb;
-
 
294
 
-
 
295
    ret = drm_mode_set_config_internal(&set);
-
 
296
    if ( !ret )
-
 
297
    {
-
 
298
        struct drm_crtc *crtc = os_display->crtc;
-
 
299
 
-
 
300
        os_display->width    = fb->width;
-
 
301
        os_display->height   = fb->height;
-
 
302
        os_display->vrefresh = drm_mode_vrefresh(mode);
-
 
303
 
-
 
304
        sysSetScreen(fb->width, fb->height, fb->pitches[0]);
-
 
305
 
-
 
306
        os_display->connector = connector;
-
 
307
        os_display->crtc = connector->encoder->crtc;
-
 
308
        os_display->supported_modes = count_connector_modes(connector);
-
 
309
 
-
 
310
        crtc->cursor_x = os_display->width/2;
-
 
311
        crtc->cursor_y = os_display->height/2;
-
 
312
 
-
 
313
        select_cursor_kms(os_display->cursor);
-
 
314
 
-
 
315
        DRM_DEBUG_KMS("new mode %d x %d pitch %d\n",
-
 
316
                       fb->width, fb->height, fb->pitches[0]);
-
 
317
    }
-
 
318
    else
-
 
319
        DRM_ERROR(" failed to set mode %d_%d on crtc %p\n",
-
 
320
                   fb->width, fb->height, connector->encoder->crtc);
-
 
321
 
-
 
322
    drm_modeset_unlock_all(dev);
-
 
323
 
189
        count++;
324
LEAVE();
-
 
325
 
-
 
326
    return ret;
-
 
327
}
-
 
328
 
-
 
329
static int set_cmdline_mode(struct drm_device *dev, struct drm_connector *connector)
-
 
330
{
-
 
331
    struct drm_display_mode *mode;
-
 
332
    int retval;
-
 
333
 
-
 
334
    mode = drm_mode_create_from_cmdline_mode(dev, &connector->cmdline_mode);
-
 
335
    if(mode == NULL)
-
 
336
        return EINVAL;
-
 
337
 
-
 
338
    retval = set_mode_ex(dev, connector, mode);
-
 
339
 
190
    };
340
    drm_mode_destroy(dev, mode);
Line 191... Line 341...
191
    return count;
341
    return retval;
192
};
342
};
193
 
343
 
Line 208... Line 358...
208
    };
358
    };
209
    return NULL;
359
    return NULL;
210
};
360
};
211
 
361
 
Line 212... Line 362...
212
static int choose_config(struct drm_device *dev, struct drm_connector **boot_connector,
362
static int check_connector(struct drm_device *dev, struct drm_connector *connector)
213
                  struct drm_crtc **boot_crtc)
-
 
214
{
363
{
215
    struct drm_connector_helper_funcs *connector_funcs;
364
    const struct drm_connector_helper_funcs *connector_funcs;
216
    struct drm_connector *connector;
-
 
217
    struct drm_encoder   *encoder;
365
    struct drm_encoder   *encoder;
218
    struct drm_crtc      *crtc;
366
    struct drm_crtc      *crtc;
Line 219... Line -...
219
 
-
 
220
    list_for_each_entry(connector, &dev->mode_config.connector_list, head)
-
 
221
    {
367
 
222
        if( connector->status != connector_status_connected)
368
    if( connector->status != connector_status_connected)
Line 223... Line 369...
223
            continue;
369
        return -EINVAL;
Line 224... Line 370...
224
 
370
 
225
        encoder = connector->encoder;
371
    encoder = connector->encoder;
Line 232... Line 378...
232
            if( encoder == NULL)
378
        if( encoder == NULL)
233
            {
379
        {
234
                DRM_DEBUG_KMS("CONNECTOR %s ID: %d no active encoders\n",
380
            DRM_DEBUG_KMS("CONNECTOR %s ID: %d no active encoders\n",
235
                        connector->name, connector->base.id);
381
            connector->name, connector->base.id);
236
                continue;
382
            return -EINVAL;
237
            };
383
        };
238
        }
384
    }
Line 239... Line 385...
239
 
385
 
240
        crtc = encoder->crtc;
386
    crtc = encoder->crtc;
241
        if(crtc == NULL)
387
    if(crtc == NULL)
Line 242... Line 388...
242
            crtc = get_possible_crtc(dev, encoder);
388
        crtc = get_possible_crtc(dev, encoder);
243
 
389
 
244
        if(crtc != NULL)
390
    if(crtc != NULL)
245
        {
391
    {
-
 
392
        encoder->crtc = crtc;
-
 
393
        return 0;
-
 
394
    }
-
 
395
    else
-
 
396
        DRM_DEBUG_KMS("No CRTC for encoder %d\n", encoder->base.id);
Line 246... Line -...
246
            *boot_connector = connector;
-
 
247
            *boot_crtc = crtc;
397
    return -EINVAL;
248
 
-
 
-
 
398
}
249
            DRM_DEBUG_KMS("CONNECTOR %s ID:%d status:%d ENCODER %p ID: %d CRTC %p ID:%d\n",
399
 
Line -... Line 400...
-
 
400
static struct drm_connector* get_cmdline_connector(struct drm_device *dev, const char *cmdline)
-
 
401
{
250
                           connector->name, connector->base.id, connector->status,
402
    struct drm_connector *connector;
-
 
403
 
-
 
404
    list_for_each_entry(connector, &dev->mode_config.connector_list, head)
-
 
405
    {
-
 
406
        int name_len = __builtin_strlen(connector->name);
251
                           encoder, encoder->base.id, crtc, crtc->base.id );
407
 
-
 
408
        if (name_len == 0)
-
 
409
            continue;
252
            char  con_edid[128];
410
 
-
 
411
        if (__builtin_strncmp(connector->name, cmdline, name_len))
-
 
412
            continue;
-
 
413
 
-
 
414
        if(check_connector(dev, connector) == 0)
-
 
415
            return connector;
-
 
416
    }
253
 
417
    return NULL;
254
            memcpy(con_edid, connector->edid_blob_ptr->data, 128);
418
}
-
 
419
 
255
            printf("Manufacturer: %s Model %x Serial Number %u\n",
420
 
-
 
421
static int choose_config(struct drm_device *dev, struct drm_connector **boot_connector,
-
 
422
                  struct drm_crtc **boot_crtc)
-
 
423
{
Line -... Line 424...
-
 
424
    const struct drm_connector_helper_funcs *connector_funcs;
-
 
425
    struct drm_connector *connector = NULL;
-
 
426
    struct drm_encoder   *encoder = NULL;
-
 
427
    struct drm_crtc      *crtc = NULL;
-
 
428
 
-
 
429
    if((i915.cmdline_mode != NULL) && (*i915.cmdline_mode != 0))
-
 
430
    {
256
                    manufacturer_name(con_edid + 0x08),
431
        connector = get_cmdline_connector(dev, i915.cmdline_mode);
257
                    (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
432
        if(connector != NULL)
258
                    (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
433
        {
259
                    + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
-
 
Line -... Line 434...
-
 
434
            *boot_connector = connector;
-
 
435
            *boot_crtc = connector->encoder->crtc;
-
 
436
            return 0;
-
 
437
        }
-
 
438
    }
-
 
439
 
-
 
440
    list_for_each_entry(connector, &dev->mode_config.connector_list, head)
-
 
441
    {
260
 
442
        if(check_connector(dev, connector) == 0)
Line 261... Line 443...
261
            return 0;
443
        {
262
        }
444
            *boot_connector = connector;
Line 273... Line 455...
273
    struct drm_display_mode *mode;
455
    struct drm_display_mode *mode;
274
 
456
 
Line 275... Line 457...
275
    list_for_each_entry(mode, &connector->modes, head)
457
    list_for_each_entry(mode, &connector->modes, head)
276
    {
458
    {
277
        DRM_DEBUG_KMS("check mode w:%d h:%d %dHz\n",
-
 
278
                mode->hdisplay, mode->vdisplay,
-
 
279
                drm_mode_vrefresh(mode));
-
 
280
 
-
 
281
        if( os_display->width  == mode->hdisplay &&
459
        if( os_display->width  == mode->hdisplay &&
282
            os_display->height == mode->vdisplay &&
460
            os_display->height == mode->vdisplay &&
283
            drm_mode_vrefresh(mode) == 60)
461
            drm_mode_vrefresh(mode) == 60)
284
        {
462
        {
285
            usermode->width  = os_display->width;
463
            usermode->width  = os_display->width;
Line 303... Line 481...
303
    int       ret;
481
    int       ret;
304
 
482
 
Line 305... Line 483...
305
ENTER();
483
ENTER();
Line 306... Line -...
306
 
-
 
307
    mutex_lock(&dev->struct_mutex);
484
 
308
    mutex_lock(&dev->mode_config.mutex);
-
 
309
 
485
    mutex_lock(&dev->mode_config.mutex);
310
    ret = choose_config(dev, &connector, &crtc);
486
    ret = choose_config(dev, &connector, &crtc);
311
    if(ret)
487
    if(ret)
312
    {
-
 
313
        DRM_DEBUG_KMS("No active connectors!\n");
488
    {
-
 
489
        mutex_unlock(&dev->mode_config.mutex);
314
        mutex_unlock(&dev->mode_config.mutex);
490
        DRM_DEBUG_KMS("No active connectors!\n");
315
        return -1;
491
        return -1;
Line 316... Line 492...
316
    };
492
    };
317
 
493
 
Line 332... Line 508...
332
    os_display = GetDisplay();
508
    os_display = GetDisplay();
333
    os_display->ddev = dev;
509
    os_display->ddev = dev;
334
    os_display->connector = connector;
510
    os_display->connector = connector;
335
    os_display->crtc = crtc;
511
    os_display->crtc = crtc;
336
 
-
 
337
    os_display->supported_modes = count_connector_modes(connector);
512
    os_display->supported_modes = count_connector_modes(connector);
-
 
513
    mutex_unlock(&dev->mode_config.mutex);
-
 
514
 
-
 
515
    mutex_init(&cursor_lock);
-
 
516
    mutex_lock(&dev->struct_mutex);
Line 338... Line 517...
338
 
517
 
339
    ifl = safe_cli();
518
    ifl = safe_cli();
340
    {
519
    {
341
        list_for_each_entry(cursor, &os_display->cursors, list)
520
        list_for_each_entry(cursor, &os_display->cursors, list)
Line 357... Line 536...
357
        select_cursor_kms(os_display->cursor);
536
        select_cursor_kms(os_display->cursor);
358
    };
537
    };
359
    safe_sti(ifl);
538
    safe_sti(ifl);
Line -... Line 539...
-
 
539
 
-
 
540
    mutex_unlock(&dev->struct_mutex);
-
 
541
 
-
 
542
    ret = -1;
-
 
543
 
-
 
544
    if(connector->cmdline_mode.specified == true)
-
 
545
        ret = set_cmdline_mode(dev, connector);
-
 
546
 
-
 
547
    if(ret !=0)
-
 
548
    {
-
 
549
        mutex_lock(&dev->mode_config.mutex);
360
 
550
 
361
    if( (usermode->width == 0) ||
551
        if( (usermode->width == 0) ||
362
        (usermode->height == 0))
552
            (usermode->height == 0))
363
    {
553
        {
364
        if( !get_boot_mode(connector, usermode))
554
            if( !get_boot_mode(connector, usermode))
Line 370... Line 560...
370
            usermode->height = mode->vdisplay;
560
                usermode->height = mode->vdisplay;
371
            usermode->freq   = drm_mode_vrefresh(mode);
561
                usermode->freq   = drm_mode_vrefresh(mode);
372
        };
562
            };
373
    };
563
        };
374
 
564
        mutex_unlock(&dev->mode_config.mutex);
375
    mutex_unlock(&dev->mode_config.mutex);
-
 
376
    mutex_unlock(&dev->struct_mutex);
565
 
377
 
-
 
Line 378... Line 566...
378
    set_mode(dev, os_display->connector, os_display->crtc, usermode, false);
566
        set_mode(dev, os_display->connector, os_display->crtc, usermode, false);
-
 
567
    };
Line 379... Line 568...
379
 
568
 
380
#ifdef __HWA__
569
#ifdef __HWA__
381
    err = init_bitmaps();
570
    err = init_bitmaps();
Line 382... Line 571...
382
#endif
571
#endif
Line 383... Line 572...
383
 
572
 
384
    LEAVE();
573
    LEAVE();
Line -... Line 574...
-
 
574
 
-
 
575
    return ret;
-
 
576
};
-
 
577
 
-
 
578
 
-
 
579
int set_cmdline_mode_ext(struct drm_device *dev, const char *cmdline)
-
 
580
{
-
 
581
    struct drm_connector_helper_funcs *connector_funcs;
-
 
582
    struct drm_connector    *connector;
-
 
583
    struct drm_cmdline_mode cmd_mode;
-
 
584
    struct drm_display_mode *mode;
-
 
585
    char *mode_option;
-
 
586
    int retval = 0;
-
 
587
    char  con_edid[128];
-
 
588
 
-
 
589
ENTER();
-
 
590
    if((cmdline == NULL) || (*cmdline == 0))
-
 
591
        return EINVAL;
-
 
592
 
-
 
593
    mutex_lock(&dev->mode_config.mutex);
-
 
594
    connector = get_cmdline_connector(dev, cmdline);
-
 
595
    mutex_unlock(&dev->mode_config.mutex);
-
 
596
 
-
 
597
    if(connector == NULL)
-
 
598
        return EINVAL;
-
 
599
 
-
 
600
    mode_option = __builtin_strchr(cmdline,':');
-
 
601
    if(mode_option == NULL)
-
 
602
        return EINVAL;
-
 
603
 
-
 
604
    mode_option++;
-
 
605
 
-
 
606
    __builtin_memset(&cmd_mode, 0, sizeof(cmd_mode));
-
 
607
 
-
 
608
    if( !drm_mode_parse_command_line_for_connector(mode_option, connector, &cmd_mode))
-
 
609
        return EINVAL;
-
 
610
 
-
 
611
    DRM_DEBUG_KMS("cmdline mode for connector %s %dx%d@%dHz%s%s%s\n",
-
 
612
                   connector->name,
-
 
613
                   cmd_mode.xres, cmd_mode.yres,
-
 
614
                   cmd_mode.refresh_specified ? cmd_mode.refresh : 60,
-
 
615
                   cmd_mode.rb ? " reduced blanking" : "",
-
 
616
                   cmd_mode.margins ? " with margins" : "",
-
 
617
                   cmd_mode.interlace ?  " interlaced" : "");
-
 
618
 
-
 
619
    mode = drm_mode_create_from_cmdline_mode(dev, &cmd_mode);
-
 
620
    if(mode == NULL)
-
 
621
        return EINVAL;
-
 
622
 
-
 
623
    memcpy(con_edid, connector->edid_blob_ptr->data, 128);
-
 
624
    DRM_DEBUG_KMS("connector: %s monitor: %s model %x serial number %u\n",
-
 
625
            connector->name,
-
 
626
            manufacturer_name(con_edid + 0x08),
-
 
627
            (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
-
 
628
            (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
-
 
629
            + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
-
 
630
 
-
 
631
    retval = set_mode_ex(dev, connector, mode);
-
 
632
 
-
 
633
    drm_mode_destroy(dev, mode);
385
 
634
 
386
    return 0;
635
LEAVE();
387
};
636
    return retval;
Line 388... Line 637...
388
 
637
}
Line 569... Line 818...
569
 
818
 
Line 570... Line 819...
570
    cursor_t *old;
819
    cursor_t *old;
Line 571... Line 820...
571
 
820
 
572
    old = os_display->cursor;
-
 
Line -... Line 821...
-
 
821
    old = os_display->cursor;
-
 
822
 
573
    os_display->cursor = cursor;
823
    mutex_lock(&cursor_lock);
Line 574... Line 824...
574
 
824
 
575
//    intel_crtc->cursor_bo = cursor->cobj;
825
    os_display->cursor = cursor;
576
 
826
 
577
    if (!dev_priv->info.cursor_needs_physical)
827
    if (!dev_priv->info.cursor_needs_physical)
Line 578... Line 828...
578
       intel_crtc->cursor_addr = i915_gem_obj_ggtt_offset(cursor->cobj);
828
       intel_crtc->cursor_addr = i915_gem_obj_ggtt_offset(cursor->cobj);
579
    else
829
    else
580
        intel_crtc->cursor_addr = (addr_t)cursor->cobj;
830
        intel_crtc->cursor_addr = (addr_t)cursor->cobj;
-
 
831
 
Line 581... Line 832...
581
 
832
	intel_crtc->base.cursor->state->crtc_w = 64;
582
	intel_crtc->base.cursor->state->crtc_w = 64;
833
	intel_crtc->base.cursor->state->crtc_h = 64;
583
	intel_crtc->base.cursor->state->crtc_h = 64;
834
    intel_crtc->base.cursor->state->rotation = 0;