#
bf52d7f9 |
|
04-Apr-2024 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/dp: Don't probe eDP ports twice harder I didn't pay close enough attention the last time I tried to fix this problem - while we currently do correctly take care to make sure we don't probe a connected eDP port more then once, we don't do the same thing for eDP ports we found to be disconnected. So, fix this and make sure we only ever probe eDP ports once and then leave them at that connector state forever (since without HPD, it's not going to change on its own anyway). This should get rid of the last few GSP errors getting spit out during runtime suspend and resume on some machines, as we tried to reprobe eDP ports in response to ACPI hotplug probe events. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240404233736.7946-3-lyude@redhat.com (cherry picked from commit fe6660b661c3397af0867d5d098f5b26581f1290)
|
#
ee7e980d |
|
04-Apr-2024 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Disable AUX bus for disconnected DP ports GSP has its own state for keeping track of whether or not a given display connector is plugged in or not, and enforces this state on the driver. In particular, AUX transactions on a DisplayPort connector which GSP says is disconnected can never succeed - and can in some cases even cause unexpected timeouts, which can trickle up to cause other problems. A good example of this is runtime power management: where we can actually get stuck trying to resume the GPU if a userspace application like fwupd tries accessing a drm_aux_dev for a disconnected port. This was an issue I hit a few times with my Slimbook Executive 16 - where trying to offload something to the discrete GPU would wake it up, and then potentially cause it to timeout as fwupd tried to immediately access the dp_aux_dev nodes for nouveau. Likewise: we don't really have any cases I know of where we'd want to ignore this state and try an aux transaction anyway - and failing pointless aux transactions immediately can even speed things up. So - let's start enabling/disabling the aux bus in nouveau_dp_detect() to fix this. We enable the aux bus during connector probing, and leave it enabled if we discover something is actually on the connector. Otherwise, we just shut it off. This should fix some people's runtime PM issues (like myself), and also get rid of quite of a lot of GSP error spam in dmesg. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20240404233736.7946-2-lyude@redhat.com (cherry picked from commit 9c8a10bf1f3467b2c16f6848249bdc7692ace825)
|
#
3147ce0d |
|
19-Sep-2023 |
Ben Skeggs <bskeggs@redhat.com> |
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
|
#
63371650 |
|
19-Sep-2023 |
Ben Skeggs <bskeggs@redhat.com> |
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
|
#
75703380 |
|
19-Sep-2023 |
Ben Skeggs <bskeggs@redhat.com> |
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
|
#
bfb03a07 |
|
19-Sep-2023 |
Ben Skeggs <bskeggs@redhat.com> |
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
|
#
a69eeb37 |
|
19-Sep-2023 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: add output detect method This will check the relevant hotplug pin and skip the DDC probe we currently do if a display is present. - 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-8-lyude@redhat.com
|
#
949ab38a |
|
28-Jun-2023 |
Karol Herbst <kherbst@redhat.com> |
drm/nouveau/disp: drop unused argument in nv50_dp_mode_valid Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230628212248.3798605-2-kherbst@redhat.com
|
#
7f67aa09 |
|
30-Mar-2023 |
Karol Herbst <kherbst@redhat.com> |
drm/nouveau/disp: Support more modes by checking with lower bpc This allows us to advertise more modes especially on HDR displays. Fixes using 4K@60 modes on my TV and main display both using a HDMI to DP adapter. Also fixes similar issues for users running into this. Cc: stable@vger.kernel.org # 5.10+ Signed-off-by: Karol Herbst <kherbst@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20230330223938.4025569-1-kherbst@redhat.com
|
#
773eb04d |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: expose conn event class This removes some now-unnecessary nesting of workqueues. v2: - use ?: (lyude) Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
8bb30c88 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: add method to trigger DP link retrain This moves control of link retraining in response to HPD IRQ to the KMS driver's HPD IRQ handler. NVKM still handles checking link status for the moment, this can be moved to the KMS driver when it takes explicit control of link rate selection. v2: - skip source config on retrain (fixes some retrain failures) Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
016dacb6 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/kms: pass event mask to hpd handler Will be moving the DP link status check / re-train here so it's safe from racing with modeset routing changes. MST message handling etc. will remain where it is. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
a62b7493 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: add method to control DPAUX pad power This removes the need for NVKM to track DP HPD events, as the KMS driver follows them already, and has better information available. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com>
|
#
32dd9236 |
|
01-Jun-2022 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: add conn method to query HPD pin status And use it to bail early in DP detection and avoid futile AUX transactions. This could be used on other connector types too in theory, but it's not something we've ever done before and I'd rather not risk breaking working systems without looking into it more closely. It's safe for DP though. We already do this by checking an AUX register that contains HPD status and aborting the transaction. However, this is much deeper in the stack - after taking various mutexes, poking HW for no good reason, and making a mess in debug logs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
|
#
da68386d |
|
21-Apr-2022 |
Thomas Zimmermann <tzimmermann@suse.de> |
drm: Rename dp/ to display/ Rename dp/ to display/ to account for additional display-related helpers, such as HDMI. Update all related include statements. No functional changes. Various drivers, such as i915 and amdgpu, use similar naming scheme by putting code for video-output standards into a local display/ directory. The new directory's name is aligned with this convention. v2: * update commit message (Javier) Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Javier Martinez Canillas <javierm@redhat.com> Reviewed-by: Alex Deucher <alexander.deucher@amd.com> Link: https://patchwork.freedesktop.org/patch/msgid/20220421073108.19226-3-tzimmermann@suse.de
|
#
5b529e8d |
|
13-Jan-2022 |
Thomas Zimmermann <tzimmermann@suse.de> |
drm/dp: Move public DisplayPort headers into dp/ Move all public DisplayPort headers into dp/ and update users. No functional changes. v3: * rebased onto latest drm-tip Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de> Acked-by: Daniel Vetter <daniel@ffwll.ch> Link: https://patchwork.freedesktop.org/patch/msgid/20220114114535.29157-5-tzimmermann@suse.de
|
#
70704fbf |
|
23-Nov-2021 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp/dp: add support for eDP link rates eDP 1.4 adds a table of link rates supported by the sink to DPCD, as well as a LINK_RATE_SET register to select between the entries in it. If present, we will use this data to generate our internal link rate table rather than using the standard list based on MAX_LINK_RATE. Some recent laptops report MAX_LINK_RATE=0, and require this support. Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Reviewed-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Karol Herbst <kherbst@redhat.com> Link: https://gitlab.freedesktop.org/drm/nouveau/-/merge_requests/17
|
#
d7787cc0 |
|
29-Sep-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Fix clock checking algorithm in nv50_dp_mode_valid() While I thought I had this correct (since it actually did reject modes like I expected during testing), Ville Syrjala from Intel pointed out that the logic here isn't correct. max_clock refers to the max data rate supported by the DP encoder. So, limiting it to the output of ds_clock (which refers to the maximum dotclock of the downstream DP device) doesn't make any sense. Additionally, since we're using the connector's bpc as the canonical BPC we should use this in mode_valid until we support dynamically setting the bpp based on bandwidth constraints. https://lists.freedesktop.org/archives/dri-devel/2020-September/280276.html For more info. So, let's rewrite this using Ville's advice. v2: * Ville pointed out I mixed up the dotclock and the link rate. So fix that... * ...and also rename all the variables in this function to be more appropriately labeled so I stop mixing them up. * Reuse the bpp from the connector for now until we have dynamic bpp selection. * Use use DIV_ROUND_UP for calculating the mode rate like i915 does, which we should also have been doing from the start Signed-off-by: Lyude Paul <lyude@redhat.com> Fixes: 409d38139b42 ("drm/nouveau/kms/nv50-: Use downstream DP clock limits for mode validation") Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: Lyude Paul <lyude@redhat.com> Cc: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
2d831155 |
|
29-Sep-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Get rid of bogus nouveau_conn_mode_valid() Ville also pointed out that I got a lot of the logic here wrong as well, whoops. While I don't think anyone's likely using 3D output with nouveau, the next patch will make nouveau_conn_mode_valid() make a lot less sense. So, let's just get rid of it and open-code it like before, while taking care to move the 3D frame packing calculations on the dot clock into the right place. Signed-off-by: Lyude Paul <lyude@redhat.com> Fixes: d6a9efece724 ("drm/nouveau/kms/nv50-: Share DP SST mode_valid() handling with MST") Cc: Ville Syrjälä <ville.syrjala@linux.intel.com> Cc: <stable@vger.kernel.org> # v5.8+ Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
b770e843 |
|
04-Sep-2020 |
Ville Syrjälä <ville.syrjala@linux.intel.com> |
drm/dp: Redo drm_dp_downstream_max_clock() as drm_dp_downstream_max_dotclock() We want to differentiate between the DFP dotclock and TMDS clock limits. Let's convert the current thing to just give us the dotclock limit. v2: Use Returns: for kdoc (Lyude) Fix up nouveau code too Signed-off-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200904115354.25336-9-ville.syrjala@linux.intel.com Reviewed-by: Lyude Paul <lyude@redhat.com> Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
|
#
79416e97 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms: Start using drm_dp_read_dpcd_caps() Now that we've extracted i915's code for reading both the normal DPCD caps and extended DPCD caps into a shared helper, let's start using this in nouveau to enable us to start checking extended DPCD caps for free. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-21-lyude@redhat.com
|
#
a4efad35 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Add support for DP_SINK_COUNT This is another bit that we never implemented for nouveau: dongle detection. When a "dongle", e.g. an active display adaptor, is hooked up to the system and causes an HPD to be fired, we don't actually know whether or not there's anything plugged into the dongle without checking the sink count. As a result, plugging in a dongle without anything plugged into it currently results in a bogus EDID retrieval error in the kernel log. Additionally, most dongles won't send another long HPD signal if the user suddenly plugs something in, they'll only send a short HPD IRQ with the expectation that the source will check the sink count and reprobe the connector if it's changed - something we don't actually do. As a result, nothing will happen if the user plugs the dongle in before plugging something into the dongle. So, let's fix this by checking the sink count in both nouveau_dp_probe_dpcd() and nouveau_dp_irq(), and reprobing the connector if things change. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-18-lyude@redhat.com
|
#
409d3813 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Use downstream DP clock limits for mode validation This adds support for querying the maximum clock rate of a downstream port on a DisplayPort connection. Generally, downstream ports refer to active dongles which can have their own pixel clock limits. Note as well, we also start marking the connector as disconnected if we can't read the DPCD, since we wouldn't be able to do anything without DPCD access anyway. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-15-lyude@redhat.com
|
#
d297ce4b |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms: Only use hpd_work for reprobing in HPD paths Currently we perform both short IRQ handling for DP, and connector reprobing in the HPD IRQ handler. However since we need to grab connection_mutex in order to reprobe a connector, in theory we could accidentally block ourselves from handling any short IRQs until after a modeset completes if a connector hotplug happens to occur in parallel with a modeset. I haven't seen this actually happen yet, but since we're cleaning up nouveau's hotplug handling code anyway and we already have a hpd worker, we can simply fix this by only relying on the HPD worker to actually reprobe connectors when we receive a HPD IRQ. We also add a mask to nouveau_drm to keep track of which connectors are waiting to be reprobed in response to an HPD IRQ. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-13-lyude@redhat.com
|
#
8b75e83e |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms: Use new drm_dp_read_mst_cap() helper for checking MST caps Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-11-lyude@redhat.com
|
#
a0922278 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Refactor and cleanup DP HPD handling First some backstory here: Currently, we keep track of whether or not we've enabled MST or not by trying to piggy-back off the MST helpers. This means that in order to check whether MST is enabled or not, we actually need to grab drm_dp_mst_topology_mgr.lock. Back when I originally wrote this, I did this piggy-backing with the intention that I'd eventually be teaching our MST helpers how to recover when an MST device has stopped responding, which in turn would require the MST helpers having a way of disabling MST independently of the driver. Note that this was before I reworked locking in the MST helpers, so at the time we were sticking random things under &mgr->lock - which grabbing this lock was meant to protect against. This never came to fruition because doing such a reset safely turned out to be a lot more painful and impossible then it sounds, and also just risks us working around issues with our MST handlers that should be properly fixed instead. Even if it did though, simply calling drm_dp_mst_topology_mgr_set_mst() from the MST helpers (with the exception of when we're tearing down our MST managers, that's always OK) wouldn't have been a bad idea, since drivers like nouveau and i915 need to do their own book keeping immediately after disabling MST. So-implementing that would likely require adding a hook for helper-triggered MST disables anyway. So, fast forward to now - we want to start adding support for all of the miscellaneous bits of the DP protocol (for both SST and MST) we're missing before moving on to supporting more complicated features like supporting different BPP values on MST, DSC, etc. Since many of these features only exist on SST and make use of DP HPD IRQs, we want to be able to atomically check whether we're servicing an MST IRQ or SST IRQ in nouveau_connector_hotplug(). Currently we literally don't do this at all, and just handle any kind of possible DP IRQ we could get including ESIs - even if MST isn't actually enabled. This would be very complicated and difficult to fix if we need to hold &mgr->lock while handling SST IRQs to ensure that the MST topology state doesn't change under us. What we really want here is to do our own tracking of whether MST is enabled or not, similar to drivers like i915, and define our own locking order to decomplicate things and avoid hitting locking issues in the future. So, let's do this by refactoring our MST probing/enabling code to use our own MST bookkeeping, along with adding a lock for protecting DP state that needs to be checked outside of our connector probing functions. While we're at it, we also remove a bunch of unneeded steps we perform when probing/enabling MST: * Enabling bits in MSTM_CTRL before calling drm_dp_mst_topology_mgr_set_mst(). I don't think these ever actually did anything, since the nvif methods for enabling MST don't actually do anything DPCD related and merely indicate to nvkm that we've turned on MST. * Checking the MSTM_CTRL bit is intact when checking the state of an enabled MST topology in nv50_mstm_detect(). I just added this to be safe originally, but now that we try reading the DPCD when probing DP connectors it shouldn't be needed as that will abort our hotplug probing if the device was removed well before we start checking for MST.. * All of the duplicate DPCD version checks. This leaves us with much nicer looking code, a much more sensible locking scheme, and an easy way of checking whether MST is enabled or not for handling DP HPD IRQs. v2: * Get rid of accidental newlines v4: * Fix uninitialized usage of mstm in nv50_mstm_detect() - thanks kernel bot! Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-9-lyude@redhat.com
|
#
57940402 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Use macros for DP registers in nouveau_dp.c No functional changes. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-5-lyude@redhat.com
|
#
73596dbf |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Just use drm_dp_dpcd_read() in nouveau_dp.c Since this actually logs accesses, we should probably always be using this imho… Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-4-lyude@redhat.com
|
#
6ba11932 |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Remove open-coded drm_dp_read_desc() Noticed this while going through our DP code - we use an open-coded version of drm_dp_read_desc() instead of just using the helper, so change that. This will also let us use quirks in the future if we end up needing them. Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-3-lyude@redhat.com
|
#
bbcd521e |
|
26-Aug-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms: Fix some indenting in nouveau_dp_detect() Signed-off-by: Lyude Paul <lyude@redhat.com> Reviewed-by: Ben Skeggs <bskeggs@redhat.com> Link: https://patchwork.freedesktop.org/patch/msgid/20200826182456.322681-2-lyude@redhat.com
|
#
d6a9efec |
|
11-May-2020 |
Lyude Paul <lyude@redhat.com> |
drm/nouveau/kms/nv50-: Share DP SST mode_valid() handling with MST Currently, the nv50_mstc_mode_valid() function is happy to take any and all modes, even the ones we can't actually support sometimes like interlaced modes. Luckily, the only difference between the mode validation that needs to be performed for MST vs. SST is that eventually we'll need to check the minimum PBN against the MSTB's full PBN capabilities (remember-we don't care about the current bw state here). Otherwise, all of the other code can be shared. So, we move all of the common mode validation in nouveau_connector_mode_valid() into a separate helper, nv50_dp_mode_valid(), and use that from both nv50_mstc_mode_valid() and nouveau_connector_mode_valid(). Note that we allow for returning the calculated clock that nv50_dp_mode_valid() came up with, since we'll eventually want to use that for PBN calculation in nv50_mstc_mode_valid(). Signed-off-by: Lyude Paul <lyude@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
690ae20c |
|
19-May-2019 |
Sam Ravnborg <sam@ravnborg.org> |
drm/nouveau: drop use of drmp.h Drop use of the deprecated drmP.h file from drm/nouveau. Build tested using allyesconfig and allmodconfig. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Ben Skeggs <bskeggs@redhat.com> Cc: nouveau@lists.freedesktop.org Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
f479c0ba |
|
04-Nov-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/kms/nv50: initial support for DP 1.2 multi-stream Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
f20c665c |
|
04-Nov-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/kms/nv50: clean-up encoder functions Just a shuffle of blocks into an order consistent with the rest of the code, renaming hdmi/audio funtions for atomic, and removal of unused code. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
52aa30f2 |
|
04-Nov-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/kms/nv50: switch mst sink back into sst mode Sometimes we load with a sink already in MST mode. If, however, we can't or don't want to use MST, we need to be able to switch it back to SST. This commit instantiates a stub topology manager for any output path that we believe (the detection of this could use some improvement) has support for MST, and adds the connector detect() logic for detecting sink support and switching between modes. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
4dc28134 |
|
19-May-2016 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: rename nouveau_drm.h to nouveau_drv.h Fixes out-of-tree build issue where uapi/drm/nouveau_drm.h gets picked up instead. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
2aa5eac5 |
|
19-Aug-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/i2c: transition pad/ports away from being based on nvkm_object Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
be83cd4e |
|
13-Jan-2015 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: finalise nvkm namespace switch (no binary change) The namespace of NVKM is being changed to nvkm_ instead of nouveau_, which will be used for the DRM part of the driver. This is being done in order to make it very clear as to what part of the driver a given symbol belongs to, and as a minor step towards splitting the DRM driver out to be able to stand on its own (for virt). Because there's already a large amount of churn here anyway, this is as good a time as any to also switch to NVIDIA's device and chipset naming to ease collaboration with them. A comparison of objdump disassemblies proves no code changes. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
fdb751ef |
|
09-Aug-2014 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: remove as much direct use of core headers as possible Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
0ad72863 |
|
09-Aug-2014 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: port to nvif client/device/objects Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8777c5c1 |
|
06-Jun-2014 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: probe dpcd to determine connectedness Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
0a0afd28 |
|
18-Feb-2013 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nv50-/disp: move DP link training to core and train from supervisor We need to be able to do link training for PIOR-connected ANX9805 from the third supervisor handler (due to script ordering in the bios, can't have the "user" call train because some settings are overwritten from the modesetting bios scripts). This moves link training for SOR-connected DP encoders to the second supervisor interrupt, *before* we call the modesetting scripts (yes, different ordering from PIOR is necessary). This is useful since we should now be able to remove some hacks to workaround races between the supervisor and link training paths. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
5ed50209 |
|
11-Feb-2013 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: store i2c port pointer directly in nouveau_encoder This is about to become somewhat more complicated to determine in a number of cases, so store the "common" case (DDC/AUX) directly inside the encoder structure. Pre-nv50 code not touched except to fill the pointer, don't care. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
4f47643d |
|
02-Feb-2013 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gpio: use event interfaces for interrupt signalling Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
23fc09ee |
|
03-Feb-2013 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/drm: store full dcb gpio function data in connector Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8f2abc25 |
|
15-Nov-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: remove last bits of VBIOS parsing from DRM code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
6c8e4633 |
|
15-Nov-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: move core link training calls to common code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
5b8a43ae |
|
19-Aug-2012 |
Marcin Slusarz <marcin.slusarz@gmail.com> |
drm/nouveau: quiet some static-related sparse noise Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
77145f1c |
|
31-Jul-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: port remainder of drm code, and rip out compat layer v2: Ben Skeggs <bskeggs@redhat.com> - fill in nouveau_pm.dev to prevent oops - fix ppc issues (build + OF shadow) Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
cb75d97e |
|
10-Jul-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: implement devinit subdev, and new init table parser v2: - make sure not to execute display scripts unless resuming Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
4196faa8 |
|
09-Jul-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/i2c: port to subdev interfaces v2/v3: Ben Skeggs <bskeggs@redhat.com> - fix typo in default bus selection - fix accidental loss of destructor v4: Dmitry Eremin-Solenikov <dmitry_eremin@mentor.com> - fix typo causing incorrect default i2c port settings when no BMP data Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
e0996aea |
|
09-Jul-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gpio: port gpio to subdev interfaces v2: Ben Skeggs <bskeggs@redhat.com> - rebase on top of v3.6-rc6 with gpio reset patch integrated already Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
02a841d4 |
|
04-Jul-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: restructure source tree, split core from drm implementation Future work will be headed in the way of separating the policy supplied by the nouveau drm module from the mechanisms provided by the driver core. There will be a couple of major classes (subdev, engine) of driver modules that have clearly defined tasks, and the further directory structure change is to reflect this. No code changes here whatsoever, aside from fixing up a couple of include file pathnames. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
760285e7 |
|
02-Oct-2012 |
David Howells <dhowells@redhat.com> |
UAPI: (Scripted) Convert #include "..." to #include <path/...> in drivers/gpu/ Convert #include "..." to #include <path/...> in drivers/gpu/. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Dave Airlie <airlied@redhat.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Acked-by: Dave Jones <davej@redhat.com>
|
#
9a6a4b47 |
|
04-Sep-2012 |
Andy Shevchenko <andriy.shevchenko@linux.intel.com> |
drm: use %*ph to dump small buffers Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
|
#
6225ee05 |
|
14-May-2012 |
Adam Jackson <ajax@redhat.com> |
drm/nouveau/dp: Probe branch/sink OUIs (v2) (airlied: v2: fix missing struct - fixes compile) Signed-off-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
|
#
65445992 |
|
10-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: support version 4.0 of DP table Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
6860dc82 |
|
11-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: account for channel coding overhead in link training Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
6e83fda2 |
|
10-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nvd0/disp: initial implementation of displayport Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
f14d9a4d |
|
10-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: make dp dpms function common, call from sor code instead GF119 will use this too. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8663bc7c |
|
08-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: move all nv50/sor-specific code out of nouveau_dp.c Off-chip encoders (which we don't support yet anyway), and newer chipsets (such as NVD9...), will need their own code for this. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8c1dcb65 |
|
08-Mar-2012 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: make functions for executing various bios tables More code to do the same thing, but will make it easier to handle various changes that could possibly happen the the VBIOS tables. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
44ab8cc5 |
|
03-Feb-2012 |
Xi Wang <xi.wang@gmail.com> |
drm/nouveau/dp: fix bad comparison in dp_link_train_commit() The comparison (lpre == DP_TRAIN_PRE_EMPHASIS_9_5) is always false: lpre is initialized as (lane & 0x0c) >> 2, which is at most 3, while DP_TRAIN_PRE_EMPHASIS_9_5 is defined as (3 << 3). Signed-off-by: Xi Wang <xi.wang@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
a0b25635 |
|
20-Nov-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/gpio: reimplement as nouveau_gpio.c, fixing a number of issues - moves out of nouveau_bios.c and demagics the logical state definitions - simplifies chipset-specific driver interface - makes most of gpio irq handling common, will use for nv4x hpd later - api extended to allow both direct gpio access, and access using the logical function states - api extended to allow for future use of gpio extender chips - pre-nv50 was handled very badly, the main issue being that all GPIOs were being treated as output-only. - fixes nvd0 so gpio changes actually stick, magic reg needs bashing Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
befb51e9 |
|
17-Nov-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/disp: parse connector info directly in nouveau_connector.c Another case where we parsed vbios data to some structs, then again use that info once to construct another set of data. Skip the intermediate step. This is also slightly improved in that we can now use DCB 3.x connector table info, which will allow NV4x to gain hotplug support, and to make quirks for SPWG LVDS panels unnecessary. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
2bdb06e3 |
|
16-Nov-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/i2c: tidy up bit-bang helpers, also fixing nv50 setsda bug Was using nv_mask, which is bad. Reading the reg senses the current line states, which aren't necessarily the states we're trying to drive the lines to. Fixed to store SCL driver state just as we already do for SDA. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
f9f9f536 |
|
12-Oct-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/bios: pass drm_device to ROMPTR, rather than nvbios Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
c16a3a35 |
|
04-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: add support for displayport table 0x30 Written from observations of my NVD9's vbios, completely untested due to my NVD9 lacking actual DisplayPort connectors.. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
5f1800bd |
|
04-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: return master dp table pointer too when looking up encoder Will need to be able to distinguish 2.0/2.1 from 3.0 soon. Also, move the vbios parsing to nouveau_dp where it belongs. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
5b3eb95f |
|
04-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: preserve non-pattern bits in DP_TRAINING_PATTERN_SET Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
1b45dbe0 |
|
04-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: use alternate lane mask for nvaf Naturally... Because Macs can't just be the same as everything else now can they? Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
856ed888 |
|
04-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: link rate scripts are selected with a comparison table Not hardcoded as originally thought. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
52e0d0ec |
|
03-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: enable down-spread if vbios and sink support it Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
28e2d124 |
|
03-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: execute some more vbios tables relating to link rate Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
75a1fccf |
|
03-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: store unencoded link_bw everywhere Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
27a45987 |
|
03-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: restructure link training code Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
a002fece |
|
03-Aug-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: pass in required datarate to link training Not used currently, but it will be used in preference to pre-determined lane/bandwidth numbers at a later point. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
46959b77 |
|
30-Jun-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: remove reliance on vbios for native displayport Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
43720133 |
|
19-Jul-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/dp: rewrite auxch transaction routines Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
02e4f587 |
|
06-Jul-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau/bios: allow passing in crtc to the init table parser Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ea5f2786 |
|
30-Jan-2011 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: silence some compiler warnings Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
fce2bad0 |
|
10-Nov-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nv50: rework PGPIO IRQ handling and hotplug detection Allows callers to install their own handlers for when a GPIO line changes state (such as for hotplug detect). This also fixes a bug where we weren't acknowledging the GPIO IRQ until after the bottom half had run, causing a severe IRQ storm in some cases. Reviewed-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
85341f27 |
|
27-Sep-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: fix typo in c2aa91afea5f7e7ae4530fabd37414a79c03328c Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
fe224bb7 |
|
26-Sep-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: enable enhanced framing only if DP display supports it Reported-by: Adam Jackson <ajax@redhat.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
4b5c152a |
|
07-Sep-2010 |
Francisco Jerez <currojerez@riseup.net> |
drm/nouveau: Remove implicit argument from nv_wait(). Signed-off-by: Francisco Jerez <currojerez@riseup.net> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
c020c9a8 |
|
29-Jul-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nv50: use custom i2c algo for dp auxch This makes it easier to see how this is working, and lets us transfer the EDID in blocks of 16 bytes. The primary reason for this change is because debug logs are rather hard to read with the hundreds of single-byte auxch transactions that occur. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ee2e0131 |
|
25-Jul-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: introduce gpio engine Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
b01f0608 |
|
22-Jul-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: disable hotplug detect around DP link training Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ea4718d1 |
|
05-Jul-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: move DP script invocation to nouveau_dp.c Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
8e024f13 |
|
15-Mar-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: bail out of auxch transaction if we repeatedly recieve defers There's one known case where we never stop recieving DEFER, and loop here forever. Lets not do that.. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
1ee7698f |
|
08-Feb-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: make dp auxch xfer len check for reads only Writes don't return a count, and adding the check broke native DP. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
0107bae0 |
|
21-Jan-2010 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nv50: fail auxch transaction if reply count not what we expect Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
ef2bb506 |
|
13-Dec-2009 |
Maarten Maathuis <madman2003@gmail.com> |
drm/nouveau: use drm debug levels - Use driver level (0x2) for NV_DEBUG instead of all levels - Create a NV_DEBUG_KMS for KMS level (0x4) and use them in modesetting code - Remove a few odd NV_TRACE calls and replace some of them with NV_DEBUG_KMS or NV_INFO Signed-off-by: Maarten Maathuis <madman2003@gmail.com> Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
|
#
6ee73861 |
|
11-Dec-2009 |
Ben Skeggs <bskeggs@redhat.com> |
drm/nouveau: Add DRM driver for NVIDIA GPUs This adds a drm/kms staging non-API stable driver for GPUs from NVIDIA. This driver is a KMS-based driver and requires a compatible nouveau userspace libdrm and nouveau X.org driver. This driver requires firmware files not available in this kernel tree, interested parties can find them via the nouveau project git archive. This driver is reverse engineered, and is in no way supported by nVidia. Support for nearly the complete range of nvidia hw from nv04->g80 (nv50) is available, and the kms driver should support driving nearly all output types (displayport is under development still) along with supporting suspend/resume. This work is all from the upstream nouveau project found at nouveau.freedesktop.org. The original authors list from nouveau git tree is: Anssi Hannula <anssi.hannula@iki.fi> Ben Skeggs <bskeggs@redhat.com> Francisco Jerez <currojerez@riseup.net> Maarten Maathuis <madman2003@gmail.com> Marcin Kościelnicki <koriakin@0x04.net> Matthew Garrett <mjg@redhat.com> Matt Parnell <mparnell@gmail.com> Patrice Mandin <patmandin@gmail.com> Pekka Paalanen <pq@iki.fi> Xavier Chantry <shiningxc@gmail.com> along with project founder Stephane Marchesin <marchesin@icps.u-strasbg.fr> Signed-off-by: Ben Skeggs <bskeggs@redhat.com> Signed-off-by: Dave Airlie <airlied@redhat.com>
|