diff options
Diffstat (limited to 'drivers/video/via/viafbdev.c')
-rw-r--r-- | drivers/video/via/viafbdev.c | 35 |
1 files changed, 13 insertions, 22 deletions
diff --git a/drivers/video/via/viafbdev.c b/drivers/video/via/viafbdev.c index a17e138c92b3..4a8853a07602 100644 --- a/drivers/video/via/viafbdev.c +++ b/drivers/video/via/viafbdev.c | |||
@@ -1943,40 +1943,30 @@ static int __devinit via_pci_probe(void) | |||
1943 | char *tmpc, *tmpm; | 1943 | char *tmpc, *tmpm; |
1944 | char *tmpc_sec, *tmpm_sec; | 1944 | char *tmpc_sec, *tmpm_sec; |
1945 | int vmode_index; | 1945 | int vmode_index; |
1946 | u32 tmds_length, lvds_length, crt_length, chip_length, viafb_par_length; | 1946 | u32 viafb_par_length; |
1947 | 1947 | ||
1948 | DEBUG_MSG(KERN_INFO "VIAFB PCI Probe!!\n"); | 1948 | DEBUG_MSG(KERN_INFO "VIAFB PCI Probe!!\n"); |
1949 | 1949 | ||
1950 | viafb_par_length = ALIGN(sizeof(struct viafb_par), BITS_PER_LONG/8); | 1950 | viafb_par_length = ALIGN(sizeof(struct viafb_par), BITS_PER_LONG/8); |
1951 | tmds_length = ALIGN(sizeof(struct tmds_setting_information), | ||
1952 | BITS_PER_LONG/8); | ||
1953 | lvds_length = ALIGN(sizeof(struct lvds_setting_information), | ||
1954 | BITS_PER_LONG/8); | ||
1955 | crt_length = ALIGN(sizeof(struct lvds_setting_information), | ||
1956 | BITS_PER_LONG/8); | ||
1957 | chip_length = ALIGN(sizeof(struct chip_information), BITS_PER_LONG/8); | ||
1958 | 1951 | ||
1959 | /* Allocate fb_info and ***_par here, also including some other needed | 1952 | /* Allocate fb_info and ***_par here, also including some other needed |
1960 | * variables | 1953 | * variables |
1961 | */ | 1954 | */ |
1962 | viafbinfo = framebuffer_alloc(viafb_par_length + 2 * lvds_length + | 1955 | viafbinfo = framebuffer_alloc(viafb_par_length + |
1963 | tmds_length + crt_length + chip_length, NULL); | 1956 | ALIGN(sizeof(struct viafb_shared), BITS_PER_LONG/8), NULL); |
1964 | if (!viafbinfo) { | 1957 | if (!viafbinfo) { |
1965 | printk(KERN_ERR"Could not allocate memory for viafb_info.\n"); | 1958 | printk(KERN_ERR"Could not allocate memory for viafb_info.\n"); |
1966 | return -ENODEV; | 1959 | return -ENODEV; |
1967 | } | 1960 | } |
1968 | 1961 | ||
1969 | viaparinfo = (struct viafb_par *)viafbinfo->par; | 1962 | viaparinfo = (struct viafb_par *)viafbinfo->par; |
1970 | viaparinfo->tmds_setting_info = (struct tmds_setting_information *) | 1963 | viaparinfo->shared = viafbinfo->par + viafb_par_length; |
1971 | ((unsigned long)viaparinfo + viafb_par_length); | 1964 | viaparinfo->tmds_setting_info = &viaparinfo->shared->tmds_setting_info; |
1972 | viaparinfo->lvds_setting_info = (struct lvds_setting_information *) | 1965 | viaparinfo->lvds_setting_info = &viaparinfo->shared->lvds_setting_info; |
1973 | ((unsigned long)viaparinfo->tmds_setting_info + tmds_length); | 1966 | viaparinfo->lvds_setting_info2 = |
1974 | viaparinfo->lvds_setting_info2 = (struct lvds_setting_information *) | 1967 | &viaparinfo->shared->lvds_setting_info2; |
1975 | ((unsigned long)viaparinfo->lvds_setting_info + lvds_length); | 1968 | viaparinfo->crt_setting_info = &viaparinfo->shared->crt_setting_info; |
1976 | viaparinfo->crt_setting_info = (struct crt_setting_information *) | 1969 | viaparinfo->chip_info = &viaparinfo->shared->chip_info; |
1977 | ((unsigned long)viaparinfo->lvds_setting_info2 + lvds_length); | ||
1978 | viaparinfo->chip_info = (struct chip_information *) | ||
1979 | ((unsigned long)viaparinfo->crt_setting_info + crt_length); | ||
1980 | 1970 | ||
1981 | if (viafb_dual_fb) | 1971 | if (viafb_dual_fb) |
1982 | viafb_SAMM_ON = 1; | 1972 | viafb_SAMM_ON = 1; |
@@ -2142,6 +2132,7 @@ static int __devinit via_pci_probe(void) | |||
2142 | viaparinfo->iga_path = IGA1; | 2132 | viaparinfo->iga_path = IGA1; |
2143 | viaparinfo1->iga_path = IGA2; | 2133 | viaparinfo1->iga_path = IGA2; |
2144 | memcpy(viafbinfo1, viafbinfo, sizeof(struct fb_info)); | 2134 | memcpy(viafbinfo1, viafbinfo, sizeof(struct fb_info)); |
2135 | viafbinfo1->par = viaparinfo1; | ||
2145 | viafbinfo1->screen_base = viafbinfo->screen_base + | 2136 | viafbinfo1->screen_base = viafbinfo->screen_base + |
2146 | viafb_second_offset; | 2137 | viafb_second_offset; |
2147 | 2138 | ||
@@ -2193,7 +2184,7 @@ static int __devinit via_pci_probe(void) | |||
2193 | viafbinfo->node, viafbinfo->fix.id, default_var.xres, | 2184 | viafbinfo->node, viafbinfo->fix.id, default_var.xres, |
2194 | default_var.yres, default_var.bits_per_pixel); | 2185 | default_var.yres, default_var.bits_per_pixel); |
2195 | 2186 | ||
2196 | viafb_init_proc(&viaparinfo->proc_entry); | 2187 | viafb_init_proc(&viaparinfo->shared->proc_entry); |
2197 | viafb_init_dac(IGA2); | 2188 | viafb_init_dac(IGA2); |
2198 | return 0; | 2189 | return 0; |
2199 | } | 2190 | } |
@@ -2214,7 +2205,7 @@ static void __devexit via_pci_remove(void) | |||
2214 | if (viafb_dual_fb) | 2205 | if (viafb_dual_fb) |
2215 | framebuffer_release(viafbinfo1); | 2206 | framebuffer_release(viafbinfo1); |
2216 | 2207 | ||
2217 | viafb_remove_proc(viaparinfo->proc_entry); | 2208 | viafb_remove_proc(viaparinfo->shared->proc_entry); |
2218 | } | 2209 | } |
2219 | 2210 | ||
2220 | #ifndef MODULE | 2211 | #ifndef MODULE |