| @@ -696,54 +696,58 @@ static const struct drm_connector_funcs | | | @@ -696,54 +696,58 @@ static const struct drm_connector_funcs |
696 | .set_property = intel_crt_set_property, | | 696 | .set_property = intel_crt_set_property, |
697 | }; | | 697 | }; |
698 | | | 698 | |
699 | static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs = { | | 699 | static const struct drm_connector_helper_funcs intel_crt_connector_helper_funcs = { |
700 | .mode_valid = intel_crt_mode_valid, | | 700 | .mode_valid = intel_crt_mode_valid, |
701 | .get_modes = intel_crt_get_modes, | | 701 | .get_modes = intel_crt_get_modes, |
702 | .best_encoder = intel_best_encoder, | | 702 | .best_encoder = intel_best_encoder, |
703 | }; | | 703 | }; |
704 | | | 704 | |
705 | static const struct drm_encoder_funcs intel_crt_enc_funcs = { | | 705 | static const struct drm_encoder_funcs intel_crt_enc_funcs = { |
706 | .destroy = intel_encoder_destroy, | | 706 | .destroy = intel_encoder_destroy, |
707 | }; | | 707 | }; |
708 | | | 708 | |
| | | 709 | #ifndef __NetBSD__ /* XXX dmi hack */ |
709 | static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) | | 710 | static int __init intel_no_crt_dmi_callback(const struct dmi_system_id *id) |
710 | { | | 711 | { |
711 | DRM_INFO("Skipping CRT initialization for %s\n", id->ident); | | 712 | DRM_INFO("Skipping CRT initialization for %s\n", id->ident); |
712 | return 1; | | 713 | return 1; |
713 | } | | 714 | } |
714 | | | 715 | |
715 | static const struct dmi_system_id intel_no_crt[] = { | | 716 | static const struct dmi_system_id intel_no_crt[] = { |
716 | { | | 717 | { |
717 | .callback = intel_no_crt_dmi_callback, | | 718 | .callback = intel_no_crt_dmi_callback, |
718 | .ident = "ACER ZGB", | | 719 | .ident = "ACER ZGB", |
719 | .matches = { | | 720 | .matches = { |
720 | DMI_MATCH(DMI_SYS_VENDOR, "ACER"), | | 721 | DMI_MATCH(DMI_SYS_VENDOR, "ACER"), |
721 | DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), | | 722 | DMI_MATCH(DMI_PRODUCT_NAME, "ZGB"), |
722 | }, | | 723 | }, |
723 | }, | | 724 | }, |
724 | { } | | 725 | { } |
725 | }; | | 726 | }; |
| | | 727 | #endif |
726 | | | 728 | |
727 | void intel_crt_init(struct drm_device *dev) | | 729 | void intel_crt_init(struct drm_device *dev) |
728 | { | | 730 | { |
729 | struct drm_connector *connector; | | 731 | struct drm_connector *connector; |
730 | struct intel_crt *crt; | | 732 | struct intel_crt *crt; |
731 | struct intel_connector *intel_connector; | | 733 | struct intel_connector *intel_connector; |
732 | struct drm_i915_private *dev_priv = dev->dev_private; | | 734 | struct drm_i915_private *dev_priv = dev->dev_private; |
733 | | | 735 | |
| | | 736 | #ifndef __NetBSD__ /* XXX dmi hack */ |
734 | /* Skip machines without VGA that falsely report hotplug events */ | | 737 | /* Skip machines without VGA that falsely report hotplug events */ |
735 | if (dmi_check_system(intel_no_crt)) | | 738 | if (dmi_check_system(intel_no_crt)) |
736 | return; | | 739 | return; |
| | | 740 | #endif |
737 | | | 741 | |
738 | crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL); | | 742 | crt = kzalloc(sizeof(struct intel_crt), GFP_KERNEL); |
739 | if (!crt) | | 743 | if (!crt) |
740 | return; | | 744 | return; |
741 | | | 745 | |
742 | intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); | | 746 | intel_connector = kzalloc(sizeof(struct intel_connector), GFP_KERNEL); |
743 | if (!intel_connector) { | | 747 | if (!intel_connector) { |
744 | kfree(crt); | | 748 | kfree(crt); |
745 | return; | | 749 | return; |
746 | } | | 750 | } |
747 | | | 751 | |
748 | connector = &intel_connector->base; | | 752 | connector = &intel_connector->base; |
749 | drm_connector_init(dev, &intel_connector->base, | | 753 | drm_connector_init(dev, &intel_connector->base, |