From: Benjamin Li <benl(a)squareup.com>
Take advantage of previously-added support for persisting PLL
registers across DSI PHY disable/enable cycles (see 328e1a6
'drm/msm/dsi: Save/Restore PLL status across PHY reset') to
support persisting across the very first DSI PHY enable at
boot.
The bootloader may have left the PLL registers in a non-default
state. For example, for dsi_pll_28nm.c on 8x16/8x39, the byte
clock mux's power-on reset configuration is to bypass DIV1, but
depending on …
[View More]bandwidth requirements[1] the bootloader may have
set the DIV1 path.
When the byte clock mux is registered with the generic clock
framework at probe time, the framework reads & caches the value
of the mux bit field (the initial clock parent). After PHY enable,
when clk_set_rate is called on the byte clock, the framework
assumes there is no need to reparent, and doesn't re-write the
mux bit field. But PHY enable resets PLL registers, so the mux
bit field actually silently reverted to the DIV1 bypass path.
This causes the byte clock to be off by a factor of e.g. 2 for
our tested WXGA panel.
The above issue manifests as the display not working and a
constant stream of FIFO/LP0 contention errors.
[1] The specific requirement for triggering the DIV1 path (and
thus this issue) on 28nm is a panel with pixel clock <116.7MHz
(one-third the minimum VCO setting). FHD/1080p (~145MHz) is fine,
WXGA/1280x800 (~75MHz) is not.
Signed-off-by: Benjamin Li <benl(a)squareup.com>
---
drivers/gpu/drm/msm/dsi/phy/dsi_phy.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
index 009f5b843dd1..139b4a5aaf86 100644
--- a/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
+++ b/drivers/gpu/drm/msm/dsi/phy/dsi_phy.c
@@ -621,6 +621,22 @@ static int dsi_phy_driver_probe(struct platform_device *pdev)
phy->pll = NULL;
}
+ /*
+ * As explained in msm_dsi_phy_enable, resetting the DSI PHY (as done
+ * in dsi_mgr_phy_enable) silently changes its PLL registers to power-on
+ * defaults, but the generic clock framework manages and caches several
+ * of the PLL registers. It initializes these caches at registration
+ * time via register read.
+ *
+ * As a result, we need to save DSI PLL registers once at probe in order
+ * for the first call to msm_dsi_phy_enable to successfully bring PLL
+ * registers back in line with what the generic clock framework expects.
+ *
+ * Subsequent PLL restores during msm_dsi_phy_enable will always be
+ * paired with PLL saves in msm_dsi_phy_disable.
+ */
+ msm_dsi_pll_save_state(phy->pll);
+
dsi_phy_disable_resource(phy);
platform_set_drvdata(pdev, phy);
--
2.17.1
[View Less]
https://bugzilla.kernel.org/show_bug.cgi?id=51381
Summary: [drm:atom_op_jump] *ERROR* atombios stuck in loop for
more than 5secs aborting, when disabled via
vgaswitcheroo
Product: Drivers
Version: 2.5
Kernel Version: Linux version 3.6.9-1-ARCH (tobias@T-POWA-LX) (gcc
version 4.7.2 (GCC) ) #1 SMP PREEMPT Tue Dec 4
08:04:10 CET 2012
Platform: All
OS/Version: …
[View More]Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Video(DRI - non Intel)
AssignedTo: drivers_video-dri(a)kernel-bugs.osdl.org
ReportedBy: a(a)anrd.net
Regression: Yes
Created an attachment (id=88591)
--> (https://bugzilla.kernel.org/attachment.cgi?id=88591)
journald log
After updating from 3.6.6 to 3.6.9 my laptop with Intel graphics and ATI HD
5650 will not resume from suspend. I use vgaswitcheroo to disable the ATI card
at boot. On resume the computer almost hangs (I can press power button and wait
5 minutes for a proper shutdown, but no other interaction is possible). It logs
a lot of messages saying:
[drm:atom_op_jump] *ERROR* atombios stuck in loop for more than 5secs aborting
[drm:atom_execute_table_locked] *ERROR* atombios stuck executing D098 (len 72,
WS 0, PS 0) @ 0xD0C7
Steps to reproduce:
echo "OFF" > /sys/kernel/debug/vgaswitcheroo/switch
[suspend and resume]
Actual results:
Almost freeze.
Expected results:
Resume and work as normal.
Log is attached, but if you need anything else just ask.
--
Configure bugmail: https://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are watching the assignee of the bug.
[View Less]
In case the PHY is not initialized, do it in samsung_dsim_enable(),
otherwise the link configuration registers are not programmed at all.
Signed-off-by: Marek Vasut <marex(a)denx.de>
Cc: Fabio Estevam <festevam(a)gmail.com>
Cc: Guido Günther <agx(a)sigxcpu.org>
Cc: Jaehoon Chung <jh80.chung(a)samsung.com>
Cc: Lucas Stach <l.stach(a)pengutronix.de>
Cc: Marek Szyprowski <m.szyprowski(a)samsung.com>
Cc: Michael Tretter <m.tretter(a)pengutronix.de>
Cc: NXP …
[View More]Linux Team <linux-imx(a)nxp.com>
Cc: Shawn Guo <shawnguo(a)kernel.org>
Cc: linux-arm-kernel(a)lists.infradead.org
Cc: linux-samsung-soc(a)vger.kernel.org
To: dri-devel(a)lists.freedesktop.org
--
NOTE: This depends on https://patchwork.kernel.org/project/dri-devel/list/?series=347439
---
drivers/gpu/drm/bridge/samsung-dsim.c | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/drivers/gpu/drm/bridge/samsung-dsim.c b/drivers/gpu/drm/bridge/samsung-dsim.c
index 6d2d8dc027de..fbd87a74eb9f 100644
--- a/drivers/gpu/drm/bridge/samsung-dsim.c
+++ b/drivers/gpu/drm/bridge/samsung-dsim.c
@@ -1244,6 +1244,13 @@ static void samsung_dsim_enable(struct samsung_dsim *dsi)
pm_runtime_get_sync(dsi->dev);
dsi->state |= DSIM_STATE_ENABLED;
+ if (!(dsi->state & DSIM_STATE_INITIALIZED)) {
+ ret = samsung_dsim_init(dsi);
+ if (ret)
+ return;
+ dsi->state |= DSIM_STATE_INITIALIZED;
+ }
+
if (dsi->panel) {
ret = drm_panel_prepare(dsi->panel);
if (ret < 0)
--
2.28.0
[View Less]
This patch series cleans up the DDC code a little bit so that
it is more efficient time wise and supports grabbing the EDID
of the eDP panel over the aux channel. I timed this on a board
I have on my desk and it takes about 20ms to grab the EDID out
of the panel and make sure it is valid.
The first two patches seem less controversial so I stuck them at
the beginning. The third patch does the EDID reading and caches
it so we don't have to keep grabbing it over and over again. And
finally the …
[View More]last patch updates the reply field so that short
reads and nacks over the channel are reflected properly instead of
treating them as some sort of error that can't be discerned.
Stephen Boyd (4):
drm/bridge: ti-sn65dsi86: Combine register accesses in
ti_sn_aux_transfer()
drm/bridge: ti-sn65dsi86: Make polling a busy loop
drm/bridge: ti-sn65dsi86: Read EDID blob over DDC
drm/bridge: ti-sn65dsi86: Update reply on aux failures
drivers/gpu/drm/bridge/ti-sn65dsi86.c | 103 ++++++++++++++++++--------
1 file changed, 71 insertions(+), 32 deletions(-)
Cc: Douglas Anderson <dianders(a)chromium.org>
Cc: Laurent Pinchart <Laurent.pinchart(a)ideasonboard.com>
Cc: Jonas Karlman <jonas(a)kwiboo.se>
Cc: Jernej Skrabec <jernej.skrabec(a)siol.net>
Cc: Sean Paul <seanpaul(a)chromium.org>
base-commit: 3650b228f83adda7e5ee532e2b90429c03f7b9ec
--
Sent by a computer, using git, on the internet
[View Less]
https://bugzilla.kernel.org/show_bug.cgi?id=207833
Bug ID: 207833
Summary: Brightness control not working on ASUS TUF FA506IU
(AMD Ryzen 7 4800H / Nvidia GTX 1660 Ti)
Product: Drivers
Version: 2.5
Kernel Version: 5.6.12-1
Hardware: x86-64
OS: Linux
Tree: Mainline
Status: NEW
Severity: high
Priority: P1
Component: Video(DRI - non Intel)
…
[View More]Assignee: drivers_video-dri(a)kernel-bugs.osdl.org
Reporter: julen.pardo(a)outlook.es
Regression: No
Hello,
I've just bought an ASUS TUF FA506IU with and AMD Ryzen 7 4800H / Nvidia GTX
1660 Ti setup. Even if this is quite new hardware, I'd say that the only thing
that is not working at all is the brightness control. It's not working with the
function keys, nor from the energy settings, nor with xbacklight.
Actually, it's working a little; I can find a subtle difference between the max
value and the last 5 values, but that's it. Setting it to the minimum still
makes it way too bright.
I've noticed that this could be a range mismatch between "brightness" and
"max_brightness", and "actual_brightness". First are in 8 bit ranges, whereas
the actual brightness is in 16 bit range. I've tried some luck patching the
kernel to return an 8-bit value
(https://github.com/torvalds/linux/blob/master/drivers/gpu/drm/amd/display/d…),
but doing just that doesn't work (even if the "actual_brightness" was showing
an 8 bit value). In my case, the full path is
"/sys/class/backlight/amdgpu_bl1/".
I've also tried different acpi_backlight parameters with no luck.
I leave the output of lsmod | grep asus:
asus_wmi 40960 0
sparse_keymap 16384 1 asus_wmi
rfkill 28672 9 asus_wmi,bluetooth,cfg80211
battery 24576 1 asus_wmi
wmi 36864 2 asus_wmi,wmi_bmof
asus_wireless 20480 0
inxi -F:
System: Host: TUF-FA506IU Kernel: 5.6.12-1-MANJARO x86_64 bits: 64 Desktop:
KDE Plasma 5.18.5 Distro: Manjaro Linux
Machine: Type: Laptop System: ASUSTeK product: TUF Gaming FA506IU_FA506IU v:
1.0 serial: <root required>
Mobo: ASUSTeK model: FA506IU v: 1.0 serial: <root required> UEFI:
American Megatrends v: FA506IU.302
date: 03/04/2020
Battery: ID-1: BAT1 charge: 47.9 Wh condition: 47.9/48.1 Wh (100%)
CPU: Topology: 8-Core model: AMD Ryzen 7 4800H with Radeon Graphics bits:
64 type: MT MCP L2 cache: 4096 KiB
Speed: 2405 MHz min/max: 1400/2900 MHz Core speeds (MHz): 1: 1875 2:
2497 3: 1397 4: 1397 5: 1397 6: 1397 7: 1397
8: 1397 9: 1397 10: 1396 11: 2963 12: 1673 13: 1800 14: 1548 15:
1397 16: 1396
Graphics: Device-1: NVIDIA TU116M [GeForce GTX 1660 Ti Mobile] driver: nvidia
v: 440.82
Device-2: Advanced Micro Devices [AMD/ATI] Renoir driver: amdgpu v:
kernel
Display: x11 server: X.Org 1.20.8 driver: amdgpu,nvidia resolution:
1920x1080~144Hz, 2560x1440~60Hz
OpenGL: renderer: AMD RENOIR (DRM 3.36.0 5.6.12-1-MANJARO LLVM
10.0.0) v: 4.6 Mesa 20.0.6
Audio: Device-1: NVIDIA TU116 High Definition Audio driver: snd_hda_intel
Device-2: Advanced Micro Devices [AMD/ATI] driver: snd_hda_intel
Device-3: Advanced Micro Devices [AMD]
Raven/Raven2/FireFlight/Renoir Audio Processor driver: N/A
Device-4: Advanced Micro Devices [AMD] Family 17h HD Audio driver:
snd_hda_intel
Sound Server: ALSA v: k5.6.12-1-MANJARO
Network: Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet
driver: r8169
IF: enp2s0 state: down mac: a8:5e:45:36:94:32
Device-2: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter
driver: rtw_pci
IF: wlp3s0 state: up mac: 70:66:55:09:8c:e3
Drives: Local Storage: total: 476.94 GiB used: 32.41 GiB (6.8%)
ID-1: /dev/nvme0n1 vendor: Kingston model: OM8PCP3512F-AB size:
476.94 GiB
Partition: ID-1: / size: 48.97 GiB used: 25.95 GiB (53.0%) fs: ext4 dev:
/dev/nvme0n1p5
ID-2: /home size: 108.67 GiB used: 6.46 GiB (5.9%) fs: ext4 dev:
/dev/nvme0n1p7
ID-3: swap-1 size: 3.03 GiB used: 0 KiB (0.0%) fs: swap dev:
/dev/nvme0n1p8
Sensors: Message: No sensors data was found. Is sensors configured?
Info: Processes: 349 Uptime: 27m Memory: 7.20 GiB used: 3.04 GiB (42.2%)
Shell: zsh inxi: 3.0.37
--
You are receiving this mail because:
You are watching the assignee of the bug.
[View Less]
https://bugzilla.kernel.org/show_bug.cgi?id=203905
Bug ID: 203905
Summary: amdgpu:actual_brightness has unreal/wrong value
Product: Drivers
Version: 2.5
Kernel Version: 5.1.9
Hardware: All
OS: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: Video(DRI - non Intel)
Assignee: drivers_video-dri(a)kernel-bugs.osdl.org
…
[View More]Reporter: bjo(a)nord-west.org
Regression: No
Radeon R5/R6/R7 Graphics in a Thinkpad A275 has wrong values on
actual_brightness of amdgpu_bl0. While max_brightness is 255 and it can be set
to 255, actual_brightness reports a 5 digit number like 12470. As a result,
tools which want to change the brightness related to actual_brightness fail, as
brightness does not accept any 5 digit number,
--
You are receiving this mail because:
You are watching the assignee of the bug.
[View Less]
This is v2 of the series to convert the Exynos MIPI DSI driver into a drm
bridge and make it usable with other drivers. Although the driver is
converted, it still supports the component framework API to stay compliant
with the Exynos DRM driver.
The Exynos MIPI DSI Phy is also found on the i.MX8M Mini. However, on the
i.MX8M Mini, the bridge is driven by an LCDIF display controller instead of
the Exynos Decon. The driver for the LCDIF does not use the component
framework, but uses drm bridges.
…
[View More]
I don't have any Exynos SoC to actually test the series. I build a dummy to
test the bridge with a component driver, to make sure that at least the
initialization is working. Furthermore, tested the driver as a bridge with a
few additional unfinished patches on the i.MX8M Mini EVK. However, somebody
should verify that the driver is still working on Exynos hardware.
I also changed the order of the patches to first make the driver more platform
independent (patches 2 to 8), then convert to a drm bridge driver (patches 10
to 13) and finally expose the API, split the code and move the platform
independent driver to the bridges (patches 14 - 16). Hopefully this simplifies
testing/bisecting and helps me to understand potential error reports.
Also I added host_ops for attach/detach and the tearing effect handler to make
the calls into the platform code more visible.
Furthermore, the series should now apply to linux-next and correctly build the
exynos_defconfig.
Thanks,
Michael
Changelog:
v2:
- rebase on linux-next
- verify with exynos_defconfig
- fix crashes reported by Marek Szyprowski Exynos3250-based Rinato
- reorder patches
- add host_ops for platform specific code
- roughly test component framework integration with dummy
Michael Tretter (16):
drm/encoder: remove obsolete documentation of bridge
drm/exynos: remove in_bridge_node from exynos_dsi
drm/exynos: use exynos_dsi as drvdata
drm/exynos: extract helper functions for probe
drm/exynos: move dsi host registration to probe
drm/exynos: shift register values to fields on write
drm/exynos: use identifier instead of register offsets
drm/exynos: add host_ops callback for platform drivers
drm/exynos: add callback for tearing effect handler
drm/exynos: implement a drm bridge
drm/exynos: convert encoder functions to bridge function
drm/exynos: configure mode on drm bridge
drm/exynos: get encoder from bridge whenever possible
drm/exynos: add API functions for platform drivers
drm/exynos: split out platform specific code
drm/exynos: move bridge driver to bridges
drivers/gpu/drm/bridge/Kconfig | 9 +
drivers/gpu/drm/bridge/Makefile | 1 +
drivers/gpu/drm/bridge/samsung-dsim.c | 1790 +++++++++++++++++++++
drivers/gpu/drm/exynos/Kconfig | 5 +-
drivers/gpu/drm/exynos/exynos_drm_dsi.c | 1927 ++---------------------
include/drm/bridge/samsung-dsim.h | 64 +
include/drm/drm_encoder.h | 1 -
7 files changed, 2027 insertions(+), 1770 deletions(-)
create mode 100644 drivers/gpu/drm/bridge/samsung-dsim.c
create mode 100644 include/drm/bridge/samsung-dsim.h
--
2.20.1
[View Less]