Hi all,
This is another version of the patch set to introduce the anx7814 transmitter.
Any comments are welcome.
The following series add initial support for the Slimport ANX7814 transmitter, a
ultra-low power Full-HD (1080p60) transmitter designed for portable device.
The driver was originally created and based from the work of Junhua Xia from
Analogix. This driver is a refactor of the original driver and fixes different
coding style lines, and different errors/warnings reported by …
[View More]checkpatch. Also
there were things that I noticed that we need to change like:
- Convert the numbered GPIO API to the new descriptor based GPIO API.
- Review the DT binding
- Add missing MODULE_DEVICE_TABLE(of, ...);
- Fix Makefiles and Kconfig to build conditionally.
- Use SIMPLE_DEV_PM_OPS() instead of the deprecated i2c .suspend and
.resume callbacks.
- Move to use managed device resources.
- Remove dead/unused code.
- And others ...
Changes since last version:
- Add the revision history within the respective patches (requested by Emil)
- Add two new patches 01 and 02 as part of the series (requested by Thierry)
Enric Balletbo i Serra (5):
drm/dp: add DPCD definitions from DP 1.1
hdmi: added functions for MPEG InfoFrames
of: Add vendor prefix for Analogix Semiconductor, Inc.
devicetree: Add new ANX7814 SlimPort transmitter binding.
drm: bridge: anx78xx: Add anx78xx driver support by analogix.
.../devicetree/bindings/vendor-prefixes.txt | 1 +
.../devicetree/bindings/video/bridge/anx7814.txt | 39 +
drivers/gpu/drm/bridge/Kconfig | 2 +
drivers/gpu/drm/bridge/Makefile | 1 +
drivers/gpu/drm/bridge/anx78xx/Kconfig | 5 +
drivers/gpu/drm/bridge/anx78xx/Makefile | 4 +
drivers/gpu/drm/bridge/anx78xx/anx78xx.h | 44 +
drivers/gpu/drm/bridge/anx78xx/anx78xx_main.c | 334 ++
drivers/gpu/drm/bridge/anx78xx/slimport_tx_drv.c | 3210 ++++++++++++++++++++
drivers/gpu/drm/bridge/anx78xx/slimport_tx_drv.h | 110 +
drivers/gpu/drm/bridge/anx78xx/slimport_tx_reg.h | 737 +++++
drivers/video/hdmi.c | 156 +
include/drm/drm_dp_helper.h | 10 +
include/linux/hdmi.h | 24 +
14 files changed, 4677 insertions(+)
create mode 100644 Documentation/devicetree/bindings/video/bridge/anx7814.txt
create mode 100644 drivers/gpu/drm/bridge/anx78xx/Kconfig
create mode 100644 drivers/gpu/drm/bridge/anx78xx/Makefile
create mode 100644 drivers/gpu/drm/bridge/anx78xx/anx78xx.h
create mode 100644 drivers/gpu/drm/bridge/anx78xx/anx78xx_main.c
create mode 100644 drivers/gpu/drm/bridge/anx78xx/slimport_tx_drv.c
create mode 100644 drivers/gpu/drm/bridge/anx78xx/slimport_tx_drv.h
create mode 100644 drivers/gpu/drm/bridge/anx78xx/slimport_tx_reg.h
--
2.1.0
[View Less]
Hello all,
For a while now, I've been working to fix tearing with PRIME. This is the
same as the eighth version of the DRM component for PRIME synchronization,
In this version, use_mmio_flip() tests against
!reservation_object_test_signaled_rcu(test_all=FALSE) instead of directly
checking for an exclusive fence with obj->base.dma_buf->resv->fence_excl.
Repeat of overview below:
v1 was a more complicated patch set that added an additional fenced
interface to page flipping. To avoid …
[View More]adding additional interfaces on top of
a legacy path, v2 scrapped those patches and changed i915 page flipping
paths to wait on fences attached to DMA-BUF-backed fbs. Subsequent versions
involve incremental changes outlined in the patch descriptions.
I have two patches, one that implements fencing for i915's legacy mmio_flip
path, and one for atomic modesetting for futureproofing. Currently the
mmio_flip path is the one ultimately used by the X patches, due to the lack
of asynchronous atomic modesetting support in i915.
With my synchronization patches to X, it is possible to export two shared
buffers per crtc instead of just one. The sink driver uses the legacy
drmModePageFlip() to flip between the buffers, as the rest of the driver
has yet to be ported to atomics. In the pageflip/vblank event handler, the
sink driver requests a present from the source using the new X ABI function
pScreen->PresentTrackedFlippingPixmap(). If the call returns successfully,
it uses drmModePageFlip() to flip to the updated buffer, otherwise it waits
until the next vblank and tries again.
When the source driver presents on a given buffer, it first attaches a
fence. The source driver is responsible for either using software
signaling or hardware semaphore-backed fences to ensure the fence is
signaled when the present is finished. If the sink's DRM driver implements
fencing in the flipping path, it will guarantee that that flip won't occur
until the present has finished.
This means that DRM drivers that don't implement fencing in their flipping
paths won't be able to guarantee 100% tear-free PRIME with my X patches.
However, the good news is that even without fencing, tearing is rare.
Generally presenting finishes before the next vblank, so there is no need
to wait on the fence. The X patches are a drastic improvement with or
without fencing, but the fencing is nonetheless important to guarantee
tear-free under all conditions.
To give some greater context, I've uploaded my branches for DRM and the X
server to Github. I'll move forward with upstreaming the X changes if and
when these DRM patches go in.
DRM Tree: https://github.com/GoinsWithTheWind/drm-prime-sync
X Tree: https://github.com/GoinsWithTheWind/xserver-prime-sync
(branch agoins-prime-v8)
Thanks, Alex @ NVIDIA Linux Driver Team
Alex Goins (2):
i915: wait for fence in mmio_flip_work_func
i915: wait for fence in prepare_plane_fb
drivers/gpu/drm/i915/intel_display.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
--
1.9.1
[View Less]
Hi Dave,
Today's linux-next merge of the drm tree got a conflict in:
drivers/gpu/drm/i915/intel_pm.c
between commits:
344df9809f45 ("drm/i915/skl: Disable coarse power gating up until F0")
6704d4552853 ("drm/i915/skl: Double RC6 WRL always on")
from the drm-intel-fixes tree and commit:
e87a005d90c3 ("drm/i915: add helpers for platform specific revision id range checks")
from the drm tree.
I fixed it up (I think - see below) and can carry the fix as necessary
(no action is …
[View More]required).
--
Cheers,
Stephen Rothwell sfr(a)canb.auug.org.au
diff --cc drivers/gpu/drm/i915/intel_pm.c
index f091ad12d694,96f45d7b3e4b..000000000000
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@@ -4823,8 -4707,9 +4706,9 @@@ static void gen9_enable_rc6(struct drm_
* 3b: Enable Coarse Power Gating only when RC6 is enabled.
* WaRsDisableCoarsePowerGating:skl,bxt - Render/Media PG need to be disabled with RC6.
*/
- if ((IS_BROXTON(dev) && (INTEL_REVID(dev) < BXT_REVID_B0)) ||
- ((IS_SKL_GT3(dev) || IS_SKL_GT4(dev)) && (INTEL_REVID(dev) <= SKL_REVID_F0)))
+ if (IS_BXT_REVID(dev, 0, BXT_REVID_A1) ||
+ ((IS_SKL_GT3(dev) || IS_SKL_GT4(dev)) &&
- IS_SKL_REVID(dev, 0, SKL_REVID_E0)))
++ IS_SKL_REVID(dev, 0, SKL_REVID_F0)))
I915_WRITE(GEN9_PG_ENABLE, 0);
else
I915_WRITE(GEN9_PG_ENABLE, (rc6_mask & GEN6_RC_CTL_RC6_ENABLE) ?
[View Less]
Updated version of the patch series for Emil's comments about
vc4_drm.h. I also pulled in some improvements to the validation code
which I'd written in Mesa and failed to propagate to this branch.
The series can be found at:
https://github.com/anholt/linux/tree/vc4-kms-v3d-squash-2
and a version for booting and testing can be found at:
https://github.com/anholt/linux/tree/vc4-kms-v3d-squash-2-boot
Eric Anholt (9):
drm: Create a driver hook for allocating GEM object structs.
drm/vc4: …
[View More]Add a BO cache.
drm/vc4: Add create and map BO ioctls.
drm/vc4: Add an API for creating GPU shaders in GEM BOs.
drm/vc4: Fix a typo in a V3D debug register.
drm/vc4: Bind and initialize the V3D engine.
drm/vc4: Add support for drawing 3D frames.
drm/vc4: Add support for async pageflips.
drm/vc4: Add an interface for capturing the GPU state after a hang.
drivers/gpu/drm/drm_gem_cma_helper.c | 10 +-
drivers/gpu/drm/vc4/Makefile | 11 +-
drivers/gpu/drm/vc4/vc4_bo.c | 517 ++++++++++++++++-
drivers/gpu/drm/vc4/vc4_crtc.c | 99 +++-
drivers/gpu/drm/vc4/vc4_debugfs.c | 3 +
drivers/gpu/drm/vc4/vc4_drv.c | 36 +-
drivers/gpu/drm/vc4/vc4_drv.h | 318 +++++++++-
drivers/gpu/drm/vc4/vc4_gem.c | 867 +++++++++++++++++++++++++++
drivers/gpu/drm/vc4/vc4_irq.c | 210 +++++++
drivers/gpu/drm/vc4/vc4_kms.c | 149 ++++-
drivers/gpu/drm/vc4/vc4_packet.h | 399 +++++++++++++
drivers/gpu/drm/vc4/vc4_plane.c | 40 ++
drivers/gpu/drm/vc4/vc4_qpu_defines.h | 264 +++++++++
drivers/gpu/drm/vc4/vc4_regs.h | 2 +-
drivers/gpu/drm/vc4/vc4_render_cl.c | 634 ++++++++++++++++++++
drivers/gpu/drm/vc4/vc4_trace.h | 63 ++
drivers/gpu/drm/vc4/vc4_trace_points.c | 14 +
drivers/gpu/drm/vc4/vc4_v3d.c | 262 +++++++++
drivers/gpu/drm/vc4/vc4_validate.c | 900 +++++++++++++++++++++++++++++
drivers/gpu/drm/vc4/vc4_validate_shaders.c | 513 ++++++++++++++++
include/drm/drmP.h | 7 +
include/uapi/drm/Kbuild | 1 +
include/uapi/drm/vc4_drm.h | 279 +++++++++
23 files changed, 5577 insertions(+), 21 deletions(-)
create mode 100644 drivers/gpu/drm/vc4/vc4_gem.c
create mode 100644 drivers/gpu/drm/vc4/vc4_irq.c
create mode 100644 drivers/gpu/drm/vc4/vc4_packet.h
create mode 100644 drivers/gpu/drm/vc4/vc4_qpu_defines.h
create mode 100644 drivers/gpu/drm/vc4/vc4_render_cl.c
create mode 100644 drivers/gpu/drm/vc4/vc4_trace.h
create mode 100644 drivers/gpu/drm/vc4/vc4_trace_points.c
create mode 100644 drivers/gpu/drm/vc4/vc4_v3d.c
create mode 100644 drivers/gpu/drm/vc4/vc4_validate.c
create mode 100644 drivers/gpu/drm/vc4/vc4_validate_shaders.c
create mode 100644 include/uapi/drm/vc4_drm.h
--
2.6.2
[View Less]
The STi drm driver correctly warns about invalid format strings
when built with 64-bit dma_addr_t:
sti_hqvdp.c: In function 'sti_hqvdp_vtg_cb':
sti_hqvdp.c:605:119: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t {aka long long unsigned int}' [-Wformat=]
sti_hqvdp.c: In function 'sti_hqvdp_atomic_update':
sti_hqvdp.c:931:118: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t {aka long long …
[View More]unsigned int}' [-Wformat=]
This could be changed to using the %pad format string, but that
does not work when printing an rvalue, so instead I'm changing
the type in the sti_hqvdp structure to u32, which is what gets
written into the registers anyway.
Signed-off-by: Arnd Bergmann <arnd(a)arndb.de>
---
drivers/gpu/drm/sti/sti_hqvdp.c | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/drivers/gpu/drm/sti/sti_hqvdp.c b/drivers/gpu/drm/sti/sti_hqvdp.c
index ea0690bc77d5..9d698e582011 100644
--- a/drivers/gpu/drm/sti/sti_hqvdp.c
+++ b/drivers/gpu/drm/sti/sti_hqvdp.c
@@ -349,7 +349,7 @@ struct sti_hqvdp {
unsigned int curr_field_count;
unsigned int last_field_count;
void *hqvdp_cmd;
- dma_addr_t hqvdp_cmd_paddr;
+ u32 hqvdp_cmd_paddr;
struct sti_vtg *vtg;
bool xp70_initialized;
};
@@ -372,8 +372,8 @@ static const uint32_t hqvdp_supported_formats[] = {
*/
static int sti_hqvdp_get_free_cmd(struct sti_hqvdp *hqvdp)
{
- int curr_cmd, next_cmd;
- dma_addr_t cmd = hqvdp->hqvdp_cmd_paddr;
+ u32 curr_cmd, next_cmd;
+ u32 cmd = hqvdp->hqvdp_cmd_paddr;
int i;
curr_cmd = readl(hqvdp->regs + HQVDP_MBX_CURRENT_CMD);
@@ -400,8 +400,8 @@ static int sti_hqvdp_get_free_cmd(struct sti_hqvdp *hqvdp)
*/
static int sti_hqvdp_get_curr_cmd(struct sti_hqvdp *hqvdp)
{
- int curr_cmd;
- dma_addr_t cmd = hqvdp->hqvdp_cmd_paddr;
+ u32 curr_cmd;
+ u32 cmd = hqvdp->hqvdp_cmd_paddr;
unsigned int i;
curr_cmd = readl(hqvdp->regs + HQVDP_MBX_CURRENT_CMD);
@@ -612,19 +612,21 @@ int sti_hqvdp_vtg_cb(struct notifier_block *nb, unsigned long evt, void *data)
static void sti_hqvdp_init(struct sti_hqvdp *hqvdp)
{
int size;
+ dma_addr_t dma_addr;
hqvdp->vtg_nb.notifier_call = sti_hqvdp_vtg_cb;
/* Allocate memory for the VDP commands */
size = NB_VDP_CMD * sizeof(struct sti_hqvdp_cmd);
hqvdp->hqvdp_cmd = dma_alloc_writecombine(hqvdp->dev, size,
- &hqvdp->hqvdp_cmd_paddr,
+ &dma_addr,
GFP_KERNEL | GFP_DMA);
if (!hqvdp->hqvdp_cmd) {
DRM_ERROR("Failed to allocate memory for VDP cmd\n");
return;
}
+ hqvdp->hqvdp_cmd_paddr = (u32)dma_addr;
memset(hqvdp->hqvdp_cmd, 0, size);
}
--
2.1.0.rc2
[View Less]
This patch series considers a port node outbound for panel device node,
including dt binding for it. And also it fixes a wrong error type.
Changelog v2:
- add a patch from Javier, which allows dp to connect panel using of graph.
- remove unnecessary properties and numbering pointed out by
Rob and Javier.
- update description about eDP device.
Thanks,
Inki Dae
Inki Dae (3):
drm/exynos: dp: add of_graph dt binding support for panel
drm/exynos: dp: fix wrong return type
dt-bindings: …
[View More]exynos-dp: update ports node binding for panel
Javier Martinez Canillas (1):
ARM: dts: Use OF graph for DP to panel connection in
exynos5800-peach-pi
.../bindings/display/exynos/exynos_dp.txt | 41 +++++++++++++++++++---
arch/arm/boot/dts/exynos5800-peach-pi.dts | 15 +++++++-
drivers/gpu/drm/exynos/exynos_dp_core.c | 27 ++++++++++++--
3 files changed, 75 insertions(+), 8 deletions(-)
--
1.9.1
[View Less]
Dave,
A couple of fixes for vmwgfx. A WARN() fix by Dan Carpenter,
a TTM read/write lock imbalance causing occasional hangs with Wayland and
an implementation of cursor_set2 to fix incorrectly offset Wayland cursors.
The following changes since commit 2f1371614a5d49428846b90673a89036518dffad:
Merge branch 'drm-fixes-4.4' of git://people.freedesktop.org/~agd5f/linux into drm-fixes (2015-11-26 12:42:15 +1000)
are available in the git repository at:
git://people.freedesktop.org/~thomash/…
[View More]linux tags/vmwgfx-fixes-4.4-151208
for you to fetch changes up to 8fbf9d92a7bc4cadd3a0139698cf17031dfcdfca:
drm/vmwgfx: Implement the cursor_set2 callback v2 (2015-12-08 12:55:46 +0100)
----------------------------------------------------------------
Pull request of 2015-12-08
----------------------------------------------------------------
Dan Carpenter (1):
drm/vmwgfx: fix a warning message
Thomas Hellstrom (2):
drm/ttm: Fixed a read/write lock imbalance
drm/vmwgfx: Implement the cursor_set2 callback v2
drivers/gpu/drm/ttm/ttm_lock.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 1 +
drivers/gpu/drm/vmwgfx/vmwgfx_drv.h | 1 +
drivers/gpu/drm/vmwgfx/vmwgfx_fifo.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_kms.c | 64 ++++++++++++++++++++++++++++--------
drivers/gpu/drm/vmwgfx/vmwgfx_kms.h | 7 ++--
drivers/gpu/drm/vmwgfx/vmwgfx_ldu.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c | 2 +-
drivers/gpu/drm/vmwgfx/vmwgfx_stdu.c | 2 +-
9 files changed, 63 insertions(+), 20 deletions(-)
[View Less]
To fill the audio infoframe it is required to identify the
connection type as DP or HDMI. This patch adds an API which
parses ELD and returns the display type of connected.
Signed-off-by: Subhransu S. Prusty <subhransu.s.prusty(a)intel.com>
Signed-off-by: Vinod Koul <vinod.koul(a)intel.com>
Cc: David Airlie <airlied(a)linux.ie>
Cc: dri-devel(a)lists.freedesktop.org
Cc: Daniel Vetter <daniel.vetter(a)intel.com>
---
include/drm/drm_edid.h | 12 ++++++++++++
1 file …
[View More]changed, 12 insertions(+)
diff --git a/include/drm/drm_edid.h b/include/drm/drm_edid.h
index 2af9769..8c537a0 100644
--- a/include/drm/drm_edid.h
+++ b/include/drm/drm_edid.h
@@ -403,6 +403,18 @@ static inline int drm_eld_size(const uint8_t *eld)
return DRM_ELD_HEADER_BLOCK_SIZE + eld[DRM_ELD_BASELINE_ELD_LEN] * 4;
}
+/**
+ * drm_eld_get_conn_type - Get device type hdmi/dp connected
+ * @eld: pointer to an eld memory structure
+ *
+ * The caller need to use %DRM_ELD_CONN_TYPE_HDMI or %DRM_ELD_CONN_TYPE_DP to
+ * identify the display type connected.
+ */
+static inline u8 drm_eld_get_conn_type(const uint8_t *eld)
+{
+ return eld[DRM_ELD_SAD_COUNT_CONN_TYPE] & DRM_ELD_CONN_TYPE_MASK;
+}
+
struct edid *drm_do_get_edid(struct drm_connector *connector,
int (*get_edid_block)(void *data, u8 *buf, unsigned int block,
size_t len),
--
1.9.1
[View Less]