Subversion Repositories Kolibri OS

Rev

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

Rev 6088 Rev 6103
Line 72... Line 72...
72
    unsigned hdisplay, vdisplay;
72
    unsigned hdisplay, vdisplay;
73
    int stride;
73
    int stride;
74
    int ret;
74
    int ret;
75
 
75
 
Line 76... Line -...
76
ENTER();
-
 
77
 
-
 
78
    drm_modeset_lock_all(dev);
76
    drm_modeset_lock_all(dev);
Line 79... Line 77...
79
 
77
 
80
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
78
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
81
    {
79
    {
Line 204... Line 202...
204
                   fb->width, fb->height, crtc);
202
                   fb->width, fb->height, crtc);
205
 
203
 
Line 206... Line 204...
206
    drm_modeset_unlock_all(dev);
204
    drm_modeset_unlock_all(dev);
Line 207... Line -...
207
 
-
 
208
LEAVE();
-
 
209
 
205
 
210
    return ret;
206
    return ret;
Line 211... Line 207...
211
}
207
}
212
 
208
 
Line 221... Line 217...
221
    char  con_edid[128];
217
    char  con_edid[128];
222
    int stride;
218
    int stride;
223
    int ret;
219
    int ret;
224
 
220
 
Line 225... Line -...
225
ENTER();
-
 
226
 
-
 
227
    drm_modeset_lock_all(dev);
221
    drm_modeset_lock_all(dev);
Line 228... Line 222...
228
 
222
 
229
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
223
    list_for_each_entry(tmpc, &dev->mode_config.connector_list, head)
230
    {
224
    {
Line 320... Line 314...
320
                   fb->width, fb->height, connector->encoder->crtc);
314
                   fb->width, fb->height, connector->encoder->crtc);
321
 
315
 
Line 322... Line 316...
322
    drm_modeset_unlock_all(dev);
316
    drm_modeset_unlock_all(dev);
Line 323... Line -...
323
 
-
 
324
LEAVE();
-
 
325
 
317
 
326
    return ret;
318
    return ret;
Line 327... Line 319...
327
}
319
}
328
 
320
 
Line 420... Line 412...
420
 
412
 
421
static int choose_config(struct drm_device *dev, struct drm_connector **boot_connector,
413
static int choose_config(struct drm_device *dev, struct drm_connector **boot_connector,
422
                  struct drm_crtc **boot_crtc)
414
                  struct drm_crtc **boot_crtc)
