mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-27 14:43:58 +08:00
drm/nouveau: fix required mode bandwidth calculation for DP
This should fix eDP on certain laptops with 18-bit panels, we were rejecting the panel's native mode due to thinking there was insufficient bandwidth for it. Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
This commit is contained in:
parent
85341f27b4
commit
62acdc71cf
@ -76,6 +76,22 @@ nouveau_encoder_connector_get(struct nouveau_encoder *encoder)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/*TODO: This could use improvement, and learn to handle the fixed
|
||||
* BIOS tables etc. It's fine currently, for its only user.
|
||||
*/
|
||||
int
|
||||
nouveau_connector_bpp(struct drm_connector *connector)
|
||||
{
|
||||
struct nouveau_connector *nv_connector = nouveau_connector(connector);
|
||||
|
||||
if (nv_connector->edid && nv_connector->edid->revision >= 4) {
|
||||
u8 bpc = ((nv_connector->edid->input & 0x70) >> 3) + 4;
|
||||
if (bpc > 4)
|
||||
return bpc;
|
||||
}
|
||||
|
||||
return 18;
|
||||
}
|
||||
|
||||
static void
|
||||
nouveau_connector_destroy(struct drm_connector *drm_connector)
|
||||
@ -666,7 +682,7 @@ nouveau_connector_mode_valid(struct drm_connector *connector,
|
||||
else
|
||||
max_clock = nv_encoder->dp.link_nr * 162000;
|
||||
|
||||
clock *= 3;
|
||||
clock = clock * nouveau_connector_bpp(connector) / 8;
|
||||
break;
|
||||
default:
|
||||
BUG_ON(1);
|
||||
|
@ -55,4 +55,7 @@ nouveau_connector_create(struct drm_device *, int index);
|
||||
void
|
||||
nouveau_connector_set_polling(struct drm_connector *);
|
||||
|
||||
int
|
||||
nouveau_connector_bpp(struct drm_connector *);
|
||||
|
||||
#endif /* __NOUVEAU_CONNECTOR_H__ */
|
||||
|
Loading…
Reference in New Issue
Block a user