Tomi Valkeinen
9fc75c40fa
drm/bridge: tc358768: Attempt to fix DSI horizontal timings
...
The DSI horizontal timing calculations done by the driver seem to often
lead to underflows or overflows, depending on the videomode.
There are two main things the current driver doesn't seem to get right:
DSI HSW and HFP, and VSDly. However, even following Toshiba's
documentation it seems we don't always get a working display.
This patch attempts to fix the horizontal timings for DSI event mode, and
on a system with a DSI->HDMI encoder, a lot of standard HDMI modes now
seem to work. The work relies on Toshiba's documentation, but also quite
a bit on empirical testing.
This also adds timing related debug prints to make it easier to improve
on this later.
The DSI pulse mode has only been tested with a fixed-resolution panel,
which limits the testing of different modes on DSI pulse mode. However,
as the VSDly calculation also affects pulse mode, so this might cause a
regression.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-12-31725f008a50@ideasonboard.com
2023-09-20 13:54:08 +02:00
Tomi Valkeinen
f1dabbe645
drm/bridge: tc358768: Fix tc358768_ns_to_cnt()
...
The tc358768_ns_to_cnt() is, most likely, supposed to do a div-round-up
operation, but it misses subtracting one from the dividend.
Fix this by just using DIV_ROUND_UP().
Fixes: ff1ca6397b ("drm/bridge: Add tc358768 driver")
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-11-31725f008a50@ideasonboard.com
2023-09-20 13:48:47 +02:00
Tomi Valkeinen
b3aa7b3492
drm/bridge: tc358768: Clean up clock period code
...
The driver defines TC358768_PRECISION as 1000, and uses "nsk" to refer
to clock periods. The original author does not remember where all this
came from. Effectively the driver is using picoseconds as the unit for
clock periods, yet referring to them by "nsk".
Clean this up by just saying the periods are in picoseconds.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-10-31725f008a50@ideasonboard.com
2023-09-20 13:48:46 +02:00
Tomi Valkeinen
699cf62a7d
drm/bridge: tc358768: Rename dsibclk to hsbyteclk
...
The Toshiba documentation talks about HSByteClk when referring to the
DSI HS byte clock, whereas the driver uses 'dsibclk' name. Also, in a
few places the driver calculates the byte clock from the DSI clock, even
if the byte clock is already available in a variable.
To align the driver with the documentation, change the 'dsibclk'
variable to 'hsbyteclk'. This also make it easier to visually separate
'dsibclk' and 'dsiclk' variables.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-9-31725f008a50@ideasonboard.com
2023-09-20 13:48:44 +02:00
Tomi Valkeinen
89cfd50e13
drm/bridge: tc358768: Use dev for dbg prints, not priv->dev
...
Simplify the code by capturing the priv->dev value to dev variable, and
use it.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-8-31725f008a50@ideasonboard.com
2023-09-20 13:48:43 +02:00
Tomi Valkeinen
013ea98cdf
drm/bridge: tc358768: Print logical values, not raw register values
...
The driver debug prints DSI related timings as raw register values in
hex. It is much more useful to see the "logical" value of the timing,
not the register value.
Change the prints to print the values separately, in case a single
register contains multiple values, and use %u to have it in a more human
consumable form.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-7-31725f008a50@ideasonboard.com
2023-09-20 13:48:42 +02:00
Tomi Valkeinen
e5fb216781
drm/bridge: tc358768: Use struct videomode
...
The TC358768 documentation uses HFP, HBP, etc. values to deal with the
video mode, while the driver currently uses the DRM display mode
(htotal, hsync_start, etc).
Change the driver to convert the DRM display mode to struct videomode,
which then allows us to use the same units the documentation uses. This
makes it much easier to work on the code when using the TC358768
documentation as a reference.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-6-31725f008a50@ideasonboard.com
2023-09-20 13:48:40 +02:00
Tomi Valkeinen
1e08e78871
drm/bridge: tc358768: Cleanup PLL calculations
...
As is quite common, some of TC358768's PLL register fields are to be
programmed with (value - 1). Specifically, the FBD and PRD, multiplier
and divider, are such fields.
However, what the driver currently does is that it considers that the
formula used for PLL rate calculation is:
RefClk * [(FBD + 1)/ (PRD + 1)] * [1 / (2^FRS)]
where FBD and PRD are values directly from the registers, while a more
sensible way to look at it is:
RefClk * FBD / PRD * (1 / (2^FRS))
and when the FBD and PRD values are written to the registers, they will
be subtracted by one.
Change the driver accordingly, as it simplifies the PLL code.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-5-31725f008a50@ideasonboard.com
2023-09-20 13:48:39 +02:00
Tomi Valkeinen
66962d5c3c
drm/bridge: tc358768: Fix bit updates
...
The driver has a few places where it does:
if (thing_is_enabled_in_config)
update_thing_bit_in_hw()
This means that if the thing is _not_ enabled, the bit never gets
cleared. This affects the h/vsyncs and continuous DSI clock bits.
Fix the driver to always update the bit.
Fixes: ff1ca6397b ("drm/bridge: Add tc358768 driver")
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-4-31725f008a50@ideasonboard.com
2023-09-20 13:48:38 +02:00
Tomi Valkeinen
aa23099f47
drm/bridge: tc358768: Default to positive h/v syncs
...
As the TC358768 is a DPI to DSI bridge, the DSI side does not need to
define h/v sync polarities. This means that sometimes we have a mode
without defined sync polarities, which does not work on the DPI side.
Add a mode_fixup hook to default to positive sync polarities.
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-3-31725f008a50@ideasonboard.com
2023-09-20 13:48:36 +02:00
Tomi Valkeinen
a2d9036615
drm/bridge: tc358768: Fix use of uninitialized variable
...
smatch reports:
drivers/gpu/drm/bridge/tc358768.c:223 tc358768_update_bits() error: uninitialized symbol 'orig'.
Fix this by bailing out from tc358768_update_bits() if the
tc358768_read() produces an error.
Fixes: ff1ca6397b ("drm/bridge: Add tc358768 driver")
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com >
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com > # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com >
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-2-31725f008a50@ideasonboard.com
2023-09-20 13:48:35 +02:00
Thierry Reding
1716b1891e
drm/tegra: rgb: Parameterize V- and H-sync polarities
...
The polarities of the V- and H-sync signals are encoded as flags in the
display mode, so use the existing information to setup the signals for
the RGB interface.
Signed-off-by: Thierry Reding <treding@nvidia.com >
Cc: Thierry Reding <thierry.reding@gmail.com >
[tomi.valkeinen@ideasonboard.com: default to positive sync]
Reviewed-by: Peter Ujfalusi <peter.ujfalusi@gmail.com>
Tested-by: Maxim Schwalm <maxim.schwalm@gmail.com> # Asus TF700T
Tested-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Signed-off-by: Robert Foss <rfoss@kernel.org>
Link: https://patchwork.freedesktop.org/patch/msgid/20230906-tc358768-v4-1-31725f008a50@ideasonboard.com
2023-09-20 13:48:34 +02:00
Alicja Michalska
bb9fb4a42d
drm/bridge/analogix/anx78xx: Add missing definition
...
Analogix ANX78XX driver is missing definitions for anx7816.
It uses the same I2C register set as anx7818.
Signed-off-by: Alicja Michalska <ahplka19@gmail.com >
Reviewed-by: Robert Foss <rfoss@kernel.org >
Signed-off-by: Robert Foss <rfoss@kernel.org >
Link: https://patchwork.freedesktop.org/patch/msgid/ZPvagaXnQ/TlNEkJ@tora
2023-09-20 12:57:07 +02:00
Ben Skeggs
073bde4536
drm/nouveau/kms/nv50-: disable dcb parsing
...
- nvkm should provide all this info now
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-45-lyude@redhat.com
2023-09-19 18:22:30 -04:00
Ben Skeggs
0a4410a79f
drm/nouveau/kms/nv50-: create outputs based on nvkm info
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-44-lyude@redhat.com
2023-09-19 18:22:29 -04:00
Ben Skeggs
8b7d92cad9
drm/nouveau/kms/nv50-: create connectors based on nvkm info
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-43-lyude@redhat.com
2023-09-19 18:22:27 -04:00
Ben Skeggs
9c3361de06
drm/nouveau/kms/nv50-: name aux channels after their connector
...
- removes use of VBIOS data for naming
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-42-lyude@redhat.com
2023-09-19 18:22:27 -04:00
Ben Skeggs
0880bf4c43
drm/nouveau/kms/nv50-: create heads after outps/conns
...
- output info will be used later to determine MST support
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-41-lyude@redhat.com
2023-09-19 18:22:26 -04:00
Ben Skeggs
571028c46f
drm/nouveau/kms/nv50-: create heads based on nvkm head mask
...
No need to go poking HW directly, and probably shouldn't on GSP-RM.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-40-lyude@redhat.com
2023-09-19 18:22:26 -04:00
Ben Skeggs
56d732839e
drm/nouveau/disp/nv50-: skip DCB_OUTPUT_TV
...
We've never supported it.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-39-lyude@redhat.com
2023-09-19 18:22:25 -04:00
Ben Skeggs
cb3ec8cbd0
drm/nouveau/disp: move outp init/fini paths to chipset code
...
- pre-nv5x doesn't use any of this
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-38-lyude@redhat.com
2023-09-19 18:22:24 -04:00
Ben Skeggs
62b0eef237
drm/nouveau/disp: move outp/conn construction to chipset code
...
- pre-nv5x doesn't use any of this, has its own version DRM-side
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-37-lyude@redhat.com
2023-09-19 18:22:23 -04:00
Ben Skeggs
1958d69fa8
drm/nouveau/disp: add dp mst id get/put methods
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-36-lyude@redhat.com
2023-09-19 18:22:22 -04:00
Ben Skeggs
e206cae1e5
drm/nouveau/disp: add dp sst config method
...
This is presently unused on HW, we read a bunch of regs and calculate
the watermark during the second supervisor interrupt.
I don't want to change this yet as I need to re-remember how older HW
works exactly, but RM wants this info via RPC.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-35-lyude@redhat.com
2023-09-19 18:22:21 -04:00
Ben Skeggs
3147ce0d07
drm/nouveau/disp: move link training out of supervisor
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-34-lyude@redhat.com
2023-09-19 18:22:19 -04:00
Ben Skeggs
633716501c
drm/nouveau/disp: add dp train method
...
- passes DPCD information from DRM to NVKM
- removes NVKM's own sink caps handling
- link still trained from supervisor, more patches to come
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-33-lyude@redhat.com
2023-09-19 18:22:18 -04:00
Ben Skeggs
757033808c
drm/nouveau/kms/nv50-: fixup sink D3 before tearing down link
...
- fixes bug preventing this on SST
- implement for MST
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-32-lyude@redhat.com
2023-09-19 18:22:17 -04:00
Ben Skeggs
625ead3d39
drm/nouveau/kms/nv50-: flush mst disables together
...
- fixes some issues tearing down modes on tiled displays
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-31-lyude@redhat.com
2023-09-19 18:22:17 -04:00
Ben Skeggs
a5a7379f6d
drm/nouveau/kms/nv50-: split DP disable+enable into two modesets
...
Link training can finally be moved out of the supervisor sequence,
but first we need to split DP modesets into separate disable and
enable sequences to be able to perform link training between them
instead.
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-30-lyude@redhat.com
2023-09-19 18:22:16 -04:00
Ben Skeggs
bfb03a077b
drm/nouveau/disp: add dp rates method
...
- moves building of link rates table from NVKM to DRM
- preparing to move link training out of supervisor
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-29-lyude@redhat.com
2023-09-19 18:22:12 -04:00
Ben Skeggs
bd7a61bcbb
drm/nouveau/disp: add dp aux xfer method
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-28-lyude@redhat.com
2023-09-19 18:22:11 -04:00
Ben Skeggs
0bd4e9f7dc
drm/nouveau/disp: move dp aux pwr method to HAL
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-27-lyude@redhat.com
2023-09-19 18:22:10 -04:00
Ben Skeggs
e9c9b5b942
drm/nouveau/disp: add hdmi audio hal function
...
This just adds a hook for RM to use, HW paths remain untouched, but
should probably be cleaned up to use this too at some point.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-26-lyude@redhat.com
2023-09-19 18:22:10 -04:00
Ben Skeggs
5b9c0307a1
drm/nouveau/disp: add output lvds config method
...
- was previously part of acquire()
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-25-lyude@redhat.com
2023-09-19 18:22:09 -04:00
Ben Skeggs
2274ce7e36
drm/nouveau/disp: add output backlight control methods
...
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-24-lyude@redhat.com
2023-09-19 18:22:06 -04:00
Ben Skeggs
422f6d8a24
drm/nouveau/disp: remove SOR routing updates from supervisor
...
- these shouldn't be necessary now, and are done in acquire()/release()
- preparation for GSP-RM, where we don't control the supervisor
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-23-lyude@redhat.com
2023-09-19 18:22:05 -04:00
Ben Skeggs
b24bf8b8ba
drm/nouveau/disp: release outputs post-modeset
...
Prior to this commit, KMS would call release() prior to modeset, and the
second supervisor interrupt would update SOR routing if needed.
Now, KMS will call release() post-modeset and update routing immediately.
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-22-lyude@redhat.com
2023-09-19 18:22:04 -04:00
Ben Skeggs
8ed094211f
drm/nouveau/disp: move hdmi disable out of release()
...
- release() is being moved post-modeset, preserve hdmi behaviour for now
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-21-lyude@redhat.com
2023-09-19 18:22:04 -04:00
Ben Skeggs
6c6abab20b
drm/nouveau/disp: add output hdmi config method
...
- was previously part of acquire()
- preparation for GSP-RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-20-lyude@redhat.com
2023-09-19 18:22:03 -04:00
Ben Skeggs
c0f7b72942
drm/nouveau/kms/nv50-: move audio enable post-modeset
...
- adds tracking for post-UPDATE modeset operations, similar to mst[mo]'s
- audio won't work on RM without this
- we should probably have been doing this anyway
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-19-lyude@redhat.com
2023-09-19 18:22:02 -04:00
Ben Skeggs
232856e896
drm/nouveau/kms/nv50-: keep output state around until modeset complete
...
- we'll want this info post-UPDATE for later patches
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-18-lyude@redhat.com
2023-09-19 18:22:01 -04:00
Ben Skeggs
42db5692aa
drm/nouveau/kms/nv50-: remove nv_encoder.audio.connector
...
- use nv_encoder.conn instead, outp->conn never changes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-17-lyude@redhat.com
2023-09-19 18:22:01 -04:00
Ben Skeggs
e32de3da3f
drm/nouveau/kms/nv50-: pull some common init out of OR-specific code
...
- cleanup before additional changes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-16-lyude@redhat.com
2023-09-19 18:22:00 -04:00
Ben Skeggs
45d954c05d
drm/nouveau/disp: update SOR routing immediately on acquire()
...
- was previously delayed until second supervisor interrupt
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-15-lyude@redhat.com
2023-09-19 18:22:00 -04:00
Ben Skeggs
cefc3c1452
drm/nouveau/disp: add acquire_sor/pior()
...
- preparing to move protocol-specific args out of acquire() again
- avoid re-acquiring acquired output, will matter when enforced later
- sor/pior done at same time due to shared tmds/dp handling
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-14-lyude@redhat.com
2023-09-19 18:21:59 -04:00
Ben Skeggs
724e0f3b8b
drm/nouveau/disp: add acquire_dac()
...
- preparing to move protocol-specific args out of acquire() again
- avoid re-acquiring acquired output, will matter when enforced later
- this one is basically just a rename
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-13-lyude@redhat.com
2023-09-19 18:21:58 -04:00
Ben Skeggs
68ee172269
drm/nouveau/disp: shuffle to make upcoming diffs prettier
...
- preparing to move protocol-specific args out of acquire() again
- no code changes
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-12-lyude@redhat.com
2023-09-19 18:21:57 -04:00
Lyude Paul
1b477f4228
drm/nouveau/kms: Add INHERIT ioctl to nvkm/nvif for reading IOR state
...
Now that we're supporting things like Ada and the GSP, there's situations
where we really need to actually know the display state that we're starting
with when loading the driver in order to prevent breaking GSP expectations.
The first step in doing this is making it so that we can read the current
state of IORs from nvkm in DRM, so that we can fill in said into into the
atomic state.
We do this by introducing an INHERIT ioctl to nvkm/nvif. This is basically
another form of ACQUIRE, except that it will only acquire the given output
path for userspace if it's already set up in hardware. This way, we can go
through and probe each outp object we have in DRM in order to figure out
the current hardware state of each one. If the outp isn't in use, it simply
returns -ENODEV.
This is also part of the work that will be required for implementing GSP
support for display. While the GSP should mostly work without this commit,
this commit should fix some edge case bugs that can occur on initial driver
load. This also paves the way for some of the initial groundwork for
fastboot support.
Signed-off-by: Lyude Paul <lyude@redhat.com >
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-11-lyude@redhat.com
2023-09-19 18:21:56 -04:00
Ben Skeggs
8a7783c791
drm/nouveau/disp: rename internal output acquire/release functions
...
These will be made static later in the patch series, after the code that
uses them has been cleaned up in preparation for GSP-RM support.
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-10-lyude@redhat.com
2023-09-19 18:21:55 -04:00
Ben Skeggs
0cd7e07181
drm/nouveau/disp: add output method to fetch edid
...
- needed to support TMDS EDID on RM
Signed-off-by: Ben Skeggs <bskeggs@redhat.com >
Reviewed-by: Lyude Paul <lyude@redhat.com >
Acked-by: Danilo Krummrich <me@dakr.org >
Signed-off-by: Lyude Paul <lyude@redhat.com >
Link: https://patchwork.freedesktop.org/patch/msgid/20230919220442.202488-9-lyude@redhat.com
2023-09-19 18:21:54 -04:00