423
{
-
 
424
    const struct drm_connector_helper_funcs *connector_funcs;
415
{
425
    struct drm_connector *connector = NULL;
-
 
426
    struct drm_encoder   *encoder = NULL;
-
 
Line 427... Line 416...
427
    struct drm_crtc      *crtc = NULL;
416
    struct drm_connector *connector;
428
 
417
 
429
    if((i915.cmdline_mode != NULL) && (*i915.cmdline_mode != 0))
418
    if((i915.cmdline_mode != NULL) && (*i915.cmdline_mode != 0))
430
    {
419
    {
Line 449... Line 438...
449
 
438
 
Line 450... Line 439...
450
    return -ENOENT;
439
    return -ENOENT;
451
};
440
};
Line -... Line 441...
-
 
441
 
452
 
442
 
453
static int get_boot_mode(struct drm_connector *connector, videomode_t *usermode)
443
static int get_boot_mode(struct drm_connector *connector, videomode_t *usermode)
454
{
444
{
Line 455... Line 445...
455
    struct drm_display_mode *mode;
445
    struct drm_display_mode *mode;
Line 479... Line 469...
479
    cursor_t  *cursor;
469
    cursor_t  *cursor;
480
    u32      ifl;
470
    u32      ifl;
481
    int       ret;
471
    int       ret;
Line 482... Line -...
482
 
-
 
483
ENTER();
-
 
484
 
472
 
485
    mutex_lock(&dev->mode_config.mutex);
473
    mutex_lock(&dev->mode_config.mutex);
486
    ret = choose_config(dev, &connector, &crtc);
474
    ret = choose_config(dev, &connector, &crtc);
487
    if(ret)
475
    if(ret)
488
    {
476
    {
Line 569... Line 557...
569
#ifdef __HWA__
557
#ifdef __HWA__
570
    err = init_bitmaps();
558
    err = init_bitmaps();
571
#endif
559
#endif
Line 572... Line -...
572
 
-
 
573
    LEAVE();
-
 
574
 
560
 
575
    return ret;
561
    return ret;
Line 576... Line 562...
576
};
562
};
577
 
563
 
578
 
564
 
579
int set_cmdline_mode_ext(struct drm_device *dev, const char *cmdline)
565
int set_cmdline_mode_ext(struct drm_device *dev, const char *cmdline)
580
{
566
{
581
    struct drm_connector_helper_funcs *connector_funcs;
567
    struct drm_connector_helper_funcs *connector_funcs;
582
    struct drm_connector    *connector;
568
    struct drm_connector    *connector;
583
    struct drm_cmdline_mode cmd_mode;
569
    struct drm_cmdline_mode cmd_mode = {0};
584
    struct drm_display_mode *mode;
570
    struct drm_display_mode *mode;
Line 585... Line -...
585
    char *mode_option;
-
 
586
    int retval = 0;
571
    char *mode_option;
587
    char  con_edid[128];
572
    int retval = 0;
Line 588... Line 573...
588
 
573
    char  con_edid[128];
589
ENTER();
574
 
Line 602... Line 587...
602
        return EINVAL;
587
        return EINVAL;
603
 
588
 
Line 604... Line 589...
604
    mode_option++;
589
    mode_option++;
Line 605... Line -...
605
 
-
 
606
    __builtin_memset(&cmd_mode, 0, sizeof(cmd_mode));
-
 
607
 
590
 
608
    if( !drm_mode_parse_command_line_for_connector(mode_option, connector, &cmd_mode))
591
    if( !drm_mode_parse_command_line_for_connector(mode_option, connector, &cmd_mode))
Line 609... Line 592...
609
        return EINVAL;
592
        return EINVAL;
610
 
593
 
Line 631... Line 614...
631
    retval = set_mode_ex(dev, connector, mode);
614
    retval = set_mode_ex(dev, connector, mode);
Line 632... Line 615...
632
 
615
 
Line 633... Line -...
633
    drm_mode_destroy(dev, mode);
-
 
634
 
616
    drm_mode_destroy(dev, mode);
635
LEAVE();
617
 
Line -... Line 618...
-
 
618
    return retval;
-
 
619
}
-
 
620
 
-
 
621
void list_connectors(struct drm_device *dev)
-
 
622
{
-
 
623
    struct drm_connector *connector;
-
 
624
    char  con_edid[128];
-
 
625
 
-
 
626
    mutex_lock(&dev->mode_config.mutex);
-
 
627
    list_for_each_entry(connector, &dev->mode_config.connector_list, head)
-
 
628
    {
-
 
629
        if( connector->status != connector_status_connected)
-
 
630
            continue;
-
 
631
 
-
 
632
        memcpy(con_edid, connector->edid_blob_ptr->data, 128);
-
 
633
 
-
 
634
        if(connector ==  os_display->connector)
-
 
635
        {
-
 
636
            printf("%s mode %dx%d connected %s model %x serial number %u\n",
-
 
637
                   connector->name, os_display->width, os_display->height,
-
 
638
                   manufacturer_name(con_edid + 0x08),
-
 
639
                   (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
-
 
640
                   (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
-
 
641
                   + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
-
 
642
            continue;
-
 
643
        }
-
 
644
        else
-
 
645
        {
-
 
646
            printf("%s connected: %s model %x serial number %u\n",
-
 
647
                connector->name, manufacturer_name(con_edid + 0x08),
-
 
648
                (unsigned short)(con_edid[0x0A] + (con_edid[0x0B] << 8)),
-
 
649
                (unsigned int)(con_edid[0x0C] + (con_edid[0x0D] << 8)
-
 
650
                + (con_edid[0x0E] << 16) + (con_edid[0x0F] << 24)));
-
 
651
        }
-
 
652
    };
-
 
653
    mutex_unlock(&dev->mode_config.mutex);
-
 
654
}
-
 
655
 
-
 
656
int list_connector_modes(struct drm_device *dev, const char* name)
-
 
657
{
-
 
658
    struct drm_connector *connector;
-
 
659
    struct drm_display_mode  *drmmode;
-
 
660
 
-
 
661
    mutex_lock(&dev->mode_config.mutex);
-
 
662
 
-
 
663
    connector = get_cmdline_connector(dev, name);
-
 
664
    if(connector == NULL)
-
 
665
    {
-
 
666
        mutex_unlock(&dev->mode_config.mutex);
-
 
667
        return EINVAL;
-
 
668
    };
-
 
669
 
-
 
670
    printf("connector %s probed modes :\n", connector->name);
-
 
671
 
-
 
672
    list_for_each_entry(drmmode, &connector->modes, head)
-
 
673
    {
-
 
674
        printf("%dx%d@%d\n", drmmode->hdisplay, drmmode->vdisplay, drm_mode_vrefresh(drmmode));
-
 
675
    };
-
 
676
 
-
 
677
    mutex_unlock(&dev->mode_config.mutex);
636
    return retval;
678
    return 0;
637
}
679
};
638
 
680
 
Line 639... Line 681...
639
int get_videomodes(videomode_t *mode, int *count)
681
int get_videomodes(videomode_t *mode, int *count)