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 = <®_wifi_3p3v>;
non-removable;
};
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:
Best regards
igor
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.