For PMIC that power off supplies by write register via i2c bus,
it's better to do power off at syscore shutdown.
Because when run to kernel's "pm_power_off" call, i2c may has
been stopped or PMIC may not be able to get i2c transfer while
there are too many devices are competiting.
This patch effects on PMIC: RK808/RK818/RK816, not including RK805
which power off system by pull up pmic sleep pin in ATF.
The i2c maybe stopped before pm_power_off() is called, which
results in the PMIC power off failure issue.
Moving PMIC power off operation to syscore shutdown is better.
Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
Change-Id: Ib43827ebd49059719b8899f90a696b6c32a6ddd1
Fix the following gcc warning:
drivers/gpu/drm/rockchip/rockchip_vop2_clk.c:304:5: warning:
no previous prototype for 'vop2_clk_init' [-Wmissing-prototypes]
Fixes: 95b6a39dab ("drm/rockchip: vop2: Add support for rk3588")
Signed-off-by: Tao Huang <huangtao@rock-chips.com>
Change-Id: Ifc892f473a50a9e408e09648c7a6539ffda24039
The operation of reading back flash cache after programing is not
universal. At present, only ESMT devices are found to have this anomaly.
Change-Id: I3ec21eebc4aa7b8a259129ed2c036e1168553f27
Signed-off-by: Jon Lin <jon.lin@rock-chips.com>
RK3588 VOP:
4 Video Ports.
4 Cluster Windows.
4 Esmart Windows.
Can drive HDMI/eDP/DP/MIPI/BT1120/BT656 interface.
Support drive HDMI/DP 8k output in splice mode.
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
Change-Id: I37df329fcab729cd7fa1de47c4d5faf232bb265f
We enable PM runtime auto suspend on rockchip platforms
(e.g. RK3399), it allows the DWC3 controller to enter
runtime suspend if usb cable detached. So if the dwc3
is already in PM runtime suspend, we don't need to do
anything in dwc3_suspend() and dwc3_resume() which
duplicated the same operations as dwc3_runtime_suspend()
and dwc3_runtime_resume().
This patch can help to avoid kernel panic if accessing
the DWC3 registers in dwc3_resume() when the DWC3 is in
PM runtime suspend and it's power domain is power off.
Kernel panic - not syncing: Asynchronous SError Interrupt
CPU: 1 PID: 707 Comm: Binder:236_2 Not tainted 5.10.43 #270
Hardware name: Rockchip RK3566 RK817 TABLET LP4X Board (DT)
Call trace:
dump_backtrace+0x0/0x1c0
show_stack+0x18/0x24
dump_stack_lvl+0xc8/0x104
dump_stack+0x18/0x5c
panic+0x14c/0x390
test_taint+0x0/0x30
arm64_serror_panic+0x74/0x80
do_serror+0xd8/0xf8
el1_error+0x94/0x118
el1_abort+0x3c/0x60
el1_sync_handler+0x48/0x84
el1_sync+0x8c/0x140
dwc3_phy_setup+0x24/0x50c
dwc3_core_init+0x50/0xf40
dwc3_core_init_for_resume+0x64/0x274
dwc3_resume_common+0x3c/0x274
dwc3_resume+0x28/0x64
dpm_resume+0x134/0x568
Change-Id: I63e734f51b05274251d8a88a664eee768568eb7b
Signed-off-by: Wu Liang feng <wulf@rock-chips.com>
There is no validation of the index from dwc3_wIndex_to_dep() and we might
be referring a non-existing ep and trigger a NULL pointer exception. In
certain configurations we might use fewer eps and the index might wrongly
indicate a larger ep index than existing.
By adding this validation from the patch we can actually report a wrong
index back to the caller.
In our usecase we are using a composite device on an older kernel, but
upstream might use this fix also. Unfortunately, I cannot describe the
hardware for others to reproduce the issue as it is a proprietary
implementation.
[ 82.958261] Unable to handle kernel NULL pointer dereference at virtual address 00000000000000a4
[ 82.966891] Mem abort info:
[ 82.969663] ESR = 0x96000006
[ 82.972703] Exception class = DABT (current EL), IL = 32 bits
[ 82.978603] SET = 0, FnV = 0
[ 82.981642] EA = 0, S1PTW = 0
[ 82.984765] Data abort info:
[ 82.987631] ISV = 0, ISS = 0x00000006
[ 82.991449] CM = 0, WnR = 0
[ 82.994409] user pgtable: 4k pages, 39-bit VAs, pgdp = 00000000c6210ccc
[ 83.000999] [00000000000000a4] pgd=0000000053aa5003, pud=0000000053aa5003, pmd=0000000000000000
[ 83.009685] Internal error: Oops: 96000006 [#1] PREEMPT SMP
[ 83.026433] Process irq/62-dwc3 (pid: 303, stack limit = 0x000000003985154c)
[ 83.033470] CPU: 0 PID: 303 Comm: irq/62-dwc3 Not tainted 4.19.124 #1
[ 83.044836] pstate: 60000085 (nZCv daIf -PAN -UAO)
[ 83.049628] pc : dwc3_ep0_handle_feature+0x414/0x43c
[ 83.054558] lr : dwc3_ep0_interrupt+0x3b4/0xc94
...
[ 83.141788] Call trace:
[ 83.144227] dwc3_ep0_handle_feature+0x414/0x43c
[ 83.148823] dwc3_ep0_interrupt+0x3b4/0xc94
[ 83.181546] ---[ end trace aac6b5267d84c32f ]---
Change-Id: Iad43f5d46dfd81cabac976f7a65410ecc8a4fcd4
Signed-off-by: Marian-Cristian Rotariu <marian.c.rotariu@gmail.com>
Cc: stable <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20210608162650.58426-1-marian.c.rotariu@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: William Wu <william.wu@rock-chips.com>
(cherry picked from commit d00889080a)
at a high frame rate (120fps), the fast switch test has a higher probability of the following errors:
Failed to get runtime pm, -22
Signed-off-by: Yiqing Zeng <zack.zeng@rock-chips.com>
Change-Id: I6d9fdd86cc69368ba340ab7e43d2b6030a72ce8c
Move mpp_session_deinit out of the lock range.
Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
Change-Id: I46c3aaeb96c67ed04630b0da0a71385546dd5e7c
The RK806 are a Power Management IC (PMIC) for multimedia
and handheld devices. They contains the following components:
- Regulators
- Pinctrl
- PowerKey
Signed-off-by: shengfei Xu <xsf@rock-chips.com>
Change-Id: Iee9c521d52c53752286238c93b39afb5eb32e9b2
According the commit 729dcffd1e ("usb: dwc3: gadget: Add
support for disabling U1 and U2 entries"), it's necessary
to disable the U1 and U2 low power state to improve USB 3.0
performance for mass storage gadget and uvc gadget.
In addition, it can help to avoid the dwc3 wakeup failed
from U1 or U2 state when connect to the Host USB 3.0 interface.
android_work: sent uevent USB_STATE=CONNECTED
dwc3 fcc00000.dwc3: failed to send remote wakeup
dwc3 fcc00000.dwc3: wakeup failed --> -22
WARNING: CPU: 0 PID: 427 at drivers/usb/dwc3/gadget.c:319 dwc3_send_gadget_ep_cmd+0x198/0x93c
...
Call trace:
dwc3_send_gadget_ep_cmd+0x198/0x93c
dwc3_ep0_complete_status+0xe8/0x294
dwc3_ep0_interrupt+0x2ac/0x3d4
dwc3_process_event_entry+0x7c/0x610
dwc3_process_event_buf+0x6c/0x374
dwc3_thread_interrupt+0x38/0x64
irq_thread_fn+0x34/0x88
irq_thread+0x1a4/0x248
kthread+0x13c/0x344
ret_from_fork+0x10/0x30
dwc3 fcc00000.dwc3: failed to send remote wakeup
android_work: sent uevent USB_STATE=CONFIGURED
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I5993a3fceb79d59d276f6b909b17592fb36b6760
According the commit 729dcffd1e ("usb: dwc3: gadget: Add
support for disabling U1 and U2 entries"), it's necessary
to disable the U1 and U2 low power state to improve USB 3.0
performance for mass storage gadget and uvc gadget.
In addition, it can help to avoid the dwc3 wakeup failed
from U1 or U2 state when connect to the Host USB 3.0 interface.
android_work: sent uevent USB_STATE=CONNECTED
dwc3 fcc00000.dwc3: failed to send remote wakeup
dwc3 fcc00000.dwc3: wakeup failed --> -22
WARNING: CPU: 0 PID: 427 at drivers/usb/dwc3/gadget.c:319 dwc3_send_gadget_ep_cmd+0x198/0x93c
...
Call trace:
dwc3_send_gadget_ep_cmd+0x198/0x93c
dwc3_ep0_complete_status+0xe8/0x294
dwc3_ep0_interrupt+0x2ac/0x3d4
dwc3_process_event_entry+0x7c/0x610
dwc3_process_event_buf+0x6c/0x374
dwc3_thread_interrupt+0x38/0x64
irq_thread_fn+0x34/0x88
irq_thread+0x1a4/0x248
kthread+0x13c/0x344
ret_from_fork+0x10/0x30
dwc3 fcc00000.dwc3: failed to send remote wakeup
android_work: sent uevent USB_STATE=CONFIGURED
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I7887c782a0320abe768079b098eab17ee846dcf6
According the commit 729dcffd1e ("usb: dwc3: gadget: Add
support for disabling U1 and U2 entries"), it's necessary
to disable the U1 and U2 low power state to improve USB 3.0
performance for mass storage gadget and uvc gadget.
In addition, it can help to avoid the dwc3 wakeup failed
from U1 or U2 state when connect to the Host USB 3.0 interface.
android_work: sent uevent USB_STATE=CONNECTED
dwc3 fcc00000.dwc3: failed to send remote wakeup
dwc3 fcc00000.dwc3: wakeup failed --> -22
WARNING: CPU: 0 PID: 427 at drivers/usb/dwc3/gadget.c:319 dwc3_send_gadget_ep_cmd+0x198/0x93c
...
Call trace:
dwc3_send_gadget_ep_cmd+0x198/0x93c
dwc3_ep0_complete_status+0xe8/0x294
dwc3_ep0_interrupt+0x2ac/0x3d4
dwc3_process_event_entry+0x7c/0x610
dwc3_process_event_buf+0x6c/0x374
dwc3_thread_interrupt+0x38/0x64
irq_thread_fn+0x34/0x88
irq_thread+0x1a4/0x248
kthread+0x13c/0x344
ret_from_fork+0x10/0x30
dwc3 fcc00000.dwc3: failed to send remote wakeup
android_work: sent uevent USB_STATE=CONFIGURED
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: Ic63ee7852fbe1bcb3563b6dec455c0aee53522f1
Select Type-C related configs for Rockchip SoCs.
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Change-Id: I301d6538998a56788d88ab860e4270122783c918
This adds optional vbus control for husb311 Type-C controller.
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Change-Id: Idebff3cee16b10a9df4fa90b75d01b6a2223a5a4
At present, there is no requirement for PD3.0 PPS function,
the driver has not verified this function.
Change-Id: Ib78bf1f96f806cca4a20567db2a7cbaf0fba01af
Signed-off-by: Wang Jie <dave.wang@rock-chips.com>
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Add device tree binding document for Hynetek husb311 Type-C chip driver.
Signed-off-by: Frank Wang <frank.wang@rock-chips.com>
Change-Id: Ibe54b039ee773c5a99d5f7688d0695999fb45611
move alpha scale to crtc feature and add hdr10/dolby hdr info to
feature to interaction with userspace, and remove alpha_scale_prop from
rockchip_drm_drv.c
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: Ic56c7a53c890702ce4a70167ea9926aa32b29fa7
move alpha scale to crtc feature and add hdr10/dolby hdr info to feature
to interaction with userspace.
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Change-Id: I492647a22b41bf43c3127bd56b2ed0b3b95284a2
used_layers should reset to 0 before count
port_mux.
And also fix the follow warning:
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2538:26: warning: Value
stored to 'vp' during its initialization is never read
drivers/gpu/drm/rockchip/rockchip_drm_vop2.c:2537:21: warning: Value
stored to 'layer' during its initialization is never read
Fixes: e013d2544c ("drm/rockchip: vop2: Assign plane for vp by
plane_mask")
Change-Id: I56b1576070392b7b262ef65b19cf14d1bfde0586
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>