aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/via/viafbdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/via/viafbdev.c')
-rw-r--r--drivers/video/via/viafbdev.c35
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