From: 黄涛 Date: Wed, 22 Dec 2010 05:49:31 +0000 (+0800) Subject: rk29: fix bl clock X-Git-Tag: firefly_0821_release~10899^2~11 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7f34eabc083921e2103612ea205e1e54eeab372b;p=firefly-linux-kernel-4.4.55.git rk29: fix bl clock --- diff --git a/arch/arm/mach-rk29/clock.c b/arch/arm/mach-rk29/clock.c index b049f345fe5d..a355593dd4b1 100755 --- a/arch/arm/mach-rk29/clock.c +++ b/arch/arm/mach-rk29/clock.c @@ -2287,15 +2287,11 @@ static void clk_enable_init_clocks(void) clk_enable_nolock(&clk_ddr_vepu_axi); clk_enable_nolock(&clk_display_matrix_ahb); clk_enable_nolock(&clk_display_matrix_axi); - clk_enable_nolock(&clk_ipp_ahb); - clk_enable_nolock(&clk_ipp_axi); clk_enable_nolock(&clk_ddr_lcdc_axi); clk_enable_nolock(&clk_uhost_ahb); clk_enable_nolock(&clk_usbotg1); clk_enable_nolock(&clk_usbotg0); clk_enable_nolock(&clk_nandc); - clk_enable_nolock(&clk_smc); - clk_enable_nolock(&clk_smc_axi); clk_enable_nolock(&clk_periph_cpu); clk_enable_nolock(&clk_ddr_periph); clk_enable_nolock(&clk_usb); @@ -2308,10 +2304,6 @@ static void clk_enable_init_clocks(void) clk_enable_nolock(&clk_dma2); clk_enable_nolock(&clk_dma1); clk_enable_nolock(&clk_dma0); - clk_enable_nolock(&clk_spdif); - clk_enable_nolock(&clk_i2s0); - /* backlight */ - clk_enable_nolock(&clk_pwm); /* vpu */ clk_enable_nolock(&aclk_vdpu); clk_enable_nolock(&hclk_vdpu); diff --git a/drivers/video/backlight/rk29_backlight.c b/drivers/video/backlight/rk29_backlight.c index 12843c7b29f3..db61c183d9c8 100644 --- a/drivers/video/backlight/rk29_backlight.c +++ b/drivers/video/backlight/rk29_backlight.c @@ -92,6 +92,9 @@ static s32 rk29_bl_get_brightness(struct backlight_device *bl) DBG("%s:: %d div_total: %d\n",__func__,__LINE__,div_total); + if (!div_total) + return 0; + if (ref) { return BL_STEP*divh/div_total; } else { @@ -240,7 +243,11 @@ static int rk29_backlight_probe(struct platform_device *pdev) __func__); return -EEXIST; } - + + if (rk29_bl_info && rk29_bl_info->io_init) { + rk29_bl_info->io_init(); + } + rk29_bl = backlight_device_register("rk28_bl", &pdev->dev, NULL, &rk29_bl_ops); if (!rk29_bl) { DBG(KERN_CRIT "%s: backlight device register error\n", @@ -248,8 +255,7 @@ static int rk29_backlight_probe(struct platform_device *pdev) return -ENODEV; } - if (!pwm_clk) - pwm_clk = clk_get(NULL, "pwm"); + pwm_clk = clk_get(NULL, "pwm"); if (IS_ERR(pwm_clk)) { printk(KERN_ERR "failed to get pwm clock source\n"); return -ENODEV; @@ -276,13 +282,12 @@ static int rk29_backlight_probe(struct platform_device *pdev) cpufreq_register_notifier(&rk29_bl_info->freq_transition, CPUFREQ_TRANSITION_NOTIFIER); #endif -// clk_disable(pwm_clk); + clk_enable(pwm_clk); write_pwm_reg(id, PWM_REG_CTRL, PWM_DIV|PWM_RESET); write_pwm_reg(id, PWM_REG_LRC, div_total); write_pwm_reg(id, PWM_REG_HRC, divh); write_pwm_reg(id, PWM_REG_CNTR, 0x0); write_pwm_reg(id, PWM_REG_CTRL, PWM_DIV|PWM_ENABLE|PWM_TIME_EN); - clk_enable(pwm_clk); rk29_bl->props.power = FB_BLANK_UNBLANK; rk29_bl->props.fb_blank = FB_BLANK_UNBLANK; @@ -296,10 +301,6 @@ static int rk29_backlight_probe(struct platform_device *pdev) register_early_suspend(&bl_early_suspend); #endif - if (rk29_bl_info && rk29_bl_info->io_init) { - rk29_bl_info->io_init(); - } - return ret; }