diff options
Diffstat (limited to 'drivers/video/macfb.c')
| -rw-r--r-- | drivers/video/macfb.c | 74 |
1 files changed, 35 insertions, 39 deletions
diff --git a/drivers/video/macfb.c b/drivers/video/macfb.c index b790ddff76f9..ee380d5f3410 100644 --- a/drivers/video/macfb.c +++ b/drivers/video/macfb.c | |||
| @@ -164,7 +164,6 @@ static struct fb_var_screeninfo macfb_defined = { | |||
| 164 | }; | 164 | }; |
| 165 | 165 | ||
| 166 | static struct fb_fix_screeninfo macfb_fix = { | 166 | static struct fb_fix_screeninfo macfb_fix = { |
| 167 | .id = "Macintosh ", | ||
| 168 | .type = FB_TYPE_PACKED_PIXELS, | 167 | .type = FB_TYPE_PACKED_PIXELS, |
| 169 | .accel = FB_ACCEL_NONE, | 168 | .accel = FB_ACCEL_NONE, |
| 170 | }; | 169 | }; |
| @@ -760,22 +759,22 @@ static int __init macfb_init(void) | |||
| 760 | 759 | ||
| 761 | switch(ndev->dr_hw) { | 760 | switch(ndev->dr_hw) { |
| 762 | case NUBUS_DRHW_APPLE_MDC: | 761 | case NUBUS_DRHW_APPLE_MDC: |
| 763 | strcat( macfb_fix.id, "Display Card" ); | 762 | strcpy(macfb_fix.id, "Mac Disp. Card"); |
| 764 | macfb_setpalette = mdc_setpalette; | 763 | macfb_setpalette = mdc_setpalette; |
| 765 | macfb_defined.activate = FB_ACTIVATE_NOW; | 764 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 766 | break; | 765 | break; |
| 767 | case NUBUS_DRHW_APPLE_TFB: | 766 | case NUBUS_DRHW_APPLE_TFB: |
| 768 | strcat( macfb_fix.id, "Toby" ); | 767 | strcpy(macfb_fix.id, "Toby"); |
| 769 | macfb_setpalette = toby_setpalette; | 768 | macfb_setpalette = toby_setpalette; |
| 770 | macfb_defined.activate = FB_ACTIVATE_NOW; | 769 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 771 | break; | 770 | break; |
| 772 | case NUBUS_DRHW_APPLE_JET: | 771 | case NUBUS_DRHW_APPLE_JET: |
| 773 | strcat( macfb_fix.id, "Jet"); | 772 | strcpy(macfb_fix.id, "Jet"); |
| 774 | macfb_setpalette = jet_setpalette; | 773 | macfb_setpalette = jet_setpalette; |
| 775 | macfb_defined.activate = FB_ACTIVATE_NOW; | 774 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 776 | break; | 775 | break; |
| 777 | default: | 776 | default: |
| 778 | strcat( macfb_fix.id, "Generic NuBus" ); | 777 | strcpy(macfb_fix.id, "Generic NuBus"); |
| 779 | break; | 778 | break; |
| 780 | } | 779 | } |
| 781 | } | 780 | } |
| @@ -786,21 +785,11 @@ static int __init macfb_init(void) | |||
| 786 | if (!video_is_nubus) | 785 | if (!video_is_nubus) |
| 787 | switch( mac_bi_data.id ) | 786 | switch( mac_bi_data.id ) |
| 788 | { | 787 | { |
| 789 | /* These don't have onboard video. Eventually, we may | ||
| 790 | be able to write separate framebuffer drivers for | ||
| 791 | them (tobyfb.c, hiresfb.c, etc, etc) */ | ||
| 792 | case MAC_MODEL_II: | ||
| 793 | case MAC_MODEL_IIX: | ||
| 794 | case MAC_MODEL_IICX: | ||
| 795 | case MAC_MODEL_IIFX: | ||
| 796 | strcat( macfb_fix.id, "Generic NuBus" ); | ||
| 797 | break; | ||
| 798 | |||
| 799 | /* Valkyrie Quadras */ | 788 | /* Valkyrie Quadras */ |
| 800 | case MAC_MODEL_Q630: | 789 | case MAC_MODEL_Q630: |
| 801 | /* I'm not sure about this one */ | 790 | /* I'm not sure about this one */ |
| 802 | case MAC_MODEL_P588: | 791 | case MAC_MODEL_P588: |
| 803 | strcat( macfb_fix.id, "Valkyrie built-in" ); | 792 | strcpy(macfb_fix.id, "Valkyrie"); |
| 804 | macfb_setpalette = valkyrie_setpalette; | 793 | macfb_setpalette = valkyrie_setpalette; |
| 805 | macfb_defined.activate = FB_ACTIVATE_NOW; | 794 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 806 | valkyrie_cmap_regs = ioremap(DAC_BASE, 0x1000); | 795 | valkyrie_cmap_regs = ioremap(DAC_BASE, 0x1000); |
| @@ -823,7 +812,7 @@ static int __init macfb_init(void) | |||
| 823 | case MAC_MODEL_Q700: | 812 | case MAC_MODEL_Q700: |
| 824 | case MAC_MODEL_Q900: | 813 | case MAC_MODEL_Q900: |
| 825 | case MAC_MODEL_Q950: | 814 | case MAC_MODEL_Q950: |
| 826 | strcat( macfb_fix.id, "DAFB built-in" ); | 815 | strcpy(macfb_fix.id, "DAFB"); |
| 827 | macfb_setpalette = dafb_setpalette; | 816 | macfb_setpalette = dafb_setpalette; |
| 828 | macfb_defined.activate = FB_ACTIVATE_NOW; | 817 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 829 | dafb_cmap_regs = ioremap(DAFB_BASE, 0x1000); | 818 | dafb_cmap_regs = ioremap(DAFB_BASE, 0x1000); |
| @@ -831,7 +820,7 @@ static int __init macfb_init(void) | |||
| 831 | 820 | ||
| 832 | /* LC II uses the V8 framebuffer */ | 821 | /* LC II uses the V8 framebuffer */ |
| 833 | case MAC_MODEL_LCII: | 822 | case MAC_MODEL_LCII: |
| 834 | strcat( macfb_fix.id, "V8 built-in" ); | 823 | strcpy(macfb_fix.id, "V8"); |
| 835 | macfb_setpalette = v8_brazil_setpalette; | 824 | macfb_setpalette = v8_brazil_setpalette; |
| 836 | macfb_defined.activate = FB_ACTIVATE_NOW; | 825 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 837 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); | 826 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); |
| @@ -843,7 +832,7 @@ static int __init macfb_init(void) | |||
| 843 | case MAC_MODEL_IIVI: | 832 | case MAC_MODEL_IIVI: |
| 844 | case MAC_MODEL_IIVX: | 833 | case MAC_MODEL_IIVX: |
| 845 | case MAC_MODEL_P600: | 834 | case MAC_MODEL_P600: |
| 846 | strcat( macfb_fix.id, "Brazil built-in" ); | 835 | strcpy(macfb_fix.id, "Brazil"); |
| 847 | macfb_setpalette = v8_brazil_setpalette; | 836 | macfb_setpalette = v8_brazil_setpalette; |
| 848 | macfb_defined.activate = FB_ACTIVATE_NOW; | 837 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 849 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); | 838 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); |
| @@ -860,7 +849,7 @@ static int __init macfb_init(void) | |||
| 860 | case MAC_MODEL_P460: | 849 | case MAC_MODEL_P460: |
| 861 | macfb_setpalette = v8_brazil_setpalette; | 850 | macfb_setpalette = v8_brazil_setpalette; |
| 862 | macfb_defined.activate = FB_ACTIVATE_NOW; | 851 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 863 | strcat( macfb_fix.id, "Sonora built-in" ); | 852 | strcpy(macfb_fix.id, "Sonora"); |
| 864 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); | 853 | v8_brazil_cmap_regs = ioremap(DAC_BASE, 0x1000); |
| 865 | break; | 854 | break; |
| 866 | 855 | ||
| @@ -871,7 +860,7 @@ static int __init macfb_init(void) | |||
| 871 | case MAC_MODEL_IISI: | 860 | case MAC_MODEL_IISI: |
| 872 | macfb_setpalette = rbv_setpalette; | 861 | macfb_setpalette = rbv_setpalette; |
| 873 | macfb_defined.activate = FB_ACTIVATE_NOW; | 862 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 874 | strcat( macfb_fix.id, "RBV built-in" ); | 863 | strcpy(macfb_fix.id, "RBV"); |
| 875 | rbv_cmap_regs = ioremap(DAC_BASE, 0x1000); | 864 | rbv_cmap_regs = ioremap(DAC_BASE, 0x1000); |
| 876 | break; | 865 | break; |
| 877 | 866 | ||
| @@ -880,7 +869,7 @@ static int __init macfb_init(void) | |||
| 880 | case MAC_MODEL_C660: | 869 | case MAC_MODEL_C660: |
| 881 | macfb_setpalette = civic_setpalette; | 870 | macfb_setpalette = civic_setpalette; |
| 882 | macfb_defined.activate = FB_ACTIVATE_NOW; | 871 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 883 | strcat( macfb_fix.id, "Civic built-in" ); | 872 | strcpy(macfb_fix.id, "Civic"); |
| 884 | civic_cmap_regs = ioremap(CIVIC_BASE, 0x1000); | 873 | civic_cmap_regs = ioremap(CIVIC_BASE, 0x1000); |
| 885 | break; | 874 | break; |
| 886 | 875 | ||
| @@ -901,7 +890,7 @@ static int __init macfb_init(void) | |||
| 901 | v8_brazil_cmap_regs = | 890 | v8_brazil_cmap_regs = |
| 902 | ioremap(DAC_BASE, 0x1000); | 891 | ioremap(DAC_BASE, 0x1000); |
| 903 | } | 892 | } |
| 904 | strcat( macfb_fix.id, "LC built-in" ); | 893 | strcpy(macfb_fix.id, "LC"); |
| 905 | break; | 894 | break; |
| 906 | /* We think this may be like the LC II */ | 895 | /* We think this may be like the LC II */ |
| 907 | case MAC_MODEL_CCL: | 896 | case MAC_MODEL_CCL: |
| @@ -911,18 +900,18 @@ static int __init macfb_init(void) | |||
| 911 | v8_brazil_cmap_regs = | 900 | v8_brazil_cmap_regs = |
| 912 | ioremap(DAC_BASE, 0x1000); | 901 | ioremap(DAC_BASE, 0x1000); |
| 913 | } | 902 | } |
| 914 | strcat( macfb_fix.id, "Color Classic built-in" ); | 903 | strcpy(macfb_fix.id, "Color Classic"); |
| 915 | break; | 904 | break; |
| 916 | 905 | ||
| 917 | /* And we *do* mean "weirdos" */ | 906 | /* And we *do* mean "weirdos" */ |
| 918 | case MAC_MODEL_TV: | 907 | case MAC_MODEL_TV: |
| 919 | strcat( macfb_fix.id, "Mac TV built-in" ); | 908 | strcpy(macfb_fix.id, "Mac TV"); |
| 920 | break; | 909 | break; |
| 921 | 910 | ||
| 922 | /* These don't have colour, so no need to worry */ | 911 | /* These don't have colour, so no need to worry */ |
| 923 | case MAC_MODEL_SE30: | 912 | case MAC_MODEL_SE30: |
| 924 | case MAC_MODEL_CLII: | 913 | case MAC_MODEL_CLII: |
| 925 | strcat( macfb_fix.id, "Monochrome built-in" ); | 914 | strcpy(macfb_fix.id, "Monochrome"); |
| 926 | break; | 915 | break; |
| 927 | 916 | ||
| 928 | /* Powerbooks are particularly difficult. Many of | 917 | /* Powerbooks are particularly difficult. Many of |
| @@ -935,7 +924,7 @@ static int __init macfb_init(void) | |||
| 935 | case MAC_MODEL_PB140: | 924 | case MAC_MODEL_PB140: |
| 936 | case MAC_MODEL_PB145: | 925 | case MAC_MODEL_PB145: |
| 937 | case MAC_MODEL_PB170: | 926 | case MAC_MODEL_PB170: |
| 938 | strcat( macfb_fix.id, "DDC built-in" ); | 927 | strcpy(macfb_fix.id, "DDC"); |
| 939 | break; | 928 | break; |
| 940 | 929 | ||
| 941 | /* Internal is GSC, External (if present) is ViSC */ | 930 | /* Internal is GSC, External (if present) is ViSC */ |
| @@ -945,13 +934,13 @@ static int __init macfb_init(void) | |||
| 945 | case MAC_MODEL_PB180: | 934 | case MAC_MODEL_PB180: |
| 946 | case MAC_MODEL_PB210: | 935 | case MAC_MODEL_PB210: |
| 947 | case MAC_MODEL_PB230: | 936 | case MAC_MODEL_PB230: |
| 948 | strcat( macfb_fix.id, "GSC built-in" ); | 937 | strcpy(macfb_fix.id, "GSC"); |
| 949 | break; | 938 | break; |
| 950 | 939 | ||
| 951 | /* Internal is TIM, External is ViSC */ | 940 | /* Internal is TIM, External is ViSC */ |
| 952 | case MAC_MODEL_PB165C: | 941 | case MAC_MODEL_PB165C: |
| 953 | case MAC_MODEL_PB180C: | 942 | case MAC_MODEL_PB180C: |
| 954 | strcat( macfb_fix.id, "TIM built-in" ); | 943 | strcpy(macfb_fix.id, "TIM"); |
| 955 | break; | 944 | break; |
| 956 | 945 | ||
| 957 | /* Internal is CSC, External is Keystone+Ariel. */ | 946 | /* Internal is CSC, External is Keystone+Ariel. */ |
| @@ -963,12 +952,12 @@ static int __init macfb_init(void) | |||
| 963 | case MAC_MODEL_PB280C: | 952 | case MAC_MODEL_PB280C: |
| 964 | macfb_setpalette = csc_setpalette; | 953 | macfb_setpalette = csc_setpalette; |
| 965 | macfb_defined.activate = FB_ACTIVATE_NOW; | 954 | macfb_defined.activate = FB_ACTIVATE_NOW; |
| 966 | strcat( macfb_fix.id, "CSC built-in" ); | 955 | strcpy(macfb_fix.id, "CSC"); |
| 967 | csc_cmap_regs = ioremap(CSC_BASE, 0x1000); | 956 | csc_cmap_regs = ioremap(CSC_BASE, 0x1000); |
| 968 | break; | 957 | break; |
| 969 | 958 | ||
| 970 | default: | 959 | default: |
| 971 | strcat( macfb_fix.id, "Unknown/Unsupported built-in" ); | 960 | strcpy(macfb_fix.id, "Unknown"); |
| 972 | break; | 961 | break; |
| 973 | } | 962 | } |
| 974 | 963 | ||
| @@ -978,16 +967,23 @@ static int __init macfb_init(void) | |||
| 978 | fb_info.pseudo_palette = pseudo_palette; | 967 | fb_info.pseudo_palette = pseudo_palette; |
| 979 | fb_info.flags = FBINFO_DEFAULT; | 968 | fb_info.flags = FBINFO_DEFAULT; |
| 980 | 969 | ||
| 981 | fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0); | 970 | err = fb_alloc_cmap(&fb_info.cmap, video_cmap_len, 0); |
| 971 | if (err) | ||
| 972 | goto fail_unmap; | ||
| 982 | 973 | ||
| 983 | err = register_framebuffer(&fb_info); | 974 | err = register_framebuffer(&fb_info); |
| 984 | if (!err) | 975 | if (err) |
| 985 | printk("fb%d: %s frame buffer device\n", | 976 | goto fail_dealloc; |
| 986 | fb_info.node, fb_info.fix.id); | 977 | |
| 987 | else { | 978 | printk("fb%d: %s frame buffer device\n", |
| 988 | iounmap(fb_info.screen_base); | 979 | fb_info.node, fb_info.fix.id); |
| 989 | iounmap_macfb(); | 980 | return 0; |
| 990 | } | 981 | |
| 982 | fail_dealloc: | ||
| 983 | fb_dealloc_cmap(&fb_info.cmap); | ||
| 984 | fail_unmap: | ||
| 985 | iounmap(fb_info.screen_base); | ||
| 986 | iounmap_macfb(); | ||
| 991 | return err; | 987 | return err; |
| 992 | } | 988 | } |
| 993 | 989 | ||
