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) |