drm-misc-fixes for v5.0-rc6:
- Fixes to omap/dsi encoder. - Clock fix for sun4i. - Licensing header fix for rockchip. - Fix division by zero in the mode when trying to set a mode on i915 with GVT-g enabled. -----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEuXvWqAysSYEJGuVH/lWMcqZwE8MFAlxb6lcACgkQ/lWMcqZw E8OpAQ//VspiZ8iU5GO8beSu6HP92WFUVxHyJ0tZMYLrtcjqTltAM3PljMGJa7s1 DMv0RWJrZP+Vo1Qr+oGRGsBftOvpJbu0/Nt0OfOiG6Qo1Hb+rJgoKqXSEbBlufXP A2DcBR6aio1RhPuSEqsw91LoWh6qXmyQPpy9gNerChNaOMCWLJCmjtiSEI8gkdHq EqRvnUWPn3Tlg6lPZKpOOxIlp5UR+BP1yWvipEDkPxtKUhoEvPy/ien9LCkgA8+0 JFLv9yHOW5NVA4zrodSIFs3qk1yTFEifkce4JObme8YZ01ejT23PHwHOhP7BWdt9 Yn3ESABcvxW1cUHvFUzP3jFyWrHyDcv/ZA2gAxDQ/utb7pB3mMzW0sdANU+BZ0tc SS9wQnl/q35z83L96GyBPNUFAb3QOLN7X8V+pghwmTJ/IOrvn/+qyYINbmQSXPcR +Od6qLx0n8kEmZOp6GgVcF/wSTULltPbR6heYYqYRbR+TN82IYMn+00UWWtVF2z+ mfYpaFMbw9DBbO0A75q8PV15WbvR+dCX4ii5MWxMuv+m4gObwUkr5gV+eHs8Da6Q WmH8kiXak22Q1gu6ZdqO+dB2dew0gXqRXsNyeKA6JC0Z8feGpDwZUPt9gqQYHMUF fJoO/LPaQsIaZ+nnMFdbZcoHsdGbynxIML4SSpge/GerkA2XAUI= =ONtd -----END PGP SIGNATURE----- Merge tag 'drm-misc-fixes-2019-02-07' of git://anongit.freedesktop.org/drm/drm-misc into drm-fixes drm-misc-fixes for v5.0-rc6: - Fixes to omap/dsi encoder. - Clock fix for sun4i. - Licensing header fix for rockchip. - Fix division by zero in the mode when trying to set a mode on i915 with GVT-g enabled. Signed-off-by: Dave Airlie <airlied@redhat.com> From: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/84462cef-609f-e2af-084a-f9fe2b05c53e@linux.intel.com
This commit is contained in:
commit
dada163c5e
|
@ -758,7 +758,7 @@ int drm_mode_hsync(const struct drm_display_mode *mode)
|
|||
if (mode->hsync)
|
||||
return mode->hsync;
|
||||
|
||||
if (mode->htotal < 0)
|
||||
if (mode->htotal <= 0)
|
||||
return 0;
|
||||
|
||||
calc_val = (mode->clock * 1000) / mode->htotal; /* hsync in Hz */
|
||||
|
|
|
@ -1406,7 +1406,7 @@ static void dsi_pll_disable(struct dss_pll *pll)
|
|||
|
||||
static int dsi_dump_dsi_clocks(struct seq_file *s, void *p)
|
||||
{
|
||||
struct dsi_data *dsi = p;
|
||||
struct dsi_data *dsi = s->private;
|
||||
struct dss_pll_clock_info *cinfo = &dsi->pll.cinfo;
|
||||
enum dss_clk_source dispc_clk_src, dsi_clk_src;
|
||||
int dsi_module = dsi->module_id;
|
||||
|
@ -1467,7 +1467,7 @@ static int dsi_dump_dsi_clocks(struct seq_file *s, void *p)
|
|||
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
|
||||
static int dsi_dump_dsi_irqs(struct seq_file *s, void *p)
|
||||
{
|
||||
struct dsi_data *dsi = p;
|
||||
struct dsi_data *dsi = s->private;
|
||||
unsigned long flags;
|
||||
struct dsi_irq_stats stats;
|
||||
|
||||
|
@ -1558,7 +1558,7 @@ static int dsi_dump_dsi_irqs(struct seq_file *s, void *p)
|
|||
|
||||
static int dsi_dump_dsi_regs(struct seq_file *s, void *p)
|
||||
{
|
||||
struct dsi_data *dsi = p;
|
||||
struct dsi_data *dsi = s->private;
|
||||
|
||||
if (dsi_runtime_get(dsi))
|
||||
return 0;
|
||||
|
@ -4751,6 +4751,17 @@ static int dsi_set_config(struct omap_dss_device *dssdev,
|
|||
dsi->vm.flags |= DISPLAY_FLAGS_HSYNC_HIGH;
|
||||
dsi->vm.flags &= ~DISPLAY_FLAGS_VSYNC_LOW;
|
||||
dsi->vm.flags |= DISPLAY_FLAGS_VSYNC_HIGH;
|
||||
/*
|
||||
* HACK: These flags should be handled through the omap_dss_device bus
|
||||
* flags, but this will only be possible when the DSI encoder will be
|
||||
* converted to the omapdrm-managed encoder model.
|
||||
*/
|
||||
dsi->vm.flags &= ~DISPLAY_FLAGS_PIXDATA_NEGEDGE;
|
||||
dsi->vm.flags |= DISPLAY_FLAGS_PIXDATA_POSEDGE;
|
||||
dsi->vm.flags &= ~DISPLAY_FLAGS_DE_LOW;
|
||||
dsi->vm.flags |= DISPLAY_FLAGS_DE_HIGH;
|
||||
dsi->vm.flags &= ~DISPLAY_FLAGS_SYNC_POSEDGE;
|
||||
dsi->vm.flags |= DISPLAY_FLAGS_SYNC_NEGEDGE;
|
||||
|
||||
dss_mgr_set_timings(&dsi->output, &dsi->vm);
|
||||
|
||||
|
@ -5083,15 +5094,15 @@ static int dsi_bind(struct device *dev, struct device *master, void *data)
|
|||
|
||||
snprintf(name, sizeof(name), "dsi%u_regs", dsi->module_id + 1);
|
||||
dsi->debugfs.regs = dss_debugfs_create_file(dss, name,
|
||||
dsi_dump_dsi_regs, &dsi);
|
||||
dsi_dump_dsi_regs, dsi);
|
||||
#ifdef CONFIG_OMAP2_DSS_COLLECT_IRQ_STATS
|
||||
snprintf(name, sizeof(name), "dsi%u_irqs", dsi->module_id + 1);
|
||||
dsi->debugfs.irqs = dss_debugfs_create_file(dss, name,
|
||||
dsi_dump_dsi_irqs, &dsi);
|
||||
dsi_dump_dsi_irqs, dsi);
|
||||
#endif
|
||||
snprintf(name, sizeof(name), "dsi%u_clks", dsi->module_id + 1);
|
||||
dsi->debugfs.clks = dss_debugfs_create_file(dss, name,
|
||||
dsi_dump_dsi_clocks, &dsi);
|
||||
dsi_dump_dsi_clocks, dsi);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -5104,8 +5115,6 @@ static void dsi_unbind(struct device *dev, struct device *master, void *data)
|
|||
dss_debugfs_remove_file(dsi->debugfs.irqs);
|
||||
dss_debugfs_remove_file(dsi->debugfs.regs);
|
||||
|
||||
of_platform_depopulate(dev);
|
||||
|
||||
WARN_ON(dsi->scp_clk_refcount > 0);
|
||||
|
||||
dss_pll_unregister(&dsi->pll);
|
||||
|
@ -5457,6 +5466,8 @@ static int dsi_remove(struct platform_device *pdev)
|
|||
|
||||
dsi_uninit_output(dsi);
|
||||
|
||||
of_platform_depopulate(&pdev->dev);
|
||||
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
if (dsi->vdds_dsi_reg != NULL && dsi->vdds_dsi_enabled) {
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
//SPDX-License-Identifier: GPL-2.0+
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
/*
|
||||
* Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
|
||||
* Author:
|
||||
* Sandy Huang <hjc@rock-chips.com>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#include <drm/drmP.h>
|
||||
|
|
|
@ -1,17 +1,8 @@
|
|||
//SPDX-License-Identifier: GPL-2.0+
|
||||
/* SPDX-License-Identifier: GPL-2.0 */
|
||||
/*
|
||||
* Copyright (C) Fuzhou Rockchip Electronics Co.Ltd
|
||||
* Author:
|
||||
* Sandy Huang <hjc@rock-chips.com>
|
||||
*
|
||||
* This software is licensed under the terms of the GNU General Public
|
||||
* License version 2, as published by the Free Software Foundation, and
|
||||
* may be copied, distributed, and modified under those terms.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_ROCKCHIP_RGB
|
||||
|
|
|
@ -761,6 +761,7 @@ static int sun4i_tcon_init_clocks(struct device *dev,
|
|||
return PTR_ERR(tcon->sclk0);
|
||||
}
|
||||
}
|
||||
clk_prepare_enable(tcon->sclk0);
|
||||
|
||||
if (tcon->quirks->has_channel_1) {
|
||||
tcon->sclk1 = devm_clk_get(dev, "tcon-ch1");
|
||||
|
@ -775,6 +776,7 @@ static int sun4i_tcon_init_clocks(struct device *dev,
|
|||
|
||||
static void sun4i_tcon_free_clocks(struct sun4i_tcon *tcon)
|
||||
{
|
||||
clk_disable_unprepare(tcon->sclk0);
|
||||
clk_disable_unprepare(tcon->clk);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue