Commit 09b020bb authored by Dave Airlie's avatar Dave Airlie
Browse files

Merge tag 'drm-misc-next-2021-06-09' of git://anongit.freedesktop.org/drm/drm-misc into drm-next



drm-misc-next for 5.14:

UAPI Changes:

 * drm/panfrost: Export AFBC_FEATURES register to userspace

Cross-subsystem Changes:

 * dma-buf: Fix debug printing; Rename dma_resv_*() functions + changes
   in callers; Cleanups

Core Changes:

 * Add prefetching memcpy for WC

 * Avoid circular dependency on CONFIG_FB

 * Cleanups

 * Documentation fixes throughout DRM

 * ttm: Make struct ttm_resource the base of all managers + changes
   in all users of TTM; Add a generic memcpy for page-based iomem; Remove
   use of VM_MIXEDMAP; Cleanups

Driver Changes:

 * drm/bridge: Add TI SN65DSI83 and SN65DSI84 + DT bindings

 * drm/hyperv: Add DRM driver for HyperV graphics output

 * drm/msm: Fix module dependencies

 * drm/panel: KD53T133: Support rotation

 * drm/pl111: Fix module dependencies

 * drm/qxl: Fixes

 * drm/stm: Cleanups

 * drm/sun4i: Be explicit about format modifiers

 * drm/vc4: Use struct gpio_desc; Cleanups

 * drm/vgem: Cleanups

 * drm/vmwgfx: Use ttm_bo_move_null() if there's nothing to copy

 * fbdev/mach64: Cleanups

 * fbdev/mb862xx: Use DEVICE_ATTR_RO

Signed-off-by: default avatarDave Airlie <airlied@redhat.com>

From: Thomas Zimmermann <tzimmermann@suse.de>
Link: https://patchwork.freedesktop.org/patch/msgid/YMBw3DF2b9udByfT@linux-uq9g
parents 5745d647 5b7a2c92
Loading
Loading
Loading
Loading
+159 −0
Original line number Diff line number Diff line
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/display/bridge/ti,sn65dsi83.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: SN65DSI83 and SN65DSI84 DSI to LVDS bridge chip

maintainers:
  - Marek Vasut <marex@denx.de>

description: |
  Texas Instruments SN65DSI83 1x Single-link MIPI DSI
  to 1x Single-link LVDS
  https://www.ti.com/lit/gpn/sn65dsi83
  Texas Instruments SN65DSI84 1x Single-link MIPI DSI
  to 1x Dual-link or 2x Single-link LVDS
  https://www.ti.com/lit/gpn/sn65dsi84

properties:
  compatible:
    enum:
      - ti,sn65dsi83
      - ti,sn65dsi84

  reg:
    enum:
      - 0x2c
      - 0x2d

  enable-gpios:
    maxItems: 1
    description: GPIO specifier for bridge_en pin (active high).

  ports:
    $ref: /schemas/graph.yaml#/properties/ports

    properties:
      port@0:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for MIPI DSI Channel-A input

        properties:
          endpoint:
            $ref: /schemas/media/video-interfaces.yaml#
            unevaluatedProperties: false

            properties:
              data-lanes:
                description: array of physical DSI data lane indexes.
                minItems: 1
                maxItems: 4
                items:
                  - const: 1
                  - const: 2
                  - const: 3
                  - const: 4

      port@1:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for MIPI DSI Channel-B input

        properties:
          endpoint:
            $ref: /schemas/media/video-interfaces.yaml#
            unevaluatedProperties: false

            properties:
              data-lanes:
                description: array of physical DSI data lane indexes.
                minItems: 1
                maxItems: 4
                items:
                  - const: 1
                  - const: 2
                  - const: 3
                  - const: 4

      port@2:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for LVDS Channel-A output (panel or bridge).

      port@3:
        $ref: /schemas/graph.yaml#/properties/port
        description: Video port for LVDS Channel-B output (panel or bridge).

    required:
      - port@0
      - port@2

required:
  - compatible
  - reg
  - enable-gpios
  - ports

allOf:
  - if:
      properties:
        compatible:
          contains:
            const: ti,sn65dsi83
    then:
      properties:
        ports:
          properties:
            port@1: false
            port@3: false

  - if:
      properties:
        compatible:
          contains:
            const: ti,sn65dsi84
    then:
      properties:
        ports:
          properties:
            port@1: false

additionalProperties: false

examples:
  - |
    #include <dt-bindings/gpio/gpio.h>

    i2c {
        #address-cells = <1>;
        #size-cells = <0>;

        bridge@2d {
            compatible = "ti,sn65dsi83";
            reg = <0x2d>;

            enable-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;

            ports {
                #address-cells = <1>;
                #size-cells = <0>;

                port@0 {
                    reg = <0>;

                    endpoint {
                        remote-endpoint = <&dsi0_out>;
                        data-lanes = <1 2 3 4>;
                    };
                };

                port@2 {
                    reg = <2>;

                    endpoint {
                        remote-endpoint = <&panel_in_lvds>;
                    };
                };
            };
        };
    };
