* edid: Always set RGB444
* imx/dcss: Select GEM CMA helpers * radeon: Fix some variables's type * vc4: Fix codec cleanup; Fix PM reference counting -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEchf7rIzpz2NEoWjlaA3BHVMLeiMFAmIWimcACgkQaA3BHVML eiNLjwgAoFAvwg1yq9W0XCyi/RIPli6U9QIUemcUVu22pyDcv4mLw1ky9t1SbCGB GfV20hHXK3HhZ9wWgdgq08yhIlzVLVWN3G6hL+EwsJ4+RiI9gL/xh4qKePSgtgpj JL5Di/6brHibDa7GgyhYspVQBIVbrjBaBvR7rHKTGd+6AaddXnBBA2vFcVWuIXMJ KK3te19d4xmjjqtLlbIVLppO6EJqTSHq9QXiRxywTO6ahqzL8mKbpGuNXz1HKsW9 CcYGD3jA97uBZBD0kq4v49y2dLDJ8f75IGrPlg1JBi4xdvYOvGTlB470m+aWK3Mp uktakijXfDU+pbVa/6djD3H28aD5ZQ== =HjTE -----END PGP SIGNATURE----- Merge tag 'drm-misc-fixes-2022-02-23' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes * edid: Always set RGB444 * imx/dcss: Select GEM CMA helpers * radeon: Fix some variables's type * vc4: Fix codec cleanup; Fix PM reference counting Signed-off-by: Dave Airlie <airlied@redhat.com> From: Thomas Zimmermann <tzimmermann@suse.de> Link: https://patchwork.freedesktop.org/patch/msgid/YhaKj4zWJ42YWRts@linux-uq9g.fritz.box
This commit is contained in:
commit
753a64c779
|
@ -5345,6 +5345,7 @@ u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edi
|
||||||
if (!(edid->input & DRM_EDID_INPUT_DIGITAL))
|
if (!(edid->input & DRM_EDID_INPUT_DIGITAL))
|
||||||
return quirks;
|
return quirks;
|
||||||
|
|
||||||
|
info->color_formats |= DRM_COLOR_FORMAT_RGB444;
|
||||||
drm_parse_cea_ext(connector, edid);
|
drm_parse_cea_ext(connector, edid);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -5393,7 +5394,6 @@ u32 drm_add_display_info(struct drm_connector *connector, const struct edid *edi
|
||||||
DRM_DEBUG("%s: Assigning EDID-1.4 digital sink color depth as %d bpc.\n",
|
DRM_DEBUG("%s: Assigning EDID-1.4 digital sink color depth as %d bpc.\n",
|
||||||
connector->name, info->bpc);
|
connector->name, info->bpc);
|
||||||
|
|
||||||
info->color_formats |= DRM_COLOR_FORMAT_RGB444;
|
|
||||||
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444)
|
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB444)
|
||||||
info->color_formats |= DRM_COLOR_FORMAT_YCRCB444;
|
info->color_formats |= DRM_COLOR_FORMAT_YCRCB444;
|
||||||
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422)
|
if (edid->features & DRM_EDID_FEATURE_RGB_YCRCB422)
|
||||||
|
|
|
@ -2,6 +2,7 @@ config DRM_IMX_DCSS
|
||||||
tristate "i.MX8MQ DCSS"
|
tristate "i.MX8MQ DCSS"
|
||||||
select IMX_IRQSTEER
|
select IMX_IRQSTEER
|
||||||
select DRM_KMS_HELPER
|
select DRM_KMS_HELPER
|
||||||
|
select DRM_GEM_CMA_HELPER
|
||||||
select VIDEOMODE_HELPERS
|
select VIDEOMODE_HELPERS
|
||||||
depends on DRM && ARCH_MXC && ARM64
|
depends on DRM && ARCH_MXC && ARM64
|
||||||
help
|
help
|
||||||
|
|
|
@ -470,8 +470,8 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
|
||||||
int32_t *msg, msg_type, handle;
|
int32_t *msg, msg_type, handle;
|
||||||
unsigned img_size = 0;
|
unsigned img_size = 0;
|
||||||
void *ptr;
|
void *ptr;
|
||||||
|
long r;
|
||||||
int i, r;
|
int i;
|
||||||
|
|
||||||
if (offset & 0x3F) {
|
if (offset & 0x3F) {
|
||||||
DRM_ERROR("UVD messages must be 64 byte aligned!\n");
|
DRM_ERROR("UVD messages must be 64 byte aligned!\n");
|
||||||
|
@ -481,13 +481,13 @@ static int radeon_uvd_cs_msg(struct radeon_cs_parser *p, struct radeon_bo *bo,
|
||||||
r = dma_resv_wait_timeout(bo->tbo.base.resv, false, false,
|
r = dma_resv_wait_timeout(bo->tbo.base.resv, false, false,
|
||||||
MAX_SCHEDULE_TIMEOUT);
|
MAX_SCHEDULE_TIMEOUT);
|
||||||
if (r <= 0) {
|
if (r <= 0) {
|
||||||
DRM_ERROR("Failed waiting for UVD message (%d)!\n", r);
|
DRM_ERROR("Failed waiting for UVD message (%ld)!\n", r);
|
||||||
return r ? r : -ETIME;
|
return r ? r : -ETIME;
|
||||||
}
|
}
|
||||||
|
|
||||||
r = radeon_bo_kmap(bo, &ptr);
|
r = radeon_bo_kmap(bo, &ptr);
|
||||||
if (r) {
|
if (r) {
|
||||||
DRM_ERROR("Failed mapping the UVD message (%d)!\n", r);
|
DRM_ERROR("Failed mapping the UVD message (%ld)!\n", r);
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -525,9 +525,11 @@ int vc4_crtc_disable_at_boot(struct drm_crtc *crtc)
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
ret = pm_runtime_put(&vc4_hdmi->pdev->dev);
|
/*
|
||||||
if (ret)
|
* post_crtc_powerdown will have called pm_runtime_put, so we
|
||||||
return ret;
|
* don't need it here otherwise we'll get the reference counting
|
||||||
|
* wrong.
|
||||||
|
*/
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1749,6 +1749,7 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
|
||||||
dev_err(dev, "Couldn't register the HDMI codec: %ld\n", PTR_ERR(codec_pdev));
|
dev_err(dev, "Couldn't register the HDMI codec: %ld\n", PTR_ERR(codec_pdev));
|
||||||
return PTR_ERR(codec_pdev);
|
return PTR_ERR(codec_pdev);
|
||||||
}
|
}
|
||||||
|
vc4_hdmi->audio.codec_pdev = codec_pdev;
|
||||||
|
|
||||||
dai_link->cpus = &vc4_hdmi->audio.cpu;
|
dai_link->cpus = &vc4_hdmi->audio.cpu;
|
||||||
dai_link->codecs = &vc4_hdmi->audio.codec;
|
dai_link->codecs = &vc4_hdmi->audio.codec;
|
||||||
|
@ -1788,6 +1789,12 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void vc4_hdmi_audio_exit(struct vc4_hdmi *vc4_hdmi)
|
||||||
|
{
|
||||||
|
platform_device_unregister(vc4_hdmi->audio.codec_pdev);
|
||||||
|
vc4_hdmi->audio.codec_pdev = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
|
static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
|
||||||
{
|
{
|
||||||
struct vc4_hdmi *vc4_hdmi = priv;
|
struct vc4_hdmi *vc4_hdmi = priv;
|
||||||
|
@ -2660,6 +2667,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
|
||||||
kfree(vc4_hdmi->hdmi_regset.regs);
|
kfree(vc4_hdmi->hdmi_regset.regs);
|
||||||
kfree(vc4_hdmi->hd_regset.regs);
|
kfree(vc4_hdmi->hd_regset.regs);
|
||||||
|
|
||||||
|
vc4_hdmi_audio_exit(vc4_hdmi);
|
||||||
vc4_hdmi_cec_exit(vc4_hdmi);
|
vc4_hdmi_cec_exit(vc4_hdmi);
|
||||||
vc4_hdmi_hotplug_exit(vc4_hdmi);
|
vc4_hdmi_hotplug_exit(vc4_hdmi);
|
||||||
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
|
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
|
||||||
|
|
|
@ -116,6 +116,7 @@ struct vc4_hdmi_audio {
|
||||||
struct snd_soc_dai_link_component platform;
|
struct snd_soc_dai_link_component platform;
|
||||||
struct snd_dmaengine_dai_dma_data dma_data;
|
struct snd_dmaengine_dai_dma_data dma_data;
|
||||||
struct hdmi_audio_infoframe infoframe;
|
struct hdmi_audio_infoframe infoframe;
|
||||||
|
struct platform_device *codec_pdev;
|
||||||
bool streaming;
|
bool streaming;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue