IMX6 FB blank behavior

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

IMX6 FB blank behavior

1,350 次查看
chrisroed
Contributor IV

I have an odd problem popping up on my IMX6 board.  We have an LVDS display, and a wifi module on mmc0.

When I boot up the board, I can set the brightness of my backlight

 

 

echo (1-7) > /sys/class/backlight/backlight/brightness

 

 


However, if I blank and unblank the FB, the brightness will change to maximum, and even if a new value is written to the `brightness` file, the actual brightness will not change until I reboot the device. (EDIT: see below, this only seems to happen if the brightness file is set to something other than max when unblanking the display... /shrug)


The reason I mention the wifi module on mmc0 is that after blanking the FB, the wifi stops working and prints the following on the console. 

 

 

mmc0: Timeout waiting for hardware interrupt.
mmc0: sdhci: ============ SDHCI REGISTER DUMP ===========
mmc0: sdhci: Sys addr: 0x388ac360 | Version: 0x00000002
mmc0: sdhci: Blk size: 0x000000c4 | Blk cnt: 0x00000001
mmc0: sdhci: Argument: 0x100000c4 | Trn mode: 0x00000013
mmc0: sdhci: Present: 0x01f88a0a | Host ctl: 0x00000013
mmc0: sdhci: Power: 0x00000002 | Blk gap: 0x00000080
mmc0: sdhci: Wake-up: 0x00000008 | Clock: 0x0000003f
mmc0: sdhci: Timeout: 0x0000008f | Int stat: 0x00000000
mmc0: sdhci: Int enab: 0x107f100b | Sig enab: 0x107f100b
mmc0: sdhci: AC12 err: 0x00000000 | Slot int: 0x00000103
mmc0: sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000a007
mmc0: sdhci: Cmd: 0x0000353a | Max curr: 0x00ffffff
mmc0: sdhci: Resp[0]: 0x00002000 | Resp[1]: 0x00000000
mmc0: sdhci: Resp[2]: 0x00000000 | Resp[3]: 0x00000000
mmc0: sdhci: Host ctl2: 0x00000000
mmc0: sdhci: ADMA Err: 0x00000007 | ADMA Ptr: 0x3c049200
mmc0: sdhci: ============================================

 

 


Has anyone seen this behavior before?

Relevant device tree info

 

 

backlight: backlight {
compatible = "pwm-backlight";
pwms = <&pwm3 0 500000 >;
pwm-names = "ldb";
brightness-levels = <0 4 8 16 32 64 128 255>;
default-brightness-level = <7>;
enable-gpios = <&gpio1 2 GPIO_ACTIVE_HIGH>;
};

mxcfb1: fb@0 {
compatible = "fsl,mxc_sdc_fb";
disp_dev = "ldb";
interface_pix_fmt = "RGB24";
default_bpp = <32>;
int_clk = <0>;
late_init = <0>;
status = "okay";
};

/* Wireless */
&usdhc1 {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_usdhc1>;
status = "okay";
vmmc-supply = <&reg_wifi_3p3v>;
non-removable;
};

 

 

0 项奖励
回复
3 回复数

1,334 次查看
igorpadykov
NXP Employee
NXP Employee

Hi chrisroed

 

what bsp used in the case, one can try with latest nxp linux from source.codeaurora.org/external/imx/linux-imx repository :
https://source.codeaurora.org/external/imx/linux-imx/tree/?h=imx_5.4.70_2.3.0

Documentation:

https://www.nxp.com/design/software/embedded-software/i-mx-software/embedded-linux-for-i-mx-applicat...

 

Best regards
igor

0 项奖励
回复

1,323 次查看
chrisroed
Contributor IV

Thanks for the response, we're using the BSP from rel_imx_4.9.88_2.0.0_ga and it's too far down the line to change right now.

0 项奖励
回复

1,346 次查看
chrisroed
Contributor IV

I seem to have found a workaround for this issue...

One can set the the brightness value to 0 to turn off the display (this doesn't break my wifi... so far anyway)

HOWEVER it must be noted that when you turn on the display again you must write the MAX value of the brightness to that register in order for the backlight to be adjustable again.  In my case the value is 7 according to the setup in my device tree.  I do this in code, and it's fast enough that the flicker isn't *too* noticeable.

If you do not write the max value to the brightness register when turning it on, the brightness will not be adjustable and will look as though you've set the maximum value.  

0 项奖励
回复