+9 −0
Original line number Diff line number Diff line
@@ -178,6 +178,15 @@ DMA Fence Array
.. kernel-doc:: include/linux/dma-fence-array.h
   :internal:

DMA Fence Chain
~~~~~~~~~~~~~~~

.. kernel-doc:: drivers/dma-buf/dma-fence-chain.c
   :export:

.. kernel-doc:: include/linux/dma-fence-chain.h
   :internal:

DMA Fence uABI/Sync File
~~~~~~~~~~~~~~~~~~~~~~~~

+2 −2
Original line number Diff line number Diff line
@@ -469,8 +469,8 @@ DRM MM Range Allocator Function References
.. kernel-doc:: drivers/gpu/drm/drm_mm.c
   :export:

DRM Cache Handling
==================
DRM Cache Handling and Fast WC memcpy()
=======================================

.. kernel-doc:: drivers/gpu/drm/drm_cache.c
   :export:
+8 −0
Original line number Diff line number Diff line
@@ -6084,6 +6084,14 @@ T: git git://anongit.freedesktop.org/drm/drm-misc
F:	Documentation/devicetree/bindings/display/hisilicon/
F:	drivers/gpu/drm/hisilicon/
DRM DRIVER FOR HYPERV SYNTHETIC VIDEO DEVICE
M:	Deepak Rawat <drawat.floss@gmail.com>
L:	linux-hyperv@vger.kernel.org
L:	dri-devel@lists.freedesktop.org
S:	Maintained
T:	git git://anongit.freedesktop.org/drm/drm-misc
F:	drivers/gpu/drm/hyperv
DRM DRIVERS FOR LIMA
M:	Qiang Yu <yuq825@gmail.com>
L:	dri-devel@lists.freedesktop.org
+10 −21
Original line number Diff line number Diff line
@@ -234,7 +234,7 @@ static __poll_t dma_buf_poll(struct file *file, poll_table *poll)
		shared_count = fobj->shared_count;
	else
		shared_count = 0;
	fence_excl = rcu_dereference(resv->fence_excl);
	fence_excl = dma_resv_excl_fence(resv);
	if (read_seqcount_retry(&resv->seq, seq)) {
		rcu_read_unlock();
		goto retry;
@@ -1147,8 +1147,7 @@ static int __dma_buf_begin_cpu_access(struct dma_buf *dmabuf,
	long ret;

	/* Wait on any implicit rendering fences */
	ret = dma_resv_wait_timeout_rcu(resv, write, true,
						  MAX_SCHEDULE_TIMEOUT);
	ret = dma_resv_wait_timeout(resv, write, true, MAX_SCHEDULE_TIMEOUT);
	if (ret < 0)
		return ret;

@@ -1349,15 +1348,14 @@ EXPORT_SYMBOL_GPL(dma_buf_vunmap);
#ifdef CONFIG_DEBUG_FS
static int dma_buf_debug_show(struct seq_file *s, void *unused)
{
	int ret;
	struct dma_buf *buf_obj;
	struct dma_buf_attachment *attach_obj;
	struct dma_resv *robj;
	struct dma_resv_list *fobj;
	struct dma_fence *fence;
	unsigned seq;
	int count = 0, attach_count, shared_count, i;
	size_t size = 0;
	int ret;

	ret = mutex_lock_interruptible(&db_list.lock);

@@ -1383,33 +1381,24 @@ static int dma_buf_debug_show(struct seq_file *s, void *unused)
				buf_obj->name ?: "");

		robj = buf_obj->resv;
		while (true) {
			seq = read_seqcount_begin(&robj->seq);
			rcu_read_lock();
			fobj = rcu_dereference(robj->fence);
			shared_count = fobj ? fobj->shared_count : 0;
			fence = rcu_dereference(robj->fence_excl);
			if (!read_seqcount_retry(&robj->seq, seq))
				break;
			rcu_read_unlock();
		}

		fence = dma_resv_excl_fence(robj);
		if (fence)
			seq_printf(s, "\tExclusive fence: %s %s %ssignalled\n",
				   fence->ops->get_driver_name(fence),
				   fence->ops->get_timeline_name(fence),
				   dma_fence_is_signaled(fence) ? "" : "un");

		fobj = rcu_dereference_protected(robj->fence,
						 dma_resv_held(robj));
		shared_count = fobj ? fobj->shared_count : 0;
		for (i = 0; i < shared_count; i++) {
			fence = rcu_dereference(fobj->shared[i]);
			if (!dma_fence_get_rcu(fence))
				continue;
			fence = rcu_dereference_protected(fobj->shared[i],
							  dma_resv_held(robj));
			seq_printf(s, "\tShared fence: %s %s %ssignalled\n",
				   fence->ops->get_driver_name(fence),
				   fence->ops->get_timeline_name(fence),
				   dma_fence_is_signaled(fence) ? "" : "un");
			dma_fence_put(fence);
		}
		rcu_read_unlock();

		seq_puts(s, "\tAttached Devices:\n");
		attach_count = 0;
Loading