Merge tag 'drm-for-v4.12' of git://people.freedesktop.org/~airlied/linux
Pull drm u pdates from Dave Airlie: "This is the main drm pull request for v4.12. Apart from two fixes pulls, everything should have been in drm-next for at least 2 weeks. The biggest thing in here is AMD released the public headers for their upcoming VEGA GPUs. These as always are quite a sizeable chunk of header files. They've also added initial non-display support for those GPUs, though they aren't available in production yet. Otherwise it's pretty much normal. New bridge drivers: - megachips-stdpxxxx-ge-b850v3-fw LVDS->DP++ - generic LVDS bridge support. Core: - Displayport link train failure reporting to userspace - debugfs interface cleaned up - subsystem TODO in kerneldoc now - Extended fbdev support (flipping and vblank wait) - drm_platform removed - EDP CRC support in helper - HF-VSDB SCDC support in EDID parser - Lots of code cleanups and header extraction - Thunderbolt external GPU awareness - Atomic helper improvements - Documentation improvements panel: - Sitronix and Samsung new panel support amdgpu: - Preliminary vega10 support - Multi-level page table support - GPU sensor support for userspace - PRT support for sparse buffers - SR-IOV improvements - Non-contig VRAM CPU mapping i915: - Atomic modesetting enabled by default on Gen5+ - LSPCON improvements - Atomic state handling for cdclk - GPU reset improvements - In-kernel unit tests - Geminilake improvements and color manager support - Designware i2c fixes - vblank evasion improvements - Hotplug safe connector iterators - GVT scheduler QoS support - GVT Kabylake support nouveau: - Acceleration support for Pascal (GP10x). - Rearchitecture of code handling proprietary signed firmware - Fix GTX 970 with odd MMU configuration - GP10B support - GP107 acceleration support vmwgfx: - Atomic modesetting support for vmwgfx omapdrm: - Support for render nodes - Refactor omapdss code - Fix some probe ordering issues - Fix too dark RGB565 rendering sunxi: - prelim rework for multiple pipes. mali-dp: - Color management support - Plane scaling - Power management improvements imx-drm: - Prefetch Resolve Engine/Gasket on i.MX6QP - Deferred plane disabling - Separate alpha support mediatek: - Mediatek SoC MT2701 support rcar-du: - Gen3 HDMI support msm: - 4k support for newer chips - OPP bindings for gpu - prep work for per-process pagetables vc4: - HDMI audio support - fixes qxl: - minor fixes. dw-hdmi: - PHY improvements - CSC fixes - Amlogic GX SoC support" * tag 'drm-for-v4.12' of git://people.freedesktop.org/~airlied/linux: (1778 commits) drm/nouveau/fb/gf100-: Fix 32 bit wraparound in new ram detection drm/nouveau/secboot/gm20b: fix the error return code in gm20b_secboot_tegra_read_wpr() drm/nouveau/kms: Increase max retries in scanout position queries. drm/nouveau/bios/bitP: check that table is long enough for optional pointers drm/nouveau/fifo/nv40: no ctxsw for pre-nv44 mpeg engine drm: mali-dp: use div_u64 for expensive 64-bit divisions drm/i915: Confirm the request is still active before adding it to the await drm/i915: Avoid busy-spinning on VLV_GLTC_PW_STATUS mmio drm/i915/selftests: Allocate inode/file dynamically drm/i915: Fix system hang with EI UP masked on Haswell drm/i915: checking for NULL instead of IS_ERR() in mock selftests drm/i915: Perform link quality check unconditionally during long pulse drm/i915: Fix use after free in lpe_audio_platdev_destroy() drm/i915: Use the right mapping_gfp_mask for final shmem allocation drm/i915: Make legacy cursor updates more unsynced drm/i915: Apply a cond_resched() to the saturated signaler drm/i915: Park the signaler before sleeping drm: mali-dp: Check the mclk rate and allow up/down scaling drm: mali-dp: Enable image enhancement when scaling drm: mali-dp: Add plane upscaling support ...
This commit is contained in:
@@ -39,13 +39,13 @@ struct dma_buf_attachment;
|
||||
|
||||
/**
|
||||
* struct dma_buf_ops - operations possible on struct dma_buf
|
||||
* @kmap_atomic: maps a page from the buffer into kernel address
|
||||
* space, users may not block until the subsequent unmap call.
|
||||
* This callback must not sleep.
|
||||
* @kunmap_atomic: [optional] unmaps a atomically mapped page from the buffer.
|
||||
* This Callback must not sleep.
|
||||
* @kmap: maps a page from the buffer into kernel address space.
|
||||
* @kunmap: [optional] unmaps a page from the buffer.
|
||||
* @map_atomic: maps a page from the buffer into kernel address
|
||||
* space, users may not block until the subsequent unmap call.
|
||||
* This callback must not sleep.
|
||||
* @unmap_atomic: [optional] unmaps a atomically mapped page from the buffer.
|
||||
* This Callback must not sleep.
|
||||
* @map: maps a page from the buffer into kernel address space.
|
||||
* @unmap: [optional] unmaps a page from the buffer.
|
||||
* @vmap: [optional] creates a virtual mapping for the buffer into kernel
|
||||
* address space. Same restrictions as for vmap and friends apply.
|
||||
* @vunmap: [optional] unmaps a vmap from the buffer
|
||||
@@ -206,10 +206,10 @@ struct dma_buf_ops {
|
||||
* to be restarted.
|
||||
*/
|
||||
int (*end_cpu_access)(struct dma_buf *, enum dma_data_direction);
|
||||
void *(*kmap_atomic)(struct dma_buf *, unsigned long);
|
||||
void (*kunmap_atomic)(struct dma_buf *, unsigned long, void *);
|
||||
void *(*kmap)(struct dma_buf *, unsigned long);
|
||||
void (*kunmap)(struct dma_buf *, unsigned long, void *);
|
||||
void *(*map_atomic)(struct dma_buf *, unsigned long);
|
||||
void (*unmap_atomic)(struct dma_buf *, unsigned long, void *);
|
||||
void *(*map)(struct dma_buf *, unsigned long);
|
||||
void (*unmap)(struct dma_buf *, unsigned long, void *);
|
||||
|
||||
/**
|
||||
* @mmap:
|
||||
|
@@ -83,4 +83,6 @@ struct dma_fence_array *dma_fence_array_create(int num_fences,
|
||||
u64 context, unsigned seqno,
|
||||
bool signal_on_any);
|
||||
|
||||
bool dma_fence_match_context(struct dma_fence *fence, u64 context);
|
||||
|
||||
#endif /* __LINUX_DMA_FENCE_ARRAY_H */
|
||||
|
@@ -35,6 +35,7 @@ enum hdmi_infoframe_type {
|
||||
};
|
||||
|
||||
#define HDMI_IEEE_OUI 0x000c03
|
||||
#define HDMI_FORUM_IEEE_OUI 0xc45dd8
|
||||
#define HDMI_INFOFRAME_HEADER_SIZE 4
|
||||
#define HDMI_AVI_INFOFRAME_SIZE 13
|
||||
#define HDMI_SPD_INFOFRAME_SIZE 25
|
||||
|
@@ -76,6 +76,10 @@ extern int of_platform_default_populate(struct device_node *root,
|
||||
const struct of_dev_auxdata *lookup,
|
||||
struct device *parent);
|
||||
extern void of_platform_depopulate(struct device *parent);
|
||||
|
||||
extern int devm_of_platform_populate(struct device *dev);
|
||||
|
||||
extern void devm_of_platform_depopulate(struct device *dev);
|
||||
#else
|
||||
static inline int of_platform_populate(struct device_node *root,
|
||||
const struct of_device_id *matches,
|
||||
@@ -91,6 +95,13 @@ static inline int of_platform_default_populate(struct device_node *root,
|
||||
return -ENODEV;
|
||||
}
|
||||
static inline void of_platform_depopulate(struct device *parent) { }
|
||||
|
||||
static inline int devm_of_platform_populate(struct device *dev)
|
||||
{
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
static inline void devm_of_platform_depopulate(struct device *dev) { }
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_OF_DYNAMIC) && defined(CONFIG_OF_ADDRESS)
|
||||
|
@@ -358,6 +358,7 @@ struct pci_dev {
|
||||
unsigned int is_virtfn:1;
|
||||
unsigned int reset_fn:1;
|
||||
unsigned int is_hotplug_bridge:1;
|
||||
unsigned int is_thunderbolt:1; /* Thunderbolt controller */
|
||||
unsigned int __aer_firmware_first_valid:1;
|
||||
unsigned int __aer_firmware_first:1;
|
||||
unsigned int broken_intx_masking:1;
|
||||
@@ -2156,6 +2157,28 @@ static inline bool pci_ari_enabled(struct pci_bus *bus)
|
||||
return bus->self && bus->self->ari_enabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* pci_is_thunderbolt_attached - whether device is on a Thunderbolt daisy chain
|
||||
* @pdev: PCI device to check
|
||||
*
|
||||
* Walk upwards from @pdev and check for each encountered bridge if it's part
|
||||
* of a Thunderbolt controller. Reaching the host bridge means @pdev is not
|
||||
* Thunderbolt-attached. (But rather soldered to the mainboard usually.)
|
||||
*/
|
||||
static inline bool pci_is_thunderbolt_attached(struct pci_dev *pdev)
|
||||
{
|
||||
struct pci_dev *parent = pdev;
|
||||
|
||||
if (pdev->is_thunderbolt)
|
||||
return true;
|
||||
|
||||
while ((parent = pci_upstream_bridge(parent)))
|
||||
if (parent->is_thunderbolt)
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/* provide the legacy pci_dma_* API */
|
||||
#include <linux/pci-dma-compat.h>
|
||||
|
||||
|
@@ -166,6 +166,26 @@ reservation_object_lock(struct reservation_object *obj,
|
||||
return ww_mutex_lock(&obj->lock, ctx);
|
||||
}
|
||||
|
||||
/**
|
||||
* reservation_object_trylock - trylock the reservation object
|
||||
* @obj: the reservation object
|
||||
*
|
||||
* Tries to lock the reservation object for exclusive access and modification.
|
||||
* Note, that the lock is only against other writers, readers will run
|
||||
* concurrently with a writer under RCU. The seqlock is used to notify readers
|
||||
* if they overlap with a writer.
|
||||
*
|
||||
* Also note that since no context is provided, no deadlock protection is
|
||||
* possible.
|
||||
*
|
||||
* Returns true if the lock was acquired, false otherwise.
|
||||
*/
|
||||
static inline bool __must_check
|
||||
reservation_object_trylock(struct reservation_object *obj)
|
||||
{
|
||||
return ww_mutex_trylock(&obj->lock);
|
||||
}
|
||||
|
||||
/**
|
||||
* reservation_object_unlock - unlock the reservation object
|
||||
* @obj: the reservation object
|
||||
|
Reference in New Issue
Block a user