mirror of
https://github.com/FEX-Emu/linux.git
synced 2025-01-30 07:37:49 +00:00
Summary:
- fix probing fail issue of dsi driver without bridge device. - fix disable sequence of hdmi driver. - trivial cleanups. -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAABAgAGBQJZeUJZAAoJEFc4NIkMQxK4TQIQAJdradGR4HknSBwCRavlLG7t OVtiV8yRbdNUJs7NeXtqrFrIi8vW78eldJQjaLIpO98ZYvGC5swwvjp7nN0Eeolo P0NStVUvO816yetEIPKVDqFviQ8dnPTx5amaua6aqN8elzPP3QMRsXj505Os9NGl L0pNVjJygJzF4AnYSDtLB6JS8pGFfMP6ftZsTfP2/TIxeXrwBHR0MtMgsu0CNkVt 2FR7YbI+PVpI7Ruk2s7uOcbB2/S4IXwXUI6h+TZasu5y86LYzwcUsRi+s/r8cG8T +GrXO/J/YuC6UpMM6XtgnhA52PR4azTOcTGrTPW5C9W6QxJ0N2nhXhVz2OF0UHFa 7luidHXGsbZ2T2sdkQch8B5NK7i5TxPH9xGEXBhoh0LObudkjx0wBSCWVlUIy7+i pUVt6Grqx38XmIoLoIAW5GwE8C8nCk0PASx4SlBzQN0H15xeLrACRgXlG6AqzGCp tURj3Mohl5SjXe0X2wIgcZ9gBTcuwDvCeXHCVKRx0wzWSlt1r1+IuYtsUoC2zecj Vr7y3dIFVZy86HWSQeSmyE/QxhqjGrqQpFL94NQagvSur9rwWaXyU0NHEMYvRn16 M+0DxWpV68f0WKWkKqMagI4n9VzCZJGTq12+of3RgRQ64mzawzMSv/p/laHBfUxV Cu+B0B3xO8MF3dJfOUNj =qrWH -----END PGP SIGNATURE----- Merge tag 'exynos-drm-fixes-for-v4.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos into drm-fixes Summary: - fix probing fail issue of dsi driver without bridge device. - fix disable sequence of hdmi driver. - trivial cleanups. * tag 'exynos-drm-fixes-for-v4.13-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/daeinki/drm-exynos: drm: exynos: mark pm functions as __maybe_unused drm/exynos: select CEC_CORE if CEC_NOTIFIER drm/exynos/hdmi: fix disable sequence drm/exynos: mic: add a bridge at probe drm/exynos/dsi: Remove error handling for bridge_node DT parsing drm/exynos: dsi: do not try to find bridge drm: exynos: hdmi: make of_device_ids const. drm: exynos: constify mixer_match_types and *_mxr_drv_data. exynos_drm: Clean up duplicated assignment in exynos_drm_driver
This commit is contained in:
commit
20806588f0
@ -75,6 +75,7 @@ config DRM_EXYNOS_DP
|
||||
config DRM_EXYNOS_HDMI
|
||||
bool "HDMI"
|
||||
depends on DRM_EXYNOS_MIXER || DRM_EXYNOS5433_DECON
|
||||
select CEC_CORE if CEC_NOTIFIER
|
||||
help
|
||||
Choose this option if you want to use Exynos HDMI for DRM.
|
||||
|
||||
|
@ -453,7 +453,6 @@ static int exynos_drm_platform_probe(struct platform_device *pdev)
|
||||
struct component_match *match;
|
||||
|
||||
pdev->dev.coherent_dma_mask = DMA_BIT_MASK(32);
|
||||
exynos_drm_driver.num_ioctls = ARRAY_SIZE(exynos_ioctls);
|
||||
|
||||
match = exynos_drm_match_add(&pdev->dev);
|
||||
if (IS_ERR(match))
|
||||
|
@ -1651,8 +1651,6 @@ static int exynos_dsi_parse_dt(struct exynos_dsi *dsi)
|
||||
return ret;
|
||||
|
||||
dsi->bridge_node = of_graph_get_remote_node(node, DSI_PORT_IN, 0);
|
||||
if (!dsi->bridge_node)
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@ -1687,9 +1685,11 @@ static int exynos_dsi_bind(struct device *dev, struct device *master,
|
||||
return ret;
|
||||
}
|
||||
|
||||
bridge = of_drm_find_bridge(dsi->bridge_node);
|
||||
if (bridge)
|
||||
drm_bridge_attach(encoder, bridge, NULL);
|
||||
if (dsi->bridge_node) {
|
||||
bridge = of_drm_find_bridge(dsi->bridge_node);
|
||||
if (bridge)
|
||||
drm_bridge_attach(encoder, bridge, NULL);
|
||||
}
|
||||
|
||||
return mipi_dsi_host_register(&dsi->dsi_host);
|
||||
}
|
||||
|
@ -340,16 +340,10 @@ static int exynos_mic_bind(struct device *dev, struct device *master,
|
||||
void *data)
|
||||
{
|
||||
struct exynos_mic *mic = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
|
||||
mic->bridge.funcs = &mic_bridge_funcs;
|
||||
mic->bridge.of_node = dev->of_node;
|
||||
mic->bridge.driver_private = mic;
|
||||
ret = drm_bridge_add(&mic->bridge);
|
||||
if (ret)
|
||||
DRM_ERROR("mic: Failed to add MIC to the global bridge list\n");
|
||||
|
||||
return ret;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void exynos_mic_unbind(struct device *dev, struct device *master,
|
||||
@ -365,8 +359,6 @@ static void exynos_mic_unbind(struct device *dev, struct device *master,
|
||||
|
||||
already_disabled:
|
||||
mutex_unlock(&mic_mutex);
|
||||
|
||||
drm_bridge_remove(&mic->bridge);
|
||||
}
|
||||
|
||||
static const struct component_ops exynos_mic_component_ops = {
|
||||
@ -461,6 +453,15 @@ static int exynos_mic_probe(struct platform_device *pdev)
|
||||
|
||||
platform_set_drvdata(pdev, mic);
|
||||
|
||||
mic->bridge.funcs = &mic_bridge_funcs;
|
||||
mic->bridge.of_node = dev->of_node;
|
||||
|
||||
ret = drm_bridge_add(&mic->bridge);
|
||||
if (ret) {
|
||||
DRM_ERROR("mic: Failed to add MIC to the global bridge list\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
pm_runtime_enable(dev);
|
||||
|
||||
ret = component_add(dev, &exynos_mic_component_ops);
|
||||
@ -479,8 +480,13 @@ err:
|
||||
|
||||
static int exynos_mic_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct exynos_mic *mic = platform_get_drvdata(pdev);
|
||||
|
||||
component_del(&pdev->dev, &exynos_mic_component_ops);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
drm_bridge_remove(&mic->bridge);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1501,8 +1501,6 @@ static void hdmi_disable(struct drm_encoder *encoder)
|
||||
*/
|
||||
cancel_delayed_work(&hdata->hotplug_work);
|
||||
cec_notifier_set_phys_addr(hdata->notifier, CEC_PHYS_ADDR_INVALID);
|
||||
|
||||
hdmiphy_disable(hdata);
|
||||
}
|
||||
|
||||
static const struct drm_encoder_helper_funcs exynos_hdmi_encoder_helper_funcs = {
|
||||
@ -1676,7 +1674,7 @@ static int hdmi_resources_init(struct hdmi_context *hdata)
|
||||
return hdmi_bridge_init(hdata);
|
||||
}
|
||||
|
||||
static struct of_device_id hdmi_match_types[] = {
|
||||
static const struct of_device_id hdmi_match_types[] = {
|
||||
{
|
||||
.compatible = "samsung,exynos4210-hdmi",
|
||||
.data = &exynos4210_hdmi_driver_data,
|
||||
@ -1934,8 +1932,7 @@ static int hdmi_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int exynos_hdmi_suspend(struct device *dev)
|
||||
static int __maybe_unused exynos_hdmi_suspend(struct device *dev)
|
||||
{
|
||||
struct hdmi_context *hdata = dev_get_drvdata(dev);
|
||||
|
||||
@ -1944,7 +1941,7 @@ static int exynos_hdmi_suspend(struct device *dev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int exynos_hdmi_resume(struct device *dev)
|
||||
static int __maybe_unused exynos_hdmi_resume(struct device *dev)
|
||||
{
|
||||
struct hdmi_context *hdata = dev_get_drvdata(dev);
|
||||
int ret;
|
||||
@ -1955,7 +1952,6 @@ static int exynos_hdmi_resume(struct device *dev)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
static const struct dev_pm_ops exynos_hdmi_pm_ops = {
|
||||
SET_RUNTIME_PM_OPS(exynos_hdmi_suspend, exynos_hdmi_resume, NULL)
|
||||
|
@ -1094,28 +1094,28 @@ static const struct exynos_drm_crtc_ops mixer_crtc_ops = {
|
||||
.atomic_check = mixer_atomic_check,
|
||||
};
|
||||
|
||||
static struct mixer_drv_data exynos5420_mxr_drv_data = {
|
||||
static const struct mixer_drv_data exynos5420_mxr_drv_data = {
|
||||
.version = MXR_VER_128_0_0_184,
|
||||
.is_vp_enabled = 0,
|
||||
};
|
||||
|
||||
static struct mixer_drv_data exynos5250_mxr_drv_data = {
|
||||
static const struct mixer_drv_data exynos5250_mxr_drv_data = {
|
||||
.version = MXR_VER_16_0_33_0,
|
||||
.is_vp_enabled = 0,
|
||||
};
|
||||
|
||||
static struct mixer_drv_data exynos4212_mxr_drv_data = {
|
||||
static const struct mixer_drv_data exynos4212_mxr_drv_data = {
|
||||
.version = MXR_VER_0_0_0_16,
|
||||
.is_vp_enabled = 1,
|
||||
};
|
||||
|
||||
static struct mixer_drv_data exynos4210_mxr_drv_data = {
|
||||
static const struct mixer_drv_data exynos4210_mxr_drv_data = {
|
||||
.version = MXR_VER_0_0_0_16,
|
||||
.is_vp_enabled = 1,
|
||||
.has_sclk = 1,
|
||||
};
|
||||
|
||||
static struct of_device_id mixer_match_types[] = {
|
||||
static const struct of_device_id mixer_match_types[] = {
|
||||
{
|
||||
.compatible = "samsung,exynos4210-mixer",
|
||||
.data = &exynos4210_mxr_drv_data,
|
||||
|
Loading…
x
Reference in New Issue
Block a user