[Armadillo:08911] Re: Armadillo-440 PWMバックライト制御の初期化について

Koyo Takenoshita email@hidden
2013年 6月 21日 (金) 21:43:13 JST


竹之下です。

>  /linux-2.6.26-at16/arch/arm/mach-mx25/armadillo400_gpio.c
>>  void gpio_lcd_bl_active(void)
>  {
>   mxc_iomux_v3_setup_multiple_pads(armadillo400_lcd_bl_pads,
>        ARRAY_SIZE(armadillo400_lcd_bl_pads));
>  }
> が、PWMバックライト用の設定だと思われました(たぶん…)。
PWMバックライト用の設定です。(のつもりでした。)

> ただ、これを呼んでる処理がいません。
本当ですね。。。

>  /linux-2.6.26-at16/drivers/video/backlight/pwm_bl.c
>>  static int __init pwm_backlight_init(void)
>  {
>   return platform_driver_register(&pwm_backlight_driver);
>  }
> の中で、前述のgpio_lcd_bl_active()を呼んであげると変更したブートローダ
> ーを使用していても、linux起動後にPWM制御が出ているのを確認できました。
> brightness値変更で明るさも変更できました。
> 
> ということで、一応は解決したように見えるのですが、本当にこの修正でよい
> のか心配です。
> 「その方法は違う」とか「そこにその処理入れちゃダメ」とかご指摘ありまし
> たら是非お願いします。
意味合いとしては、pwm_backlight_init()はカーネルモジュールの初期化処理
(ドライバを使わなくても実行される処理)で、
pwm_backlight_probe()の方が、このドライバを使えるようにするときの初期化処理
なので、pwm_backlight_probe()に入れた方が良いです。

が、実使用上、問題にはならないと思います。
(Armadillo-400シリーズ以外でpwm_blドライバが使えなくなるとか、
 pwm_blを複数登録するとき区別がつかないとか、汎用ドライバとしては
 良くないですが、Armadillo-440専用として使う分には問題ないです。)

(2013/06/21 14:47), 高橋 宏章 wrote:
> 日本高周波の高橋です。
> お世話になっております。
> 
> PWMバックライト制御の初期化についてご教授願います。
> ちょっと前置きの話が長くなります。
> 
> 
> <事の発端>
> LCDバックライトのbrightness
>  /sys/class/backlight/pwm-backlight/brightness
> を255から小さい値に変更しても明るさが変わりませんでした。
> bl_powerを0にしても消灯されません。
> 
> オシロでPWMのラインを見てみたのですが、確かにパルスが出ていませんでし
> た。
> ただ、Armadilloに標準イメージが書き込まれた状態では確かにパルスが出て
> いて、brightnessの変更で明るさが変わったのを確認しています。
> linuxカーネル、ユーザーランド、ブートローダーを変更しているのでその変
> 更の影響だろうと思われました。
> 
> 
> <原因>
> 結局ブートローダーの変更が影響していたようで、ブートローダーのみ標準
> のものに書き換えるときちんとPWM制御しているのが確認できました。
> 
> ブートローダーの変更は、以前
> 「Armadillo-440ブートローダー処理中の液晶表示について」
> http://lists.atmark-techno.com/pipermail/armadillo/2013-March/008663.html
> として質問させていただいて、nakai様のご教授のもとブートローダー処理中
> にLCD画面に表示を行うよう変更を入れていました。
> 
> この処理の中で
>  mx25_iomux_config(pwm_pins, 0);
> としてPWMピンの設定を行っているのですが、この処理を無くすとlinux起動後
> にきちんとパルスが出ました(ただし、ブートローダーによる画面表示は出な
> くなる)。
> 
> 
> <本題>
> 確かにブートローダーでPWMピンの設定を行っていますが、linuxのドライバの
> 処理で再度設定し直すからPWM制御が行われなくなるのは変だなと思いました。
> 
> それでドライバ側の処理を(よくわからないながらも)追ってみたのですが、
> 
>  /linux-2.6.26-at16/arch/arm/mach-mx25/armadillo400_gpio.c
>>  void gpio_lcd_bl_active(void)
>  {
>   mxc_iomux_v3_setup_multiple_pads(armadillo400_lcd_bl_pads,
>        ARRAY_SIZE(armadillo400_lcd_bl_pads));
>  }
> が、PWMバックライト用の設定だと思われました(たぶん…)。
> ただ、これを呼んでる処理がいません。そこで、バックライトドライバ処理(
> だと思う…)、
> 
>  /linux-2.6.26-at16/drivers/video/backlight/pwm_bl.c
>>  static int __init pwm_backlight_init(void)
>  {
>   return platform_driver_register(&pwm_backlight_driver);
>  }
> の中で、前述のgpio_lcd_bl_active()を呼んであげると変更したブートローダ
> ーを使用していても、linux起動後にPWM制御が出ているのを確認できました。
> brightness値変更で明るさも変更できました。
> 
> ということで、一応は解決したように見えるのですが、本当にこの修正でよい
> のか心配です。
> 「その方法は違う」とか「そこにその処理入れちゃダメ」とかご指摘ありまし
> たら是非お願いします。
> 
> 以上、よろしくお願い致します。
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 

-- 
Koyo Takenoshita




armadillo メーリングリストの案内