aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/aty/atyfb_base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/aty/atyfb_base.c')
-rw-r--r--drivers/video/aty/atyfb_base.c53
1 files changed, 18 insertions, 35 deletions
diff --git a/drivers/video/aty/atyfb_base.c b/drivers/video/aty/atyfb_base.c
index f8d69ad36830..d7aaec5667bf 100644
--- a/drivers/video/aty/atyfb_base.c
+++ b/drivers/video/aty/atyfb_base.c
@@ -248,10 +248,6 @@ static int atyfb_sync(struct fb_info *info);
248 248
249static int aty_init(struct fb_info *info); 249static int aty_init(struct fb_info *info);
250 250
251#ifdef CONFIG_ATARI
252static int store_video_par(char *videopar, unsigned char m64_num);
253#endif
254
255static void aty_get_crtc(const struct atyfb_par *par, struct crtc *crtc); 251static void aty_get_crtc(const struct atyfb_par *par, struct crtc *crtc);
256 252
257static void aty_set_crtc(const struct atyfb_par *par, const struct crtc *crtc); 253static void aty_set_crtc(const struct atyfb_par *par, const struct crtc *crtc);
@@ -2069,7 +2065,7 @@ static int atyfb_pci_suspend(struct pci_dev *pdev, pm_message_t state)
2069 if (state.event == pdev->dev.power.power_state.event) 2065 if (state.event == pdev->dev.power.power_state.event)
2070 return 0; 2066 return 0;
2071 2067
2072 acquire_console_sem(); 2068 console_lock();
2073 2069
2074 fb_set_suspend(info, 1); 2070 fb_set_suspend(info, 1);
2075 2071
@@ -2097,14 +2093,14 @@ static int atyfb_pci_suspend(struct pci_dev *pdev, pm_message_t state)
2097 par->lock_blank = 0; 2093 par->lock_blank = 0;
2098 atyfb_blank(FB_BLANK_UNBLANK, info); 2094 atyfb_blank(FB_BLANK_UNBLANK, info);
2099 fb_set_suspend(info, 0); 2095 fb_set_suspend(info, 0);
2100 release_console_sem(); 2096 console_unlock();
2101 return -EIO; 2097 return -EIO;
2102 } 2098 }
2103#else 2099#else
2104 pci_set_power_state(pdev, pci_choose_state(pdev, state)); 2100 pci_set_power_state(pdev, pci_choose_state(pdev, state));
2105#endif 2101#endif
2106 2102
2107 release_console_sem(); 2103 console_unlock();
2108 2104
2109 pdev->dev.power.power_state = state; 2105 pdev->dev.power.power_state = state;
2110 2106
@@ -2133,7 +2129,7 @@ static int atyfb_pci_resume(struct pci_dev *pdev)
2133 if (pdev->dev.power.power_state.event == PM_EVENT_ON) 2129 if (pdev->dev.power.power_state.event == PM_EVENT_ON)
2134 return 0; 2130 return 0;
2135 2131
2136 acquire_console_sem(); 2132 console_lock();
2137 2133
2138 /* 2134 /*
2139 * PCI state will have been restored by the core, so 2135 * PCI state will have been restored by the core, so
@@ -2161,7 +2157,7 @@ static int atyfb_pci_resume(struct pci_dev *pdev)
2161 par->lock_blank = 0; 2157 par->lock_blank = 0;
2162 atyfb_blank(FB_BLANK_UNBLANK, info); 2158 atyfb_blank(FB_BLANK_UNBLANK, info);
2163 2159
2164 release_console_sem(); 2160 console_unlock();
2165 2161
2166 pdev->dev.power.power_state = PMSG_ON; 2162 pdev->dev.power.power_state = PMSG_ON;
2167 2163
@@ -2221,7 +2217,7 @@ static int aty_bl_get_brightness(struct backlight_device *bd)
2221 return bd->props.brightness; 2217 return bd->props.brightness;
2222} 2218}
2223 2219
2224static struct backlight_ops aty_bl_data = { 2220static const struct backlight_ops aty_bl_data = {
2225 .get_brightness = aty_bl_get_brightness, 2221 .get_brightness = aty_bl_get_brightness,
2226 .update_status = aty_bl_update_status, 2222 .update_status = aty_bl_update_status,
2227}; 2223};
@@ -2241,6 +2237,7 @@ static void aty_bl_init(struct atyfb_par *par)
2241 snprintf(name, sizeof(name), "atybl%d", info->node); 2237 snprintf(name, sizeof(name), "atybl%d", info->node);
2242 2238
2243 memset(&props, 0, sizeof(struct backlight_properties)); 2239 memset(&props, 0, sizeof(struct backlight_properties));
2240 props.type = BACKLIGHT_RAW;
2244 props.max_brightness = FB_BACKLIGHT_LEVELS - 1; 2241 props.max_brightness = FB_BACKLIGHT_LEVELS - 1;
2245 bd = backlight_device_register(name, info->dev, par, &aty_bl_data, 2242 bd = backlight_device_register(name, info->dev, par, &aty_bl_data,
2246 &props); 2243 &props);
@@ -2267,11 +2264,13 @@ error:
2267 return; 2264 return;
2268} 2265}
2269 2266
2267#ifdef CONFIG_PCI
2270static void aty_bl_exit(struct backlight_device *bd) 2268static void aty_bl_exit(struct backlight_device *bd)
2271{ 2269{
2272 backlight_device_unregister(bd); 2270 backlight_device_unregister(bd);
2273 printk("aty: Backlight unloaded\n"); 2271 printk("aty: Backlight unloaded\n");
2274} 2272}
2273#endif /* CONFIG_PCI */
2275 2274
2276#endif /* CONFIG_FB_ATY_BACKLIGHT */ 2275#endif /* CONFIG_FB_ATY_BACKLIGHT */
2277 2276
@@ -2788,7 +2787,7 @@ aty_init_exit:
2788 return ret; 2787 return ret;
2789} 2788}
2790 2789
2791#ifdef CONFIG_ATARI 2790#if defined(CONFIG_ATARI) && !defined(MODULE)
2792static int __devinit store_video_par(char *video_str, unsigned char m64_num) 2791static int __devinit store_video_par(char *video_str, unsigned char m64_num)
2793{ 2792{
2794 char *p; 2793 char *p;
@@ -2817,7 +2816,7 @@ static int __devinit store_video_par(char *video_str, unsigned char m64_num)
2817 phys_vmembase[m64_num] = 0; 2816 phys_vmembase[m64_num] = 0;
2818 return -1; 2817 return -1;
2819} 2818}
2820#endif /* CONFIG_ATARI */ 2819#endif /* CONFIG_ATARI && !MODULE */
2821 2820
2822/* 2821/*
2823 * Blank the display. 2822 * Blank the display.
@@ -2969,9 +2968,8 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev,
2969{ 2968{
2970 struct atyfb_par *par = info->par; 2969 struct atyfb_par *par = info->par;
2971 struct device_node *dp; 2970 struct device_node *dp;
2972 char prop[128];
2973 int node, len, i, j, ret;
2974 u32 mem, chip_id; 2971 u32 mem, chip_id;
2972 int i, j, ret;
2975 2973
2976 /* 2974 /*
2977 * Map memory-mapped registers. 2975 * Map memory-mapped registers.
@@ -3087,23 +3085,8 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev,
3087 aty_st_le32(MEM_CNTL, mem, par); 3085 aty_st_le32(MEM_CNTL, mem, par);
3088 } 3086 }
3089 3087
3090 /*
3091 * If this is the console device, we will set default video
3092 * settings to what the PROM left us with.
3093 */
3094 node = prom_getchild(prom_root_node);
3095 node = prom_searchsiblings(node, "aliases");
3096 if (node) {
3097 len = prom_getproperty(node, "screen", prop, sizeof(prop));
3098 if (len > 0) {
3099 prop[len] = '\0';
3100 node = prom_finddevice(prop);
3101 } else
3102 node = 0;
3103 }
3104
3105 dp = pci_device_to_OF_node(pdev); 3088 dp = pci_device_to_OF_node(pdev);
3106 if (node == dp->phandle) { 3089 if (dp == of_console_device) {
3107 struct fb_var_screeninfo *var = &default_var; 3090 struct fb_var_screeninfo *var = &default_var;
3108 unsigned int N, P, Q, M, T, R; 3091 unsigned int N, P, Q, M, T, R;
3109 u32 v_total, h_total; 3092 u32 v_total, h_total;
@@ -3111,9 +3094,9 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev,
3111 u8 pll_regs[16]; 3094 u8 pll_regs[16];
3112 u8 clock_cntl; 3095 u8 clock_cntl;
3113 3096
3114 crtc.vxres = prom_getintdefault(node, "width", 1024); 3097 crtc.vxres = of_getintprop_default(dp, "width", 1024);
3115 crtc.vyres = prom_getintdefault(node, "height", 768); 3098 crtc.vyres = of_getintprop_default(dp, "height", 768);
3116 var->bits_per_pixel = prom_getintdefault(node, "depth", 8); 3099 var->bits_per_pixel = of_getintprop_default(dp, "depth", 8);
3117 var->xoffset = var->yoffset = 0; 3100 var->xoffset = var->yoffset = 0;
3118 crtc.h_tot_disp = aty_ld_le32(CRTC_H_TOTAL_DISP, par); 3101 crtc.h_tot_disp = aty_ld_le32(CRTC_H_TOTAL_DISP, par);
3119 crtc.h_sync_strt_wid = aty_ld_le32(CRTC_H_SYNC_STRT_WID, par); 3102 crtc.h_sync_strt_wid = aty_ld_le32(CRTC_H_SYNC_STRT_WID, par);
@@ -3139,12 +3122,12 @@ static int __devinit atyfb_setup_sparc(struct pci_dev *pdev,
3139 M = pll_regs[2]; 3122 M = pll_regs[2];
3140 3123
3141 /* 3124 /*
3142 * PLL Feedback Divider N (Dependant on CLOCK_CNTL): 3125 * PLL Feedback Divider N (Dependent on CLOCK_CNTL):
3143 */ 3126 */
3144 N = pll_regs[7 + (clock_cntl & 3)]; 3127 N = pll_regs[7 + (clock_cntl & 3)];
3145 3128
3146 /* 3129 /*
3147 * PLL Post Divider P (Dependant on CLOCK_CNTL): 3130 * PLL Post Divider P (Dependent on CLOCK_CNTL):
3148 */ 3131 */
3149 P = 1 << (pll_regs[6] >> ((clock_cntl & 3) << 1)); 3132 P = 1 << (pll_regs[6] >> ((clock_cntl & 3) << 1));
3150 3133