If the hdmi color format is set to DRM_HDMI_OUTPUT_YCBCR_HQ or
DRM_HDMI_OUTPUT_YCBCR_LQ when the system boot, The actual color
formats is YUV444/YUV422/YUV420. This leads to misjudgment that
the color format has changed, hdmi will be reset. That cause
display err between kernel logo and bootanimation.
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
Change-Id: I5d4784ecb64df82ab40723fddb6aef94cb493c5e
(kbdev->current_freqs[i] > freqs[i]) will be always false becasue kbdev->current_freqs[i]
has been updated to freqs[i], so we need save current_freqs[i] to old_freqs[i].
Change-Id: I3f8a06d474a359cf292460878c53592c4ce1472b
Signed-off-by: Liang Chen <cl@rock-chips.com>
VOP2 has a writeback with max 1920 x 1080 output.
Writeback work as a connector in drm system.
Change-Id: I670ca8de5155f1102454c618c62dd0c51fa45202
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
1. Add hdr2sdr_bypass_en and hdr2sdr_auto_gating_en bits, which
unmentationed in TRM.
2. HDR2SDR and SDR2HDR should overlay in RGB color space.
3. Window csc should be disabled when HDR2SDR or SDR2HDR enabled.
Change-Id: Ic3e15c3f0ddb5adf23a4962366749228f5117a9f
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
According to TRM, the max_intput/output width of a cluster window
should reduce by half when work in two win mode.
Change-Id: I5cbe10605e8895eb307df9591b222c9293bee21a
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
HDMI status maybe incorrect in the following condition:
HDMI plug in -> system sleep -> HDMI plug out -> system wake up.
At this time, cat /sys/class/drm/card 0-HDMI-A-1/status is connected.
There is no hpd interrupt, because HDMI is powerdown during suspend.
So we need check the current HDMI status in this case.
Test on rk3288 & rk3399.
Change-Id: I2fbafd1d80b59628bca65e9e45760a24d1668241
Signed-off-by: Nickey Yang <nickey.yang@rock-chips.com>
dclk_div2 and dclk_div2_phase are undocumented in TRM, but
these two bit should be set at YUV420 output mode.
Change-Id: I711336798a7d352c8f7a85f1fedfa5933d8261ec
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
If dw-hdmi is not used as the final output port, it is
only used as a bridge but not a connector.
Change-Id: Ie730f47d6075db74c0c54374849fd938c13f5ba8
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
Because hdmirx phy only support yuv420 when input mode is 4K-60Hz,
y2r should be enabled.
Change-Id: I1eca2c6783c63e07cb13b617bb32ff81f2229c7d
Signed-off-by: Algea Cao <algea.cao@rock-chips.com>
def_mode picture_aspect_ratio is no HDMI_PICTURE_ASPECT_NONE,
but Android set mode, the picture_aspect_ratio is HDMI_PICTURE_ASPECT_NONE,
When comparing the new mode with the old mode, the two are inconsistent,
so the mode will be changed.
Signed-off-by: Shunqing Chen <csq@rock-chips.com>
Change-Id: Ide07f9f7251a4ad22d4c27136005be77f1dfd4e2
This is workaround solution for IC design:
esmart can't support scale down when actual_w % 16 == 1.
Change-Id: I0fa090c5e28b79e644ef31ea1184b724b9d32ffa
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
According to test: Cluster can work with >, But
Esmart must enable gt2 when src_h = 2 * dst_h;
Change-Id: I3347eb4e340df093f7ab29afcb3a80ae5e03b0cc
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
post bcsh csc module need to know win overlay at yuv or rgb domain.
Change-Id: I246c22ddf0d02f48f515947a48ef058dca36c7a5
Signed-off-by: Sandy Huang <hjc@rock-chips.com>
Two sub windows in a cluster share same ctrl register bit.
Change-Id: I0a123fd3a1f63bbf0d6abea557e6024a99adb4cb
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
YUV 10 bit config value on Cluster is different
with Esmart/Smart.
Change-Id: If334f347b6d1759650113b36327a49a850f03e0e
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
This reverts commit 72289dc23c which is
commit de9f8eea5a upstream.
It breaks the current drm abi and for Android devices, should not be an
issue as modesetting isn't a big deal for them.
Bug: 161946584
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: I74a8e98a755dcd68a79a9fe6c50d92806cb7a1f2
Changes in 4.19.161
perf event: Check ref_reloc_sym before using it
netfilter: clear skb->next in NF_HOOK_LIST()
btrfs: don't access possibly stale fs_info data for printing duplicate device
btrfs: fix lockdep splat when reading qgroup config on mount
wireless: Use linux/stddef.h instead of stddef.h
KVM: arm64: vgic-v3: Drop the reporting of GICR_TYPER.Last for userspace
KVM: x86: handle !lapic_in_kernel case in kvm_cpu_*_extint
KVM: x86: Fix split-irqchip vs interrupt injection window request
arm64: pgtable: Fix pte_accessible()
arm64: pgtable: Ensure dirty bit is preserved across pte_wrprotect()
drm/atomic_helper: Stop modesets on unregistered connectors harder
ALSA: hda/hdmi: fix incorrect locking in hdmi_pcm_close
HID: cypress: Support Varmilo Keyboards' media hotkeys
HID: add support for Sega Saturn
Input: i8042 - allow insmod to succeed on devices without an i8042 controller
HID: hid-sensor-hub: Fix issue with devices with no report ID
HID: add HID_QUIRK_INCREMENT_USAGE_ON_DUPLICATE for Gamevice devices
dmaengine: xilinx_dma: use readl_poll_timeout_atomic variant
x86/xen: don't unbind uninitialized lock_kicker_irq
HID: Add Logitech Dinovo Edge battery quirk
proc: don't allow async path resolution of /proc/self components
nvme: free sq/cq dbbuf pointers when dbbuf set fails
dmaengine: pl330: _prep_dma_memcpy: Fix wrong burst size
scsi: libiscsi: Fix NOP race condition
scsi: target: iscsi: Fix cmd abort fabric stop race
perf/x86: fix sysfs type mismatches
xtensa: uaccess: Add missing __user to strncpy_from_user() prototype
phy: tegra: xusb: Fix dangling pointer on probe failure
batman-adv: set .owner to THIS_MODULE
ARM: dts: dra76x: m_can: fix order of clocks
scsi: ufs: Fix race between shutdown and runtime resume flow
bnxt_en: fix error return code in bnxt_init_one()
bnxt_en: fix error return code in bnxt_init_board()
video: hyperv_fb: Fix the cache type when mapping the VRAM
bnxt_en: Release PCI regions when DMA mask setup fails during probe.
cxgb4: fix the panic caused by non smac rewrite
s390/qeth: fix tear down of async TX buffers
IB/mthca: fix return value of error branch in mthca_init_cq()
nfc: s3fwrn5: use signed integer for parsing GPIO numbers
net: ena: set initial DMA width to avoid intel iommu issue
ibmvnic: fix NULL pointer dereference in reset_sub_crq_queues
ibmvnic: fix NULL pointer dereference in ibmvic_reset_crq
optee: add writeback to valid memory type
efivarfs: revert "fix memory leak in efivarfs_create()"
can: gs_usb: fix endianess problem with candleLight firmware
platform/x86: thinkpad_acpi: Send tablet mode switch at wakeup time
platform/x86: toshiba_acpi: Fix the wrong variable assignment
can: m_can: fix nominal bitiming tseg2 min for version >= 3.1
perf probe: Fix to die_entrypc() returns error correctly
USB: core: Change %pK for __user pointers to %px
usb: gadget: f_midi: Fix memleak in f_midi_alloc
USB: quirks: Add USB_QUIRK_DISCONNECT_SUSPEND quirk for Lenovo A630Z TIO built-in usb-audio card
usb: gadget: Fix memleak in gadgetfs_fill_super
x86/speculation: Fix prctl() when spectre_v2_user={seccomp,prctl},ibpb
x86/resctrl: Remove superfluous kernfs_get() calls to prevent refcount leak
x86/resctrl: Add necessary kernfs_put() calls to prevent refcount leak
USB: core: Fix regression in Hercules audio card
Linux 4.19.161
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Change-Id: Ib704b9ff60755978b272aa358d25ddb217cc37bc
commit de9f8eea5a upstream.
Unfortunately, it appears our fix in:
commit b5d29843d8 ("drm/atomic_helper: Allow DPMS On<->Off changes
for unregistered connectors")
Which attempted to work around the problems introduced by:
commit 4d80273976 ("drm/atomic_helper: Disallow new modesets on
unregistered connectors")
Is still not the right solution, as modesets can still be triggered
outside of drm_atomic_set_crtc_for_connector().
So in order to fix this, while still being careful that we don't break
modesets that a driver may perform before being registered with
userspace, we replace connector->registered with a tristate member,
connector->registration_state. This allows us to keep track of whether
or not a connector is still initializing and hasn't been exposed to
userspace, is currently registered and exposed to userspace, or has been
legitimately removed from the system after having once been present.
Using this info, we can prevent userspace from performing new modesets
on unregistered connectors while still allowing the driver to perform
modesets on unregistered connectors before the driver has finished being
registered.
Changes since v1:
- Fix WARN_ON() in drm_connector_cleanup() that CI caught with this
patchset in igt@drv_module_reload@basic-reload-inject and
igt@drv_module_reload@basic-reload by checking if the connector is
registered instead of unregistered, as calling drm_connector_cleanup()
on a connector that hasn't been registered with userspace yet should
stay valid.
- Remove unregistered_connector_check(), and just go back to what we
were doing before in commit 4d80273976 ("drm/atomic_helper: Disallow
new modesets on unregistered connectors") except replacing
READ_ONCE(connector->registered) with drm_connector_is_unregistered().
This gets rid of the behavior of allowing DPMS On<->Off, but that should
be fine as it's more consistent with the UAPI we had before - danvet
- s/drm_connector_unregistered/drm_connector_is_unregistered/ - danvet
- Update documentation, fix some typos.
Fixes: b5d29843d8 ("drm/atomic_helper: Allow DPMS On<->Off changes for unregistered connectors")
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Rodrigo Vivi <rodrigo.vivi@intel.com>
Cc: stable@vger.kernel.org
Cc: David Airlie <airlied@linux.ie>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20181016203946.9601-1-lyude@redhat.com
(cherry picked from commit 39b50c6038)
Fixes: e96550956f ("drm/atomic_helper: Disallow new modesets on unregistered connectors")
Fixes: 34ca26a98a ("drm/atomic_helper: Allow DPMS On<->Off changes for unregistered connectors")
Cc: stable@vger.kernel.org
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Christoph Niedermaier <cniedermaier@dh-electronics.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
When there is no layer attach to a port, the por_mux
should set to zero.
Change-Id: I880c3ff4ce8cac8ee41bdc7e6666d13796357cc6
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>
If layer_sel or port_mux config done immediately, the layer
map and port mux may change when one frame is still in display
process.
Change-Id: I5611e75c56c89fd4fa02a069acc971c9266b05b6
Signed-off-by: Andy Yan <andy.yan@rock-chips.com>