[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 メーリングリストの案内