mdss_fb_release_all runs when the display blanks between the splash
screen and launching the main menu (in "hello" example). If ref_cnt is
zero, it calls fb_notifier_call_chain with the payload of
FB_BLANK_POWERDOWN. The synaptics_dsx_i2c touchscreen driver is
subscribed to this notifier, and disables touch.
This is all fine except that the corresponding opposite operation - to
notify the subscribers with FB_BLANK_UNBLANK when the display
is *opened* - is not done anywhere. Add a call to mdss_fb_open
to do this whenever it's calling mdss_fb_blank_sub
For context, this behaviour was introduced in
commit a12be25aec3fd648f2a9c4c27e88d470bed41f67
Author: parasur <parasur@motorola.com>
Date: Mon Nov 7 09:45:54 2016 +0800
a12be25aec (diff-eab94fa9ea3e15183d23b93fbaf4e08bc137ae4ebbdc589fc106355b753d1b6a)
but probably (speculating) goes unnoticed in Androd because the
framebuffer is never closed in Android unless something crashes, at
which point most people probably reboot anyway
... this turns out to be all of them. Tested with
fastboot boot boot.img --cmdline "nixos.foo=true"
and then once booted, verify that most or all of the options in
device boot.kernelParams are not present
ched_enable_hmp=1
sched_enable_power_aware=1
nixos.foo=true
androidboot.emmc=true
androidboot.serialno=[redacted]
androidboot.baseband=msm
androidboot.mode=normal
androidboot.device=potter
androidboot.hwrev=0x83B0
androidboot.radio=EMEA
androidboot.powerup_reason=0x00004000
androidboot.bootreason=reboot
msm_poweroff.download_mode=0
androidboot.fsg-id=
androidboot.wifimacaddr=[redacted]
androidboot.btmacaddr=[redacted]
mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_mot_boe_520_1080p_vid_v0
androidboot.bootloader=0xC092
androidboot.carrier=retgb
androidboot.poweroff_alarm=0
androidboot.hardware.sku=XT1685
androidboot.secure_hardware=1
androidboot.bl_state=2
androidboot.cid=0x32
androidboot.uid=[redacted]
androidboot.write_protect=0
androidboot.ssm_data=[redacted]
androidboot.dualsim=true
CONFIG_SCREEN_OFF_GESTURES adds 5000 to the reported X co-ordinate
when it believes the screen is suspended, but it always believes the
screen is suspended even when it isn't. Hypothesis is that (1)
the pm_ops are not supplied in the i2c_driver code, so the
`suspended=false` line in synaptics_rmi4_resume is not called by
that path; (2) something odd is happening in synaptics_dsx_panel_cb
- which is passed to fb_register_client - such that the equivalent
message from the framebuffer is not being recognised as a reason to
call synaptics_rmi4_resume then either. </Handwaving>
Moto Potter boot partition is only 16MB, which is tight. In the vendor
kernel it has seven hwrev variants with a dts file for each - but four
of them are identical to three of the others. We can make a
significant saving on image size by shipping one of each of the
differing dts files and adding the board-id values of the other
identical hwrevs to each.