SC8886 will shutdown the output off in these cases
when battery was removed:
1. INPUT CRRENT is set to 0. In Battery system, battery
would take over system supply, but in no battery system,
it would restart due to system poweroff.
2. VBat is higher than VSysmin, sc8886 would switch
system supply to VBat, But in no battery system, there
is just a capacitance, the voltage of capacitance would
be pull down quickly when supply switch and it make
system restart.
Signed-off-by: Zain Wang <wzz@rock-chips.com>
Change-Id: I0398d55d511254821744c4e7d4448ef4605af509
The value of bit[15:14] in DDR_GRF_BASE1 define px30/px30s.
px30: bit[15:14]=0x00
px30s: bit[15:14]=0x03
Change-Id: I07e31e8fd56ee2eea7883a5f5de012740ec0e98a
Signed-off-by: Liang Chen <cl@rock-chips.com>
On rockchip platforms (e.g. RK3588/RV1106), the dwc3 drd port
can be designed with Type-A interface, and when the drd work
as device mode, the vbus may be set to always on (RK3588 EVB2)
or the vbus is supplied by host.
The current code sets the desired sw_mode to device (peripheral)
when the dwc3 controller is initialized with no usb cable/device
connected, this sets the usb2 phy stay in normal mode. For device
mode with vbus always on (RK3588 EVB2), it's not standard design,
we can allow the usb2 phy to stay in normal mode to detect whether
usb device is connecting to host. But for device mode with vbus
is supplied by host (RV1106 EVB1), we can use the vbus to detect
whether usb device is connecting to host, in this case, the usb2
phy needs to be put in suspend mode by default.
In order to make the usb2 phy in suspend mode by default for
Type-A interface when drd in device mode and vbus isn't always
on, we only set the desired sw_mode to peripheral if the state
of EXTCON_USB it true.
Fixes: 58780864ccc4 ("usb: dwc3: drd: fix desired sw_mode when drd init for rockchip")
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I14a1bda0d80c71616007ca983840f3c585c1e6ef
The otg port on Rockchip platforms can be designed in
three different hardware circuits with Type-A interface.
1. RK3588 EVB2 Type-A OTG0 port with vbus is controlled
by gpio, and vbus is always in high level.
2. RV1106 EVB1 Type-A OTG port with standard vbus designed
that vbus isn't always on, and just depends on the OTG
mode, that is, when the OTG port work as device mode,
the vbus is supplied by Host, when the OTG port work
as host mode, the vbus is always on.
3. RV1103 EVB1 Type-A OTG port has no vbus pin, and we set
the utmi_bvalid of phy to high from GRF software control.
In this case, the utmi_bvalid status register is in low
level, so we can't use the utmi_bvalid status to check the
utmi_bvalid for RV1103.
In order to support the above three application scenarios
for Type-A OTG port, especially phy runtime suspend control
for device mode, we need this patch.
With this patch, we can fix the following two issues:
1. RV1106 EVB1 Type-A OTG port can't enter phy suspend if
no usb cable connected.
2. RV1103 failed to switch to device mode by "otg_mode"
node, because phy enter suspend unexpectedly.
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: Ia0d388345a4768a721a7e289956bca9684f69a36
RV1103 USB has no VBUS pin and we set the utmi_bvalid of phy
to come from PERI_GRF_USBPHY_CON2[14], and at the same time
set the utmi_bvalid to high by default. This case like VBUS
pin always on high level, so we need to add "vbus-always-on"
property for RV1103 USB OTG port.
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: Iae9297b5b9166976bc5d1f8d3a9b8f110a9e5e34
drm_bridge_attach called by a kms driver to link the bridge to
an encoder's chain, mipi driver shall init a drm_connector when
DRM_BRIDGE_ATTACH_NO_CONNECTOR is set which the bridge shall
not create a drm_connector.
Change-Id: I83f16976ce506a38d80d3595c352e7bc263a50b1
Signed-off-by: Guochun Huang <hero.huang@rock-chips.com>
The voltage of MICBIAS is 0.975*AVDD, it makes the transistors
close to saturation, and appropriately reducing the voltage
can make the transistor work in a linear amplification state.
Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
Change-Id: Ie7713176204d4c5164c2bb2f4597930748413649
The acodec may need to form a 2mic+2loopback mode with
"mode1" of “I2STDM Digital Loopback Mode”, so here we
need to specify channel_max as 4, so as not to limit
the maximum number of channels.
Signed-off-by: Xing Zheng <zhengxing@rock-chips.com>
Change-Id: I7b4eeedcfb27c1c96ec6b69c5c3d33f8a26ff8a2
According to DP 1.4a 3.5.1.2, when a DP controller reads a request
pre-emphasis and swing that beyond DP standard's limits, the dp
controller shall set the pre-emphasis level according to the request
and set the highest voltage swing level that it can output with the
given pre-emphasis level.
When the pre-emphasis or swing reach the max level that the dp
controller can output, the MAX_PRE-EMPHASIS_REACHED or
MAX_SWING_REACHED bit should be set in DPCD TRAINING_LANEx_SET
registers.
Signed-off-by: Zhang Yubing <yubing.zhang@rock-chips.com>
Change-Id: I5c0529ee991248acbc1689c6e1b0f4719759f167
Page owner of pages used by page owner itself used is missing on arm32
targets. The reason is dummy_handle and failure_handle is not initialized
correctly. Buddy allocator is used to initialize these two handles.
However, buddy allocator is not ready when page owner calls it. This
change fixed that by initializing page owner after buddy initialization.
The working flow before and after this change are:
original logic:
1. allocated memory for page_ext(using memblock).
2. invoke the init callback of page_ext_ops like page_owner(using buddy
allocator).
3. initialize buddy.
after this change:
1. allocated memory for page_ext(using memblock).
2. initialize buddy.
3. invoke the init callback of page_ext_ops like page_owner(using buddy
allocator).
with the change, failure/dummy_handle can get its correct value and page
owner output for example has the one for page owner itself:
Page allocated via order 2, mask 0x6202c0(GFP_USER|__GFP_NOWARN), pid 1006, ts 67278156558 ns
PFN 543776 type Unmovable Block 531 type Unmovable Flags 0x0()
init_page_owner+0x28/0x2f8
invoke_init_callbacks_flatmem+0x24/0x34
start_kernel+0x33c/0x5d8
Link: https://lkml.kernel.org/r/1603104925-5888-1-git-send-email-zhenhuah@codeaurora.org
Signed-off-by: Zhenhua Huang <zhenhuah@codeaurora.org>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
(cherry picked from commit 7fb7ab6d61)
Signed-off-by: Jianqun Xu <jay.xu@rock-chips.com>
Change-Id: I5bdf1274eba27dacd41b92246c70bb41a69bd87e
It is necessary for rv1106 to enable win interlace_read
feature when using 'i' display mode, like 720x480i and
720x576i.
Signed-off-by: Damon Ding <damon.ding@rock-chips.com>
Change-Id: I174043875d2b19f0eebaa43f3555de3ca6d96c00
Reset the system through the watchdog when the system crashes with a
very low probability.
Signed-off-by: Dingxian Wen <shawn.wen@rock-chips.com>
Change-Id: I075852d6fcf9fbf5428c3b9ec794d58c3471a8af
1. Change length according to speed grade.
2. Set supported platforms according to SoC version and speed grade.
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Change-Id: I448d3f784216bc034ea2900e5ab837920721cdd0
This patch fixes the following compile warning:
drivers/phy/rockchip/phy-rockchip-inno-usb2.c:1225:3: warning: Value stored to 'sch_work' is never read
drivers/phy/rockchip/phy-rockchip-inno-usb2.c:1235:4: warning: Value stored to 'sch_work' is never read
Signed-off-by: William Wu <william.wu@rock-chips.com>
Change-Id: I053f5775b28707a45530405084e3df827edde882
The system calls pm_runtime_get_noresume() to prevent device
from entering to runtime suspend status when reboot, and the
pm_runtime_put_sync_suspend() is called in a delay work,
so when reboot the power domain may be power on,
but the regulator is disabled, it's not allowed.
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Change-Id: Ie25451ddf4fc866e93e7272a8d9a809919a96e1d
When system resume, all power domains will power on in
dpm_noirq_resume_devices(), if vdd gpu is disabled before system
suspend, the pd gpu will failed to power on when system resume,
the detail as follows:
rockchip-pm-domain fd8d8000.power-management:power-controller: failed to get ack on domain 'gpu', target_idle = 0, target_ack = 0, val=0x8080f
Kernel panic - not syncing: panic_on_set_idle set ...
CPU: 0 PID: 1947 Comm: Binder:352_2 Not tainted 5.10.66 #960
Hardware name: Rockchip RK3588 EVB1 LP4 V10 Board (DT)
Call trace:
dump_backtrace+0x0/0x1c8
show_stack+0x1c/0x2c
dump_stack_lvl+0xdc/0x12c
dump_stack+0x1c/0x64
panic+0x150/0x3a4
rockchip_pmu_set_idle_request+0x1f8/0x1fc
rockchip_pd_power+0x11c/0x1e0
rockchip_pd_power_on+0x28/0x38
genpd_sync_power_on+0xf4/0x134
genpd_resume_noirq+0x70/0xd0
device_resume_noirq+0x1a8/0x410
dpm_noirq_resume_devices+0x100/0x55c
dpm_resume_noirq+0x18/0x34
suspend_enter+0x33c/0x52c
suspend_devices_and_enter+0xec/0x338
enter_state+0x12c/0x3f8
pm_suspend+0x60/0xcc
state_store+0x108/0x148
kobj_attr_store+0x1c/0x34
sysfs_kf_write+0x40/0x58
kernfs_fop_write_iter+0xf0/0x194
vfs_write+0x328/0x390
ksys_write+0x78/0xe8
__arm64_sys_write+0x20/0x30
el0_svc_common+0xc0/0x23c
do_el0_svc+0x28/0x88
el0_svc+0x14/0x24
el0_sync_handler+0x88/0xec
el0_sync+0x1a8/0x1c0
SMP: stopping secondary CPUs
Signed-off-by: Finley Xiao <finley.xiao@rock-chips.com>
Change-Id: I89f80d37ab2cc61c715bce3f8a25c26552918922
Split the driver code into separate source file
Fixes: 0ca8d654bd ("drm/bridge: Add support for BU18TL82-M/BU18RL82-M")
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
Change-Id: Id46cfbab9b21812432da0db1cfb4306feb79c595
The work ata_scsi_dev_rescan will hangup and can not wakeup if PM
enter sleep at the sata device wake-up process.
Signed-off-by: Yifeng Zhao <yifeng.zhao@rock-chips.com>
Change-Id: I44045505c2e691102ab90ba3b2ae3031e7bab0a6