mirror of https://gitee.com/openkylin/linux.git
Merge tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel into drm-next
* tag 'topic/drm-misc-2016-04-01' of git://anongit.freedesktop.org/drm-intel: drm: Add new DCS commands in the enum list drm: Make uapi headers C89 pendantic compliant drm/atomic: export drm_atomic_helper_wait_for_fences() drm: Untangle __KERNEL__ guards drm: Move DRM_MODE_OBJECT_* to uapi headers drm: align #include directives with libdrm in uapi headers drm: Make drm.h uapi header safe for C++ vgacon: dummy implementation for vgacon_text_force drm/sysfs: Nuke TV/DVI property files drm/ttm: Remove TTM_HAS_AGP drm: bridge/dw-hdmi: Remove pre_enable/post_disable dummy funcs Revert "drm: Don't pass negative delta to ktime_sub_ns()" drm/atmel: Fixup drm_connector_/unplug/unregister/_all drm: Rename drm_connector_unplug_all() to drm_connector_unregister_all() drm: bridge: Make (pre/post) enable/disable callbacks optional
This commit is contained in:
commit
e7c8e54440
|
@ -556,12 +556,10 @@ static struct pci_driver amdgpu_kms_pci_driver = {
|
|||
static int __init amdgpu_init(void)
|
||||
{
|
||||
amdgpu_sync_init();
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force()) {
|
||||
DRM_ERROR("VGACON disables amdgpu kernel modesetting.\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
#endif
|
||||
DRM_INFO("amdgpu kernel modesetting enabled.\n");
|
||||
driver = &kms_driver;
|
||||
pdriver = &amdgpu_kms_pci_driver;
|
||||
|
|
|
@ -218,10 +218,8 @@ static struct drm_driver driver = {
|
|||
|
||||
static int __init ast_init(void)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && ast_modeset == -1)
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (ast_modeset == 0)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -615,7 +615,7 @@ static int atmel_hlcdc_dc_connector_plug_all(struct drm_device *dev)
|
|||
static void atmel_hlcdc_dc_connector_unplug_all(struct drm_device *dev)
|
||||
{
|
||||
mutex_lock(&dev->mode_config.mutex);
|
||||
drm_connector_unplug_all(dev);
|
||||
drm_connector_unregister_all(dev);
|
||||
mutex_unlock(&dev->mode_config.mutex);
|
||||
}
|
||||
|
||||
|
|
|
@ -1413,11 +1413,6 @@ static void dw_hdmi_bridge_enable(struct drm_bridge *bridge)
|
|||
mutex_unlock(&hdmi->mutex);
|
||||
}
|
||||
|
||||
static void dw_hdmi_bridge_nop(struct drm_bridge *bridge)
|
||||
{
|
||||
/* do nothing */
|
||||
}
|
||||
|
||||
static enum drm_connector_status
|
||||
dw_hdmi_connector_detect(struct drm_connector *connector, bool force)
|
||||
{
|
||||
|
@ -1536,8 +1531,6 @@ static const struct drm_connector_helper_funcs dw_hdmi_connector_helper_funcs =
|
|||
static const struct drm_bridge_funcs dw_hdmi_bridge_funcs = {
|
||||
.enable = dw_hdmi_bridge_enable,
|
||||
.disable = dw_hdmi_bridge_disable,
|
||||
.pre_enable = dw_hdmi_bridge_nop,
|
||||
.post_disable = dw_hdmi_bridge_nop,
|
||||
.mode_set = dw_hdmi_bridge_mode_set,
|
||||
};
|
||||
|
||||
|
|
|
@ -163,10 +163,8 @@ static struct pci_driver cirrus_pci_driver = {
|
|||
|
||||
static int __init cirrus_init(void)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && cirrus_modeset == -1)
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (cirrus_modeset == 0)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -984,7 +984,17 @@ void drm_atomic_helper_commit_modeset_enables(struct drm_device *dev,
|
|||
}
|
||||
EXPORT_SYMBOL(drm_atomic_helper_commit_modeset_enables);
|
||||
|
||||
static void wait_for_fences(struct drm_device *dev,
|
||||
/**
|
||||
* drm_atomic_helper_wait_for_fences - wait for fences stashed in plane state
|
||||
* @dev: DRM device
|
||||
* @state: atomic state object with old state structures
|
||||
*
|
||||
* For implicit sync, driver should fish the exclusive fence out from the
|
||||
* incoming fb's and stash it in the drm_plane_state. This is called after
|
||||
* drm_atomic_helper_swap_state() so it uses the current plane state (and
|
||||
* just uses the atomic state to find the changed planes)
|
||||
*/
|
||||
void drm_atomic_helper_wait_for_fences(struct drm_device *dev,
|
||||
struct drm_atomic_state *state)
|
||||
{
|
||||
struct drm_plane *plane;
|
||||
|
@ -1002,6 +1012,7 @@ static void wait_for_fences(struct drm_device *dev,
|
|||
plane->state->fence = NULL;
|
||||
}
|
||||
}
|
||||
EXPORT_SYMBOL(drm_atomic_helper_wait_for_fences);
|
||||
|
||||
/**
|
||||
* drm_atomic_helper_framebuffer_changed - check if framebuffer has changed
|
||||
|
@ -1163,7 +1174,7 @@ int drm_atomic_helper_commit(struct drm_device *dev,
|
|||
* current layout.
|
||||
*/
|
||||
|
||||
wait_for_fences(dev, state);
|
||||
drm_atomic_helper_wait_for_fences(dev, state);
|
||||
|
||||
drm_atomic_helper_commit_modeset_disables(dev, state);
|
||||
|
||||
|
|
|
@ -1067,25 +1067,25 @@ void drm_connector_unregister(struct drm_connector *connector)
|
|||
}
|
||||
EXPORT_SYMBOL(drm_connector_unregister);
|
||||
|
||||
|
||||
/**
|
||||
* drm_connector_unplug_all - unregister connector userspace interfaces
|
||||
* drm_connector_unregister_all - unregister connector userspace interfaces
|
||||
* @dev: drm device
|
||||
*
|
||||
* This function unregisters all connector userspace interfaces in sysfs. Should
|
||||
* be call when the device is disconnected, e.g. from an usb driver's
|
||||
* ->disconnect callback.
|
||||
* This functions unregisters all connectors from sysfs and other places so
|
||||
* that userspace can no longer access them. Drivers should call this as the
|
||||
* first step tearing down the device instace, or when the underlying
|
||||
* physical device disappeared (e.g. USB unplug), right before calling
|
||||
* drm_dev_unregister().
|
||||
*/
|
||||
void drm_connector_unplug_all(struct drm_device *dev)
|
||||
void drm_connector_unregister_all(struct drm_device *dev)
|
||||
{
|
||||
struct drm_connector *connector;
|
||||
|
||||
/* FIXME: taking the mode config mutex ends up in a clash with sysfs */
|
||||
list_for_each_entry(connector, &dev->mode_config.connector_list, head)
|
||||
drm_for_each_connector(connector, dev)
|
||||
drm_connector_unregister(connector);
|
||||
|
||||
}
|
||||
EXPORT_SYMBOL(drm_connector_unplug_all);
|
||||
EXPORT_SYMBOL(drm_connector_unregister_all);
|
||||
|
||||
/**
|
||||
* drm_encoder_init - Init a preallocated encoder
|
||||
|
|
|
@ -863,10 +863,7 @@ int drm_calc_vbltimestamp_from_scanoutpos(struct drm_device *dev,
|
|||
/* Subtract time delta from raw timestamp to get final
|
||||
* vblank_time timestamp for end of vblank.
|
||||
*/
|
||||
if (delta_ns < 0)
|
||||
etime = ktime_add_ns(etime, -delta_ns);
|
||||
else
|
||||
etime = ktime_sub_ns(etime, delta_ns);
|
||||
etime = ktime_sub_ns(etime, delta_ns);
|
||||
*vblank_time = ktime_to_timeval(etime);
|
||||
|
||||
DRM_DEBUG_VBL("crtc %u : v 0x%x p(%d,%d)@ %ld.%ld -> %ld.%ld [e %d us, %d rep]\n",
|
||||
|
|
|
@ -287,102 +287,6 @@ static ssize_t modes_show(struct device *device,
|
|||
return written;
|
||||
}
|
||||
|
||||
static ssize_t tv_subconnector_show(struct device *device,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct drm_connector *connector = to_drm_connector(device);
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_property *prop;
|
||||
uint64_t subconnector;
|
||||
int ret;
|
||||
|
||||
prop = dev->mode_config.tv_subconnector_property;
|
||||
if (!prop) {
|
||||
DRM_ERROR("Unable to find subconnector property\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s",
|
||||
drm_get_tv_subconnector_name((int)subconnector));
|
||||
}
|
||||
|
||||
static ssize_t tv_select_subconnector_show(struct device *device,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct drm_connector *connector = to_drm_connector(device);
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_property *prop;
|
||||
uint64_t subconnector;
|
||||
int ret;
|
||||
|
||||
prop = dev->mode_config.tv_select_subconnector_property;
|
||||
if (!prop) {
|
||||
DRM_ERROR("Unable to find select subconnector property\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s",
|
||||
drm_get_tv_select_name((int)subconnector));
|
||||
}
|
||||
|
||||
static ssize_t dvii_subconnector_show(struct device *device,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct drm_connector *connector = to_drm_connector(device);
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_property *prop;
|
||||
uint64_t subconnector;
|
||||
int ret;
|
||||
|
||||
prop = dev->mode_config.dvi_i_subconnector_property;
|
||||
if (!prop) {
|
||||
DRM_ERROR("Unable to find subconnector property\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s",
|
||||
drm_get_dvi_i_subconnector_name((int)subconnector));
|
||||
}
|
||||
|
||||
static ssize_t dvii_select_subconnector_show(struct device *device,
|
||||
struct device_attribute *attr,
|
||||
char *buf)
|
||||
{
|
||||
struct drm_connector *connector = to_drm_connector(device);
|
||||
struct drm_device *dev = connector->dev;
|
||||
struct drm_property *prop;
|
||||
uint64_t subconnector;
|
||||
int ret;
|
||||
|
||||
prop = dev->mode_config.dvi_i_select_subconnector_property;
|
||||
if (!prop) {
|
||||
DRM_ERROR("Unable to find select subconnector property\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = drm_object_property_get_value(&connector->base, prop, &subconnector);
|
||||
if (ret)
|
||||
return 0;
|
||||
|
||||
return snprintf(buf, PAGE_SIZE, "%s",
|
||||
drm_get_dvi_i_select_name((int)subconnector));
|
||||
}
|
||||
|
||||
static DEVICE_ATTR_RW(status);
|
||||
static DEVICE_ATTR_RO(enabled);
|
||||
static DEVICE_ATTR_RO(dpms);
|
||||
|
@ -396,54 +300,6 @@ static struct attribute *connector_dev_attrs[] = {
|
|||
NULL
|
||||
};
|
||||
|
||||
static DEVICE_ATTR_RO(tv_subconnector);
|
||||
static DEVICE_ATTR_RO(tv_select_subconnector);
|
||||
|
||||
static struct attribute *connector_tv_dev_attrs[] = {
|
||||
&dev_attr_tv_subconnector.attr,
|
||||
&dev_attr_tv_select_subconnector.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
static DEVICE_ATTR_RO(dvii_subconnector);
|
||||
static DEVICE_ATTR_RO(dvii_select_subconnector);
|
||||
|
||||
static struct attribute *connector_dvii_dev_attrs[] = {
|
||||
&dev_attr_dvii_subconnector.attr,
|
||||
&dev_attr_dvii_select_subconnector.attr,
|
||||
NULL
|
||||
};
|
||||
|
||||
/* Connector type related helpers */
|
||||
static int kobj_connector_type(struct kobject *kobj)
|
||||
{
|
||||
struct device *dev = kobj_to_dev(kobj);
|
||||
struct drm_connector *connector = to_drm_connector(dev);
|
||||
|
||||
return connector->connector_type;
|
||||
}
|
||||
|
||||
static umode_t connector_is_dvii(struct kobject *kobj,
|
||||
struct attribute *attr, int idx)
|
||||
{
|
||||
return kobj_connector_type(kobj) == DRM_MODE_CONNECTOR_DVII ?
|
||||
attr->mode : 0;
|
||||
}
|
||||
|
||||
static umode_t connector_is_tv(struct kobject *kobj,
|
||||
struct attribute *attr, int idx)
|
||||
{
|
||||
switch (kobj_connector_type(kobj)) {
|
||||
case DRM_MODE_CONNECTOR_Composite:
|
||||
case DRM_MODE_CONNECTOR_SVIDEO:
|
||||
case DRM_MODE_CONNECTOR_Component:
|
||||
case DRM_MODE_CONNECTOR_TV:
|
||||
return attr->mode;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static struct bin_attribute edid_attr = {
|
||||
.attr.name = "edid",
|
||||
.attr.mode = 0444,
|
||||
|
@ -461,20 +317,8 @@ static const struct attribute_group connector_dev_group = {
|
|||
.bin_attrs = connector_bin_attrs,
|
||||
};
|
||||
|
||||
static const struct attribute_group connector_tv_dev_group = {
|
||||
.attrs = connector_tv_dev_attrs,
|
||||
.is_visible = connector_is_tv,
|
||||
};
|
||||
|
||||
static const struct attribute_group connector_dvii_dev_group = {
|
||||
.attrs = connector_dvii_dev_attrs,
|
||||
.is_visible = connector_is_dvii,
|
||||
};
|
||||
|
||||
static const struct attribute_group *connector_dev_groups[] = {
|
||||
&connector_dev_group,
|
||||
&connector_tv_dev_group,
|
||||
&connector_dvii_dev_group,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
|
|
@ -1742,10 +1742,8 @@ static int __init i915_init(void)
|
|||
if (i915.modeset == 0)
|
||||
driver.driver_features &= ~DRIVER_MODESET;
|
||||
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && i915.modeset == -1)
|
||||
driver.driver_features &= ~DRIVER_MODESET;
|
||||
#endif
|
||||
|
||||
if (!(driver.driver_features & DRIVER_MODESET)) {
|
||||
/* Silently fail loading to not upset userspace. */
|
||||
|
|
|
@ -116,10 +116,8 @@ static struct pci_driver mgag200_pci_driver = {
|
|||
|
||||
static int __init mgag200_init(void)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && mgag200_modeset == -1)
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (mgag200_modeset == 0)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -1083,10 +1083,8 @@ nouveau_drm_init(void)
|
|||
nouveau_display_options();
|
||||
|
||||
if (nouveau_modeset == -1) {
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force())
|
||||
nouveau_modeset = 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
if (!nouveau_modeset)
|
||||
|
|
|
@ -272,10 +272,8 @@ static struct drm_driver qxl_driver = {
|
|||
|
||||
static int __init qxl_init(void)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && qxl_modeset == -1)
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (qxl_modeset == 0)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -566,12 +566,10 @@ static struct pci_driver radeon_kms_pci_driver = {
|
|||
|
||||
static int __init radeon_init(void)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && radeon_modeset == -1) {
|
||||
DRM_INFO("VGACON disable radeon kernel modesetting.\n");
|
||||
radeon_modeset = 0;
|
||||
}
|
||||
#endif
|
||||
/* set to modesetting by default if not nomodeset */
|
||||
if (radeon_modeset == -1)
|
||||
radeon_modeset = 1;
|
||||
|
|
|
@ -278,10 +278,7 @@ static int rcar_du_remove(struct platform_device *pdev)
|
|||
struct rcar_du_device *rcdu = platform_get_drvdata(pdev);
|
||||
struct drm_device *ddev = rcdu->ddev;
|
||||
|
||||
mutex_lock(&ddev->mode_config.mutex);
|
||||
drm_connector_unplug_all(ddev);
|
||||
mutex_unlock(&ddev->mode_config.mutex);
|
||||
|
||||
drm_connector_unregister_all(ddev);
|
||||
drm_dev_unregister(ddev);
|
||||
|
||||
if (rcdu->fbdev)
|
||||
|
|
|
@ -2,9 +2,10 @@
|
|||
# Makefile for the drm device driver. This driver provides support for the
|
||||
|
||||
ccflags-y := -Iinclude/drm
|
||||
ttm-y := ttm_agp_backend.o ttm_memory.o ttm_tt.o ttm_bo.o \
|
||||
ttm-y := ttm_memory.o ttm_tt.o ttm_bo.o \
|
||||
ttm_bo_util.o ttm_bo_vm.o ttm_module.o \
|
||||
ttm_object.o ttm_lock.o ttm_execbuf_util.o ttm_page_alloc.o \
|
||||
ttm_bo_manager.o ttm_page_alloc_dma.o
|
||||
ttm-$(CONFIG_AGP) += ttm_agp_backend.o
|
||||
|
||||
obj-$(CONFIG_DRM_TTM) += ttm.o
|
||||
|
|
|
@ -34,7 +34,6 @@
|
|||
#include <drm/ttm/ttm_module.h>
|
||||
#include <drm/ttm/ttm_bo_driver.h>
|
||||
#include <drm/ttm/ttm_page_alloc.h>
|
||||
#ifdef TTM_HAS_AGP
|
||||
#include <drm/ttm/ttm_placement.h>
|
||||
#include <linux/agp_backend.h>
|
||||
#include <linux/module.h>
|
||||
|
@ -148,5 +147,3 @@ void ttm_agp_tt_unpopulate(struct ttm_tt *ttm)
|
|||
ttm_pool_unpopulate(ttm);
|
||||
}
|
||||
EXPORT_SYMBOL(ttm_agp_tt_unpopulate);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
#include <drm/ttm/ttm_bo_driver.h>
|
||||
#include <drm/ttm/ttm_page_alloc.h>
|
||||
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
#include <asm/agp.h>
|
||||
#endif
|
||||
|
||||
|
@ -219,7 +219,7 @@ static struct ttm_pool_manager *_manager;
|
|||
#ifndef CONFIG_X86
|
||||
static int set_pages_array_wb(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
@ -230,7 +230,7 @@ static int set_pages_array_wb(struct page **pages, int addrinarray)
|
|||
|
||||
static int set_pages_array_wc(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
@ -241,7 +241,7 @@ static int set_pages_array_wc(struct page **pages, int addrinarray)
|
|||
|
||||
static int set_pages_array_uc(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
#include <linux/kthread.h>
|
||||
#include <drm/ttm/ttm_bo_driver.h>
|
||||
#include <drm/ttm/ttm_page_alloc.h>
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
#include <asm/agp.h>
|
||||
#endif
|
||||
|
||||
|
@ -271,7 +271,7 @@ static struct kobj_type ttm_pool_kobj_type = {
|
|||
#ifndef CONFIG_X86
|
||||
static int set_pages_array_wb(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
@ -282,7 +282,7 @@ static int set_pages_array_wb(struct page **pages, int addrinarray)
|
|||
|
||||
static int set_pages_array_wc(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
@ -293,7 +293,7 @@ static int set_pages_array_wc(struct page **pages, int addrinarray)
|
|||
|
||||
static int set_pages_array_uc(struct page **pages, int addrinarray)
|
||||
{
|
||||
#ifdef TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < addrinarray; i++)
|
||||
|
|
|
@ -94,7 +94,7 @@ static void udl_usb_disconnect(struct usb_interface *interface)
|
|||
struct drm_device *dev = usb_get_intfdata(interface);
|
||||
|
||||
drm_kms_helper_poll_disable(dev);
|
||||
drm_connector_unplug_all(dev);
|
||||
drm_connector_unregister_all(dev);
|
||||
udl_fbdev_unplug(dev);
|
||||
udl_drop_usb(dev);
|
||||
drm_unplug_dev(dev);
|
||||
|
|
|
@ -42,10 +42,8 @@ module_param_named(modeset, virtio_gpu_modeset, int, 0400);
|
|||
|
||||
static int virtio_gpu_probe(struct virtio_device *vdev)
|
||||
{
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force() && virtio_gpu_modeset == -1)
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
if (virtio_gpu_modeset == 0)
|
||||
return -EINVAL;
|
||||
|
|
|
@ -1530,10 +1530,8 @@ static int __init vmwgfx_init(void)
|
|||
{
|
||||
int ret;
|
||||
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
if (vgacon_text_force())
|
||||
return -EINVAL;
|
||||
#endif
|
||||
|
||||
ret = drm_pci_init(&driver, &vmw_pci_driver);
|
||||
if (ret)
|
||||
|
|
|
@ -42,6 +42,8 @@ int drm_atomic_helper_commit(struct drm_device *dev,
|
|||
struct drm_atomic_state *state,
|
||||
bool async);
|
||||
|
||||
void drm_atomic_helper_wait_for_fences(struct drm_device *dev,
|
||||
struct drm_atomic_state *state);
|
||||
bool drm_atomic_helper_framebuffer_changed(struct drm_device *dev,
|
||||
struct drm_atomic_state *old_state,
|
||||
struct drm_crtc *crtc);
|
||||
|
|
|
@ -45,16 +45,6 @@ struct drm_clip_rect;
|
|||
struct device_node;
|
||||
struct fence;
|
||||
|
||||
#define DRM_MODE_OBJECT_CRTC 0xcccccccc
|
||||
#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
|
||||
#define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0
|
||||
#define DRM_MODE_OBJECT_MODE 0xdededede
|
||||
#define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0
|
||||
#define DRM_MODE_OBJECT_FB 0xfbfbfbfb
|
||||
#define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb
|
||||
#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee
|
||||
#define DRM_MODE_OBJECT_ANY 0
|
||||
|
||||
struct drm_mode_object {
|
||||
uint32_t id;
|
||||
uint32_t type;
|
||||
|
@ -2259,8 +2249,8 @@ static inline unsigned drm_connector_index(struct drm_connector *connector)
|
|||
return connector->connector_id;
|
||||
}
|
||||
|
||||
/* helper to unplug all connectors from sysfs for device */
|
||||
extern void drm_connector_unplug_all(struct drm_device *dev);
|
||||
/* helper to unregister all connectors from sysfs for device */
|
||||
extern void drm_connector_unregister_all(struct drm_device *dev);
|
||||
|
||||
extern int drm_bridge_add(struct drm_bridge *bridge);
|
||||
extern void drm_bridge_remove(struct drm_bridge *bridge);
|
||||
|
|
|
@ -1030,8 +1030,7 @@ extern pgprot_t ttm_io_prot(uint32_t caching_flags, pgprot_t tmp);
|
|||
|
||||
extern const struct ttm_mem_type_manager_func ttm_bo_manager_func;
|
||||
|
||||
#if (defined(CONFIG_AGP) || (defined(CONFIG_AGP_MODULE) && defined(MODULE)))
|
||||
#define TTM_HAS_AGP
|
||||
#if IS_ENABLED(CONFIG_AGP)
|
||||
#include <linux/agp_backend.h>
|
||||
|
||||
/**
|
||||
|
|
|
@ -191,6 +191,8 @@ void vcs_remove_sysfs(int index);
|
|||
|
||||
#ifdef CONFIG_VGA_CONSOLE
|
||||
extern bool vgacon_text_force(void);
|
||||
#else
|
||||
static inline bool vgacon_text_force(void) { return false; }
|
||||
#endif
|
||||
|
||||
#endif /* _LINUX_CONSOLE_H */
|
||||
|
|
|
@ -36,7 +36,13 @@
|
|||
#ifndef _DRM_H_
|
||||
#define _DRM_H_
|
||||
|
||||
#if defined(__KERNEL__) || defined(__linux__)
|
||||
#if defined(__KERNEL__)
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/ioctl.h>
|
||||
typedef unsigned int drm_handle_t;
|
||||
|
||||
#elif defined(__linux__)
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <asm/ioctl.h>
|
||||
|
@ -181,7 +187,7 @@ enum drm_map_type {
|
|||
_DRM_SHM = 2, /**< shared, cached */
|
||||
_DRM_AGP = 3, /**< AGP/GART */
|
||||
_DRM_SCATTER_GATHER = 4, /**< Scatter/gather memory for PCI DMA */
|
||||
_DRM_CONSISTENT = 5, /**< Consistent memory for PCI DMA */
|
||||
_DRM_CONSISTENT = 5 /**< Consistent memory for PCI DMA */
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -373,7 +379,11 @@ struct drm_buf_pub {
|
|||
*/
|
||||
struct drm_buf_map {
|
||||
int count; /**< Length of the buffer list */
|
||||
#ifdef __cplusplus
|
||||
void __user *virt;
|
||||
#else
|
||||
void __user *virtual; /**< Mmap'd area in user-virtual */
|
||||
#endif
|
||||
struct drm_buf_pub __user *list; /**< Buffer information */
|
||||
};
|
||||
|
||||
|
@ -431,7 +441,7 @@ struct drm_draw {
|
|||
* DRM_IOCTL_UPDATE_DRAW ioctl argument type.
|
||||
*/
|
||||
typedef enum {
|
||||
DRM_DRAWABLE_CLIPRECTS,
|
||||
DRM_DRAWABLE_CLIPRECTS
|
||||
} drm_drawable_info_type_t;
|
||||
|
||||
struct drm_update_draw {
|
||||
|
@ -681,7 +691,7 @@ struct drm_prime_handle {
|
|||
__s32 fd;
|
||||
};
|
||||
|
||||
#include <drm/drm_mode.h>
|
||||
#include "drm_mode.h"
|
||||
|
||||
#define DRM_IOCTL_BASE 'd'
|
||||
#define DRM_IO(nr) _IO(DRM_IOCTL_BASE,nr)
|
||||
|
|
|
@ -320,6 +320,16 @@ struct drm_mode_connector_set_property {
|
|||
__u32 connector_id;
|
||||
};
|
||||
|
||||
#define DRM_MODE_OBJECT_CRTC 0xcccccccc
|
||||
#define DRM_MODE_OBJECT_CONNECTOR 0xc0c0c0c0
|
||||
#define DRM_MODE_OBJECT_ENCODER 0xe0e0e0e0
|
||||
#define DRM_MODE_OBJECT_MODE 0xdededede
|
||||
#define DRM_MODE_OBJECT_PROPERTY 0xb0b0b0b0
|
||||
#define DRM_MODE_OBJECT_FB 0xfbfbfbfb
|
||||
#define DRM_MODE_OBJECT_BLOB 0xbbbbbbbb
|
||||
#define DRM_MODE_OBJECT_PLANE 0xeeeeeeee
|
||||
#define DRM_MODE_OBJECT_ANY 0
|
||||
|
||||
struct drm_mode_obj_get_properties {
|
||||
__u64 props_ptr;
|
||||
__u64 prop_values_ptr;
|
||||
|
|
|
@ -115,6 +115,14 @@ enum {
|
|||
MIPI_DCS_READ_MEMORY_CONTINUE = 0x3E,
|
||||
MIPI_DCS_SET_TEAR_SCANLINE = 0x44,
|
||||
MIPI_DCS_GET_SCANLINE = 0x45,
|
||||
MIPI_DCS_SET_DISPLAY_BRIGHTNESS = 0x51, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_GET_DISPLAY_BRIGHTNESS = 0x52, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_WRITE_CONTROL_DISPLAY = 0x53, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_GET_CONTROL_DISPLAY = 0x54, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_WRITE_POWER_SAVE = 0x55, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_GET_POWER_SAVE = 0x56, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_SET_CABC_MIN_BRIGHTNESS = 0x5E, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_GET_CABC_MIN_BRIGHTNESS = 0x5F, /* MIPI DCS 1.3 */
|
||||
MIPI_DCS_READ_DDB_START = 0xA1,
|
||||
MIPI_DCS_READ_DDB_CONTINUE = 0xA8,
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue