Rev 1179 | Rev 1233 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1179 | Rev 1221 | ||
---|---|---|---|
Line 24... | Line 24... | ||
24 | * Alex Deucher |
24 | * Alex Deucher |
25 | */ |
25 | */ |
26 | #include "drmP.h" |
26 | #include "drmP.h" |
27 | #include "drm_edid.h" |
27 | #include "drm_edid.h" |
28 | #include "drm_crtc_helper.h" |
28 | #include "drm_crtc_helper.h" |
- | 29 | #include "drm_fb_helper.h" |
|
29 | #include "radeon_drm.h" |
30 | #include "radeon_drm.h" |
30 | #include "radeon.h" |
31 | #include "radeon.h" |
31 | #include "atom.h" |
32 | #include "atom.h" |
Line 32... | Line 33... | ||
32 | 33 | ||
Line 243... | Line 244... | ||
243 | continue; |
244 | continue; |
244 | } |
245 | } |
245 | if (common_modes[i].w < 320 || common_modes[i].h < 200) |
246 | if (common_modes[i].w < 320 || common_modes[i].h < 200) |
246 | continue; |
247 | continue; |
Line 247... | Line 248... | ||
247 | 248 | ||
248 | mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h, 60, false, false); |
249 | mode = drm_cvt_mode(dev, common_modes[i].w, common_modes[i].h, 60, false, false, false); |
249 | drm_mode_probed_add(connector, mode); |
250 | drm_mode_probed_add(connector, mode); |
250 | } |
251 | } |
Line 251... | Line 252... | ||
251 | } |
252 | } |
Line 557... | Line 558... | ||
557 | if (rdev->family >= CHIP_RS600) |
558 | if (rdev->family >= CHIP_RS600) |
558 | /* add scaled modes */ |
559 | /* add scaled modes */ |
559 | radeon_add_common_modes(encoder, connector); |
560 | radeon_add_common_modes(encoder, connector); |
560 | else { |
561 | else { |
561 | /* only 800x600 is supported right now on pre-avivo chips */ |
562 | /* only 800x600 is supported right now on pre-avivo chips */ |
562 | tv_mode = drm_cvt_mode(dev, 800, 600, 60, false, false); |
563 | tv_mode = drm_cvt_mode(dev, 800, 600, 60, false, false, false); |
563 | tv_mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; |
564 | tv_mode->type = DRM_MODE_TYPE_DRIVER | DRM_MODE_TYPE_PREFERRED; |
564 | drm_mode_probed_add(connector, tv_mode); |
565 | drm_mode_probed_add(connector, tv_mode); |
565 | } |
566 | } |
566 | return 1; |
567 | return 1; |
567 | } |
568 | } |
Line 741... | Line 742... | ||
741 | return encoder; |
742 | return encoder; |
742 | } |
743 | } |
743 | return NULL; |
744 | return NULL; |
744 | } |
745 | } |
Line -... | Line 746... | ||
- | 746 | ||
- | 747 | static void radeon_dvi_force(struct drm_connector *connector) |
|
- | 748 | { |
|
- | 749 | struct radeon_connector *radeon_connector = to_radeon_connector(connector); |
|
- | 750 | if (connector->force == DRM_FORCE_ON) |
|
- | 751 | radeon_connector->use_digital = false; |
|
- | 752 | if (connector->force == DRM_FORCE_ON_DIGITAL) |
|
- | 753 | radeon_connector->use_digital = true; |
|
- | 754 | } |
|
745 | 755 | ||
746 | struct drm_connector_helper_funcs radeon_dvi_connector_helper_funcs = { |
756 | struct drm_connector_helper_funcs radeon_dvi_connector_helper_funcs = { |
747 | .get_modes = radeon_dvi_get_modes, |
757 | .get_modes = radeon_dvi_get_modes, |
748 | .mode_valid = radeon_vga_mode_valid, |
758 | .mode_valid = radeon_vga_mode_valid, |
749 | .best_encoder = radeon_dvi_encoder, |
759 | .best_encoder = radeon_dvi_encoder, |
Line 753... | Line 763... | ||
753 | .dpms = drm_helper_connector_dpms, |
763 | .dpms = drm_helper_connector_dpms, |
754 | .detect = radeon_dvi_detect, |
764 | .detect = radeon_dvi_detect, |
755 | .fill_modes = drm_helper_probe_single_connector_modes, |
765 | .fill_modes = drm_helper_probe_single_connector_modes, |
756 | .set_property = radeon_connector_set_property, |
766 | .set_property = radeon_connector_set_property, |
757 | .destroy = radeon_connector_destroy, |
767 | .destroy = radeon_connector_destroy, |
- | 768 | .force = radeon_dvi_force, |
|
758 | }; |
769 | }; |
Line 759... | Line 770... | ||
759 | 770 | ||
760 | void |
771 | void |
761 | radeon_add_atom_connector(struct drm_device *dev, |
772 | radeon_add_atom_connector(struct drm_device *dev, |
Line 769... | Line 780... | ||
769 | struct radeon_device *rdev = dev->dev_private; |
780 | struct radeon_device *rdev = dev->dev_private; |
770 | struct drm_connector *connector; |
781 | struct drm_connector *connector; |
771 | struct radeon_connector *radeon_connector; |
782 | struct radeon_connector *radeon_connector; |
772 | struct radeon_connector_atom_dig *radeon_dig_connector; |
783 | struct radeon_connector_atom_dig *radeon_dig_connector; |
773 | uint32_t subpixel_order = SubPixelNone; |
784 | uint32_t subpixel_order = SubPixelNone; |
- | 785 | int ret; |
|
Line 774... | Line 786... | ||
774 | 786 | ||
775 | /* fixme - tv/cv/din */ |
787 | /* fixme - tv/cv/din */ |
776 | if (connector_type == DRM_MODE_CONNECTOR_Unknown) |
788 | if (connector_type == DRM_MODE_CONNECTOR_Unknown) |
Line 794... | Line 806... | ||
794 | radeon_connector->connector_id = connector_id; |
806 | radeon_connector->connector_id = connector_id; |
795 | radeon_connector->devices = supported_device; |
807 | radeon_connector->devices = supported_device; |
796 | switch (connector_type) { |
808 | switch (connector_type) { |
797 | case DRM_MODE_CONNECTOR_VGA: |
809 | case DRM_MODE_CONNECTOR_VGA: |
798 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
810 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
799 | drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
811 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
- | 812 | if (ret) |
|
- | 813 | goto failed; |
|
800 | if (i2c_bus->valid) { |
814 | if (i2c_bus->valid) { |
801 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA"); |
815 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA"); |
802 | if (!radeon_connector->ddc_bus) |
816 | if (!radeon_connector->ddc_bus) |
803 | goto failed; |
817 | goto failed; |
804 | } |
818 | } |
- | 819 | radeon_connector->dac_load_detect = true; |
|
805 | drm_connector_attach_property(&radeon_connector->base, |
820 | drm_connector_attach_property(&radeon_connector->base, |
806 | rdev->mode_info.load_detect_property, |
821 | rdev->mode_info.load_detect_property, |
807 | 1); |
822 | 1); |
808 | break; |
823 | break; |
809 | case DRM_MODE_CONNECTOR_DVIA: |
824 | case DRM_MODE_CONNECTOR_DVIA: |
810 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
825 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
811 | drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
826 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
- | 827 | if (ret) |
|
- | 828 | goto failed; |
|
812 | if (i2c_bus->valid) { |
829 | if (i2c_bus->valid) { |
813 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
830 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
814 | if (!radeon_connector->ddc_bus) |
831 | if (!radeon_connector->ddc_bus) |
815 | goto failed; |
832 | goto failed; |
816 | } |
833 | } |
- | 834 | radeon_connector->dac_load_detect = true; |
|
817 | drm_connector_attach_property(&radeon_connector->base, |
835 | drm_connector_attach_property(&radeon_connector->base, |
818 | rdev->mode_info.load_detect_property, |
836 | rdev->mode_info.load_detect_property, |
819 | 1); |
837 | 1); |
820 | break; |
838 | break; |
821 | case DRM_MODE_CONNECTOR_DVII: |
839 | case DRM_MODE_CONNECTOR_DVII: |
Line 825... | Line 843... | ||
825 | goto failed; |
843 | goto failed; |
826 | radeon_dig_connector->linkb = linkb; |
844 | radeon_dig_connector->linkb = linkb; |
827 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
845 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
828 | radeon_connector->con_priv = radeon_dig_connector; |
846 | radeon_connector->con_priv = radeon_dig_connector; |
829 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
847 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
830 | drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
848 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
- | 849 | if (ret) |
|
- | 850 | goto failed; |
|
831 | if (i2c_bus->valid) { |
851 | if (i2c_bus->valid) { |
832 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
852 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
833 | if (!radeon_connector->ddc_bus) |
853 | if (!radeon_connector->ddc_bus) |
834 | goto failed; |
854 | goto failed; |
835 | } |
855 | } |
836 | subpixel_order = SubPixelHorizontalRGB; |
856 | subpixel_order = SubPixelHorizontalRGB; |
837 | drm_connector_attach_property(&radeon_connector->base, |
857 | drm_connector_attach_property(&radeon_connector->base, |
838 | rdev->mode_info.coherent_mode_property, |
858 | rdev->mode_info.coherent_mode_property, |
839 | 1); |
859 | 1); |
- | 860 | radeon_connector->dac_load_detect = true; |
|
840 | drm_connector_attach_property(&radeon_connector->base, |
861 | drm_connector_attach_property(&radeon_connector->base, |
841 | rdev->mode_info.load_detect_property, |
862 | rdev->mode_info.load_detect_property, |
842 | 1); |
863 | 1); |
843 | break; |
864 | break; |
844 | case DRM_MODE_CONNECTOR_HDMIA: |
865 | case DRM_MODE_CONNECTOR_HDMIA: |
Line 848... | Line 869... | ||
848 | goto failed; |
869 | goto failed; |
849 | radeon_dig_connector->linkb = linkb; |
870 | radeon_dig_connector->linkb = linkb; |
850 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
871 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
851 | radeon_connector->con_priv = radeon_dig_connector; |
872 | radeon_connector->con_priv = radeon_dig_connector; |
852 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
873 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
853 | drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
874 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
- | 875 | if (ret) |
|
- | 876 | goto failed; |
|
854 | if (i2c_bus->valid) { |
877 | if (i2c_bus->valid) { |
855 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "HDMI"); |
878 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "HDMI"); |
856 | if (!radeon_connector->ddc_bus) |
879 | if (!radeon_connector->ddc_bus) |
857 | goto failed; |
880 | goto failed; |
858 | } |
881 | } |
Line 867... | Line 890... | ||
867 | goto failed; |
890 | goto failed; |
868 | radeon_dig_connector->linkb = linkb; |
891 | radeon_dig_connector->linkb = linkb; |
869 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
892 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
870 | radeon_connector->con_priv = radeon_dig_connector; |
893 | radeon_connector->con_priv = radeon_dig_connector; |
871 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
894 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
872 | drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
895 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
- | 896 | if (ret) |
|
- | 897 | goto failed; |
|
873 | if (i2c_bus->valid) { |
898 | if (i2c_bus->valid) { |
874 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP"); |
899 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DP"); |
875 | if (!radeon_connector->ddc_bus) |
900 | if (!radeon_connector->ddc_bus) |
876 | goto failed; |
901 | goto failed; |
877 | } |
902 | } |
Line 880... | Line 905... | ||
880 | case DRM_MODE_CONNECTOR_SVIDEO: |
905 | case DRM_MODE_CONNECTOR_SVIDEO: |
881 | case DRM_MODE_CONNECTOR_Composite: |
906 | case DRM_MODE_CONNECTOR_Composite: |
882 | case DRM_MODE_CONNECTOR_9PinDIN: |
907 | case DRM_MODE_CONNECTOR_9PinDIN: |
883 | if (radeon_tv == 1) { |
908 | if (radeon_tv == 1) { |
884 | drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type); |
909 | drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type); |
885 | drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); |
910 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); |
886 | } |
911 | if (ret) |
- | 912 | goto failed; |
|
- | 913 | radeon_connector->dac_load_detect = true; |
|
887 | drm_connector_attach_property(&radeon_connector->base, |
914 | drm_connector_attach_property(&radeon_connector->base, |
888 | rdev->mode_info.load_detect_property, |
915 | rdev->mode_info.load_detect_property, |
889 | 1); |
916 | 1); |
- | 917 | } |
|
890 | break; |
918 | break; |
891 | case DRM_MODE_CONNECTOR_LVDS: |
919 | case DRM_MODE_CONNECTOR_LVDS: |
892 | radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); |
920 | radeon_dig_connector = kzalloc(sizeof(struct radeon_connector_atom_dig), GFP_KERNEL); |
893 | if (!radeon_dig_connector) |
921 | if (!radeon_dig_connector) |
894 | goto failed; |
922 | goto failed; |
895 | radeon_dig_connector->linkb = linkb; |
923 | radeon_dig_connector->linkb = linkb; |
896 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
924 | radeon_dig_connector->igp_lane_info = igp_lane_info; |
897 | radeon_connector->con_priv = radeon_dig_connector; |
925 | radeon_connector->con_priv = radeon_dig_connector; |
898 | drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type); |
926 | drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type); |
899 | drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); |
927 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); |
- | 928 | if (ret) |
|
- | 929 | goto failed; |
|
900 | if (i2c_bus->valid) { |
930 | if (i2c_bus->valid) { |
901 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS"); |
931 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS"); |
902 | if (!radeon_connector->ddc_bus) |
932 | if (!radeon_connector->ddc_bus) |
903 | goto failed; |
933 | goto failed; |
904 | } |
934 | } |
Line 930... | Line 960... | ||
930 | { |
960 | { |
931 | struct radeon_device *rdev = dev->dev_private; |
961 | struct radeon_device *rdev = dev->dev_private; |
932 | struct drm_connector *connector; |
962 | struct drm_connector *connector; |
933 | struct radeon_connector *radeon_connector; |
963 | struct radeon_connector *radeon_connector; |
934 | uint32_t subpixel_order = SubPixelNone; |
964 | uint32_t subpixel_order = SubPixelNone; |
- | 965 | int ret; |
|
Line 935... | Line 966... | ||
935 | 966 | ||
936 | /* fixme - tv/cv/din */ |
967 | /* fixme - tv/cv/din */ |
937 | if (connector_type == DRM_MODE_CONNECTOR_Unknown) |
968 | if (connector_type == DRM_MODE_CONNECTOR_Unknown) |
Line 955... | Line 986... | ||
955 | radeon_connector->connector_id = connector_id; |
986 | radeon_connector->connector_id = connector_id; |
956 | radeon_connector->devices = supported_device; |
987 | radeon_connector->devices = supported_device; |
957 | switch (connector_type) { |
988 | switch (connector_type) { |
958 | case DRM_MODE_CONNECTOR_VGA: |
989 | case DRM_MODE_CONNECTOR_VGA: |
959 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
990 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
960 | drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
991 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
- | 992 | if (ret) |
|
- | 993 | goto failed; |
|
961 | if (i2c_bus->valid) { |
994 | if (i2c_bus->valid) { |
962 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA"); |
995 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "VGA"); |
963 | if (!radeon_connector->ddc_bus) |
996 | if (!radeon_connector->ddc_bus) |
964 | goto failed; |
997 | goto failed; |
965 | } |
998 | } |
- | 999 | radeon_connector->dac_load_detect = true; |
|
966 | drm_connector_attach_property(&radeon_connector->base, |
1000 | drm_connector_attach_property(&radeon_connector->base, |
967 | rdev->mode_info.load_detect_property, |
1001 | rdev->mode_info.load_detect_property, |
968 | 1); |
1002 | 1); |
969 | break; |
1003 | break; |
970 | case DRM_MODE_CONNECTOR_DVIA: |
1004 | case DRM_MODE_CONNECTOR_DVIA: |
971 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
1005 | drm_connector_init(dev, &radeon_connector->base, &radeon_vga_connector_funcs, connector_type); |
972 | drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
1006 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_vga_connector_helper_funcs); |
- | 1007 | if (ret) |
|
- | 1008 | goto failed; |
|
973 | if (i2c_bus->valid) { |
1009 | if (i2c_bus->valid) { |
974 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
1010 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
975 | if (!radeon_connector->ddc_bus) |
1011 | if (!radeon_connector->ddc_bus) |
976 | goto failed; |
1012 | goto failed; |
977 | } |
1013 | } |
- | 1014 | radeon_connector->dac_load_detect = true; |
|
978 | drm_connector_attach_property(&radeon_connector->base, |
1015 | drm_connector_attach_property(&radeon_connector->base, |
979 | rdev->mode_info.load_detect_property, |
1016 | rdev->mode_info.load_detect_property, |
980 | 1); |
1017 | 1); |
981 | break; |
1018 | break; |
982 | case DRM_MODE_CONNECTOR_DVII: |
1019 | case DRM_MODE_CONNECTOR_DVII: |
983 | case DRM_MODE_CONNECTOR_DVID: |
1020 | case DRM_MODE_CONNECTOR_DVID: |
984 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
1021 | drm_connector_init(dev, &radeon_connector->base, &radeon_dvi_connector_funcs, connector_type); |
985 | drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
1022 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_dvi_connector_helper_funcs); |
- | 1023 | if (ret) |
|
- | 1024 | goto failed; |
|
986 | if (i2c_bus->valid) { |
1025 | if (i2c_bus->valid) { |
987 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
1026 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "DVI"); |
988 | if (!radeon_connector->ddc_bus) |
1027 | if (!radeon_connector->ddc_bus) |
989 | goto failed; |
1028 | goto failed; |
- | 1029 | radeon_connector->dac_load_detect = true; |
|
990 | drm_connector_attach_property(&radeon_connector->base, |
1030 | drm_connector_attach_property(&radeon_connector->base, |
991 | rdev->mode_info.load_detect_property, |
1031 | rdev->mode_info.load_detect_property, |
992 | 1); |
1032 | 1); |
993 | } |
1033 | } |
994 | subpixel_order = SubPixelHorizontalRGB; |
1034 | subpixel_order = SubPixelHorizontalRGB; |
Line 996... | Line 1036... | ||
996 | case DRM_MODE_CONNECTOR_SVIDEO: |
1036 | case DRM_MODE_CONNECTOR_SVIDEO: |
997 | case DRM_MODE_CONNECTOR_Composite: |
1037 | case DRM_MODE_CONNECTOR_Composite: |
998 | case DRM_MODE_CONNECTOR_9PinDIN: |
1038 | case DRM_MODE_CONNECTOR_9PinDIN: |
999 | if (radeon_tv == 1) { |
1039 | if (radeon_tv == 1) { |
1000 | drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type); |
1040 | drm_connector_init(dev, &radeon_connector->base, &radeon_tv_connector_funcs, connector_type); |
1001 | drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); |
1041 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_tv_connector_helper_funcs); |
- | 1042 | if (ret) |
|
- | 1043 | goto failed; |
|
- | 1044 | radeon_connector->dac_load_detect = true; |
|
1002 | drm_connector_attach_property(&radeon_connector->base, |
1045 | drm_connector_attach_property(&radeon_connector->base, |
1003 | rdev->mode_info.load_detect_property, |
1046 | rdev->mode_info.load_detect_property, |
1004 | 1); |
1047 | 1); |
1005 | } |
1048 | } |
1006 | break; |
1049 | break; |
1007 | case DRM_MODE_CONNECTOR_LVDS: |
1050 | case DRM_MODE_CONNECTOR_LVDS: |
1008 | drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type); |
1051 | drm_connector_init(dev, &radeon_connector->base, &radeon_lvds_connector_funcs, connector_type); |
1009 | drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); |
1052 | ret = drm_connector_helper_add(&radeon_connector->base, &radeon_lvds_connector_helper_funcs); |
- | 1053 | if (ret) |
|
- | 1054 | goto failed; |
|
1010 | if (i2c_bus->valid) { |
1055 | if (i2c_bus->valid) { |
1011 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS"); |
1056 | radeon_connector->ddc_bus = radeon_i2c_create(dev, i2c_bus, "LVDS"); |
1012 | if (!radeon_connector->ddc_bus) |
1057 | if (!radeon_connector->ddc_bus) |
1013 | goto failed; |
1058 | goto failed; |
1014 | } |
1059 | } |