diff options
Diffstat (limited to 'drivers/video/aty/atyfb_base.c')
-rw-r--r-- | drivers/video/aty/atyfb_base.c | 53 |
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 | ||
249 | static int aty_init(struct fb_info *info); | 249 | static int aty_init(struct fb_info *info); |
250 | 250 | ||
251 | #ifdef CONFIG_ATARI | ||
252 | static int store_video_par(char *videopar, unsigned char m64_num); | ||
253 | #endif | ||
254 | |||
255 | static void aty_get_crtc(const struct atyfb_par *par, struct crtc *crtc); | 251 | static void aty_get_crtc(const struct atyfb_par *par, struct crtc *crtc); |
256 | 252 | ||
257 | static void aty_set_crtc(const struct atyfb_par *par, const struct crtc *crtc); | 253 | static 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 | ||
2224 | static struct backlight_ops aty_bl_data = { | 2220 | static 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 | ||
2270 | static void aty_bl_exit(struct backlight_device *bd) | 2268 | static 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) |
2792 | static int __devinit store_video_par(char *video_str, unsigned char m64_num) | 2791 | static 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 | ||